[Libreoffice-commits] core.git: sw/source
Stefan Ring
stefanrin at gmail.com
Tue Feb 25 13:08:31 PST 2014
sw/source/filter/ww1/fltshell.cxx | 10 -
sw/source/filter/ww1/w1class.cxx | 97 +++++-------
sw/source/filter/ww1/w1class.hxx | 171 ++++++++++-----------
sw/source/filter/ww1/w1filter.cxx | 299 +++++++++++++++++---------------------
sw/source/filter/ww1/w1par.cxx | 39 +---
sw/source/filter/ww1/w1struct.hxx | 4
6 files changed, 287 insertions(+), 333 deletions(-)
New commits:
commit 5fce5642b65459fe165bcab5fd7d9217d3aee4ed
Author: Stefan Ring <stefanrin at gmail.com>
Date: Tue Feb 25 22:01:50 2014 +0100
fdo#39468 Translate German comments: sw/source/filter/ww1
Change-Id: I5c6ae4f1692f6ed8d1792417cb594174a35ca8fa
Reviewed-on: https://gerrit.libreoffice.org/8323
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sw/source/filter/ww1/fltshell.cxx b/sw/source/filter/ww1/fltshell.cxx
index 8a1cc74..672cfbf 100644
--- a/sw/source/filter/ww1/fltshell.cxx
+++ b/sw/source/filter/ww1/fltshell.cxx
@@ -1310,13 +1310,13 @@ const SfxPoolItem& SwFltOutDoc::GetAttr(sal_uInt16 nWhich)
const SfxPoolItem& SwFltFormatCollection::GetAttr(sal_uInt16 nWhich)
{
- return GetColl()->GetFmtAttr(nWhich); // mit Parents
+ return GetColl()->GetFmtAttr(nWhich); // with Parents
}
-// GetNodeOrStyAttr holt Attribute fuer Toggle- und Modify-Attribute:
-// Bei Formatdefinitionen aus dem altuellen Style mit Parents
-// sonst aus dem Node mit Parents
-// Im Stack wird nicht nachgesehen
+// GetNodeOrStyAttr fetches attributes for toggle and modify attributes:
+// For format definitions, the current style with parents is
+// consulted, otherwise the node with parents.
+// The stack is never used.
const SfxPoolItem& SwFltOutDoc::GetNodeOrStyAttr(sal_uInt16 nWhich)
{
SwCntntNode * pNd = pPaM->GetPoint()->nNode.GetNode().GetCntntNode();
diff --git a/sw/source/filter/ww1/w1class.cxx b/sw/source/filter/ww1/w1class.cxx
index 7bdb397..799d50b 100644
--- a/sw/source/filter/ww1/w1class.cxx
+++ b/sw/source/filter/ww1/w1class.cxx
@@ -349,7 +349,7 @@ Ww1Fonts::Ww1Fonts(Ww1Fib& rInFib, sal_uLong nFieldFlgs)
break;
nMax++;
nLeft -= nNextSiz;
- if(nLeft < 1) // naechste Laenge muss gelesen werden koennen
+ if(nLeft < 1) // need to be able to read next length
break;
p = (W1_FFN *)(((char*)p) + nNextSiz);
}
@@ -400,7 +400,7 @@ Ww1Dop::Ww1Dop(Ww1Fib& _rFib)
Ww1Picture::Ww1Picture(SvStream& rStream, sal_uLong ulFilePos)
: bOK(false), pPic(0)
{
- ulFilePos &= 0xffffff; //~ ww1: warum auch immer - im highbyte steht eine 5?!?!
+ ulFilePos &= 0xffffff; //~ ww1: for some reason the high byte contains 5?!?!
SVBT32 lcb;
if (rStream.Seek(ulFilePos) == (sal_uLong)ulFilePos)
if (rStream.Read(&lcb, sizeof(lcb)) == (sal_uLong)sizeof(lcb))
@@ -709,8 +709,8 @@ sal_uInt16 Ww1SprmPapx::SprmSize(sal_uInt8*, sal_uInt16 nSize)
{
sal_uInt16 nRet = 0;
if (nSize >= sizeof(W1_PAPX))
- nRet = nSize - ( sizeof(W1_PAPX) - 1 ); // im W1_PAPX ist das
- // 1. SprmByte enthalten
+ nRet = nSize - ( sizeof(W1_PAPX) - 1 ); // the 1st SprmByte is contained
+ // in the W1_PAPX
return nRet;
}
@@ -781,11 +781,10 @@ sal_uInt8* Ww1Plc::GetData(sal_uInt16 nIndex)
}
// PlcBookmarks
-// class Ww1StringList liest im Ctor eine Anzahl von P-Strings aus dem Stream
-// in den Speicher und patcht sie zu C-Strings um.
-// Die Anzahl wird in nMax zurueckgeliefert.
-// im Index 0 stehen alle Strings nacheinander, ab Index 1 werden
-// die einzelnen Strings referenziert.
+// class Ww1StringList reads a number of P strings from the stream into memory
+// and patches them into C strings
+// nMax returns the count
+// Index 0 references all strings; index 1 and higher reference individual strings
Ww1StringList::Ww1StringList( SvStream& rSt, sal_uLong nFc, sal_uInt16 nCb )
: pIdxA(0), nMax(0)
{
@@ -795,18 +794,18 @@ Ww1StringList::Ww1StringList( SvStream& rSt, sal_uLong nFc, sal_uInt16 nCb )
OSL_ENSURE(nCb > sizeof(nCountBytes), "Ww1StringList");
if (rSt.Seek(nFc) == (sal_uLong)nFc)
if (rSt.Read(nCountBytes, sizeof(nCountBytes))
- == sizeof(nCountBytes)) // Laenge steht hier nochmal
+ == sizeof(nCountBytes)) // length again
{
OSL_ENSURE(SVBT16ToShort(nCountBytes)
== nCb, "redundant-size missmatch");
- // hoffentlich sind sie immer gleich
+ // let's hope that they are always equal
sal_Char* pA = new sal_Char[nCb - sizeof(nCountBytes) + 1];
- // Alloziere PString-Array
+ // allocating PString array
//~ Ww1: new-NULL
if (rSt.Read(pA, nCb - sizeof(nCountBytes))
- == (sal_uLong)nCb - sizeof(nCountBytes)) // lese alle
+ == (sal_uLong)nCb - sizeof(nCountBytes)) // read all
{}// do nothing
- // Zaehle, wieviele Fonts enthalten
+ // Count number of fonts
long nLeft = nCb - sizeof(nCountBytes);
sal_Char* p = pA;
while (true)
@@ -817,32 +816,32 @@ Ww1StringList::Ww1StringList( SvStream& rSt, sal_uLong nFc, sal_uInt16 nCb )
break;
nMax++;
nLeft -= nNextSiz;
- if(nLeft < 1) // naechste Laenge muss gelesen werden koennen
+ if(nLeft < 1) // need to be able to read next length
break;
p = p + nNextSiz;
}
if (nMax)
{
- pIdxA = new sal_Char*[nMax+1]; // alloziere Index-Array
- pIdxA[0] = pA; // Index 0 : alles
- // ab Index 1 C-Strings
- pIdxA[1] = pA + 1; // fuelle Index-Array
+ pIdxA = new sal_Char*[nMax+1]; // allocate index array
+ pIdxA[0] = pA; // Index 0 : everything
+ // from index 1 C strings
+ pIdxA[1] = pA + 1; // fill index array
sal_uInt16 i = 2;
p = pA;
sal_uInt8 nL = *p;
while(true)
{
- p += nL + 1; // Neues Laengen-Byte
- nL = *p; // merke Laenge
- *p = '\0'; // mach C-String draus
+ p += nL + 1; // new length byte
+ nL = *p; // remember length
+ *p = '\0'; // make C string
if( i > nMax )
break;
- pIdxA[i] = p + 1; // Ptr auf C-String
+ pIdxA[i] = p + 1; // Ptr to C string
i++;
}
}
else
- pIdxA = 0; // Keine Eintraege -> kein Array
+ pIdxA = 0; // No entries -> no array
}
}
}
@@ -867,17 +866,16 @@ Ww1Bookmarks::Ww1Bookmarks(Ww1Fib& rInFib)
bOK = !aNames.GetError() && !pPos[0]->GetError() && !pPos[1]->GetError();
}
-// Der Operator ++ hat eine Tuecke: Wenn 2 Bookmarks aneinandergrenzen, dann
-// sollte erst das Ende des ersten und dann der Anfang des 2. erreicht werden.
-// Liegen jedoch 2 Bookmarks der Laenge 0 aufeinander, *muss* von jedem Bookmark
-// erst der Anfang und dann das Ende gefunden werden.
-// Der Fall: ][
+// There's one twist to this operator++: in the case of 2 adjacent bookmarks,
+// the end of the first one should be reached first, and then the start of the
+// second one. However, if there are 2 bookmarks of length 0 on top of each
+// other, each bookmarks' respective start *must* be found before its end.
+// The case: ][
// [...]
// ][
-// ist noch nicht geloest, dabei muesste ich in den Anfangs- und Endindices
-// vor- und zurueckspringen, wobei ein weiterer Index oder ein Bitfeld
-// oder etwas aehnliches zum Merken der bereits abgearbeiteten Bookmarks
-// noetig wird.
+// is not solved yet. I'd need to jump back and forth in the start and end
+// indices, using another index or a bitfield or something similar for keeping
+// track of already processed bookmarks.
void Ww1Bookmarks::operator++()
{
if( bOK )
@@ -966,12 +964,11 @@ sal_Bool Ww1FkpPap::Fill(sal_uInt16 nIndex, sal_uInt8*& p, sal_uInt16& rnCountBy
OSL_ENSURE(nOffset>(sal_uInt16)(Count()*sizeof(SVBT32)), "calc error");
rnCountBytes = *(aFkp+nOffset) * 2;
nOffset += sizeof(sal_uInt8);
- if( nOffset + rnCountBytes < 511 ) // SH: Assert schlug 1 zu frueh zu
- rnCountBytes++; // SH: Ich weiss nicht genau,
- // ob das letzte Byte des PAPX
- // genutzt wird, aber so vergessen
- // wir keins und sind trotzdem
- // auf der sicheren Seite
+ if( nOffset + rnCountBytes < 511 ) // SH: Assert triggered 1 too early
+ rnCountBytes++; // SH: I'm not entirely sure if the last
+ // byte of the PAPX is used, but this way
+ // we don't forget any and are on the
+ // safe side either way
OSL_ENSURE(nOffset+rnCountBytes <= 511, "calc error");
p = aFkp + nOffset;
}
@@ -987,7 +984,7 @@ sal_Bool Ww1FkpPap::Fill(sal_uInt16 nIndex, sal_uInt8*& p, sal_uInt16& rnCountBy
sal_Bool Ww1FkpChp::Fill(sal_uInt16 nIndex, W1_CHP& aChp)
{
OSL_ENSURE( nIndex < Count(), "Ww1FkpChp::Fill() Index out of Range" );
- memset(&aChp, 0, sizeof(aChp)); // Default, da verkuerzt gespeichert
+ memset(&aChp, 0, sizeof(aChp));
sal_uInt16 nOffset = GetData(nIndex)[0] * 2;
if (nOffset)
{
@@ -1050,10 +1047,9 @@ void Ww1Pap::Seek(sal_uLong ulSeek)
++(*this);
}
-// SH: Where hat einen Parameter mitbekommen, der sagt, ob bei Neuanlegen eines
-// Fkps der zugehoerige Index auf 0 gesetzt werden soll
-// ( darf fuer Push/Pop nicht passieren )
-// Ein eleganterer Weg faellt mir auf die Schnelle nicht ein
+// SH: Where has been passed a parameter which determines if the index should be set
+// to 0 upon constructing a new Fkp (must not happen for Push/Pop)
+// Can't think of an elegant way for now
sal_uLong Ww1Pap::Where( sal_Bool bSetIndex )
{
sal_uLong ulRet = 0xffffffff;
@@ -1082,8 +1078,8 @@ void Ww1Pap::operator++()
}
}
-// SH: FindSprm sucht in grpprl nach Sprm nId
-// Rueckgabe: Pointer oder 0
+// SH: FindSprm looks for Sprm nId in grpprl
+// Return value: pointer or 0
sal_Bool Ww1Pap::FindSprm(sal_uInt16 nId, sal_uInt8* pStart, sal_uInt8* pEnd)
{
Ww1Sprm aSprm( pStart, static_cast< sal_uInt16 >(pEnd-pStart) );
@@ -1113,7 +1109,7 @@ sal_Bool Ww1Pap::HasId0(sal_uInt16 nId)
sal_uInt8* pByte;
sal_uInt16 n;
if( pPap->Fill(nFkpIndex, pByte, n) ){
- sal_uInt8* p2 = ((W1_PAPX*)(pByte))->grpprlGet(); // SH: Offset fehlte
+ sal_uInt8* p2 = ((W1_PAPX*)(pByte))->grpprlGet(); // SH: Offset was missing
bRet = FindSprm( nId, p2, pByte + n );
}
return bRet;
@@ -1148,10 +1144,9 @@ void Ww1Chp::Seek(sal_uLong ulSeek)
++(*this);
}
-// SH: Where hat einen Parameter mitbekommen, der sagt, ob bei Neuanlegen eines
-// Fkps der zugehoerige Index auf 0 gesetzt werden soll
-// ( darf fuer Push/Pop nicht passieren )
-// Ein eleganterer Weg faellt mir auf die Schnelle nicht ein
+// SH: Where has been passed a parameter which determines if the index should be set
+// to 0 upon constructing a new Fkp (must not happen for Push/Pop)
+// Can't think of an elegant way for now
sal_uLong Ww1Chp::Where( sal_Bool bSetIndex )
{
sal_uLong ulRet = 0xffffffff;
diff --git a/sw/source/filter/ww1/w1class.hxx b/sw/source/filter/ww1/w1class.hxx
index 1d0da19..7dadb10 100644
--- a/sw/source/filter/ww1/w1class.hxx
+++ b/sw/source/filter/ww1/w1class.hxx
@@ -65,25 +65,20 @@ class Ww1SprmSep;
class Ww1Style;
class Ww1StyleSheet;
-// nach moeglichkeit wurden in diesem modul methoden aehnlicher
-// funktionalitaet gleich benannt. Die namen wurden wenn moeglich vom
-// ww-filter uebernommen.
-// Where() gibt die position eines elements. dies kann sowohl eine
-// seek-position im stream als auch ein relativer offset sein, da dies
-// bei word durcheinander geht. die methoden sind durch kommentare
-// gekennzeichnet, ob sie sich auf positionen in der datei oder
-// innerhalb des textes beziehen. vorsicht: innerhalb des textes kann
-// verschiedene texte in der datei bedeuten.
-// Count() gibt die anzahl der elemente zurueck. vorsicht bei
-// n/n-1-feldern (word speichert strukturen gern in doppel-arrays, in
-// denen das erste n elemente, das zweite jedoch n-1 elemente
-// enthaelt.
-// Fill() fuellt uebergebene referenzen mit daten aus den
-// word-strukturen.
-// GetData() gibt zeiger auf den datenbereich zurueck
-// GetError() gibt zurueck, ob fehler aufgetreten ist
-// Start(), Stop(), Out(), op<< siehe modul w1filter
-// Dump() siehe modul w1dump
+// If possible, methods with similar functionality were given similar
+// names in this module. The names were taken from ww filter, if
+// possible.
+// Where() returns an element's position. This can be either a seek
+// position in the stream or a relative offset inside the text, since
+// these are mixed up in Word. The methods' comments indicate which of
+// these options they apply to.
+// Count() returns the number of elements. Be careful with n/n-1
+// fields (Word likes to store structures in double arrays, with the
+// first one containing n elements, and the second one n-1.
+// Fill() fills passed references with data from Word structures.
+// GetData() returns pointers to the data range
+// Start(), Stop(), Out(), op<< see module w1filter
+// Dump() see module w1dump
// file information block: root of the evil: it's at the start of the
// file (seek(0)) and contains all positions of the structures of the
@@ -118,7 +113,7 @@ public:
};
// ww-files can contain several blocks of text (main-text,
-// footnotes etc). PlainText vereinigt die gemeinsamkeiten
+// footnotes etc). PlainText unifies the overlaps
class Ww1PlainText
{
protected:
@@ -276,9 +271,9 @@ public:
return !bOK; }
};
-// ww kennt nur font-nummern beim formatieren. nebenher gibts ein
-// array von fonts, damit man aus der nummer einen konkreten font
-// machen kann.
+// ww only knows font numbers during formatting. Independently, there
+// is an array of fonts, so that the number can be converted to a
+// specific font.
class Ww1Fonts
{
protected:
@@ -303,28 +298,27 @@ public:
};
// SingleSprm
-// diese klassen ersetzen die aSprmTab etc des ww6-filters. die
-// funktionspointer sind hier virtuale methoden, fuer die typen (byte,
-// word, var-sized etc) gibt es abgeleitete klassen. diese haben
-// methoden zum bestimmen der groesze, dumpen und shell-ausgeben der
-// Sprms.
-// die klassen werden mit new (in InitTab()) erzeugt und nach ihrem
-// code in die tabelle gestellt. zum aktivieren ruft man nun nur noch
-// die entsprechende methode des objektes in der tabelle auf.
-// wohlgemerkt: SingleSprms sind die _beschreibung_ und _funktion_ der
-// Sprms, nicht deren inhalt. dieser musz uebergeben werden an die
-// einzelnen methoden wie Size, Dump und Start/Stop.
+// These classes replace aSprmTab etc. from ww6 filter. The function
+// pointers are virtual methods. There exist derived classes for
+// specific types (byte, word, var-sized etc.). They have methods for
+// determining their sizes, for dumping and outputting the Sprms to
+// the shell.
+// The classes get created with new (in InitTab()) and added to the
+// table according to their code. For activating them the respective
+// method has to be called on an object in the table.
+// Take note: SingleSprms only describe Sprms, they don't carry their
+// content, which must be passed to the individual methods such as
+// Size, Dump and Start/Stop.
class Ww1SingleSprm
{
public:
#ifdef DUMP
- // allein die virtuellen methoden stehen in der vtab, also je nachdem,
- // ob fuer dumper oder filter uebersetzt wird ausblenden: das spart
- // platz. ausserdem stehen die methoden fuer dumper bzw filter in
- // verschiedenen modulen, die im jeweils anderen projekt nicht
- // uebersetzt werden. das diese dann beim linken nicht zur verfuegung
- // stehen faellt dann auch nicht auf. Der Namensstring ist nur im
- // Dumper noetig: weg damit im Filter.
+ // The vtab only contains the virtual methods; we hide them
+ // depending on what we compile for (dumper or filter). This saves
+ // space. Furthermore, these method's implementations live in
+ // different modules which only get compiled and linked when
+ // required by the respective project. The name string is only
+ // required by the dumper -- let's not include it in the filter.
void Start(Ww1Shell&, sal_uInt8, sal_uInt8*, sal_uInt16, Ww1Manager&);
void Stop(Ww1Shell&, sal_uInt8, sal_uInt8*, sal_uInt16, Ww1Manager&);
virtual std::ostream& Dump(std::ostream&, sal_uInt8*, sal_uInt16);
@@ -481,8 +475,8 @@ public:
class Ww1SingleSprmPBrc : public Ww1SingleSprmWord {
protected:
- // spezielle start-routine, je nach sprm verschieden versorgt
- // mit einem BoxItem.
+ // specific start routines, supplied with different BoxItems
+ // depending on sprm
void Start(Ww1Shell&, sal_uInt8, W1_BRC10*, sal_uInt16, Ww1Manager&, SvxBoxItem&);
void Start(Ww1Shell&, sal_uInt8, W1_BRC*, sal_uInt16, Ww1Manager&, SvxBoxItem&);
@@ -503,10 +497,9 @@ public:
#define BRC_RIGHT ((sal_uInt16)3)
#define BRC_ANZ ((sal_uInt16)BRC_RIGHT-BRC_TOP+1)
-// Die BRC-struktur fuer 1.0 versionen von word sind verschieden von
-// denen der folgenden versionen. diese werden zum glueck aber auch
-// von anderen sprms abgerufen.
-// SH: Ab sofort alle 4 Umrandungen ueber nur 1 Klasse.
+// The BRC structure for 1.0 versions of Word differ from the ones in
+// later versions. Luckily, they will be queried by other sprms.
+// SH: From now on, all 4 borders handled by a single class.
class Ww1SingleSprmPBrc10 : public Ww1SingleSprmPBrc
{
sal_uInt16 nLine; // BRC_TOP, BRC_LEFT, ...
@@ -556,7 +549,7 @@ public:
Ww1SingleSprmPChgTabsPapx(sal_Char* sName) :
Ww1SingleSprmByteSized(0, sName) {
}
- // Size() is not yet activated!
+ // Size() is not yet activated!
void Start(Ww1Shell&, sal_uInt8, sal_uInt8*, sal_uInt16, Ww1Manager&);
void Stop(Ww1Shell&, sal_uInt8, sal_uInt8*, sal_uInt16, Ww1Manager&);
};
@@ -625,10 +618,10 @@ public:
void Start(Ww1Shell&, sal_uInt8, sal_uInt8*, sal_uInt16, Ww1Manager&);
};
-// Klassendefinitionen fuer Tabellen-Fastsave-Attribute
-// Da wir kein Fastsave unterstuetzen, brauchen wir's nicht
+// Class definitions for table fastsave attributes
+// Because we don't support fastsave, we don't need it
-// Klassendefinitionen fuer Apos ( == Flys )
+// Class definitions for Apos ( == Flys )
class Ww1SingleSprmPpc : public Ww1SingleSprmByte {
public:
@@ -670,7 +663,7 @@ public:
void Start(Ww1Shell&, sal_uInt8, sal_uInt8*, sal_uInt16, Ww1Manager&);
};
-// der tatsaechlich in der datei auftretende datentyp Sprm
+// The data type Sprm actually appearing in the file
class Ww1Sprm
{
sal_Bool ReCalc();
@@ -690,9 +683,9 @@ protected:
sal_Bool bOK;
sal_uInt16* pArr;
sal_uInt16 count;
- // ohne Token, mit laengen-byte/word
+ // without token, with length byte/word
sal_uInt16 GetSize(sal_uInt8 nId, sal_uInt8* pSprm);
- // mit Token und LaengenByte
+ // with token and length byte
sal_uInt16 GetSizeBrutto(sal_uInt8* pSprm) {
sal_uInt8 nId = *pSprm++;
return GetSize(nId, pSprm) + 1; }
@@ -736,9 +729,8 @@ public:
void WriteBmp(SvStream&);
};
-// eine der wichtigen array-strukturen der ww-dateien. sie beinhalten
-// n+1 dateipositionen und n attribute, die zwischen den
-// dateipositionen gelten.
+// One of the important array structures in ww files. They contain n+1
+// file positions and n attributes applying in between them.
class Ww1Plc
{
sal_uInt8* p;
@@ -922,8 +914,7 @@ public:
{}
};
-// aehnlich den plcs aufgebaute arrays, die sich auf eine groesze von
-// 512 byte beschraenken
+// Arrays very similar to the plcs; limited to a size of 512 bytes
class Ww1Fkp
{
protected:
@@ -935,7 +926,7 @@ public:
Ww1Fkp(SvStream&, sal_uLong, sal_uInt16);
friend std::ostream& operator <<(std::ostream&, Ww1Fkp&);
sal_uInt16 Count() const { return *(aFkp+511); }
- sal_uLong Where(sal_uInt16); // wie im entsprechenden fkp
+ sal_uLong Where(sal_uInt16); // like in the corresponding fkp
};
class Ww1FkpPap : public Ww1Fkp
@@ -1008,31 +999,31 @@ public:
void Out(Ww1Shell&);
};
-// Header/Footer/Footnoteseparators sind einer nach dem naechsten in
-// einem eigenen text gespeichert. ein plc trennt diesen text in
-// einzelne teile. diese werden durchnummeriert als ihdd. nun gibt es
-// 9 verschiedene funktionen fuer diese texte. wird eine davon
-// angefordert, ist es der erste, beim naechstern der 2 ihdd und so
-// weiter. welcher textteil also welcher typ sein wird laeszt sich
-// nur bei sequenziellem lesen der datei bestimmen. die 9 typen sind:
-// fusznoten-trenner, folge-fusznoten-trenner, folge-fusznoten-notiz,
-// gerade-seiten kopfzeilen, ungerade seiten kopfzeilen, dto 2*
-// fuszzeilen, kopf & fuszzeilen, wenn erste seite andere zeilen hat.
-// HeaderFooter merkt sich fuer jede der 9 die momentane einstellung
-// (jedoch nicht die alten) und den naechstvergebbaren ihdd. ist ein
-// teil nicht vorhanden bekommt er den wert 0xffff.
+// Header/footer/footnote separators are stored in a separate text one
+// after the other. A plc partitions these texts into several
+// parts. They are numbered as ihdd. There are 9 different functions
+// for these texts. When one of them is requested, it applies to the
+// first ihdd, the next time to the second and so on. Which type a
+// given text part will be treated as can only be determined by
+// reading the file sequentially. The 9 types are: footnote separator,
+// footnote continuation separator, footnote continuation note, even
+// page header, odd page header, even page footer, odd page footer,
+// header and footer for the first page. HeaderFooter remembers the
+// current setting for each of these (but not the previous one) and
+// the following ihdd. A part of type 0xffff denotes a non-existing
+// part.
class Ww1HeaderFooter : public Ww1PlcHdd
{
- sal_uInt16 nextIhdd; // naechster textteil im HddText
- sal_uInt16 nFtnSep; // fusznoten trenner
- sal_uInt16 nFtnFollowSep; // folge fusznoten trenner
- sal_uInt16 nFtnNote; // folgefunsznotennotiz
- sal_uInt16 nEvenHeadL; // kopfzeilen grader seiten
- sal_uInt16 nOddHeadL; // kopfzeilen ungrader seiten
- sal_uInt16 nEvenFootL; // fuszzeilen grader seiten
- sal_uInt16 nOddFootL; // fuszzeilen ungerader seiten
- sal_uInt16 nFirstHeadL; // kopfzeilen der ersten seite
- sal_uInt16 nFirstFootL; // fuszzeilen der ersten seite
+ sal_uInt16 nextIhdd; // next text part in HddText
+ sal_uInt16 nFtnSep; // footnote separator
+ sal_uInt16 nFtnFollowSep; // footnote continuation separator
+ sal_uInt16 nFtnNote; // footnote continuation note
+ sal_uInt16 nEvenHeadL;
+ sal_uInt16 nOddHeadL;
+ sal_uInt16 nEvenFootL;
+ sal_uInt16 nOddFootL;
+ sal_uInt16 nFirstHeadL;
+ sal_uInt16 nFirstFootL;
enum HeaderFooterMode {
None, FtnSep, FtnFollowSep, FtnNote, EvenHeadL, OddHeadL,
EvenFootL, OddFootL, FirstHeadL, MaxHeaderFooterMode
@@ -1148,7 +1139,7 @@ public:
class Ww1Fields : public Ww1PlcFields
{
sal_uInt16 nPlcIndex;
- OUString sErgebnis; // das von word errechnete ergebniss
+ OUString sResult; // Calculated by Word
SwField* pField;
sal_uLong Where(sal_uInt16 nIndex) // within the text
{ return Ww1PlcFields::Where(nIndex) - rFib.GetFIB().fcMinGet(); }
@@ -1419,9 +1410,9 @@ public:
}
};
-// zentraler aufhaenger der ww-seite des filters, konstruiert aus dem
-// inputstream (ww-datei) enthaelt er alles, was noetig ist, um in die
-// shell (pm-seite) gepiped zu werden.
+// Central point of access for the ww side of the filter, constructed
+// from the input stream (ww file). It contains everything necessary
+// for being piped into the shell (pm side).
class Ww1Manager
{
sal_Bool bOK;
@@ -1431,17 +1422,17 @@ class Ww1Manager
Ww1Fib aFib;
Ww1Dop aDop;
Ww1Fonts aFonts;
- // ab jetzt alles paarig, fuer 'pushed':
+ // from now on, everything in pairs, for 'pushed':
Ww1DocText aDoc;
Ww1PlainText* pDoc;
sal_uLong ulDocSeek;
sal_uLong* pSeek;
Ww1TextFields aFld;
Ww1Fields* pFld;
- // selbst 'push'bar:
+ // 'push'able itself:
Ww1Chp aChp;
Ww1Pap aPap;
- // nicht in textbereichen vorhanden, wenn ge'pushed'
+ // not present in text ranges if 'pushed'
Ww1Footnotes aFtn;
Ww1Bookmarks aBooks;
Ww1Sep aSep;
diff --git a/sw/source/filter/ww1/w1filter.cxx b/sw/source/filter/ww1/w1filter.cxx
index 970461e..ac7b18d 100644
--- a/sw/source/filter/ww1/w1filter.cxx
+++ b/sw/source/filter/ww1/w1filter.cxx
@@ -67,26 +67,25 @@
using namespace css;
using namespace nsSwDocInfoSubType;
-// hier stehen die methoden operator<<, Out, Start und Stop mit
-// folgender Bedeutung: wenn moeglich wird die information aus dem
-// dokument per
+// The methods operator<<, Out, Start and Stop are to be used like
+// this: If possible, information from the document is transferred to
+// the shell with
// operator<<()
-// in die shell uebertragen. sind jedoch weitere parameter noetig
-// wurde der name
+// If additional parameters are required, the method
// Out()
-// gewaehlt. ist ein bereich zu kennzeichnen (zB bei attributen
-// von/bis), heissen die methoden
+// needs to be used. The methods for marking a range (attribute range,
+// for example), are
// Start(), Stop()
-// alle diese methoden stehen in diesem modul, das fuer den filter,
-// jedoch nicht fuer den dumper noetig ist. und da alle regeln ihre
-// ausnahme haben: hier stehen auch methoden, die aus anderen gruenden
-// fuer den dumper sinnlos sind, zB wenn sie auf sv-strukturen beruhen
-// wie zB GetFont() auf SvxFontItem.
+// This module contains all of these methods. It is necessary for the
+// filter, but not for the dumper, with one exception though: the
+// module also contains methods, which are useless for the dumper, for
+// example because they operate on sv structures like GetFont() does on
+// SvxFontItem.
// Manager
Ww1Shell& operator <<(Ww1Shell& rOut, Ww1Manager& This)
{
- // verhindern, das bei rekusivem aufruf dies mehrfach passiert:
+ // prohibit action in case of recursive call
if (!This.Pushed())
{
{
@@ -99,9 +98,8 @@ Ww1Shell& operator <<(Ww1Shell& rOut, Ww1Manager& This)
// this one, too
Ww1Assoc(This.aFib).Out(rOut);
}
- // dieser nicht, der ist bereits member:
This.aDop.Out(rOut);
- // Jetzt entscheiden, wie Seitenvorlagen erzeugt werden
+ // Decide now how page templates will be created
if (This.GetSep().Count() <= 1)
rOut.SetUseStdPageDesc();
}
@@ -109,24 +107,23 @@ Ww1Shell& operator <<(Ww1Shell& rOut, Ww1Manager& This)
sal_Unicode cUnknown = ' ';
while (*This.pSeek < This.pDoc->Count())
{
- // ausgabe des ProgressState nur, wenn im haupttext, da sonst
- // nicht bestimmt werden kann, wie weit wir sind:
+ // output the ProgressState only for main text, because we
+ // cannot determine the correct value otherwise
if (!This.Pushed())
::SetProgressState(This.Where() * 100 / This.pDoc->Count(),
rOut.GetDoc().GetDocShell());
- // hier werden abwechselnd die attribute und die zeichen in die
- // shell gepumpt. die positionen werden durch das lesen der
- // zeichen aus dem manager hoch- gezaehlt. erst alle attribute:
+ // Here, attributes and characters get pumped into the shell
+ // alternatingly. The positions get incremented by reading
+ // chars from the manager. First, the attributes:
This.Out(rOut, cUnknown);
- // das textdocument pDoc ist ein Ww1PlainText, dessen Out()
- // methode solange ausgibt, bis entweder ein sonderzeichen
- // auftaucht oder die anzahl der auszugebenden zeichen erreicht
- // ist:
+ // The text document pDoc is a Ww1PlainText, whose Out()
+ // method outputs until the next special character or the
+ // requested number of characters has been reached.
cUnknown = This.pDoc->Out(rOut, *This.pSeek);
}
This.SetStopAll(true);
- This.OutStop(rOut, cUnknown); // Damit die Attribute am Ende geschlossen
- This.SetStopAll(false); // werden
+ This.OutStop(rOut, cUnknown); // So that attributes get closed at the end
+ This.SetStopAll(false);
return rOut;
}
@@ -147,7 +144,7 @@ void Ww1Manager::OutStop(Ww1Shell& rOut, sal_Unicode cUnknown)
void Ww1Manager::OutStart( Ww1Shell& rOut )
{
- // alle attribute, die's brauchen beginnen
+ // start all attributes which need it
if (!Pushed())
aSep.Start(rOut, *this);
if (true)
@@ -160,8 +157,8 @@ void Ww1Manager::OutStart( Ww1Shell& rOut )
pFld->Start(rOut, *this);
if (!Pushed())
aBooks.Start(rOut, *this);
- // bestimmen, wo das naechste Ereigniss ist:
- sal_uLong ulEnd = pDoc->Count(); // spaetestens am textende
+ // determine next event
+ sal_uLong ulEnd = pDoc->Count(); // at the latest at the end of the text
if (!Pushed())
if (ulEnd > aSep.Where()) // next Sep prior?
ulEnd = aSep.Where();
@@ -181,33 +178,31 @@ void Ww1Manager::OutStart( Ww1Shell& rOut )
if (ulEnd > aBooks.Where()) // next Bookmark prior?
ulEnd = aBooks.Where();
*pSeek = Where(); // current position
- if (*pSeek < ulEnd) // sind wir bereits weiter?
+ if (*pSeek < ulEnd)
*pSeek = ulEnd;
}
void Ww1Manager::Out(Ww1Shell& rOut, sal_Unicode cUnknown)
{
-// Je nach modus wird hier mit feldern, fusznoten, zeichenattributen,
-// absatzatributen und sektionen wie folgt verfahren: von allen wird
-// zuallererst die stop-methoden gerufen. stellt das objekt fest, dasz
-// etwas zu beenden ist (natuerlich nicht im ersten durchgang) beendet
-// es dies, ansonsten ist der aufruf wirkungslos. dann werden
-// unbehandelte sonderzeichen augegeben. das werden genauso alle
-// start-methoden gerufen und danach per where festgestellt, an
-// welcher stelle die naechste aktion zu erwarten ist.
-
-// ist der manager in einem ge'push'ten mode, werden bestimmte
-// elemente ausgeklammert. felder werden wiederum nur in besonderen
-// faellen augeklammert, wenn naemlich bereiche ausgegeben werden, die
-// keine felder enthalten koennen. charakterattribute und
-// paragraphenattribute werden jedoch nie ausgeklammert. die if (1)
-// wurden zur verdeutlichung der einheitlichkeit eingefuegt.
-
-// Erstmal eine Sonderbehandlung fuer Tabellen:
-// die wichtigen Attribute lassen sich am Besten vor Beendigung derselben
-// abfragen.
-// Optimierung: Sie werden nur auf sinnvolle Werte gesetzt, wenn
-// das 0x07-Zeiche ansteht.
+// Depending on the mode, fields, footnotes, character attributes,
+// paragraph attributes and sections are handled like this: First, the
+// Stop() method is called. If the object determines that there is
+// something to end (obviously not during the first pass), it will be
+// ended, otherwise the call is without effect. Next, unhandled
+// special characters get output. Then, all Start() methods get
+// called, and then Where() is used to find the next interesting
+// position.
+
+// With the manager in 'push'ed mode, some elements will be
+// skipped. Fields are only skipped under special circumstances, more
+// precisely only during output of ranges which cannot contain
+// fields. Character and paragraph attributes are never skipped. The
+// if (1) instructions were added for uniformity.
+
+// First, some special-casing for tables:
+// the important attributes are best queried before they end
+// Optimization: they only get set to meaningful values when the 0x07
+// character is pending.
bool bLIsTtp = false;
sal_Bool bLHasTtp = sal_False;
@@ -217,9 +212,9 @@ void Ww1Manager::Out(Ww1Shell& rOut, sal_Unicode cUnknown)
bLHasTtp = HasTtp();
}
- OutStop( rOut, cUnknown ); // Attrs ggfs. beenden
+ OutStop( rOut, cUnknown ); // End attrs if necessary
- // meta-zeichen interpretieren:
+ // interpret meta characters:
if (!Ww1PlainText::IsChar(cUnknown))
switch (cUnknown)
{
@@ -255,7 +250,7 @@ void Ww1Manager::Out(Ww1Shell& rOut, sal_Unicode cUnknown)
break;
}
- OutStart( rOut ); // Attrs ggfs. starten und Naechste Pos berechnen
+ OutStart( rOut ); // End attrs if necessary and calculate next pos
}
SvxFontItem Ww1Manager::GetFont(sal_uInt16 nFCode)
@@ -274,9 +269,8 @@ void Ww1Manager::Push0(Ww1PlainText* _pDoc, sal_uLong ulSeek, Ww1Fields* _pFld)
this->pFld = _pFld;
}
-// ulSeek ist der FC-Abstand zwischen Hauptest-Start und Sondertext-Start
-// ulSeek2 ist der Offset dieses bestimmten Sondertextes im Sondertext-Bereich,
-// also z.B. der Offset des speziellen K/F-Textes
+// ulSeek is the FC distance between start of main text and start of special text
+// ulSeek2 is this special text's offset in the special case range
void Ww1Manager::Push1(Ww1PlainText* _pDoc, sal_uLong ulSeek, sal_uLong ulSeek2,
Ww1Fields* _pFld)
{
@@ -320,13 +314,13 @@ void Ww1Bookmarks::Out(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16)
&& rName.equalsIgnoreAsciiCase( "FORMULAR" ) )
rOut.SetProtect();
- // Fuer UEbersetzung Bookmark -> Variable setzen
+ // Set for transformation bookmark -> variable
long nLen = Len();
if( nLen > MAX_FIELDLEN )
nLen = MAX_FIELDLEN;
// read content of the bookmark
- // geht vermulich auch ueber Ww1PlainText
+ // Would supposedly also work via Ww1PlainText
OUString aVal( rMan.GetText().GetText( Where(), nLen ) );
// in 2 steps, since OS/2 is too stupid
@@ -354,17 +348,14 @@ void Ww1Footnotes::Start(Ww1Shell& rOut, Ww1Manager& rMan)
if (c==0x02)
{
Ww1FtnText* pText = new Ww1FtnText(rMan.GetFib());
- // beginn des textes dieser fusznote:
sal_uLong start = aText.Where(nPlcIndex);
pText->Seek(start);
- // laenge des textes
sal_uLong count = aText.Where(nPlcIndex+1) - start;
pText->SetCount(count);
- // fusznotenkennung sollte das erste byte sein
+ // first byte should be foot note marker
pText->Out(c);
OSL_ENSURE(c==0x02, "Ww1Footnotes");
- count--; // fuer das eben gelesene kenn-byte
- // fusznoten mode beginnen:
+ count--; // for the just read marker byte
rOut.BeginFootnote();
bStarted = sal_True;
rMan.Push0(pText, pText->Offset(rMan.GetFib()),
@@ -411,17 +402,16 @@ void Ww1Fields::Stop( Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode& c)
++(*this);
c = ' ';
if (pField)
- // haben wir ein fertiges feld da, das eingefuegt werden soll?
+ // Do we have a complete field for insertion?
{
rOut << *pField;
delete pField;
pField = 0;
- // das macht der filter so, damit attribute die ueber das feld
- // gelten auch wirklich eingelesen werden und dem feld
- // zugeordnet werden.
+ // The filter does it like this so that attributes
+ // applying to this field actually get read and applied
}
- if (!sErgebnis.isEmpty())
- rOut << sErgebnis;
+ if (!sResult.isEmpty())
+ rOut << sResult;
}
}
}
@@ -455,7 +445,7 @@ static WWDateTime GetTimeDatePara( const OUString& rForm,
if (nDPos == 0 || nDPos == -1)
break;
sal_Unicode cPrev = rForm[nDPos - 1];
- // ignoriere dabei "AM", "aM", "PM", "pM"
+ // Ignore "AM", "aM", "PM", "pM" here
if( 'a' != cPrev && 'A' != cPrev && 'p' != cPrev && 'P' != cPrev )
break;
// else search again
@@ -531,15 +521,15 @@ extern void sw3io_ConvertFromOldField( SwDoc& rDoc, sal_uInt16& rWhich,
void Ww1Fields::Out(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 nDepth)
{
OUString sType; // the type as string
- OUString sFormel; // the formula
+ OUString sFormel;
OUString sFormat;
OUString sDTFormat; // date/time format
- W1_FLD* pData = GetData(); // die an den plc gebunden daten
- OSL_ENSURE(pData->chGet()==19, "Ww1Fields"); // sollte beginn sein
+ W1_FLD* pData = GetData(); // data bound to plc
+ OSL_ENSURE(pData->chGet()==19, "Ww1Fields"); // should be begin
sal_Unicode c;
rMan.Fill( c );
- OSL_ENSURE(c==19, "Ww1Fields"); // sollte auch beginn sein
+ OSL_ENSURE(c==19, "Ww1Fields"); // should also be begin
if (pData->chGet()==19 && c == 19)
{
OUString aStr;
@@ -560,10 +550,9 @@ void Ww1Fields::Out(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 nDepth)
sFormel += aStr;
sal_uInt8 rbType = pData->fltGet();
do {
- // solange den formelteil einlesen, bis das feld entweder
- // zuende ist oder der ergebnisteil beginnt. dabei koennen
- // natuerlich neue felder beginnen (word unterstuetzt felder,
- // die wiederum felder beinhalten).
+ // Read the formula part until the entire field ends or
+ // the result part starts. Of course, other fields can
+ // start during this (Word supports nested fields).
++(*this);
pData = GetData();
if (pData->chGet()==19) // nested field
@@ -594,14 +583,14 @@ void Ww1Fields::Out(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 nDepth)
sFormel = sFormel.copy(0, pos);
}
- // der formelteil ist zuende, kommt ein ergebnisteil?
+ // The formula part is done, does a result part follow?
if( pData->chGet() == 20 )
{
rMan.Fill( c );
OSL_ENSURE(c==20, "Ww1PlainText");
- c = rMan.Fill(sErgebnis, GetLength());
+ c = rMan.Fill(sResult, GetLength());
if (!Ww1PlainText::IsChar(c))
- sErgebnis += OUString(c); //~ mdt: sonderzeichenbenhandlung
+ sResult += OUString(c); //~ mdt: handle special chars
++(*this);
pData = GetData();
}
@@ -614,7 +603,6 @@ void Ww1Fields::Out(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 nDepth)
delete pField;
pField = 0;
}
-// naja, aber info enthaelt alle moeglichkeiten, die auch direkt da sind
oncemore:
switch (rbType)
{
@@ -649,9 +637,9 @@ oncemore:
SwSetExpFieldType( &rOut.GetDoc(), aName, nsSwGetSetExpType::GSE_STRING ) );
pField = new SwSetExpField((SwSetExpFieldType*)pFT, aStr);
((SwSetExpField*)pField)->SetSubType( nsSwExtendedSubType::SUB_INVISIBLE );
- // Invisible macht in 378 AErger, soll aber demnaechst gehen
+ // Invisible causes trouble in 378; should work soon
- // das Ignorieren des Bookmarks ist nicht implementiert
+ // Ignoring bookmarks is not implemented
}
break;
case 14: // info variable
@@ -733,7 +721,7 @@ oncemore:
case 23: // print date
case 25:{// edit time
sal_uInt16 nSub;
- sal_uInt16 nReg = 0; // RegInfoFormat, DefaultFormat fuer DocInfoFelder
+ sal_uInt16 nReg = 0; // RegInfoFormat, DefaultFormat for DocInfo fields
switch( rbType )
{
@@ -831,7 +819,7 @@ oncemore:
pField = new SwGetExpField(pFieldType, sFormel,
nsSwGetSetExpType::GSE_STRING, VVF_SYS);
}
- else // rekursion:
+ else // recursion:
{
OUString aName("Ww");
aName += OUString::number( nPlcIndex );
@@ -847,7 +835,7 @@ oncemore:
}
}
break;
- case 36: // print command, Einfuegendatei
+ case 36: // print command, insert file
{
OUString aFName;
pos = aStr.indexOf(' ');
@@ -943,7 +931,7 @@ oncemore:
OUString sName;
while (*pFormel != '\0' && *pFormel != ' ')
{
- // from here on a extension could appear
+ // from here on an extension could appear
if (*pFormel == '.')
pDot = pFormel;
else
@@ -1015,10 +1003,10 @@ oncemore:
bKnown = false;
break;
}
- if( bKnown || sErgebnis == "\270" )
- this->sErgebnis = "";
+ if( bKnown || sResult == "\270" )
+ this->sResult = "";
else
- this->sErgebnis = sErgebnis;
+ this->sResult = sResult;
}
else // oops: we are terribly wrong: skip this
++(*this);
@@ -1026,9 +1014,9 @@ oncemore:
sal_uLong Ww1Fields::GetLength()
{
- // berechnet die laenge eines feldteiles. nicht mitgerechnet werden
- // die terminierenden zeichen im text (19, 20, 21) die beginn, trenner
- // und ende bedeuten.
+ // Calculates a field part's length, excluding the terminating
+ // chars in the text (19, 20, 21) meaning begin, separator and
+ // end, respectively.
sal_uLong ulBeg = Where();
sal_uLong ulEnd = Where(nPlcIndex+1);
OSL_ENSURE(ulBeg<ulEnd, "Ww1Fields");
@@ -1052,10 +1040,10 @@ void Ww1Sep::Start(Ww1Shell& rOut, Ww1Manager& rMan)
rFmt.SetFmtAttr(aLR);
SvxULSpaceItem aUL(rDOP.dyaTopGet(), rDOP.dyaBottomGet(), RES_UL_SPACE);
rFmt.SetFmtAttr(aUL);
- // sobald wir mit dem lesen der zeichen soweit sind, wo sep's
- // momentanes attribut beginnt, wird dieses attribut eingefuegt.
- // diese methode ist bei den meisten start/stop methoden der
- // memberklassen des managers identisch.
+
+ // As soon as we've reached reading the start of the current
+ // sep's attribute, we insert it. This method is the same for
+ // most member classes of the manager.
sal_uInt8* pByte = GetData();
Ww1SprmSep aSprm(rFib, SVBT32ToUInt32(pByte + 2));
aSprm.Start(rOut, rMan);
@@ -1071,7 +1059,7 @@ void Ww1Pap::Start(Ww1Shell& rOut, Ww1Manager& rMan)
{
sal_uInt8* pByte;
sal_uInt16 cb;
- // bereitstellen der zu startenden attribute
+ // Supply the attributes to be started
if (FillStart(pByte, cb))
{
Ww1SprmPapx aSprm(pByte, cb);
@@ -1097,8 +1085,7 @@ void Ww1Pap::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode&)
}
}
-// momentan laesst sich die ausgabe von W1CHPxen nicht nur per define
-// loesen...
+// Currently, the output of W1CHPxes cannot be solved only by define...
void W1_CHP::Out(Ww1Shell& rOut, Ww1Manager& rMan)
{
if (fBoldGet())
@@ -1206,7 +1193,7 @@ void Ww1Chp::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode&)
W1_CHP aChpx;
if (FillStop(aChpx))
{
- // zuerst alle toggle-flags
+ // First all toggle flags
if (aChpx.fBoldGet())
rOut.EndItem(RES_CHRATR_WEIGHT);
if (aChpx.fItalicGet())
@@ -1217,8 +1204,7 @@ void Ww1Chp::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode&)
rOut.EndItem(RES_CHRATR_CONTOUR);
if (aChpx.fSmallCapsGet() || aChpx.fCapsGet())
rOut.EndItem(RES_CHRATR_CASEMAP);
- // dann alle zahl-werte, diese haben flags, wenn sie gesetzt
- // sind...
+ // then all number values; these have flags when they are set...
if (aChpx.fsHpsGet())
rOut.EndItem(RES_CHRATR_FONTSIZE);
if (aChpx.fsKulGet())
@@ -1240,9 +1226,9 @@ void Ww1Chp::Stop(Ww1Shell& rOut, Ww1Manager& rMan, sal_Unicode&)
void Ww1Style::Out(Ww1Shell& rOut, Ww1Manager& rMan)
{
- // Zuerst Basis, damit Attribute des Basis-Styles erkannt werden
+ // Base first, so that base style attributes can be recognized
// first: Base
- if(pParent->GetStyle(stcBase).IsUsed() ) // Basis gueltig ?
+ if(pParent->GetStyle(stcBase).IsUsed() ) // Base valid ?
rOut.BaseStyle(stcBase);
// next of all: CHP
@@ -1285,7 +1271,7 @@ sal_Unicode Ww1PlainText::Out( Ww1Shell& rOut, sal_uLong& ulEnd )
sal_Unicode Ww1PlainText::Out(OUString& rStr, sal_uLong ulEnd)
{
- // wie Out(Shell..., jedoch ausgabe auf einen string
+ // Like Out(Shell..., but output into a string
rStr = "";
if (ulEnd > Count())
ulEnd = Count();
@@ -1301,7 +1287,7 @@ sal_Unicode Ww1PlainText::Out(OUString& rStr, sal_uLong ulEnd)
return Ww1PlainText::MinChar;
}
-// hier eruebrigt sich ulEnd...oder?
+// This makes ulEnd unnecessary, right?
sal_Unicode Ww1PlainText::Out( sal_Unicode& rRead )
{
rRead = (*this)[ulSeek];
@@ -1311,10 +1297,9 @@ sal_Unicode Ww1PlainText::Out( sal_Unicode& rRead )
void Ww1SprmPapx::Start(Ww1Shell& rOut, Ww1Manager& rMan)
{
- if( !rMan.IsInStyle() ){ // Innerhalb Style gehts ueber die
- // normalen Attribute
+ if( !rMan.IsInStyle() ){ // Normal attributes apply within style
if (!rOut.IsInFly()
- && !rOut.IsInTable() // Nicht innerhalb Tabelle!
+ && !rOut.IsInTable()
&& ( rMan.HasPPc() || rMan.HasPDxaAbs())){ // Fly-Start
rOut.BeginFly(); // eAnchor );
}
@@ -1331,22 +1316,22 @@ void Ww1SprmPapx::Stop(Ww1Shell& rOut, Ww1Manager& rMan)
{
Ww1Sprm::Stop(rOut, rMan);
- if( !rMan.IsInStyle() ) // Innerhalb Style gehts ueber die
- { // normalen Attribute
+ if( !rMan.IsInStyle() ) // Normal attributes apply within style
+ {
if (rOut.IsInTable() &&( rMan.IsStopAll() || !rMan.HasInTable()))
rOut.EndTable();
if( rOut.IsInFly() &&
( rMan.IsStopAll()
- || ( !rMan.HasPPc() && !rMan.HasPDxaAbs() // Fly-Ende
- && !rOut.IsInTable()))) // Nicht innerhalb Tabelle!
+ || ( !rMan.HasPPc() && !rMan.HasPDxaAbs() // Fly end
+ && !rOut.IsInTable())))
rOut.EndFly();
}
}
SvxFontItem Ww1Fonts::GetFont(sal_uInt16 nFCode)
{
- // erzeugen eine fonts im sw-sinne aus den word-strukturen
+ // Create a font in sw fashion from existing word structures
FontFamily eFamily = FAMILY_DONTKNOW;
OUString aName;
FontPitch ePitch = PITCH_DONTKNOW;
@@ -1408,30 +1393,29 @@ SvxFontItem Ww1Fonts::GetFont(sal_uInt16 nFCode)
{
OSL_ENSURE(false, "WW1Fonts::GetFont: Nicht existenter Font !");
eFamily = FAMILY_SWISS;
- aName = "Helv";
+ aName = "Helv";
ePitch = PITCH_VARIABLE;
eCharSet = RTL_TEXTENCODING_MS_1252;
}
}
break;
}
- // Extrawurst Hypo
if ( SwFltGetFlag( nFieldFlags, SwFltControlStack::HYPO )
&& ( aName.equalsIgnoreAsciiCase("Helv")
|| aName.equalsIgnoreAsciiCase("Helvetica") ) )
{
- aName = "Helvetica Neue";
+ aName = "Helvetica Neue";
if (eFamily==FAMILY_DONTKNOW)
eFamily = FAMILY_SWISS;
}
else
{
- // VCL matcht die Fonts selber
- // allerdings passiert bei Helv, Tms Rmn und System Monospaced
- // Scheisse, so dass diese ersetzt werden muessen.
- // Nach TH sollen diese durch feste Werte ersetzt werden,
- // also nicht ueber System::GetStandardFont, damit keine
- // Namenslisten auftauchen ( Dieses koennte den User verwirren )
+ // VCL matches fonts on its own
+ // Unfortunately, this breaks for Helv, Tms Rmn and System
+ // Monospaced, so they need to be replaced.
+ // According to TH they should be replaced by fixed values,
+ // not using System::GetStandardFont, so no name lists appear
+ // (this could confuse the user)
if( aName.equalsIgnoreAsciiCase("Helv"))
{
aName = "Helvetica";
@@ -1450,21 +1434,20 @@ SvxFontItem Ww1Fonts::GetFont(sal_uInt16 nFCode)
ePitch = PITCH_FIXED;
}
}
- // nun koennen wir den font basteln
return SvxFontItem(eFamily, aName, OUString(), ePitch, eCharSet, RES_CHRATR_FONT);
}
void Ww1Dop::Out(Ww1Shell& rOut)
{
- //~ mdt: fehlt
+ //~ mdt: missing
long nDefTabSiz = aDop.dxaTabGet();
if (nDefTabSiz < 56)
nDefTabSiz = 709;
- // wir wollen genau einen DefaultTab
+ // we want exactly one DefaultTab
SvxTabStopItem aNewTab(1, sal_uInt16(nDefTabSiz), SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP);
((SvxTabStop&)aNewTab[0]).GetAdjustment() = SVX_TAB_ADJUST_DEFAULT;
- rOut.GetDoc().GetAttrPool().SetPoolDefaultItem( aNewTab); //~ mdt: besser (GetDoc)
+ rOut.GetDoc().GetAttrPool().SetPoolDefaultItem( aNewTab); //~ mdt: better (GetDoc)
SwFrmFmt &rFmt = rOut.GetPageDesc().GetMaster();
W1_DOP& rDOP = GetDOP();
@@ -1480,19 +1463,18 @@ void Ww1Dop::Out(Ww1Shell& rOut)
rFmt.SetFmtAttr(aUL);
SwFtnInfo aInfo;
- aInfo = rOut.GetDoc().GetFtnInfo(); // Copy-Ctor privat
- // wo positioniert ? ( 0 == Section, 1 == Page,
- // 2 == beim Text -> Page, 3 == Doc )
+ aInfo = rOut.GetDoc().GetFtnInfo(); // Copy-Ctor private
+ // where positioned ? ( 0 == Section, 1 == Page,
+ // 2 == next to Text -> Page, 3 == Doc )
switch( rDOP.fpcGet() ){
case 1:
case 2: aInfo.ePos = FTNPOS_PAGE; break;
default: aInfo.ePos = FTNPOS_CHAPTER; break;
}
- // Da Sw unter Chapter anscheinend was anderes versteht als PMW
- // hier also immer Doc !
+ // Always doc, because Sw seems to interpret Chapter differently from PMW
aInfo.eNum = FTNNUM_DOC;
- // wie neu nummerieren ?
- // SW-UI erlaubt Nummer nur bei FTNNUM_DOC
+ // how to renumber ?
+ // SW-UI allows number only with FTNNUM_DOC
if( rDOP.nFtnGet() > 0 && aInfo.eNum == FTNNUM_DOC )
aInfo.nFtnOffset = rDOP.nFtnGet() - 1;
rOut.GetDoc().SetFtnInfo( aInfo );
@@ -1501,7 +1483,7 @@ void Ww1Dop::Out(Ww1Shell& rOut)
void Ww1Assoc::Out(Ww1Shell& rOut)
{
- //~ mdt: fehlen: FileNext, Dot, DataDoc, HeaderDoc, Criteria1,
+ //~ mdt: missing: FileNext, Dot, DataDoc, HeaderDoc, Criteria1,
// Criteria2, Criteria3, Criteria4, Criteria5, Criteria6, Criteria7
SwDocShell *pDocShell(rOut.GetDoc().GetDocShell());
OSL_ENSURE(pDocShell, "no SwDocShell");
@@ -1545,14 +1527,14 @@ void Ww1StyleSheet::OutDefaults(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 stc
case 231: // table of contents 2
case 232: // table of contents 1
rOut << SvxLRSpaceItem(( 232 - stc ) * 720, 720, 0, 0, RES_LR_SPACE);
- // Tabulatoren fehlen noch !
+ // tabs still missing !
break;
case 233: // index 7
- case 234: // und index 6
- case 235: // und index 5
- case 236: // und index 4
- case 237: // und index 3
- case 238: // und index 2
+ case 234: // and index 6
+ case 235: // and index 5
+ case 236: // and index 4
+ case 237: // and index 3
+ case 238: // and index 2
rOut << SvxLRSpaceItem(( 239 - stc ) * 360, 0, 0, 0, RES_LR_SPACE);
break;
case 239: // index 1
@@ -1562,7 +1544,7 @@ void Ww1StyleSheet::OutDefaults(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 stc
case 241: // index heading
break;
case 242: // footer
- case 243:{ // ... und header
+ case 243:{ // ... and header
SvxTabStopItem aAttr(RES_PARATR_TABSTOP);
SvxTabStop aTabStop;
aTabStop.GetTabPos() = 4535; // 8 cm
@@ -1628,7 +1610,7 @@ void Ww1StyleSheet::OutDefaults(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 stc
case 0: // Normal
rOut << SvxFontHeightItem(200, 100, RES_CHRATR_FONTSIZE);
break;
- default: // selbstdefiniert
+ default: // custom defined
rOut << SvxFontHeightItem(200, 100, RES_CHRATR_FONTSIZE);
break;
}
@@ -1720,13 +1702,13 @@ void Ww1StyleSheet::OutOne(Ww1Shell& rOut, Ww1Manager& rMan, sal_uInt16 stc)
GetStyle(stc).Out(rOut, rMan);
rOut.EndStyle();
}
-// OutOneWithBase() liest einen Style mit OutOne() einen Style ein
-// Jedoch liest er, wenn noch nicht geschehen, den Basisstyle rekursiv ein
+// OutOneWithBase() reads a style using OutOne()
+// Additionally, it reads the base style, if this has not happened yet
void Ww1StyleSheet::OutOneWithBase(Ww1Shell& rOut, Ww1Manager& rMan,
sal_uInt16 stc, sal_uInt8* pbStopRecur )
{
-// SH: lineares Einlesen ist Scheisse, da dann BasedOn nicht gesetzt
-// werden kann und ausserdem Toggle- und Modify-Attrs (z.B. Tabs ) nicht gehen.
+// SH: reading linearly is shit, because BasedOn cannot be set. Also,
+// toggle and modify attributes (tabs, for example) don't work.
Ww1Style& rSty = GetStyle(stc);
sal_uInt16 nBase = rSty.GetnBase();
@@ -1736,7 +1718,7 @@ void Ww1StyleSheet::OutOneWithBase(Ww1Shell& rOut, Ww1Manager& rMan,
&& !pbStopRecur[nBase] ){
pbStopRecur[nBase] = 1;
- OutOneWithBase( rOut, rMan, nBase, pbStopRecur ); // Rekursiv
+ OutOneWithBase( rOut, rMan, nBase, pbStopRecur ); // Recursive
}
OutOne( rOut, rMan, stc );
}
@@ -1747,12 +1729,12 @@ void Ww1StyleSheet::Out(Ww1Shell& rOut, Ww1Manager& rMan)
sal_uInt8 bStopRecur[256];
memset( bStopRecur, sal_False, sizeof(bStopRecur) );
-// 1. Durchlauf: Styles mit Basisstyles rekursiv
+// First pass: Styles with base styles recursively
for (stc=0;stc<Count();stc++)
if (GetStyle(stc).IsUsed() && !rOut.IsStyleImported( stc ) )
OutOneWithBase( rOut, rMan, stc, bStopRecur );
-// 2. Durchlauf: Follow-Styles
+// Second pass: Follow-Styles
for (stc=0;stc<Count();stc++){
Ww1Style& rSty = GetStyle(stc);
if ( rSty.IsUsed() ){
@@ -1772,9 +1754,7 @@ static sal_uLong GuessPicSize(W1_PIC* pPic)
return 120L + (sal_uLong)padx * maxy;
}
-// folgende methode schreibt eine windows-.BMP-datei aus einem
-// embeddeten bild in ww-1 dateien
-// gelesen wird 4-bit format, geschrieben jedoch 8-bit.
+// Reads 4-bit format, writes 8-bit
void Ww1Picture::WriteBmp(SvStream& rOut)
{
long nSize = pPic->lcbGet() - (sizeof(*pPic)-sizeof(pPic->rgb));
@@ -1919,8 +1899,8 @@ void Ww1Picture::Out(Ww1Shell& rOut, Ww1Manager& /*rMan*/)
}
break;
}
- case 94: // embedded name SH:??? Was denn nun ? Embeddet oder Name ?
- case 98: // TIFF-Name
+ case 94: // embedded name SH:??? Which one is it? Embedded or Name ?
+ case 98: // TIFF name
{
OUString aDir( (sal_Char*)pPic->rgbGet(),
(sal_uInt16)(pPic->lcbGet() - (sizeof(*pPic)-sizeof(pPic->rgb))),
@@ -1947,8 +1927,7 @@ void Ww1Picture::Out(Ww1Shell& rOut, Ww1Manager& /*rMan*/)
void Ww1HeaderFooter::Start(Ww1Shell& rOut, Ww1Manager& rMan)
{
- // wird sowieso nur bei SEPs aufgerufen, keine weitere pruefung
- // noetig:
+ // Only gets called for SEPs anyway, no further validation necessary:
if (!rMan.Pushed())
{
while (++(*this))
diff --git a/sw/source/filter/ww1/w1par.cxx b/sw/source/filter/ww1/w1par.cxx
index cef5b59..f7861b5 100644
--- a/sw/source/filter/ww1/w1par.cxx
+++ b/sw/source/filter/ww1/w1par.cxx
@@ -27,7 +27,7 @@
#include <swerror.h>
#include <statstr.hrc>
-// Initialisieren der Feld-FilterFlags
+// Initializing the field FilterFlags
static sal_uLong WW1_Read_FieldIniFlags()
{
// sal_uInt16 i;
@@ -47,25 +47,22 @@ static sal_uLong WW1_Read_FieldIniFlags()
}
// StarWriter-Interface
-// Eine Methode liefern die call-Schnittstelle fuer den Writer.
-// Read() liest eine Datei. hierzu werden zwei Objekte erzeugt, die Shell,
-// die die Informationen aufnimmt und der Manager der sie aus der Datei liest.
-// Diese werden dann einfach per Pipe 'uebertragen'.
+// One method returns the call interface for the Writer.
+// Read() reads a file. For this, two objects get created. The Shell,
+// which collects all information, and the manager, which reads it
+// from the file.
sal_uLong WW1Reader::Read(SwDoc& rDoc, const OUString& rBaseURL, SwPaM& rPam, const OUString& /*cName*/)
{
sal_uLong nRet = ERR_SWG_READ_ERROR;
OSL_ENSURE(pStrm!=NULL, "W1-Read ohne Stream");
if (pStrm != NULL)
{
- sal_Bool bNew = !bInsertMode; // New Doc ( kein Einfuegen )
+ sal_Bool bNew = !bInsertMode; // New Doc ( no insert )
- // erstmal eine shell konstruieren: die ist schnittstelle
- // zum writer-dokument
sal_uLong nFieldFlags = WW1_Read_FieldIniFlags();
Ww1Shell* pRdr = new Ww1Shell( rDoc, rPam, rBaseURL, bNew, nFieldFlags );
if( pRdr )
{
- // dann den manager, der liest die struktur des word-streams
Ww1Manager* pMan = new Ww1Manager( *pStrm, nFieldFlags );
if( pMan )
{
@@ -74,24 +71,16 @@ sal_uLong WW1Reader::Read(SwDoc& rDoc, const OUString& rBaseURL, SwPaM& rPam, co
::StartProgress( STR_STATSTR_W4WREAD, 0, 100,
rDoc.GetDocShell() );
::SetProgressState( 0, rDoc.GetDocShell() );
- // jetzt nur noch alles rueberschieben
+ // just push everything over now
*pRdr << *pMan;
if( !pMan->GetError() )
- // und nur hier, wenn kein fehler auftrat
- // fehlerfreiheit melden
- nRet = 0; // besser waere: WARN_SWG_FEATURES_LOST;
+ // signal absence of errors
+ nRet = 0; // would be better: WARN_SWG_FEATURES_LOST;
::EndProgress( rDoc.GetDocShell() );
}
else
{
if( pMan->GetFib().GetFIB().fComplexGet() )
- // Attention: hier muss eigentlich ein Error
- // wegen Fastsave kommen, das der PMW-Filter
- // das nicht unterstuetzt. Stattdessen temporaer
- // nur eine Warnung, bis die entsprechende
- // Meldung und Behandlung weiter oben eingebaut ist.
- // nRet = WARN_WW6_FASTSAVE_ERR;
- // Zum Einchecken mit neuem String:
nRet = ERR_WW6_FASTSAVE_ERR;
}
}
@@ -103,11 +92,11 @@ sal_uLong WW1Reader::Read(SwDoc& rDoc, const OUString& rBaseURL, SwPaM& rPam, co
return nRet;
}
-// Die Shell ist die Schnittstelle vom Filter zum Writer. Sie ist
-// abgeleitet von der mit ww-filter gemeinsam benutzten Shell
-// SwFltShell und enthaelt alle fuer ww1 noetigen Erweiterungen. Wie
-// in einen Stream werden alle Informationen, die aus der Datei
-// gelesen werden, in die shell ge'piped'.
+// The shell is the interface from filter to Writer. It is derived
+// from SwFltShell and contains all relevant extensions for ww1.
+// SwFltShell is used in common with ww-filter. Information read from
+// the file gets 'piped' into the shell, like would be done for a
+// stream.
Ww1Shell::Ww1Shell( SwDoc& rD, SwPaM& rPam, const OUString& rBaseURL, sal_Bool bNew, sal_uLong nFieldFlags)
: SwFltShell(&rD, rPam, rBaseURL, bNew, nFieldFlags)
{
diff --git a/sw/source/filter/ww1/w1struct.hxx b/sw/source/filter/ww1/w1struct.hxx
index 058ad93..a1fa8f9 100644
--- a/sw/source/filter/ww1/w1struct.hxx
+++ b/sw/source/filter/ww1/w1struct.hxx
@@ -597,7 +597,7 @@ struct W1_FFN ///////////////////////////////////////// Font Descriptor
return (sal_uInt16)((fFlagsGet() >> 4) & 7); }
// sal_uInt8 : 1;// 0x1:80 reserved
sal_uInt8 szFfn[65];// 0x6 zero terminated string that records name of font.
- // Vorsicht: Dieses Array kann auch kleiner sein!!!
+ // Careful: the array may be smaller!!!
// Possibly followed by a second sz which records the name of an
// alternate font to use if the first named font does not exist
// on this system. Maximal size of szFfn is 65 characters.
@@ -620,7 +620,7 @@ struct W1_PHE // Paragraph Height
SVBT16 dxaCol;
sal_uInt16 dxaColGet() {
return SVBT16ToShort(dxaCol); }
- SVBT16 xxx; // beachte die dreifachnutzung.... siehe doc.
+ SVBT16 xxx; // note the triple usage.... see doc.
sal_uInt16 dylHeightGet() {
return SVBT16ToShort(xxx); }
sal_uInt16 dylLineGet() {
More information about the Libreoffice-commits
mailing list