*path source: ~/Scrivania/build/clone/writer/sw/source/filter/html*
deleted comments in German. diff attached
greetings to all
--
Linux user number 526206 http://counter.li.org/
--- css1atr.cxx 2010-10-28 22:12:01.426127545 +0200
+++ css1atrNEW.cxx 2010-10-29 19:27:40.563512829 +0200
@@ -103,15 +103,7 @@
#include <IDocumentStylePoolAccess.hxx>
#include <numrule.hxx>
-/*
- * um nicht immer wieder nach einem Update festzustellen, das irgendwelche
- * Hint-Ids dazugekommen sind, wird hier definiert, die Groesse der Tabelle
- * definiert und mit der akt. verglichen. Bei unterschieden wird der
- * Compiler schon meckern.
- *
- * diese Section und die dazugeherigen Tabellen muessen in folgenden Files
- * gepflegt werden: rtf\rtfatr.cxx, sw6\sw6atr.cxx, w4w\w4watr.cxx
- */
+
#if !defined(UNX) && !defined(MSC) && !defined(PPC) && !defined(CSET) && !defined(__MWERKS__) &&
!defined(WTC) && !defined(__MINGW32__) && !defined(OS2)
#define ATTRFNTAB_SIZE 130
@@ -188,7 +180,7 @@
{
sal_Char aNToABuf[] = "00";
- // Pointer an das Bufferende setzen
+
sal_Char *pStr = aNToABuf + (sizeof(aNToABuf)-1);
for( BYTE n = 0; n < 2; ++n )
{
@@ -296,7 +288,7 @@
(sOut += pProp) += ": ";
if( nCSS1OutMode & CSS1_OUTMODE_ENCODE )
{
- // In STYLE-Optionen den String codieren
+
Strm() << sOut.GetBuffer();
sOut.Erase();
if( pVal )
@@ -307,7 +299,7 @@
}
else
{
- // Im STYLE-Tag des String direct ausgeben
+
if( pVal )
sOut += pVal;
else if( pSVal )
@@ -325,12 +317,12 @@
{
if( nVal < 0 )
{
- // Vorzeichen extra behandeln
+
nVal = -nVal;
rOut += '-';
}
- // Die umgerechnete Einheit ergibt sich aus (x * nMul)/(nDiv*nFac*10)
+
long nMul = 1000;
long nDiv = 1;
long nFac = 100;
@@ -357,7 +349,7 @@
nDiv = 1440; // 72 * 20;
nFac = 1000;
#else
- // 0.01cm = 5.7twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ // 0.01cm = 5.7twip
nMul = 2540; // 2.54 * 1000
nDiv = 1440; // 72 * 20;
nFac = 100;
@@ -374,7 +366,7 @@
nDiv = 20;
nFac = 100;
#else
- // 0.1pt = 2.0twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ // 0.1pt = 2.0twip
nMul = 100;
nDiv = 20;
nFac = 10;
@@ -389,7 +381,7 @@
nDiv = 12 * 20;
nFac = 1000;
#else
- // 0.01pc = 2.40twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ // 0.01pc = 2.40twip
nMul = 1000;
nDiv = 240; // 12 * 20;
nFac = 100;
@@ -411,7 +403,7 @@
nDiv = 1440; // 72 * 20;
nFac = 10000;
#else
- // 0.01in = 14.4twip (ist zwar ungenau, aber die UI ist auch ungenau)
+ // 0.01in = 14.4twip
nMul = 1000;
nDiv = 1440; // 72 * 20;
nFac = 100;
@@ -424,7 +416,7 @@
BOOL bOutLongVal = TRUE;
if( nVal > LONG_MAX / nMul )
{
- // Zum Unrechnen der Einheit wird ein BigInt benoetigt
+
#ifdef SAL_INT64_IS_STRUCT
BigInt nBigVal( nVal );
nBigVal *= nMul;
@@ -434,7 +426,7 @@
if( nBigVal.IsLong() )
{
- // Zum Ausgeben des Wertes reicht ein long.
+
nLongVal = (long)nBigVal;
}
else
@@ -463,7 +455,7 @@
if( nBigVal <= LONG_MAX )
{
- // Zum Ausgeben des Wertes reicht ein long.
+
nLongVal = (long)nBigVal;
}
else
@@ -535,14 +527,13 @@
void SwHTMLWriter::OutCSS1_SfxItemSet( const SfxItemSet& rItemSet,
BOOL bDeep )
{
- // den ItemSet ausgeben, und zwar inklusive aller Attribute
+
Out_SfxItemSet( aCSS1AttrFnTab, *this, rItemSet, bDeep );
- // ein par Attribute benoetigen eine Spezial-Behandlung
+
const SfxPoolItem *pItem = 0;
- // Underline, Overline, CrossedOut und Blink bilden zusammen eine CSS1-Property
- // (geht natuerlich nicht bei Hints)
+
if( !IsCSS1Source(CSS1_OUTMODE_HINT) )
{
const SvxUnderlineItem *pUnderlineItem = 0;
@@ -572,8 +563,7 @@
if( !bFirstCSS1Property )
{
- // wenn eine Property als Bestandteil einer Style-Option
- // ausgegeben wurde, muss die Optiomn noch beendet werden
+
ByteString sOut;
switch( nCSS1OutMode & CSS1_OUTMODE_ANY_OFF )
{
@@ -605,22 +595,14 @@
USHORT nFirstRefPoolId = RES_POOLPAGE_HTML;
bCSS1IgnoreFirstPageDesc = TRUE;
- // Erstmal versuchen wir zu erraten, wie das Dokument so augebaut ist.
- // Erlaubt sind nur die Vorlagen HTML, erste Seite, linke Seite und
- // rechte Seite.
- // Eine erste Seite wird nur exportiert, wenn die erste Seite auch
- // wirklich die Vorlage "erste Seite" ist.
- // Linke und rechte Seiten werden nur exportiert, wenn diese beiden
- // Vorlagen untereinander verkettet werden.
- // Wenn andere Vorlagen verwendet werden, wird nur in sehr einfachen
- // Faellen etwas exportiert.
+
const SwPageDesc *pPageDesc = &rPageDesc;
const SwPageDesc *pFollow = rPageDesc.GetFollow();
if( RES_POOLPAGE_FIRST == pPageDesc->GetPoolFmtId() &&
pFollow != pPageDesc &&
!IsPoolUserFmt( pFollow->GetPoolFmtId() ) )
{
- // Das Dokument hat eine erste Seite
+
pFirstPageDesc = pPageDesc;
pPageDesc = pFollow;
pFollow = pPageDesc->GetFollow();
@@ -629,10 +611,7 @@
IDocumentStylePoolAccess* pStylePoolAccess = getIDocumentStylePoolAccess();
if( pPageDesc == pFollow )
{
- // Das Dokument ist einseitig. Egal welche Seite verwendet wird,
- // es wird kein zweiseitiges Dokument daraus gemacht.
- // Die Attributierung wird relativ zur HTML-Seitenvorlage
- // aus der HTML-Vorlage exportiert.
+
OutCSS1_SwPageDesc( *this, *pPageDesc, pStylePoolAccess, pTemplate,
RES_POOLPAGE_HTML, TRUE, FALSE );
nFirstRefPoolId = pFollow->GetPoolFmtId();
@@ -642,7 +621,7 @@
(RES_POOLPAGE_RIGHT == pPageDesc->GetPoolFmtId() &&
RES_POOLPAGE_LEFT == pFollow->GetPoolFmtId()) )
{
- // Das Dokument ist zweiseitig
+
OutCSS1_SwPageDesc( *this, *pPageDesc, pStylePoolAccess, pTemplate,
RES_POOLPAGE_HTML, TRUE );
OutCSS1_SwPageDesc( *this, *pFollow, pStylePoolAccess, pTemplate,
@@ -650,7 +629,7 @@
nFirstRefPoolId = RES_POOLPAGE_RIGHT;
bCSS1IgnoreFirstPageDesc = FALSE;
}
- // Alles andere bekommen wir nicht hin.
+
if( pFirstPageDesc )
OutCSS1_SwPageDesc( *this, *pFirstPageDesc, pStylePoolAccess, pTemplate,
@@ -664,8 +643,7 @@
// that maps to <P>, and that's especially the standard style
getIDocumentStylePoolAccess()->GetTxtCollFromPool( RES_POOLCOLL_TEXT, false );
- // das Default-TextStyle wir nicht mit ausgegeben !!
- // das 0-Style ist das Default, wird nie ausgegeben !!
+
USHORT nArrLen = pDoc->GetTxtFmtColls()->Count();
USHORT i;
@@ -678,7 +656,7 @@
OutCSS1_SwFmt( *this, *pColl, pDoc, pTemplate );
}
- // das Default-TextStyle wir nicht mit ausgegeben !!
+ !
nArrLen = pDoc->GetCharFmts()->Count();
for( i=1; i<nArrLen; i++ )
{
@@ -723,8 +701,7 @@
//-----------------------------------------------------------------------
-// wenn pPseudo gesetzt ist werden Styles-Sheets ausgegeben,
-// sonst wird nur nach Token und Class fuer ein Format gesucht
+
USHORT SwHTMLWriter::GetCSS1Selector( const SwFmt *pFmt, ByteString& rToken,
String& rClass, USHORT& rRefPoolId,
String *pPseudo )
@@ -737,8 +714,7 @@
BOOL bChrFmt = RES_CHRFMT==pFmt->Which();
- // Nach oben die Formate abklappern, bis man auf eine Standard-
- // oder eine HTML-Tag-Vorlage trifft
+
const SwFmt *pPFmt = pFmt;
while( pPFmt && !pPFmt->IsDefault() )
{
@@ -746,7 +722,7 @@
USHORT nPoolId = pPFmt->GetPoolFmtId();
if( USER_FMT & nPoolId )
{
- // Benutzer-Vorlagen
+
const String& rNm = pPFmt->GetName();
switch( rNm.GetChar(0) )
{
@@ -786,9 +762,7 @@
else if( !bChrFmt )
{
USHORT nDefListLvl = GetDefListLvl( rNm, nPoolId );
- // Die Vorlagen DD 1/DT 1 werden ausgegeben,
- // aber keine von ihnen abgeleiteten Vorlagen,
- // auch nicht DD 2/DT 2 etc.
+
if( nDefListLvl )
{
if( pPseudo &&
@@ -816,7 +790,7 @@
}
break;
case 'H': if( !bChrFmt && rNm.EqualsAscii( OOO_STRING_SVTOOLS_HTML_horzrule ) )
- // HR nicht ausgeben!
+
bStop = (nDeep==0);
break;
case 'K': if( bChrFmt && rNm.EqualsAscii( OOO_STRING_SVTOOLS_HTML_keyboard ) )
@@ -827,8 +801,7 @@
break;
case 'L': if( !bChrFmt && rNm.EqualsAscii( OOO_STRING_SVTOOLS_HTML_listing ) )
{
- // Listing als PRE exportieren bzw. von
- // PRE abgeleitete Vorlage exportieren
+
rToken.Assign( OOO_STRING_SVTOOLS_HTML_preformtxt );
rRefPoolId = RES_POOLCOLL_HTML_PRE;
nDeep = CSS1_FMT_CMPREF;
@@ -868,8 +841,7 @@
break;
case 'X': if( !bChrFmt && rNm.EqualsAscii( OOO_STRING_SVTOOLS_HTML_xmp ) )
{
- // XMP als PRE exportieren (aber nicht die
- // Vorlage als Style)
+
rToken.Assign( OOO_STRING_SVTOOLS_HTML_preformtxt );
rRefPoolId = RES_POOLCOLL_HTML_PRE;
nDeep = CSS1_FMT_CMPREF;
@@ -877,20 +849,19 @@
break;
}
- // Wenn eine PoolId gesetzt ist, entspricht der Name der
- // Vorlage dem szugehoerigen Token
+
ASSERT( rRefPoolId != 0 == rToken.Len() > 0,
"Token missing" );
}
else
{
- // Pool-Vorlagen
+
switch( nPoolId )
{
- // Absatz-Vorlagen
+
case RES_POOLCOLL_HEADLINE_BASE:
case RES_POOLCOLL_STANDARD:
- // diese Vorlagen nicht ausgeben
+
bStop = (nDeep==0);
break;
case RES_POOLCOLL_TEXT:
@@ -952,7 +923,7 @@
rToken.Assign( OOO_STRING_SVTOOLS_HTML_parabreak );
break;
case RES_POOLCOLL_HTML_HR:
- // HR nicht ausgeben!
+
bStop = (nDeep==0);
break;
case RES_POOLCOLL_FOOTNOTE:
@@ -974,7 +945,7 @@
}
break;
- // Zeichen-Vorlagen
+
case RES_POOLCHR_HTML_EMPHASIS:
rToken.Assign( OOO_STRING_SVTOOLS_HTML_emphasis );
break;
@@ -1019,20 +990,19 @@
break;
}
- // Wenn ein Token gesetzt ist, enthaelt nPoolId die dazugehoerige
- // Vorlage
+
if( rToken.Len() && !rRefPoolId )
rRefPoolId = nPoolId;
}
if( rToken.Len() || bStop )
{
- // Anhalten wenn eine HTML-Tag-Vorlage gefunden wurde
+
break;
}
else
{
- // sonst weitersuchen
+
nDeep++;
pPFmt = pPFmt->DerivedFrom();
}
@@ -1040,21 +1010,18 @@
if( rToken.Len() )
{
- // Es ist eine HTML-Tag-Vorlage
+
if( !nDeep )
nDeep = CSS1_FMT_ISTAG;
}
else
{
- // Es ist keine HTML-Tag-Vorlage und auch keine davon abgeleitete
+
nDeep = 0;
}
if( nDeep > 0 && nDeep < CSS1_FMT_SPECIAL )
{
- // Wenn die Vorlage von einer HTML-Vorlage abgeleitet ist,
- // wird sie als <TOKEN>.<CLASS> exportiert, sonst als .<CLASS>.
- // <CLASS> ergibt sich aus dem Namen der Vorlage durch entfernen
- // aller Zeichen vor und inklusive dem ersten '.'
+
rClass = pFmt->GetName();
xub_StrLen nPos = rClass.Search( '.' );
if( nPos != STRING_NOTFOUND && rClass.Len() > nPos+1 )
@@ -1124,8 +1091,7 @@
if( nDeep > 0 )
{
- // hier wird die HTML-Tag-Vorlage, von der die Vorlage abgeleitet
- // ist als Referenz geholt
+
pRefFmt = &rFmt;
for( USHORT i=nDeep; i>0; i-- )
pRefFmt = pRefFmt->DerivedFrom();
@@ -1156,7 +1122,7 @@
SfxItemSet aRefItemSet( *rRefItemSet.GetPool(), rRefItemSet.GetRanges() );
aRefItemSet.Set( rRefItemSet );
- // und mit dem Attr-Set der Vorlage vergleichen
+
SfxWhichIter aIter( rItemSet );
USHORT nWhich = aIter.FirstWhich();
while( nWhich )
@@ -1209,8 +1175,7 @@
RES_CHRATR_CTL_FONT == nWhich) &&
lcl_css1atr_equalFontItems( *pItem, *pRefItem )) ) )
{
- // das Attribut ist mit dem gleichen Wert in beiden
- // Vorlagen vorhanden und muss nicht ausgegeben werden
+
rItemSet.ClearItem( nWhich );
}
}
@@ -1218,8 +1183,7 @@
{
if( (bSetDefaults || pRefScriptItemSet) && bRefItemSet )
{
- // das Attribut ist nur in der Referenz vorhanden. Das
- // Default muss ggf. ausgegeben werden
+
rItemSet.Put( rItemSet.GetPool()->GetDefaultItem(nWhich) );
}
}
@@ -1637,41 +1601,24 @@
case RES_TXTFMTCOLL:
case RES_CONDTXTFMTCOLL:
- // diese Vorlagen-Typen koennen exportiert werden
+
break;
default:
- // und diese nicht
+
return rWrt;
}
- // den Selector und die auszugebende Attr-Set-Tiefe ermitteln
+
String aSelector;
USHORT nRefPoolId = 0;
USHORT nDeep = GetCSS1Selector( &rFmt, aSelector, nRefPoolId );
if( !nDeep )
- return rWrt; // von keiner HTML-Vorlage abgeleitet
+ return rWrt;
USHORT nPoolFmtId = rFmt.GetPoolFmtId();
- // Den auszugebenden Attr-Set bestimmen. Hier muessen 3 Faelle
- // unterschieden werden:
- // - HTML-Tag-Vorlagen (nDeep==USHRT_MAX):
- // Es werden die Attrs ausgegeben
- // - die in der Vorlage gesetzt sind, aber nicht im Original aus
- // der HTML-Vorlage
- // - die Default-Attrs fuer die Attrs, die im Original aus der
- // HTML-Vorlage gesetzt sind, aber nicht in der vorliegeden Vorlage.
- // - direkt von HTML-Vorlagen abgeleitete Vorlagen (nDeep==1):
- // Es weren nur die Attribute des Vorlagen-Item-Set ohne seine
- // Parents ausgegeben.
- // - indirekt von HTML-Tag-Vorlagen abgeleitete Vorlagen (nDeep>1)
- // Es werden die Attribute des Vorlagen-Item-Sets inkl. seiner Parents,
- // aber ohne die Attribute, die in der HTML-Tag-Vorlage gesetzt sind,
- // ausgegeben.
-
- // einen Item-Set mit allen Attributen aus der Vorlage anlegen
- // (ausser fuer nDeep==1)
+
const SfxItemSet& rFmtItemSet = rFmt.GetAttrSet();
SfxItemSet aItemSet( *rFmtItemSet.GetPool(), rFmtItemSet.GetRanges() );
aItemSet.Set( rFmtItemSet, TRUE ); // Was nDeep!=1 that is not working
@@ -1700,8 +1647,7 @@
if( pRefFmt )
{
- // Den Item-Set der Referenz-Vorlage (inkl. seiner Parents) vom
- // ItemSet abziehen
+
SwHTMLWriter::SubtractItemSet( aItemSet, pRefFmt->GetAttrSet(),
bSetDefaults, bClearSame,
pRefFmtScript
@@ -1717,13 +1663,12 @@
}
else if( CSS1_FMT_ISTAG==nDeep && !bCharFmt )
{
- // die Default-Abstaende nach oben und unten setzen (fuer den
- // Fall, dass es keine Vorlage als Referenz gibt)
+
rHTMLWrt.nDfltTopMargin = 0;
rHTMLWrt.nDfltBottomMargin = HTML_PARSPACE;
if( USER_FMT & nPoolFmtId )
{
- // Benutzer-Vorlagen
+
const String& rNm = rFmt.GetName();
switch( rNm.GetChar(0) )
{
@@ -1743,7 +1688,7 @@
}
else
{
- // Pool-Vorlagen
+
switch( nPoolFmtId )
{
case RES_POOLCOLL_HEADLINE1:
@@ -1764,7 +1709,7 @@
}
}
- // wo nicht auszugeben ist ...
+
if( !aItemSet.Count() )
return rWrt;
@@ -1776,7 +1721,7 @@
bCheckForPseudo = sal_True;
- // jetzt die Attribute (inkl. Selektor) ausgeben
+
sal_Bool bHasScriptDependencies = sal_False;
if( OutCSS1Rule( rHTMLWrt, aSelector, aItemSet, CSS1_FMT_ISTAG != nDeep,
bCheckForPseudo ) )
@@ -1798,7 +1743,7 @@
if( nPoolFmtId==RES_POOLCOLL_TEXT && !rHTMLWrt.bFirstCSS1Property )
rHTMLWrt.bPoolCollTextModified = TRUE;
- // Drop-Caps ausgeben
+
const SfxPoolItem *pItem;
if( rHTMLWrt.IsHTMLMode(HTMLMODE_DROPCAPS) &&
SFX_ITEM_SET==aItemSet.GetItemState( RES_PARATR_DROP, FALSE, &pItem ))
@@ -1848,9 +1793,7 @@
SwCSS1OutMode aMode( rHTMLWrt, CSS1_OUTMODE_RULE_ON|CSS1_OUTMODE_TEMPLATE,
TRUE, &aSelector );
- // Die Groesse: Wenn sie sich nur durch das Landscape-Flag unterscheidet,
- // wird nur Portrait oder Landscape exportiert. Sonst wird die Groesse
- // exportiert.
+
BOOL bRefLandscape = pRefPageDesc ? pRefPageDesc->GetLandscape() : FALSE;
Size aRefSz;
const Size& rSz = rPageDesc.GetMaster().GetFrmSize().GetSize();
@@ -1865,13 +1808,7 @@
}
}
- // Boeser uebler Hack: Auf der Seiten-Tabpage gibt es leichte
- // Rundungsfehler bei der Seitengroesse. Unter anderem wegen bug
- // 25535 wird dummerweise auch noch immer Size-Item vom Dialog geputtet,
- // auch wenn man gar nichts geaendert hat. Folge: Sobald man einmal im
- // Seiten-Dialog war und ihn mit OK verlassen hat, bekommt man eine
- // neue Seitengroesse, die dann hier exportiert wuerde. Um das
- // vermeiden erlauben wir hier kleine Abweichungen.
+
if( Abs( rSz.Width() - aRefSz.Width() ) <= 2 &&
Abs( rSz.Height() - aRefSz.Height() ) <= 2 )
{
@@ -1891,7 +1828,7 @@
rHTMLWrt.OutCSS1_PropertyAscii( sCSS1_P_size, sVal );
}
- // Die Abstand-Attribute koennen auf gwohnte Weise exportiert werden
+
const SwFrmFmt &rMaster = rPageDesc.GetMaster();
SfxItemSet aItemSet( *rMaster.GetAttrSet().GetPool(),
RES_LR_SPACE, RES_UL_SPACE );
@@ -1906,9 +1843,7 @@
OutCSS1_SvxULSpace_SvxLRSpace( rWrt, aItemSet, FALSE );
- // Wenn fuer einen Pseudo-Selektor keine Property ausgegeben wurde, muessen
- // wir trotzdem etwas ausgeben, damit beim Import die entsprechende
- // Vorlage angelegt wird.
+
if( rHTMLWrt.bFirstCSS1Property && bPseudo )
{
rHTMLWrt.OutNewLine();
@@ -1950,10 +1885,7 @@
SfxItemSet aItemSet( *rFmtItemSet.GetPool(), rFmtItemSet.GetRanges() );
aItemSet.Set( rFmtItemSet, TRUE );
- // Wenn es Fuss- bzw. Endnoten gibt, dann muessen alles Attribute
- // ausgegeben werden, damit Netscape das Dokument richtig anzeigt.
- // Anderenfalls genuegt es, die Unterschiede zur Fuss-/Endnoten
- // Vorlage rauszuschreiben.
+
if( nNotes == 0 && rHTMLWrt.pTemplate )
{
SwFmt *pRefFmt = rHTMLWrt.pTemplate->GetCharFmtFromPool(
@@ -1985,9 +1917,7 @@
CSS1_OUTMODE_ENCODE|CSS1_OUTMODE_BODY );
- // Es werden nur die Attribute der Seiten-Vorlage ausgegeben.
- // Die Attribute der Standard-Absatz-Vorlage werden schon beim
- // Export der Absatz-Vorlagen beruecksichtigt.
+
const SfxPoolItem *pItem;
if( SFX_ITEM_SET == rItemSet.GetItemState( RES_BACKGROUND, FALSE,
@@ -2005,8 +1935,7 @@
if( !rHTMLWrt.bFirstCSS1Property )
{
- // wenn eine Property als Bestandteil einer Style-Option
- // ausgegeben wurde, muss die Optiomn noch beendet werden
+
rWrt.Strm() << '\"';
}
@@ -2055,7 +1984,7 @@
return rWrt;
}
-// Wrapper fuer die Ausgabe von Tabellen-Hintergruenden
+
Writer& OutCSS1_TableBGStyleOpt( Writer& rWrt, const SfxPoolItem& rHt )
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
@@ -2147,13 +2076,7 @@
// position
OutCSS1_PropertyAscii( sCSS1_P_position, sCSS1_PV_absolute );
- // Fuer top/left muessen die Abstaende des Rahmens von
- // der Position abgezogen werden, da sie in CSS1 noch
- // zur Position addiert werden.
- // Das funktioniert auch fuer automatisch ausgerichtete
- // Rahmen, obwohl der Abstand da ja auch im Writer noch
- // addiert wird. Denn auch in diesem Fall enthalten
- // die Orient-Attribute die korrekte Position
+
// top
long nXPos=0, nYPos=0;
@@ -2295,7 +2218,7 @@
OutCSS1_SvxBox( *this, *pItem );
}
- // background (wenn, dann muss auch eine Farbe ausgegeben werden)
+ // background
if( nFrmOpts & HTML_FRMOPT_S_BACKGROUND )
OutCSS1_FrmFmtBackground( rFrmFmt );
@@ -2361,12 +2284,11 @@
void SwHTMLWriter::OutCSS1_FrmFmtBackground( const SwFrmFmt& rFrmFmt )
{
- // Wenn der Rahmen selbst einen Hintergrund hat, wird der ausgegeben.
+
if( OutCSS1_FrmFmtBrush( *this, rFrmFmt.GetBackground() ) )
return;
- // Wenn der Rahmen nicht seitengebunden ist, wird sonst muss der
- // Hintergrund vom Anker betrachtet
+
const SwFmtAnchor& rAnchor = rFrmFmt.GetAnchor();
RndStdIds eAnchorId = rAnchor.GetAnchorId();
const SwPosition *pAnchorPos = rAnchor.GetCntntAnchor();
@@ -2375,14 +2297,12 @@
const SwNode& rNode = pAnchorPos->nNode.GetNode();
if( rNode.IsCntntNode() )
{
- // Wenn der Rahmen in einem Content-Node verankert ist,
- // wird der Hintergrund von Content-Node ausgegeben, wenn
- // der einen hat.
+
if( OutCSS1_FrmFmtBrush( *this,
rNode.GetCntntNode()->GetSwAttrSet().GetBackground()) )
return;
- // Sonst koennen wir evtl. auch in einer Tabelle stehen
+
const SwTableNode *pTableNd = rNode.FindTableNode();
if( pTableNd )
{
@@ -2390,12 +2310,12 @@
const SwTableBox *pBox =
pTableNd->GetTable().GetTblBox( pBoxSttNd->GetIndex() );
- // Wenn die Box einen Hintergrund hat, nehmen wir den.
+
if( OutCSS1_FrmFmtBrush( *this,
pBox->GetFrmFmt()->GetBackground() ) )
return;
- // Sonst betrachten wir den der Lines
+
const SwTableLine *pLine = pBox->GetUpper();
while( pLine )
{
@@ -2406,7 +2326,7 @@
pLine = pBox ? pBox->GetUpper() : 0;
}
- // Wenn da auch nichts war den der Tabelle.
+
if( OutCSS1_FrmFmtBrush( *this,
pTableNd->GetTable().GetFrmFmt()->GetBackground() ) )
return;
@@ -2414,8 +2334,7 @@
}
- // Wenn der Anker wieder in einem Fly-Frame steht, dann
- // wird der Hintergrund des Fly-Frames ausgegeben.
+
const SwFrmFmt *pFrmFmt = rNode.GetFlyFmt();
if( pFrmFmt )
{
@@ -2424,18 +2343,14 @@
}
}
- // Schliesslich bleibt noch der Hintergrund der Seite uebrig und als
- // letzte Rettung das Item der Config.
+
ASSERT( pCurrPageDesc, "Keine Seiten-Vorlage gemerkt" );
if( !OutCSS1_FrmFmtBrush( *this,
pCurrPageDesc->GetMaster().GetBackground() ) )
{
Color aColor( COL_WHITE );
- // Die Hintergrund-Farbe wird normalerweise nur in Browse-Mode
- // benutzt. Wir benutzen si bei einem HTML-Dokument immer und
- // bei einem Text-Dokument nur, wenn es im Browse-Mode angezeigt
- // wird.
+
if( pDoc->get(IDocumentSettingAccess::HTML_MODE) ||
pDoc->get(IDocumentSettingAccess::BROWSE_MODE))
{
@@ -2476,8 +2391,7 @@
default:
if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
{
- // das geht auch in HTML und muss nicht als STYLE-Option
- // und darf nicht als Hint geschrieben werden
+
ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
"Underline als Hint schreiben?" );
pUStr = sCSS1_PV_underline;
@@ -2499,8 +2413,7 @@
default:
if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
{
- // das geht auch in HTML und muss nicht als STYLE-Option
- // und darf nicht als Hint geschrieben werden
+
ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
"Overline als Hint schreiben?" );
pOStr = sCSS1_PV_overline;
@@ -2522,8 +2435,7 @@
default:
if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
{
- // das geht auch in HTML und muss nicht als STYLE-Option
- // und darf nicht als Hint geschrieben werden
+
ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
"CrossedOut als Hint schreiben?" );
pCOStr = sCSS1_PV_line_through;
@@ -2541,8 +2453,7 @@
}
else if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
{
- // das geht auch in HTML und muss nicht als STYLE-Option
- // und darf nicht als Hint geschrieben werden
+
ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
"Blink als Hint schreiben?" );
pBStr = sCSS1_PV_blink;
@@ -2613,7 +2524,7 @@
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Farben muessen nicht in der Style-Option ausgegeben werden.
+
if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) &&
!rHTMLWrt.bCfgPreferStyles )
return rWrt;
@@ -2635,8 +2546,7 @@
static Writer& OutCSS1_SvxCrossedOut( Writer& rWrt, const SfxPoolItem& rHt )
{
- // Mit dieser Methode werden nur Hints ausgegeben!
- // Sonst wird OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink() direkt aufgerufen.
+
if( ((SwHTMLWriter&)rWrt).IsCSS1Source(CSS1_OUTMODE_HINT) )
OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink( rWrt,
@@ -2649,7 +2559,7 @@
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Fonts muessen nicht in der Style-Option ausgegeben werden.
+
if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
return rWrt;
@@ -2666,7 +2576,7 @@
"Font wirklich als Hint ausgeben?" );
String sOut;
- // MS IE3b1 hat mit einfachen Haekchen Probleme
+
USHORT nMode = rHTMLWrt.nCSS1OutMode & CSS1_OUTMODE_ANY_ON;
sal_Unicode cQuote = nMode == CSS1_OUTMODE_RULE_ON ? '\"' : '\'';
SwHTMLWriter::PrepareFontList( ((const SvxFontItem&)rHt), sOut, cQuote,
@@ -2681,8 +2591,7 @@
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Font-Hoehen muessen nicht in der Style-Option ausgegeben werden.
- // Fuer Drop-Caps wird ein andewres font-size ausgegeben
+
if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) ||
rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_DROPCAP ) )
return rWrt;
@@ -2699,7 +2608,7 @@
UINT32 nHeight = ((const SvxFontHeightItem&)rHt).GetHeight();
if( rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT) )
{
- // einen Hint nur dann ausgeben wenn es auch was bringt
+
USHORT nSize = rHTMLWrt.GetHTMLFontSize( nHeight );
if( rHTMLWrt.aFontHeights[nSize-1] == nHeight )
return rWrt;
@@ -2734,8 +2643,7 @@
case ITALIC_NORMAL:
if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
{
- // das geht auch in HTML und muss nicht als STYLE-Option
- // und darf nicht als Hint geschrieben werden
+
ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
"Italic als Hint schreiben?" );
pStr = sCSS1_PV_italic;
@@ -2755,7 +2663,7 @@
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Kerning-Item nur ausgeben, wenn volle Style-Unterst?tzung da ist
+
if( !rHTMLWrt.IsHTMLMode(HTMLMODE_FULL_STYLES) )
return rWrt;
@@ -2769,7 +2677,7 @@
nValue = -nValue;
}
- // Breite als n.n pt
+
nValue = (nValue + 1) / 2; // 1/10pt
sOut.Append( ByteString::CreateFromInt32( (sal_Int32)(nValue / 10) ) );
sOut.Append( '.' );
@@ -2820,8 +2728,7 @@
static Writer& OutCSS1_SvxUnderline( Writer& rWrt, const SfxPoolItem& rHt )
{
- // Mit dieser Methode werden nur Hints ausgegeben!
- // Sonst wird OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink() direkt aufgerufen.
+
if( ((SwHTMLWriter&)rWrt).IsCSS1Source(CSS1_OUTMODE_HINT) )
OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink( rWrt,
@@ -2833,8 +2740,7 @@
static Writer& OutCSS1_SvxOverline( Writer& rWrt, const SfxPoolItem& rHt )
{
- // Mit dieser Methode werden nur Hints ausgegeben!
- // Sonst wird OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink() direkt aufgerufen.
+
if( ((SwHTMLWriter&)rWrt).IsCSS1Source(CSS1_OUTMODE_HINT) )
OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink( rWrt,
@@ -2868,8 +2774,7 @@
case WEIGHT_BOLD:
if( !rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
{
- // das geht auch in HTML und muss nicht als STYLE-Option
- // und darf nicht als Hint geschrieben werden
+
ASSERT( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT),
"Fett als Hint schreiben?" );
pStr = sCSS1_PV_bold;
@@ -2888,8 +2793,7 @@
static Writer& OutCSS1_SvxBlink( Writer& rWrt, const SfxPoolItem& rHt )
{
- // Mit dieser Methode werden nur Hints ausgegeben!
- // Sonst wird OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink() direkt aufgerufen.
+
if( ((SwHTMLWriter&)rWrt).IsCSS1Source(CSS1_OUTMODE_HINT) )
OutCSS1_SvxTxtLn_SvxCrOut_SvxBlink( rWrt,
@@ -2902,10 +2806,7 @@
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
- // #60393#: Netscape4 hat massive Probleme mit den Zellenhoehen
- // wenn der Zeilenabstand innerhalb einer Tabelle geaendert wird
- // und die Breite der Tabelle nicht automatisch berechnet wird
- // (also wenn eine WIDTH-Option vorhanden ist).
+
if( rHTMLWrt.bOutTable && rHTMLWrt.bCfgNetscape4 )
return rWrt;
@@ -2959,8 +2860,7 @@
{
SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Alignment in Style-Option nur ausgeben, wenn das Tag kein
- // ALIGN=xxx zulaesst
+
if( rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) &&
!rHTMLWrt.bNoAlign)
return rWrt;
@@ -3032,15 +2932,15 @@
const SwFmtDrop& rDrop,
const SfxItemSet *pCharFmtItemSet )
{
- // Text fliesst rechts drumrum
+
rHWrt.OutCSS1_PropertyAscii( sCSS1_P_float, sCSS1_PV_left );
- // Anzahl der Zeilen -> %-Angabe fuer Font-Hoehe!
+
ByteString sOut( ByteString::CreateFromInt32( rDrop.GetLines()*100 ) );
sOut += '%';
rHWrt.OutCSS1_PropertyAscii( sCSS1_P_font_size, sOut );
- // Abstand zum Text = rechter Rand
+
USHORT nDistance = rDrop.GetDistance();
if( nDistance > 0 )
rHWrt.OutCSS1_UnitProperty( sCSS1_P_margin_right, nDistance );
@@ -3059,7 +2959,7 @@
{
SwHTMLWriter & rHTMLWrt = (SwHTMLWriter&)rWrt;
- // nie als Option eines Absatzes ausgeben, sondern nur als Hints
+
if( !rHTMLWrt.IsCSS1Source(CSS1_OUTMODE_HINT) )
return rWrt;
@@ -3070,7 +2970,7 @@
CSS1_OUTMODE_DROPCAP );
OutCSS1_SwFmtDropAttrs( rHTMLWrt, (const SwFmtDrop&)rHt );
- // Ein "> wird schon vom aufrufenden OutCSS1_HintAsSpanTag geschrieben.
+
}
else
{
@@ -3158,11 +3058,7 @@
const SvxLRSpaceItem& rLRItem = (const SvxLRSpaceItem&)rHt;
- // Der Export der harten Attributierung ist unnoetig, wenn die
- // neuen Werte denen der aktuellen Vorlage entsprechen
-
- // Einen linken Rand kann es durch eine Liste bereits in der
- // Umgebung geben
+
long nLeftMargin = (long)rLRItem.GetTxtLeft() - rHTMLWrt.nLeftMargin;
if( rHTMLWrt.nDfltLeftMargin != nLeftMargin )
{
@@ -3175,8 +3071,7 @@
(long)rLRItem.GetRight() );
}
- // Der Erstzeilen-Einzug kann den Platz fuer eine Numerierung
- // enthalten
+
long nFirstLineIndent = (long)rLRItem.GetTxtFirstLineOfst() -
rHTMLWrt.nFirstLineIndent;
if( rHTMLWrt.nDfltFirstLineIndent != nFirstLineIndent )
@@ -3352,7 +3247,7 @@
return rWrt;
}
-// Wrapper fuer OutCSS1_SfxItemSet etc.
+
static Writer& OutCSS1_SvxBrush( Writer& rWrt, const SfxPoolItem& rHt )
{
OutCSS1_SvxBrush( rWrt, rHt, CSS1_BACKGROUND_ATTR, 0 );
@@ -3365,14 +3260,12 @@
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Das Zeichen-Attribut wird nicht ausgegeben, wenn gerade
- // Optionen ausgegeben werden
+
if( rHt.Which() < RES_CHRATR_END &&
rHTMLWrt.IsCSS1Source( CSS1_OUTMODE_PARA ) )
return rWrt;
- // Erstmal ein par Werte holen
-// const Brush &rBrush = ((const SvxBrushItem &)rHt).GetBrush();
+
const Color & rColor = ((const SvxBrushItem &)rHt).GetColor();
const String *pLink = pGrfName ? pGrfName
: ((const SvxBrushItem &)rHt).GetGraphicLink();
@@ -3380,14 +3273,13 @@
if( CSS1_BACKGROUND_PAGE==nMode )
{
- // Fuer Seitenvorlagen wurde der Grafik-Name uebergeben. Es wird
- // nur ein Attribut ausgegeben, wenn die Grafik nicht gekachelt ist.
+
ASSERT( pLink, "Wo ist der Grafik-Name der Seitenvorlage?" );
if( !pLink || !pLink->Len() || GPOS_TILED==ePos )
return rWrt;
}
- // Erstmal die Farbe holen
+
BOOL bColor = FALSE;
/// OD 02.09.2002 #99657#
/// set <bTransparent> to TRUE, if color is "no fill"/"auto fill"
@@ -3399,23 +3291,23 @@
bColor = TRUE;
}
- // und jetzt eine Grafik
+
String sGrfNm;
if( !pLink )
{
- // embeddete Grafik -> WriteEmbedded schreiben
+
const Graphic* pGrf = ((const SvxBrushItem &)rHt).GetGraphic();
if( pGrf )
{
- // Grafik als (JPG-)File speichern
+
const String* pTempFileName = rHTMLWrt.GetOrigFileName();
if( pTempFileName )
sGrfNm = *pTempFileName;
USHORT nErr = XOutBitmap::WriteGraphic( *pGrf, sGrfNm,
String::CreateFromAscii("JPG"),
XOUTBMP_USE_NATIVE_IF_POSSIBLE );
- if( !nErr ) // fehlerhaft, da ist nichts auszugeben
+ if( !nErr )
{
sGrfNm = URIHelper::SmartRel2Abs(
INetURLObject(rWrt.GetBaseURL()), sGrfNm,
@@ -3435,12 +3327,11 @@
pLink = &sGrfNm;
}
- // In Tabellen wird nur dann etwas exportiert, wenn eine Grafik
- // existiert.
+
if( CSS1_BACKGROUND_TABLE==nMode && !pLink )
return rWrt;
- // ggf. noch die Ausrichtung der Grafik
+
const sal_Char *pRepeat = 0, *pHori = 0, *pVert = 0;
if( pLink )
{
@@ -3503,11 +3394,11 @@
}
}
- // jetzt den String zusammen bauen
+
String sOut;
if( !pLink && !bColor )
{
- // keine Farbe und kein Link, aber ein transparenter Brush
+
if( bTransparent && CSS1_BACKGROUND_FLY != nMode )
sOut.AssignAscii( sCSS1_PV_transparent );
}
@@ -3584,15 +3475,14 @@
nWidth <= Application::GetDefaultDevice()->PixelToLogic(
Size( 1, 1 ), MapMode( MAP_TWIP) ).Width() )
{
- // Wenn die Breite kleiner ist als ein Pixel, dann als 1px
- // ausgeben, damit Netscape und IE die Linie auch darstellen.
+
sOut += "1px";
}
else
{
nWidth *= 5; // 1/100pt
- // Breite als n.nn pt
+
sOut += ByteString::CreateFromInt32( nWidth / 100 );
(((sOut += '.')
+= ByteString::CreateFromInt32((nWidth/10) % 10))
@@ -3619,7 +3509,7 @@
}
sOut += ' ';
- // und noch die Farbe
+
GetCSS1Color( pLine->GetColor(), sOut );
rHTMLWrt.OutCSS1_PropertyAscii( pProperty, sOut );
@@ -3629,8 +3519,7 @@
{
SwHTMLWriter& rHTMLWrt = (SwHTMLWriter&)rWrt;
- // Das Zeichen-Attribut wird nicht ausgegeben, wenn gerade
- // Optionen ausgegeben werden
+
// if( !rHTMLWrt.IsHTMLMode(HTMLMODE_PARA_BORDER))
// return rWrt;
@@ -3644,13 +3533,13 @@
*pTop == *pBottom && *pTop == *pLeft && *pTop == *pRight) ||
(!pTop && !pBottom && !pLeft && !pRight) )
{
- // alle Linien gesetzt und gleich oder alle Linien nicht gesetzt
+
// => border : ...
OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border, pTop );
}
else
{
- // sonst alle Linien individuell ausgeben
+
OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border_top, pTop );
OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border_bottom, pBottom );
OutCSS1_SvxBorderLine( rHTMLWrt, sCSS1_P_border_left, pLeft );
@@ -3716,12 +3605,7 @@
return rWrt;
}
-/*
- * lege hier die Tabellen fuer die HTML-Funktions-Pointer auf
- * die Ausgabe-Funktionen an.
- * Es sind lokale Strukturen, die nur innerhalb der HTML-DLL
- * bekannt sein muessen.
- */
+/
SwAttrFnTab aCSS1AttrFnTab = {
Context
- [Libreoffice] Patch: delete comments in German · bitpolare
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.