blob: 279e201b5087433e51391b8b41c1d569115758b8 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
#ifdef DBG_UTIL
#include "viewsh.hxx" // IsDbg()
#include "viewopt.hxx" // IsDbg()
#include "txtatr.hxx"
#include "errhdl.hxx"
#include "txtcfg.hxx"
#include "txtfrm.hxx" // IsDbg()
#include "rootfrm.hxx"
#include "flyfrms.hxx"
#include "inftxt.hxx"
#include "porexp.hxx"
#include "porfld.hxx"
#include "porfly.hxx"
#include "porftn.hxx"
#include "porglue.hxx"
#include "porhyph.hxx"
#include "porlay.hxx"
#include "porlin.hxx"
#include "porref.hxx"
#include "porrst.hxx"
#include "portab.hxx"
#include "portox.hxx"
#include "portxt.hxx"
#include "pordrop.hxx"
#include "pormulti.hxx"
#include "ndhints.hxx"
// So kann man die Layoutstruktur ausgeben lassen
// #define AMA_LAYOUT
#ifdef AMA_LAYOUT
#include <stdio.h>
#include <stdlib.h> // getenv()
#include <flowfrm.hxx>
#include <pagefrm.hxx>
#include <svx/svdobj.hxx>
#include <dflyobj.hxx>
void lcl_OutFollow( XubString &rTmp, const SwFrm* pFrm )
{
if( pFrm->IsFlowFrm() )
{
const SwFlowFrm *pFlow = SwFlowFrm::CastFlowFrm( pFrm );
if( pFlow->IsFollow() || pFlow->GetFollow() )
{
rTmp += "(";
if( pFlow->IsFollow() )
rTmp += ".";
if( pFlow->GetFollow() )
{
MSHORT nFrmId = pFlow->GetFollow()->GetFrm()->GetFrmId();
rTmp += nFrmId;
}
rTmp += ")";
}
}
}
void lcl_OutFrame( SvFileStream& rStr, const SwFrm* pFrm, ByteString& rSp, sal_Bool bNxt )
{
if( !pFrm )
return;
KSHORT nSpc = 0;
MSHORT nFrmId = pFrm->GetFrmId();
ByteString aTmp;
if( pFrm->IsLayoutFrm() )
{
if( pFrm->IsRootFrm() )
aTmp = "R";
else if( pFrm->IsPageFrm() )
aTmp = "P";
else if( pFrm->IsBodyFrm() )
aTmp = "B";
else if( pFrm->IsColumnFrm() )
aTmp = "C";
else if( pFrm->IsTabFrm() )
aTmp = "Tb";
else if( pFrm->IsRowFrm() )
aTmp = "Rw";
else if( pFrm->IsCellFrm() )
aTmp = "Ce";
else if( pFrm->IsSctFrm() )
aTmp = "S";
else if( pFrm->IsFlyFrm() )
{
aTmp = "F";
const SwFlyFrm *pFly = (SwFlyFrm*)pFrm;
if( pFly->IsFlyInCntFrm() )
aTmp += "in";
else if( pFly->IsFlyAtCntFrm() )
{
aTmp += "a";
if( pFly->IsAutoPos() )
aTmp += "u";
else
aTmp += "t";
}
else
aTmp += "l";
}
else if( pFrm->IsHeaderFrm() )
aTmp = "H";
else if( pFrm->IsFooterFrm() )
aTmp = "Fz";
else if( pFrm->IsFtnContFrm() )
aTmp = "Fc";
else if( pFrm->IsFtnFrm() )
aTmp = "Fn";
else
aTmp = "?L?";
aTmp += nFrmId;
lcl_OutFollow( aTmp, pFrm );
aTmp += " ";
rStr << aTmp;
nSpc = aTmp.Len();
rSp.Expand( nSpc + rSp.Len() );
lcl_OutFrame( rStr, ((SwLayoutFrm*)pFrm)->Lower(), rSp, sal_True );
}
else
{
if( pFrm->IsTxtFrm() )
aTmp = "T";
else if( pFrm->IsNoTxtFrm() )
aTmp = "N";
else
aTmp = "?C?";
aTmp += nFrmId;
lcl_OutFollow( aTmp, pFrm );
aTmp += " ";
rStr << aTmp;
nSpc = aTmp.Len();
rSp.Expand( nSpc + rSp.Len() );
}
if( pFrm->IsPageFrm() )
{
const SwPageFrm* pPg = (SwPageFrm*)pFrm;
const SwSortedObjs *pSorted = pPg->GetSortedObjs();
const MSHORT nCnt = pSorted ? pSorted->Count() : 0;
if( nCnt )
{
for( MSHORT i=0; i < nCnt; ++i )
{
// --> OD 2004-07-07 #i28701# - consider changed type of
// <SwSortedObjs> entries
SwAnchoredObject* pAnchoredObj = (*pSorted)[ i ];
if( pAnchoredObj->ISA(SwFlyFrm) )
{
SwFlyFrm* pFly = static_cast<SwFlyFrm*>(pAnchoredObj);
lcl_OutFrame( rStr, pFly, rSp, sal_False );
}
else
{
aTmp = pAnchoredObj->GetDrawObj()->IsUnoObj() ? "UNO" : "Drw";
rStr << aTmp;
}
// <--
if( i < nCnt - 1 )
rStr << endl << rSp;
}
}
}
else if( pFrm->GetDrawObjs() )
{
MSHORT nCnt = pFrm->GetDrawObjs()->Count();
if( nCnt )
{
for( MSHORT i=0; i < nCnt; ++i )
{
// --> OD 2004-07-07 #i28701# - consider changed type of
// <SwSortedObjs> entries
SwAnchoredObject* pAnchoredObj = (*pFrm->GetDrawObjs())[ i ];
if( pAnchoredObj->ISA(SwFlyFrm) )
{
SwFlyFrm* pFly = static_cast<SwFlyFrm*>(pAnchoredObj);
lcl_OutFrame( rStr, pFly, rSp, sal_False );
}
else
{
aTmp = pAnchoredObj->GetDrawObj()->IsUnoObj() ? "UNO" : "Drw";
rStr << aTmp;
}
if( i < nCnt - 1 )
rStr << endl << rSp;
}
}
}
if( nSpc )
rSp.Erase( rSp.Len() - nSpc );
if( bNxt && pFrm->GetNext() )
{
do
{
pFrm = pFrm->GetNext();
rStr << endl << rSp;
lcl_OutFrame( rStr, pFrm, rSp, sal_False );
} while ( pFrm->GetNext() );
}
}
void LayOutPut( const SwFrm* pFrm )
{
static char* pOutName = 0;
const sal_Bool bFirstOpen = pOutName ? sal_False : sal_True;
if( bFirstOpen )
{
char *pPath = getenv( "TEMP" );
char *pName = "layout.txt";
if( !pPath )
pOutName = pName;
else
{
const int nLen = strlen(pPath);
// fuer dieses new wird es kein delete geben.
pOutName = new char[nLen + strlen(pName) + 3];
if(nLen && (pPath[nLen-1] == '\\') || (pPath[nLen-1] == '/'))
snprintf( pOutName, sizeof(pOutName), "%s%s", pPath, pName );
else
snprintf( pOutName, sizeof(pOutName), "%s/%s", pPath, pName );
}
}
SvFileStream aStream( pOutName, (bFirstOpen
? STREAM_WRITE | STREAM_TRUNC
: STREAM_WRITE ));
if( !aStream.GetError() )
{
if ( bFirstOpen )
aStream << "Layout-Struktur";
else
aStream.Seek( STREAM_SEEK_TO_END );
aStream << endl;
aStream << "---------------------------------------------" << endl;
XubString aSpace;
lcl_OutFrame( aStream, pFrm, aSpace, sal_False );
}
}
#endif
SvStream &operator<<( SvStream &rOs, const SwpHints & ) //$ ostream
{
rOs << " {HINTS:";
// REMOVED
rOs << '}';
return rOs;
}
/*************************************************************************
* IsDbg()
*************************************************************************/
sal_Bool IsDbg( const SwTxtFrm *pFrm )
{
if( pFrm && pFrm->getRootFrm()->GetCurrShell() )
return pFrm->getRootFrm()->GetCurrShell()->GetViewOptions()->IsTest4();
else
return sal_False;
}
#if OSL_DEBUG_LEVEL < 2
static void Error()
{
// wegen PM und BCC
sal_Bool bFalse = sal_False;
ASSERT( bFalse, "txtio: No debug version" );
}
#define IMPL_OUTOP(class) \
SvStream &class::operator<<( SvStream &rOs ) const /*$ostream*/\
{ \
Error(); \
return rOs; \
}
IMPL_OUTOP( SwTxtPortion )
IMPL_OUTOP( SwLinePortion )
IMPL_OUTOP( SwBreakPortion )
IMPL_OUTOP( SwGluePortion )
IMPL_OUTOP( SwFldPortion )
IMPL_OUTOP( SwHiddenPortion )
IMPL_OUTOP( SwHyphPortion )
IMPL_OUTOP( SwFixPortion )
IMPL_OUTOP( SwFlyPortion )
IMPL_OUTOP( SwFlyCntPortion )
IMPL_OUTOP( SwMarginPortion )
IMPL_OUTOP( SwNumberPortion )
IMPL_OUTOP( SwBulletPortion )
IMPL_OUTOP( SwGrfNumPortion )
IMPL_OUTOP( SwLineLayout )
IMPL_OUTOP( SwParaPortion )
IMPL_OUTOP( SwFtnPortion )
IMPL_OUTOP( SwFtnNumPortion )
IMPL_OUTOP( SwTmpEndPortion )
IMPL_OUTOP( SwHyphStrPortion )
IMPL_OUTOP( SwExpandPortion )
IMPL_OUTOP( SwBlankPortion )
IMPL_OUTOP( SwToxPortion )
IMPL_OUTOP( SwRefPortion )
IMPL_OUTOP( SwIsoToxPortion )
IMPL_OUTOP( SwIsoRefPortion )
IMPL_OUTOP( SwSoftHyphPortion )
IMPL_OUTOP( SwSoftHyphStrPortion )
IMPL_OUTOP( SwTabPortion )
IMPL_OUTOP( SwTabLeftPortion )
IMPL_OUTOP( SwTabRightPortion )
IMPL_OUTOP( SwTabCenterPortion )
IMPL_OUTOP( SwTabDecimalPortion )
IMPL_OUTOP( SwPostItsPortion )
IMPL_OUTOP( SwQuoVadisPortion )
IMPL_OUTOP( SwErgoSumPortion )
IMPL_OUTOP( SwHolePortion )
IMPL_OUTOP( SwDropPortion )
IMPL_OUTOP( SwKernPortion )
IMPL_OUTOP( SwArrowPortion )
IMPL_OUTOP( SwMultiPortion )
IMPL_OUTOP( SwCombinedPortion )
const char *GetPortionName( const MSHORT )
{
return 0;
}
const char *GetPrepName( const PrepareHint )
{
return 0;
}
void SwLineLayout::DebugPortions( SvStream &, const XubString &, //$ ostream
const xub_StrLen )
{
}
const char *GetLangName( const MSHORT )
{
return 0;
}
#else
# include <limits.h>
# include <stdlib.h>
# include "swtypes.hxx" // ZTCCONST
# include "swfont.hxx" // SwDropPortion
CONSTCHAR( pClose, "} " );
/*************************************************************************
* GetPortionName()
*************************************************************************/
CONSTCHAR( pPOR_LIN, "LIN" );
CONSTCHAR( pPOR_TXT, "TXT" );
CONSTCHAR( pPOR_SHADOW, "SHADOW" );
CONSTCHAR( pPOR_TAB, "TAB" );
CONSTCHAR( pPOR_TABLEFT, "TABLEFT" );
CONSTCHAR( pPOR_TABRIGHT, "TABRIGHT" );
CONSTCHAR( pPOR_TABCENTER, "TABCENTER" );
CONSTCHAR( pPOR_TABDECIMAL, "TABDECIMAL" );
CONSTCHAR( pPOR_EXP, "EXP" );
CONSTCHAR( pPOR_HYPH, "HYPH" );
CONSTCHAR( pPOR_HYPHSTR, "HYPHSTR" );
CONSTCHAR( pPOR_FLD, "FLD" );
CONSTCHAR( pPOR_FIX, "FIX" );
CONSTCHAR( pPOR_FLY, "FLY" );
CONSTCHAR( pPOR_FLYCNT, "FLYCNT" );
CONSTCHAR( pPOR_MARGIN, "MARGIN" );
CONSTCHAR( pPOR_GLUE, "GLUE" );
CONSTCHAR( pPOR_HOLE, "HOLE" );
CONSTCHAR( pPOR_END, "END" );
CONSTCHAR( pPOR_BRK, "BRK" );
CONSTCHAR( pPOR_LAY, "LAY" );
CONSTCHAR( pPOR_BLANK, "BLANK" );
CONSTCHAR( pPOR_FTN, "FTN" );
CONSTCHAR( pPOR_FTNNUM, "FTNNUM" );
CONSTCHAR( pPOR_POSTITS, "POSTITS" );
CONSTCHAR( pPOR_SOFTHYPH, "SOFTHYPH" );
CONSTCHAR( pPOR_SOFTHYPHSTR, "SOFTHYPHSTR" );
CONSTCHAR( pPOR_TOX, "TOX" );
CONSTCHAR( pPOR_REF, "REF" );
CONSTCHAR( pPOR_ISOTOX, "ISOTOX" );
CONSTCHAR( pPOR_ISOREF, "ISOREF" );
CONSTCHAR( pPOR_HIDDEN, "Hidden" );
CONSTCHAR( pPOR_QUOVADIS, "QuoVadis" );
CONSTCHAR( pPOR_ERGOSUM, "ErgoSum" );
CONSTCHAR( pPOR_NUMBER, "NUMBER" );
CONSTCHAR( pPOR_BULLET, "BULLET" );
CONSTCHAR( pPOR_UNKW, "UNKW" );
CONSTCHAR( pPOR_PAR, "PAR" );
const char *GetPortionName( const MSHORT /*nType*/ )
{
return 0;
}
CONSTCHAR( pPREP_CLEAR, "CLEAR" );
CONSTCHAR( pPREP_WIDOWS_ORPHANS, "WIDOWS_ORPHANS" );
CONSTCHAR( pPREP_FIXSIZE_CHG, "FIXSIZE_CHG" );
CONSTCHAR( pPREP_FOLLOW_FOLLOWS, "FOLLOW_FOLLOWS" );
CONSTCHAR( pPREP_ADJUST_FRM, "ADJUST_FRM" );
CONSTCHAR( pPREP_FREE_SPACE, "FREE_SPACE" );
CONSTCHAR( pPREP_FLY_CHGD, "FLY_CHGD" );
CONSTCHAR( pPREP_FLY_ATTR_CHG, "FLY_ATTR_CHG" );
CONSTCHAR( pPREP_FLY_ARRIVE, "FLY_ARRIVE" );
CONSTCHAR( pPREP_FLY_LEAVE, "FLY_LEAVE" );
CONSTCHAR( pPREP_VIEWOPT, "VIEWOPT" );
CONSTCHAR( pPREP_FTN, "FTN" );
CONSTCHAR( pPREP_POS_CHGD, "POS" );
CONSTCHAR( pPREP_UL_SPACE, "UL_SPACE" );
CONSTCHAR( pPREP_MUST_FIT, "MUST_FIT" );
CONSTCHAR( pPREP_WIDOWS, "ORPHANS" );
CONSTCHAR( pPREP_QUOVADIS, "QUOVADIS" );
CONSTCHAR( pPREP_PAGE, "PAGE" );
const char *GetPrepName( const PrepareHint ePrep )
{
// Kurz und schmerzlos:
const char *ppNameArr[PREP_END] =
{
pPREP_CLEAR, pPREP_WIDOWS_ORPHANS, pPREP_FIXSIZE_CHG,
pPREP_FOLLOW_FOLLOWS, pPREP_ADJUST_FRM, pPREP_FREE_SPACE,
pPREP_FLY_CHGD, pPREP_FLY_ATTR_CHG, pPREP_FLY_ARRIVE,
pPREP_FLY_LEAVE, pPREP_VIEWOPT, pPREP_FTN, pPREP_POS_CHGD,
pPREP_UL_SPACE, pPREP_MUST_FIT, pPREP_WIDOWS, pPREP_QUOVADIS,
pPREP_PAGE
};
ASSERT( ePrep < PREP_END, "GetPrepName: unknown PrepareHint" );
return( ppNameArr[ePrep] );
}
/*************************************************************************
* SwLineLayout::DebugPortions()
*
* DebugPortion() iteriert ueber alle Portions einer Zeile und deckt die
* internen Strukturen auf.
* Im Gegensatz zum Ausgabe-Operator werden auch die Textteile ausgegeben.
*************************************************************************/
void SwLineLayout::DebugPortions( SvStream &rOs, const XubString &/*rTxt*/, //$ ostream
const xub_StrLen /*nStart*/ )
{
SwLinePortion *pPortion2 = GetPortion();
xub_StrLen nPos = 0;
MSHORT nNr = 0;
KSHORT nPrtWidth, nLastPrt;
nPrtWidth = nLastPrt = 0;
SwLinePortion::operator<<( rOs );
rOs << '\"' << endl;
while( pPortion2 )
{
DBG_LOOP;
SwTxtPortion *pTxtPor = pPortion2->InTxtGrp() ?
(SwTxtPortion *)pPortion2 : NULL ;
(void)pTxtPor;
++nNr;
nLastPrt = nPrtWidth;
nPrtWidth = nPrtWidth + pPortion2->PrtWidth();
rOs << "\tNr:" << nNr
<< " Pos:" << nPos
<< " Org:" << nLastPrt
<< endl;
rOs << "\t";
pPortion2->operator<<( rOs );
rOs << endl;
nPos = nPos + pPortion2->GetLen();
pPortion2 = pPortion2->GetPortion();
}
}
const char *GetLangName( const MSHORT /*nLang*/ )
{
return "???";
}
SvStream &SwLinePortion::operator<<( SvStream &rOs ) const //$ ostream
{
rOs << " {";
rOs << "L:" << nLineLength;
rOs << " H:" << Height();
rOs << " W:" << PrtWidth();
rOs << " A:" << nAscent;
rOs << pClose;
return rOs;
}
SvStream &SwTxtPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {TXT:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwTmpEndPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {END:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
if( PrtWidth() )
rOs << "(view)";
rOs << pClose;
return rOs;
}
SvStream &SwBreakPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {BREAK:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwKernPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {KERN:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwArrowPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {ARROW:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwMultiPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {MULTI:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwCombinedPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {COMBINED:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwLineLayout::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {LINE:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
SwLinePortion *pPos = GetPortion();
while( pPos )
{
DBG_LOOP;
rOs << "\t";
pPos->operator<<( rOs );
pPos = pPos->GetPortion();
}
rOs << pClose;
return rOs;
}
SvStream &SwGluePortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {GLUE:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << " F:" << GetFixWidth();
rOs << " G:" << GetPrtGlue();
rOs << pClose;
return rOs;
}
SvStream &SwFixPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {FIX:" );
rOs << pTxt;
SwGluePortion::operator<<( rOs );
rOs << " Fix:" << nFix;
rOs << pClose;
return rOs;
}
SvStream &SwFlyPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {FLY:" );
rOs << pTxt;
SwFixPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwMarginPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {MAR:" );
rOs << pTxt;
SwGluePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwFlyCntPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {FLYCNT:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
if( bDraw )
{
CONSTCHAR( pTxt2, " {DRAWINCNT" );
rOs << pTxt2;
rOs << pClose;
}
else
{
CONSTCHAR( pTxt2, " {FRM:" );
rOs << pTxt2;
rOs << " {FRM:" << GetFlyFrm()->Frm() << pClose;
rOs << " {PRT:" << GetFlyFrm()->Prt() << pClose;
rOs << pClose;
}
rOs << pClose;
return rOs;
}
SvStream &SwExpandPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {EXP:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwFtnPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {FTN:" );
rOs << pTxt;
SwExpandPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwFtnNumPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {FTNNUM:" );
rOs << pTxt;
SwNumberPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwNumberPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {NUMBER:" );
rOs << pTxt;
SwExpandPortion::operator<<( rOs );
rOs << " Exp:\"" << '\"';
rOs << pClose;
return rOs;
}
SvStream &SwBulletPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {BULLET:" );
rOs << pTxt;
SwNumberPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwGrfNumPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {GRFNUM:" );
rOs << pTxt;
SwNumberPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwHiddenPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {Hidden:" );
rOs << pTxt;
SwFldPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwToxPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {TOX:" );
rOs << pTxt;
SwTxtPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwRefPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {Ref:" );
rOs << pTxt;
SwTxtPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwIsoToxPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {ISOTOX:" );
rOs << pTxt;
SwToxPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwIsoRefPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {ISOREF:" );
rOs << pTxt;
SwRefPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwHyphPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {HYPH:" );
rOs << pTxt;
SwExpandPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwHyphStrPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {HYPHSTR:" );
rOs << pTxt;
SwExpandPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwSoftHyphPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {SOFTHYPH:" );
rOs << pTxt;
SwHyphPortion::operator<<( rOs );
rOs << (IsExpand() ? " on" : " off");
rOs << pClose;
return rOs;
}
SvStream &SwSoftHyphStrPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {SOFTHYPHSTR:" );
rOs << pTxt;
SwHyphStrPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwBlankPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {BLANK:" );
rOs << pTxt;
SwExpandPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwFldPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {FLD:" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
if( IsFollow() )
rOs << " F!";
rOs << pClose;
return rOs;
}
SvStream &SwPostItsPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {POSTITS" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwTabPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {TAB" );
rOs << pTxt;
SwFixPortion::operator<<( rOs );
rOs << " T:" << nTabPos;
if( IsFilled() )
rOs << " \"" << cFill << '\"';
rOs << pClose;
return rOs;
}
SvStream &SwTabLeftPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {TABLEFT" );
rOs << pTxt;
SwTabPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwTabRightPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {TABRIGHT" );
rOs << pTxt;
SwTabPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwTabCenterPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {TABCENTER" );
rOs << pTxt;
SwTabPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwTabDecimalPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {TABDECIMAL" );
rOs << pTxt;
SwTabPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwParaPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {PAR" );
rOs << pTxt;
SwLineLayout::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwHolePortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {HOLE" );
rOs << pTxt;
SwLinePortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwQuoVadisPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {QUOVADIS" );
rOs << pTxt;
SwFldPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &SwErgoSumPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {ERGOSUM" );
rOs << pTxt;
SwFldPortion::operator<<( rOs );
rOs << pClose;
return rOs;
}
SvStream &operator<<( SvStream &rOs, const SwTxtSizeInfo &rInf ) //$ ostream
{
CONSTCHAR( pTxt, " {SIZEINFO:" );
rOs << pTxt;
rOs << ' ' << (rInf.OnWin() ? "WIN:" : "PRT:" );
rOs << " Idx:" << rInf.GetIdx();
rOs << " Len:" << rInf.GetLen();
rOs << pClose;
return rOs;
}
SvStream &SwDropPortion::operator<<( SvStream &rOs ) const //$ ostream
{
CONSTCHAR( pTxt, " {DROP:" );
rOs << pTxt;
SwTxtPortion::operator<<( rOs );
if( pPart && nDropHeight )
{
rOs << " H:" << nDropHeight;
rOs << " L:" << nLines;
rOs <<" Fnt:" << pPart->GetFont().GetHeight();
if( nX || nY )
rOs << " [" << nX << '/' << nY << ']';
}
rOs << pClose;
return rOs;
}
#endif /* OSL_DEBUG_LEVEL */
#endif // DBG_UTIL