From 5fce5642b65459fe165bcab5fd7d9217d3aee4ed Mon Sep 17 00:00:00 2001 From: Stefan Ring Date: Tue, 25 Feb 2014 22:01:50 +0100 Subject: fdo#39468 Translate German comments: sw/source/filter/ww1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I5c6ae4f1692f6ed8d1792417cb594174a35ca8fa Reviewed-on: https://gerrit.libreoffice.org/8323 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- 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(-) diff --git a/sw/source/filter/ww1/fltshell.cxx b/sw/source/filter/ww1/fltshell.cxx index 8a1cc74862ce..672cfbfb2c95 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 7bdb397c29e4..799d50b3d538 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 1d0da194e3d1..7dadb105907e 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 970461e97796..ac7b18d1348a 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(ulBegGetStyle(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;stclcbGet() - (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 cef5b5911544..f7861b542942 100644 --- a/sw/source/filter/ww1/w1par.cxx +++ b/sw/source/filter/ww1/w1par.cxx @@ -27,7 +27,7 @@ #include #include -// 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 058ad9317e8b..a1fa8f9ed000 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() { -- cgit v1.2.3