LibreOffice Module sw (master)  1
ww8scan.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #ifndef INCLUDED_SW_SOURCE_FILTER_WW8_WW8SCAN_HXX
21 #define INCLUDED_SW_SOURCE_FILTER_WW8_WW8SCAN_HXX
22 
23 #include <cassert>
24 #include <cstddef>
25 #include <deque>
26 #include <memory>
27 #include <stack>
28 #include <unordered_map>
29 #include <vector>
30 
31 #include <osl/endian.h>
32 #include <tools/solar.h>
33 #include <tools/stream.hxx>
34 #include <rtl/ustring.hxx>
35 
36 #include "ww8struc.hxx"
37 #include "types.hxx"
38 
39 class SvStream;
40 
41 //Commonly used string literals for stream and storage names in word docs
42 namespace SL
43 {
44  const char aObjectPool[] = "ObjectPool";
45  const char a1Table[] = "1Table";
46  const char a0Table[] = "0Table";
47  const char aData[] = "Data";
48  const char aCheckBox[] = "CheckBox";
49  const char aListBox[] = "ListBox";
50  const char aTextField[] = "TextField";
51  const char aMSMacroCmds[] = "MSMacroCmds";
52 }
53 
54 struct SprmInfo
55 {
56  unsigned int nLen : 6;
57  unsigned int nVari : 2;
58 };
59 
60 struct SprmInfoRow {
61  sal_uInt16 nId;
63 };
64 
66 public:
67  //see Read_AmbiguousSPRM for the bPatchCJK oddity
68  wwSprmSearcher(SprmInfoRow const * rows, std::size_t size, bool bPatchCJK = false) {
69  for (std::size_t i = 0; i != size; ++i) {
70  bool ins = map_.emplace(rows[i].nId, rows[i].info).second;
71  assert(ins); (void) ins;
72  }
73  if (bPatchCJK)
75  }
76 
77  SprmInfo const * search(sal_uInt16 id) const {
78  Map::const_iterator i(map_.find(id));
79  return i == map_.end() ? nullptr : &i->second;
80  }
81 
82 private:
83  typedef std::unordered_map<sal_uInt16, SprmInfo> Map;
84 
85  Map map_;
86 
87  void patchCJKVariant();
88 };
89 
90 class WW8Fib;
91 
92 struct SprmResult
93 {
94  const sal_uInt8* pSprm;
95  sal_Int32 nRemainingData;
97  : pSprm(nullptr)
98  , nRemainingData(0)
99  {
100  }
101  SprmResult(const sal_uInt8* pInSprm, sal_Int32 nInRemainingData)
102  : pSprm(pInSprm)
103  , nRemainingData(nInRemainingData)
104  {
105  }
106 };
107 
113 {
114 private:
118  static const wwSprmSearcher* GetWW8SprmSearcher();
119  static const wwSprmSearcher* GetWW6SprmSearcher(const WW8Fib& rFib);
120  static const wwSprmSearcher* GetWW2SprmSearcher();
121 
122  SprmInfo GetSprmInfo(sal_uInt16 nId) const;
123 
124  sal_uInt8 SprmDataOfs(sal_uInt16 nId) const;
125 
126 public:
127  enum SprmType {L_FIX=0, L_VAR=1, L_VAR2=2};
128 
129  //7- ids are very different to 8+ ones
130  explicit wwSprmParser(const WW8Fib& rFib);
132  sal_uInt16 GetSprmId(const sal_uInt8* pSp) const;
133 
134  sal_Int32 GetSprmSize(sal_uInt16 nId, const sal_uInt8* pSprm, sal_Int32 nRemLen) const;
135 
138  sal_Int32 DistanceToData(sal_uInt16 nId) const;
139 
142  sal_uInt16 GetSprmTailLen(sal_uInt16 nId, const sal_uInt8* pSprm, sal_Int32 nRemLen) const;
143 
145  int MinSprmLen() const { return (IsSevenMinus(meVersion)) ? 2 : 3; }
146 
148  // if not found. nLen must be the <= length of pSprms
149  SprmResult findSprmData(sal_uInt16 nId, sal_uInt8* pSprms, sal_Int32 nLen) const;
150 };
151 
152 //Read a Pascal-style, i.e. single byte string length followed
153 //by string contents
154 inline OUString read_uInt8_PascalString(SvStream& rStrm, rtl_TextEncoding eEnc)
155 {
156  return read_uInt8_lenPrefixed_uInt8s_ToOUString(rStrm, eEnc);
157 }
158 
159 inline OUString read_uInt16_PascalString(SvStream& rStrm)
160 {
162 }
163 
164 //Belt and Braces strings, i.e. Pascal-style strings followed by
165 //null termination, Spolsky calls them "fucked strings" FWIW
166 //http://www.joelonsoftware.com/articles/fog0000000319.html
167 OUString read_uInt8_BeltAndBracesString(SvStream& rStrm, rtl_TextEncoding eEnc);
169 
170 //--Line above which the code has meaningful comments
171 
172 class WW8ScannerBase;
173 class WW8PLCFspecial;
174 struct WW8PLCFxDesc;
175 class WW8PLCFx_PCD;
176 
183 void WW8ReadSTTBF(bool bVer8, SvStream& rStrm, sal_uInt32 nStart, sal_Int32 nLen,
184  sal_uInt16 nExtraLen, rtl_TextEncoding eCS, std::vector<OUString> &rArray,
185  std::vector<ww::bytes>* pExtraArray = nullptr, std::vector<OUString>* pValueArray = nullptr);
186 
188 {
194  sal_uInt16 nId;
196  bool bCodeNest:1;
197  bool bResNest:1;
198 };
199 
201 {
202  sal_uInt32 nPLCFxPos;
203  sal_uInt32 nPLCFxPos2;
206  long nCpOfs;
210  bool bLineEnd;
211 };
212 
217 class WW8PLCFspecial // iterator for PLCFs
218 {
219 private:
220  std::unique_ptr<sal_Int32[]> pPLCF_PosArray;
222  long nIMax;
223  long nIdx;
224  sal_uInt32 nStru;
225 
226  WW8PLCFspecial(const WW8PLCFspecial&) = delete;
227  WW8PLCFspecial& operator=(const WW8PLCFspecial&) = delete;
228 
229 public:
230  WW8PLCFspecial(SvStream* pSt, sal_uInt32 nFilePos, sal_uInt32 nPLCF,
231  sal_uInt32 nStruct);
232  long GetIdx() const { return nIdx; }
233  void SetIdx( long nI ) { nIdx = nI; }
234  long GetIMax() const { return nIMax; }
235  bool SeekPos(long nPos); // walks over FC- or CP-value
236  // resp. next biggest value
237  bool SeekPosExact(long nPos);
238  sal_Int32 Where() const
239  { return ( nIdx >= nIMax ) ? SAL_MAX_INT32 : pPLCF_PosArray[nIdx]; }
240  bool Get(WW8_CP& rStart, void*& rpValue) const;
241  bool GetData(long nIdx, WW8_CP& rPos, void*& rpValue) const;
242 
243  const void* GetData( long nInIdx ) const
244  {
245  return ( nInIdx >= nIMax ) ? nullptr
246  : static_cast<const void*>(&pPLCF_Contents[nInIdx * nStru]);
247  }
248  sal_Int32 GetPos( long nInIdx ) const
249  { return ( nInIdx >= nIMax ) ? SAL_MAX_INT32 : pPLCF_PosArray[nInIdx]; }
250 
251  void advance()
252  {
253  if (nIdx <= nIMax)
254  ++nIdx;
255  }
256 };
257 
260 {
261 private:
263  // these members will be updated
264  const sal_uInt8* pSprms; // remaining part of the SPRMs ( == start of current SPRM)
265  const sal_uInt8* pCurrentParams; // start of current SPRM's parameters
266  sal_uInt16 nCurrentId;
267  sal_Int32 nCurrentSize;
268 
269  sal_Int32 nRemLen; // length of remaining SPRMs (including current SPRM)
270 
271  void UpdateMyMembers();
272 
273 public:
274  explicit WW8SprmIter(const sal_uInt8* pSprms_, sal_Int32 nLen_,
275  const wwSprmParser &rSprmParser);
276  void SetSprms(const sal_uInt8* pSprms_, sal_Int32 nLen_);
277  SprmResult FindSprm(sal_uInt16 nId, bool bFindFirst, const sal_uInt8* pNextByteMatch = nullptr);
278  void advance();
279  const sal_uInt8* GetSprms() const
280  { return ( pSprms && (0 < nRemLen) ) ? pSprms : nullptr; }
281  const sal_uInt8* GetCurrentParams() const { return pCurrentParams; }
282  sal_uInt16 GetCurrentId() const { return nCurrentId; }
283  sal_Int32 GetRemLen() const { return nRemLen; }
284 
285 private:
286  WW8SprmIter(const WW8SprmIter&) = delete;
287  WW8SprmIter& operator=(const WW8SprmIter&) = delete;
288 };
289 
290 /* among others for FKPs to normal attr., i.e. one less attr than positions */
291 class WW8PLCF // Iterator for PLCFs
292 {
293 private:
294  std::unique_ptr<WW8_CP[]> pPLCF_PosArray; // pointer to Pos-array and the whole structure
295  sal_uInt8* pPLCF_Contents; // pointer to content-array-part of Pos-array
296  sal_Int32 nIMax; // number of elements
297  sal_Int32 nIdx;
298  int nStru;
299 
300  void ReadPLCF(SvStream& rSt, WW8_FC nFilePos, sal_uInt32 nPLCF);
301 
302  /*
303  If a PLC is missing in the doc and the FKPs stand alone,
304  we create a PLC with this:
305  */
306  void GeneratePLCF(SvStream& rSt, sal_Int32 nPN, sal_Int32 ncpN);
307 
308  void MakeFailedPLCF();
309 
310  void TruncToSortedRange();
311 public:
312  WW8PLCF(SvStream& rSt, WW8_FC nFilePos, sal_Int32 nPLCF, int nStruct,
313  WW8_CP nStartPos = -1);
314 
315  /*
316  the following ctor generates a PLC from nPN and ncpN, if necessary
317  */
318  WW8PLCF(SvStream& rSt, WW8_FC nFilePos, sal_Int32 nPLCF, int nStruct,
319  WW8_CP nStartPos, sal_Int32 nPN, sal_Int32 ncpN);
320 
321  sal_Int32 GetIdx() const { return nIdx; }
322  void SetIdx( sal_Int32 nI ) { nIdx = nI; }
323  sal_Int32 GetIMax() const { return nIMax; }
324  bool SeekPos(WW8_CP nPos);
325  WW8_CP Where() const;
326  bool Get(WW8_CP& rStart, WW8_CP& rEnd, void*& rpValue) const;
327  void advance() { if( nIdx < nIMax ) ++nIdx; }
328 
329  const void* GetData( sal_Int32 nInIdx ) const
330  {
331  return ( nInIdx >= nIMax ) ? nullptr :
332  static_cast<const void*>(&pPLCF_Contents[nInIdx * nStru]);
333  }
334 };
335 
336 /* for Piece Table (.i.e. FastSave Table) */
338 {
339  friend class WW8PLCFpcd_Iter;
340 
341  std::unique_ptr<sal_Int32[]> pPLCF_PosArray; // pointer to Pos-array and the whole structure
342  sal_uInt8* pPLCF_Contents; // pointer to content-array-part of Pos-array
343  long nIMax;
344  sal_uInt32 nStru;
345 
346  WW8PLCFpcd(const WW8PLCFpcd&) = delete;
347  WW8PLCFpcd& operator=(const WW8PLCFpcd&) = delete;
348 
349 public:
350  WW8PLCFpcd(SvStream* pSt, sal_uInt32 nFilePos, sal_uInt32 nPLCF,
351  sal_uInt32 nStruct);
352 };
353 
354 /* multiple WW8PLCFpcd_Iter may point to the same WW8PLCFpcd !!! */
356 {
357 private:
359  long nIdx;
360 
361  WW8PLCFpcd_Iter(const WW8PLCFpcd_Iter&) = delete;
362  WW8PLCFpcd_Iter& operator=(const WW8PLCFpcd_Iter&) = delete;
363 
364 public:
365  WW8PLCFpcd_Iter( WW8PLCFpcd& rPLCFpcd, long nStartPos = -1 );
366  long GetIdx() const { return nIdx; }
367  void SetIdx( long nI ) { nIdx = nI; }
368  long GetIMax() const { return rPLCF.nIMax; }
369  bool SeekPos(long nPos);
370  sal_Int32 Where() const;
371  bool Get(WW8_CP& rStart, WW8_CP& rEnd, void*& rpValue) const;
372  void advance()
373  {
374  if( nIdx < rPLCF.nIMax )
375  ++nIdx;
376  }
377 };
378 
379 // PLCF-type:
380 enum ePLCFT{ CHP=0, PAP, SEP, /*HED, FNR, ENR,*/ PLCF_END };
381 
382 //It's hardcoded that eFTN be the first one: a very poor hack, needs to be fixed
383 enum eExtSprm { eFTN = 256, eEDN = 257, eFLD = 258, eBKN = 259, eAND = 260, eATNBKN = 261, eFACTOIDBKN = 262 };
384 
385 /*
386  pure virtual:
387 */
388 class WW8PLCFx // virtual iterator for Piece Table Exceptions
389 {
390 private:
391  const WW8Fib& mrFib;
392  bool bIsSprm; // PLCF of Sprms or other stuff ( Footnote, ... )
394  bool bDirty;
395 
396  WW8PLCFx(const WW8PLCFx&) = delete;
397  WW8PLCFx& operator=(const WW8PLCFx&) = delete;
398 
399 public:
400  WW8PLCFx(const WW8Fib& rFib, bool bSprm)
401  : mrFib(rFib)
402  , bIsSprm(bSprm)
403  , nStartFc(-1)
404  , bDirty(false)
405  {
406  }
407  virtual ~WW8PLCFx() {}
408  bool IsSprm() const { return bIsSprm; }
409  virtual sal_uInt32 GetIdx() const = 0;
410  virtual void SetIdx(sal_uInt32 nIdx) = 0;
411  virtual sal_uInt32 GetIdx2() const;
412  virtual void SetIdx2(sal_uInt32 nIdx);
413  virtual bool SeekPos(WW8_CP nCpPos) = 0;
414  virtual WW8_FC Where() = 0;
415  virtual void GetSprms( WW8PLCFxDesc* p );
416  virtual long GetNoSprms( WW8_CP& rStart, WW8_CP&, sal_Int32& rLen );
417  virtual void advance() = 0;
418  virtual sal_uInt16 GetIstd() const { return 0xffff; }
419  virtual void Save( WW8PLCFxSave1& rSave ) const;
420  virtual void Restore( const WW8PLCFxSave1& rSave );
422  const WW8Fib& GetFIB() const { return mrFib; }
423  void SetStartFc( WW8_FC nFc ) { nStartFc = nFc; }
424  WW8_FC GetStartFc() const { return nStartFc; }
425  void SetDirty(bool bIn) {bDirty=bIn;}
426  bool GetDirty() const {return bDirty;}
427 };
428 
430 {
431 private:
434  std::vector<std::unique_ptr<sal_uInt8[]>> const & mrGrpprls; // attribute of Piece-table
435  SVBT32 aShortSprm; // mini storage: can contain ONE sprm with
436  // 1 byte param
437 
438  WW8PLCFx_PCDAttrs(const WW8PLCFx_PCDAttrs&) = delete;
440 
441 public:
442  WW8PLCFx_PCDAttrs(const WW8Fib& rFib, WW8PLCFx_PCD* pPLCFx_PCD,
443  const WW8ScannerBase* pBase );
444  virtual sal_uInt32 GetIdx() const override;
445  virtual void SetIdx(sal_uInt32 nI) override;
446  virtual bool SeekPos(WW8_CP nCpPos) override;
447  virtual WW8_CP Where() override;
448  virtual void GetSprms( WW8PLCFxDesc* p ) override;
449  virtual void advance() override;
450 
451  WW8PLCFpcd_Iter* GetIter() const { return pPcdI; }
452 };
453 
454 class WW8PLCFx_PCD : public WW8PLCFx // iterator for Piece table
455 {
456 private:
457  std::unique_ptr<WW8PLCFpcd_Iter> pPcdI;
458  bool bVer67;
460 
461  WW8PLCFx_PCD(const WW8PLCFx_PCD&) = delete;
462  WW8PLCFx_PCD& operator=(const WW8PLCFx_PCD&) = delete;
463 
464 public:
465  WW8PLCFx_PCD(const WW8Fib& rFib, WW8PLCFpcd* pPLCFpcd,
466  WW8_CP nStartCp, bool bVer67P);
467  virtual ~WW8PLCFx_PCD() override;
468  sal_uInt32 GetIMax() const;
469  virtual sal_uInt32 GetIdx() const override;
470  virtual void SetIdx(sal_uInt32 nI) override;
471  virtual bool SeekPos(WW8_CP nCpPos) override;
472  virtual WW8_CP Where() override;
473  virtual long GetNoSprms( WW8_CP& rStart, WW8_CP&, sal_Int32& rLen ) override;
474  virtual void advance() override;
475  WW8_CP CurrentPieceStartFc2Cp( WW8_FC nStartPos );
477  static void CurrentPieceFc2Cp(WW8_CP& rStartPos, WW8_CP& rEndPos,
478  const WW8ScannerBase *pSBase);
479  WW8PLCFpcd_Iter* GetPLCFIter() { return pPcdI.get(); }
480  void SetClipStart(WW8_CP nIn) { nClipStart = nIn; }
481  WW8_CP GetClipStart() const { return nClipStart; }
482 
483  static sal_Int32 TransformPieceAddress(long nfc, bool& bIsUnicodeAddress)
484  {
485  bIsUnicodeAddress = 0 == (0x40000000 & nfc);
486  return bIsUnicodeAddress ? nfc : (nfc & 0x3fffFFFF) / 2;
487  }
488 };
489 
494 class WW8PLCFx_Fc_FKP : public WW8PLCFx
495 {
496 public:
497  class WW8Fkp // Iterator for Formatted Disk Page
498  {
499  private:
500  class Entry
501  {
502  public:
504 
506  sal_uInt16 mnLen;
507  sal_uInt16 mnIStd; // only for Fkp.Papx (actually Style-Nr)
509 
510  explicit Entry(WW8_FC nFC) : mnFC(nFC), mpData(nullptr), mnLen(0),
511  mnIStd(0), mbMustDelete(false) {}
512  Entry(const Entry &rEntry);
513  ~Entry();
514  bool operator<(const Entry& rEntry) const;
515  Entry& operator=(const Entry& rEntry);
516  };
517 
519  std::vector<Entry> maEntries;
520 
521  long nItemSize; // either 1 Byte or a complete BX
522 
523  // Offset in Stream where last read of 512 bytes took place
524  long nFilePos;
525  sal_uInt8 mnIdx; // Pos marker
527  sal_uInt8 mnIMax; // number of entries
528  int mnMustRemainCached; // after SaveAllPLCFx, before RestoreAllPLCFx
529 
531 
532  //Fill in an Entry with sanity testing
533  void FillEntry(Entry &rEntry, std::size_t nDataOffset, sal_uInt16 nLen);
534 
535  public:
536  WW8Fkp (const WW8Fib& rFib, SvStream* pFKPStrm,
537  SvStream* pDataStrm, long _nFilePos, long nItemSiz, ePLCFT ePl,
538  WW8_FC nStartFc);
539  void Reset(WW8_FC nPos);
540  long GetFilePos() const { return nFilePos; }
541  sal_uInt8 GetIdx() const { return mnIdx; }
542  void SetIdx(sal_uInt8 nI);
543  bool SeekPos(WW8_FC nFc);
544  WW8_FC Where() const
545  {
546  return (mnIdx < mnIMax) ? maEntries[mnIdx].mnFC : WW8_FC_MAX;
547  }
548  void advance()
549  {
550  if (mnIdx < mnIMax)
551  ++mnIdx;
552  }
553  sal_uInt8* Get( WW8_FC& rStart, WW8_FC& rEnd, sal_Int32& rLen ) const;
554  sal_uInt16 GetIstd() const { return maEntries[mnIdx].mnIStd; }
555 
556  /*
557  returns a real pointer to the Sprm of type nId,
558  if such a thing is in the Fkp.
559  */
560  sal_uInt8* GetLenAndIStdAndSprms(sal_Int32& rLen) const;
561 
562  /*
563  calls GetLenAndIStdAndSprms()...
564  2020 bFindFirst note: Normally the last SPRM takes effect, so I don't know why HasSprm always returned the first value!
565  I don't dare to change the default due to regression potential (and slower in the few cases looking for a boolean result),
566  but first thing to try is use FindFirst as false.
567  */
568  SprmResult HasSprm(sal_uInt16 nId, bool bFindFirst = true);
569  void HasSprm(sal_uInt16 nId, std::vector<SprmResult> &rResult);
570 
571  const wwSprmParser &GetSprmParser() const { return maSprmParser; }
572 
574  bool IsMustRemainCache() const { return mnMustRemainCached > 0; }
576  };
577 
578 private:
579  SvStream* pFKPStrm; // input file
580  SvStream* pDataStrm; // input file
581  std::unique_ptr<WW8PLCF> pPLCF;
582 protected:
584 private:
585 
586  /*
587  Keep a cache of eMaxCache entries of previously seen pFkps, which
588  speeds up considerably table parsing and load save plcfs for what turn
589  out to be small text frames, which frames generally are
590 
591  size : cache hits
592  cache all : 19168 pap, 48 chp
593  == 100 : 19166 pap, 48 chp
594  == 50 : 18918 pap, 48 chp
595  == 10 : 18549 pap, 47 chp
596  == 5 : 18515 pap, 47 chp
597  */
598  std::deque<std::unique_ptr<WW8Fkp>> maFkpCache;
599  enum Limits {eMaxCache = 50000};
600 
601  bool NewFkp();
602 
603  WW8PLCFx_Fc_FKP(const WW8PLCFx_Fc_FKP&) = delete;
604  WW8PLCFx_Fc_FKP& operator=(const WW8PLCFx_Fc_FKP&) = delete;
605 
606 protected:
608  std::unique_ptr<WW8PLCFx_PCDAttrs> pPCDAttrs;
609 
610 public:
611  WW8PLCFx_Fc_FKP( SvStream* pSt, SvStream* pTableSt, SvStream* pDataSt,
612  const WW8Fib& rFib, ePLCFT ePl, WW8_FC nStartFcL );
613  virtual ~WW8PLCFx_Fc_FKP() override;
614  virtual sal_uInt32 GetIdx() const override;
615  virtual void SetIdx(sal_uInt32 nIdx) override;
616  virtual bool SeekPos(WW8_FC nFcPos) override;
617  virtual WW8_FC Where() override;
618  sal_uInt8* GetSprmsAndPos( WW8_FC& rStart, WW8_FC& rEnd, sal_Int32& rLen );
619  virtual void advance() override;
620  virtual sal_uInt16 GetIstd() const override;
621  void GetPCDSprms( WW8PLCFxDesc& rDesc );
622  SprmResult HasSprm(sal_uInt16 nId, bool bFindFirst = true);
623  void HasSprm(sal_uInt16 nId, std::vector<SprmResult> &rResult);
624  bool HasFkp() const { return (nullptr != pFkp); }
625 };
626 
629 {
630 private:
632  std::unique_ptr<WW8PLCFx_PCD> pPcd;
635  bool bLineEnd : 1;
636  bool bComplex : 1;
637 
638  WW8PLCFx_Cp_FKP(const WW8PLCFx_Cp_FKP&) = delete;
639  WW8PLCFx_Cp_FKP& operator=(const WW8PLCFx_Cp_FKP&) = delete;
640 
641 public:
642  WW8PLCFx_Cp_FKP( SvStream* pSt, SvStream* pTableSt, SvStream* pDataSt,
643  const WW8ScannerBase& rBase, ePLCFT ePl );
644  virtual ~WW8PLCFx_Cp_FKP() override;
645  void ResetAttrStartEnd();
646  sal_uInt32 GetPCDIdx() const;
647  virtual sal_uInt32 GetIdx2() const override;
648  virtual void SetIdx2(sal_uInt32 nIdx) override;
649  virtual bool SeekPos(WW8_CP nCpPos) override;
650  virtual WW8_CP Where() override;
651  virtual void GetSprms( WW8PLCFxDesc* p ) override;
652  virtual void advance() override;
653  virtual void Save( WW8PLCFxSave1& rSave ) const override;
654  virtual void Restore( const WW8PLCFxSave1& rSave ) override;
655 };
656 
658 class WW8PLCFx_SEPX : public WW8PLCFx
659 {
660 private:
663  std::unique_ptr<WW8PLCF> pPLCF;
664  std::unique_ptr<sal_uInt8[]> pSprms;
665  sal_uInt16 nArrMax;
666  sal_uInt16 nSprmSiz;
667 
668  WW8PLCFx_SEPX(const WW8PLCFx_SEPX&) = delete;
669  WW8PLCFx_SEPX& operator=(const WW8PLCFx_SEPX&) = delete;
670 
671 public:
672  WW8PLCFx_SEPX( SvStream* pSt, SvStream* pTablexySt, const WW8Fib& rFib,
673  WW8_CP nStartCp );
674  virtual ~WW8PLCFx_SEPX() override;
675  virtual sal_uInt32 GetIdx() const override;
676  virtual void SetIdx(sal_uInt32 nIdx) override;
677  virtual bool SeekPos(WW8_CP nCpPos) override;
678  virtual WW8_CP Where() override;
679  virtual void GetSprms( WW8PLCFxDesc* p ) override;
680  virtual void advance() override;
681  SprmResult HasSprm( sal_uInt16 nId ) const;
682  SprmResult HasSprm( sal_uInt16 nId, sal_uInt8 n2nd ) const;
683  SprmResult HasSprm( sal_uInt16 nId, const sal_uInt8* pOtherSprms,
684  long nOtherSprmSiz ) const;
685  bool Find4Sprms(sal_uInt16 nId1, sal_uInt16 nId2, sal_uInt16 nId3, sal_uInt16 nId4,
686  SprmResult& r1, SprmResult& r2, SprmResult& r3, SprmResult& r4) const;
687 };
688 
690 class WW8PLCFx_SubDoc : public WW8PLCFx
691 {
692 private:
693  std::unique_ptr<WW8PLCF> pRef;
694  std::unique_ptr<WW8PLCF> pText;
695 
696  WW8PLCFx_SubDoc(const WW8PLCFx_SubDoc&) = delete;
697  WW8PLCFx_SubDoc& operator=(const WW8PLCFx_SubDoc&) = delete;
698 
699 public:
700  WW8PLCFx_SubDoc(SvStream* pSt, const WW8Fib& rFib, WW8_CP nStartCp,
701  long nFcRef, long nLenRef, long nFcText, long nLenText, long nStruc);
702  virtual ~WW8PLCFx_SubDoc() override;
703  virtual sal_uInt32 GetIdx() const override;
704  virtual void SetIdx(sal_uInt32 nIdx) override;
705  virtual bool SeekPos(WW8_CP nCpPos) override;
706  virtual WW8_CP Where() override;
707 
708  // returns reference descriptors
709  const void* GetData() const
710  {
711  return pRef ? pRef->GetData( pRef->GetIdx() ) : nullptr;
712  }
713 
714  virtual void GetSprms(WW8PLCFxDesc* p) override;
715  virtual void advance() override;
716  long Count() const { return pRef ? pRef->GetIMax() : 0; }
717 };
718 
720 class WW8PLCFx_FLD : public WW8PLCFx
721 {
722 private:
723  std::unique_ptr<WW8PLCFspecial> pPLCF;
724  const WW8Fib& rFib;
725  WW8PLCFx_FLD(const WW8PLCFx_FLD&) = delete;
726  WW8PLCFx_FLD& operator=(const WW8PLCFx_FLD &) = delete;
727 
728 public:
729  WW8PLCFx_FLD(SvStream* pSt, const WW8Fib& rMyFib, short nType);
730  virtual ~WW8PLCFx_FLD() override;
731  virtual sal_uInt32 GetIdx() const override;
732  virtual void SetIdx(sal_uInt32 nIdx) override;
733  virtual bool SeekPos(WW8_CP nCpPos) override;
734  virtual WW8_CP Where() override;
735  virtual void GetSprms(WW8PLCFxDesc* p) override;
736  virtual void advance() override;
737  bool StartPosIsFieldStart();
738  bool EndPosIsFieldEnd(WW8_CP&);
739  bool GetPara(long nIdx, WW8FieldDesc& rF);
740 };
741 
742 enum eBookStatus { BOOK_NORMAL = 0, BOOK_IGNORE = 0x1, BOOK_FIELD = 0x2 };
743 
745 class WW8PLCFx_Book : public WW8PLCFx
746 {
747 private:
748  std::unique_ptr<WW8PLCFspecial> pBook[2]; // Start and End Position
749  std::vector<OUString> aBookNames; // Name
750  std::vector<eBookStatus> aStatus;
751  long nIMax; // Number of Booknotes
752  sal_uInt16 nIsEnd;
753  sal_Int32 nBookmarkId; // counter incremented by GetUniqueBookmarkName.
754 
755  WW8PLCFx_Book(const WW8PLCFx_Book&) = delete;
756  WW8PLCFx_Book& operator=(const WW8PLCFx_Book&) = delete;
757 
758 public:
759  WW8PLCFx_Book(SvStream* pTableSt,const WW8Fib& rFib);
760  virtual ~WW8PLCFx_Book() override;
761  long GetIMax() const { return nIMax; }
762  virtual sal_uInt32 GetIdx() const override;
763  virtual void SetIdx(sal_uInt32 nI) override;
764  virtual sal_uInt32 GetIdx2() const override;
765  virtual void SetIdx2(sal_uInt32 nIdx) override;
766  virtual bool SeekPos(WW8_CP nCpPos) override;
767  virtual WW8_CP Where() override;
768  virtual long GetNoSprms( WW8_CP& rStart, WW8_CP& rEnd, sal_Int32& rLen ) override;
769  virtual void advance() override;
770  const OUString* GetName() const;
772  { return nIsEnd ? WW8_CP_MAX : pBook[0]->Where(); }
773  long GetLen() const;
774  bool GetIsEnd() const { return nIsEnd != 0; }
775  long GetHandle() const;
776  void SetStatus( sal_uInt16 nIndex, eBookStatus eStat );
777  void MapName(OUString& rName);
778  OUString GetBookmark(long nStart,long nEnd, sal_uInt16 &nIndex);
779  eBookStatus GetStatus() const;
780  OUString GetUniqueBookmarkName(const OUString &rSuggestedName);
781 };
782 
785 {
786 private:
788  std::unique_ptr<WW8PLCFspecial> m_pBook[2];
790  sal_Int32 nIMax;
791  bool m_bIsEnd;
792 
793  WW8PLCFx_AtnBook(const WW8PLCFx_AtnBook&) = delete;
794  WW8PLCFx_AtnBook& operator=(const WW8PLCFx_AtnBook&) = delete;
795 
796 public:
797  WW8PLCFx_AtnBook(SvStream* pTableSt,const WW8Fib& rFib);
798  virtual ~WW8PLCFx_AtnBook() override;
799  virtual sal_uInt32 GetIdx() const override;
800  virtual void SetIdx(sal_uInt32 nI) override;
801  virtual sal_uInt32 GetIdx2() const override;
802  virtual void SetIdx2(sal_uInt32 nIdx) override;
803  virtual bool SeekPos(WW8_CP nCpPos) override;
804  virtual WW8_CP Where() override;
805  virtual long GetNoSprms( WW8_CP& rStart, WW8_CP& rEnd, sal_Int32& rLen ) override;
806  virtual void advance() override;
807 
809  long getHandle() const;
810  bool getIsEnd() const;
811 };
812 
815 {
816 private:
818  std::unique_ptr<WW8PLCFspecial> m_pBook[2];
820  sal_Int32 m_nIMax;
821  bool m_bIsEnd;
822 
825 
826 public:
827  WW8PLCFx_FactoidBook(SvStream* pTableSt,const WW8Fib& rFib);
828  virtual ~WW8PLCFx_FactoidBook() override;
829  virtual sal_uInt32 GetIdx() const override;
830  virtual void SetIdx(sal_uInt32 nI) override;
831  virtual sal_uInt32 GetIdx2() const override;
832  virtual void SetIdx2(sal_uInt32 nIdx) override;
833  virtual bool SeekPos(WW8_CP nCpPos) override;
834  virtual WW8_CP Where() override;
835  virtual long GetNoSprms(WW8_CP& rStart, WW8_CP& rEnd, sal_Int32& rLen) override;
836  virtual void advance() override;
837 
839  long getHandle() const;
840  bool getIsEnd() const;
841 };
842 
843 /*
844  this is what we use outside:
845 */
847 {
848  WW8_CP nCpPos; // attribute starting position
849  long nMemLen; // length for previous
850  long nCp2OrIdx; // footnote-textpos or index in PLCF
851  WW8_CP nCurrentCp; // only used by caller
852  const sal_uInt8* pMemPos;// Mem-Pos for Sprms
853  sal_uInt16 nSprmId; // Sprm-Id ( 0 = invalid Id -> skip! )
854  // (2..255) or pseudo-Sprm-Id (256..260)
855  // from Winword-Ver8 Sprm-Id (800..) resp.
856  sal_uInt8 nFlags; // start of paragraph or section
857 };
858 
860 {
861  MAN_MASK_NEW_PAP = 1, // new line
862  MAN_MASK_NEW_SEP = 2 // new section
863 };
864 
865 enum ManTypes // enums for PLCFMan-ctor
866 {
867  MAN_MAINTEXT = 0, MAN_FTN = 1, MAN_EDN = 2, MAN_HDFT = 3, MAN_AND = 4,
869 };
870 
871 /*
872  this is what the manager uses inside:
873 */
875 {
877  std::stack<sal_uInt16>* pIdStack; // memory for Attr-Id for Attr-end(s)
878  const sal_uInt8* pMemPos;// where are the Sprm(s)
880 
883 
885  WW8_CP nOrigEndPos; // The ending character position of a paragraph is
886  // always one before the end reported in the FKP,
887  // also a character run that ends on the same location
888  // as the paragraph mark is adjusted to end just before
889  // the paragraph mark so as to handle their close
890  // first. The value being used to determining where the
891  // properties end is in nEndPos, but the original
892  // unadjusted end character position is important as
893  // it can be used as the beginning cp of the next set
894  // of properties
895 
896  WW8_CP nCp2OrIdx; // where are the NoSprm(s)
897  sal_Int32 nSprmsLen; // how many bytes for further Sprms / length of footnote
898  long nCpOfs; // for Offset Header .. Footnote
899  bool bFirstSprm; // for recognizing the first Sprm of a group
900  bool bRealLineEnd; // false for Pap-Piece-end
901  sal_Int16 nRelativeJustify;
902  void Save( WW8PLCFxSave1& rSave ) const;
903  void Restore( const WW8PLCFxSave1& rSave );
904  //With nStartPos set to WW8_CP_MAX then in the case of a pap or chp
905  //GetSprms will not search for the sprms, but instead take the
906  //existing ones.
908  : pPLCFx(nullptr)
909  , pIdStack(nullptr)
910  , pMemPos(nullptr)
911  , nOrigSprmsLen(0)
912  , nStartPos(WW8_CP_MAX)
913  , nEndPos(WW8_CP_MAX)
914  , nOrigStartPos(WW8_CP_MAX)
915  , nOrigEndPos(WW8_CP_MAX)
916  , nCp2OrIdx(WW8_CP_MAX)
917  , nSprmsLen(0)
918  , nCpOfs(0)
919  , bFirstSprm(false)
920  , bRealLineEnd(false)
921  , nRelativeJustify(-1)
922  {
923  }
924  void ReduceByOffset();
925 };
926 
927 struct WW8PLCFxSaveAll;
929 {
930 public:
932 
933 private:
935  WW8_CP m_nCpO; //< Origin Cp -- the basis for nNewCp
936 
937  WW8_CP m_nLineEnd; // points *after* the <CR>
938  sal_uInt16 m_nPLCF; // this many PLCFs are managed
940  bool mbDoingDrawTextBox; //Normally we adjust the end of attributes
941  //so that the end of a paragraph occurs
942  //before the para end mark, but for
943  //drawboxes we want the true offsets
944 
950 
951  const WW8Fib* m_pWwFib;
952 
953  sal_uInt16 WhereIdx(bool* pbStart, WW8_CP * pPos=nullptr) const;
954  void AdjustEnds(WW8PLCFxDesc& rDesc);
955  void GetNewSprms(WW8PLCFxDesc& rDesc);
956  static void GetNewNoSprms(WW8PLCFxDesc& rDesc);
957  void GetSprmStart(short nIdx, WW8PLCFManResult* pRes) const;
958  void GetSprmEnd(short nIdx, WW8PLCFManResult* pRes) const;
959  void GetNoSprmStart(short nIdx, WW8PLCFManResult* pRes) const;
960  void GetNoSprmEnd(short nIdx, WW8PLCFManResult* pRes) const;
961  void AdvSprm(short nIdx, bool bStart);
962  void AdvNoSprm(short nIdx, bool bStart);
963  sal_uInt16 GetId(const WW8PLCFxDesc* p ) const;
964 
965 public:
966  WW8PLCFMan(const WW8ScannerBase* pBase, ManTypes nType, long nStartCp,
967  bool bDoingDrawTextBox = false);
968  ~WW8PLCFMan();
969 
970  /*
971  Where asks on which following position any Attr changes...
972  */
973  WW8_CP Where() const;
974 
975  bool Get(WW8PLCFManResult* pResult) const;
976  void advance();
977  sal_uInt16 GetColl() const; // index of actual Style
978  WW8PLCFx_FLD* GetField() const;
979  WW8PLCFx_SubDoc* GetEdn() const { return static_cast<WW8PLCFx_SubDoc*>(m_pEdn->pPLCFx); }
980  WW8PLCFx_SubDoc* GetFootnote() const { return static_cast<WW8PLCFx_SubDoc*>(m_pFootnote->pPLCFx); }
981  WW8PLCFx_SubDoc* GetAtn() const { return static_cast<WW8PLCFx_SubDoc*>(m_pAnd->pPLCFx); }
982  WW8PLCFx_Book* GetBook() const { return static_cast<WW8PLCFx_Book*>(m_pBkm->pPLCFx); }
983  WW8PLCFx_AtnBook* GetAtnBook() const { return static_cast<WW8PLCFx_AtnBook*>(m_pAtnBkm->pPLCFx); }
984  WW8PLCFx_FactoidBook* GetFactoidBook() const { return static_cast<WW8PLCFx_FactoidBook*>(m_pFactoidBkm->pPLCFx); }
985  long GetCpOfs() const { return m_pChp->nCpOfs; } // for Header/Footer...
986 
987  /* asks, if *current paragraph* has an Sprm of this type */
988  SprmResult HasParaSprm(sal_uInt16 nId) const;
989 
990  /* asks, if *current textrun* has an Sprm of this type */
991  SprmResult HasCharSprm(sal_uInt16 nId) const;
992  void HasCharSprm(sal_uInt16 nId, std::vector<SprmResult> &rResult) const;
993 
995  { return static_cast<WW8PLCFx_Cp_FKP*>(m_pChp->pPLCFx); }
997  { return static_cast<WW8PLCFx_Cp_FKP*>(m_pPap->pPLCFx); }
999  { return static_cast<WW8PLCFx_SEPX*>(m_pSep->pPLCFx); }
1000  WW8PLCFxDesc* GetPap() const { return m_pPap; }
1001  void TransferOpenSprms(std::stack<sal_uInt16> &rStack);
1002  void SeekPos( long nNewCp );
1003  void SaveAllPLCFx( WW8PLCFxSaveAll& rSave ) const;
1004  void RestoreAllPLCFx( const WW8PLCFxSaveAll& rSave );
1005  WW8PLCFspecial* GetFdoa() const { return m_pFdoa; }
1006  WW8PLCFspecial* GetTxbx() const { return m_pTxbx; }
1007  WW8PLCFspecial* GetTxbxBkd() const { return m_pTxbxBkd; }
1009  WW8PLCFspecial* GetWkbPLCF() const { return m_pSubdocs; }
1011  ManTypes GetManType() const { return m_nManType; }
1012  bool GetDoingDrawTextBox() const { return mbDoingDrawTextBox; }
1013 };
1014 
1016 {
1018  WW8PLCFxSaveAll() = default;
1019 };
1020 
1022 {
1023 friend WW8PLCFx_PCDAttrs::WW8PLCFx_PCDAttrs(const WW8Fib& rFib,
1024  WW8PLCFx_PCD* pPLCFx_PCD, const WW8ScannerBase* pBase );
1026  const WW8ScannerBase&, ePLCFT );
1027 
1028 friend WW8PLCFMan::WW8PLCFMan(const WW8ScannerBase*, ManTypes, long, bool);
1030 
1031 private:
1033  std::unique_ptr<WW8PLCFx_Cp_FKP> m_pChpPLCF; // Character-Attrs
1034  std::unique_ptr<WW8PLCFx_Cp_FKP> m_pPapPLCF; // Paragraph-Attrs
1035  std::unique_ptr<WW8PLCFx_SEPX> m_pSepPLCF; // Section-Attrs
1036  std::unique_ptr<WW8PLCFx_SubDoc> m_pFootnotePLCF; // Footnotes
1037  std::unique_ptr<WW8PLCFx_SubDoc> m_pEdnPLCF; // EndNotes
1038  std::unique_ptr<WW8PLCFx_SubDoc> m_pAndPLCF; // Comments
1039  std::unique_ptr<WW8PLCFx_FLD> m_pFieldPLCF; // Fields in Main Text
1040  std::unique_ptr<WW8PLCFx_FLD> m_pFieldHdFtPLCF; // Fields in Header / Footer
1041  std::unique_ptr<WW8PLCFx_FLD> m_pFieldTxbxPLCF; // Fields in Textboxes in Main Text
1042  std::unique_ptr<WW8PLCFx_FLD> m_pFieldTxbxHdFtPLCF; // Fields in Textboxes in Header / Footer
1043  std::unique_ptr<WW8PLCFx_FLD> m_pFieldFootnotePLCF; // Fields in Footnotes
1044  std::unique_ptr<WW8PLCFx_FLD> m_pFieldEdnPLCF; // Fields in Endnotes
1045  std::unique_ptr<WW8PLCFx_FLD> m_pFieldAndPLCF; // Fields in Comments
1046  std::unique_ptr<WW8PLCFspecial> m_pMainFdoa; // Graphic Primitives in Main Text
1047  std::unique_ptr<WW8PLCFspecial> m_pHdFtFdoa; // Graphic Primitives in Header / Footer
1048  std::unique_ptr<WW8PLCFspecial> m_pMainTxbx; // Textboxes in Main Text
1049  std::unique_ptr<WW8PLCFspecial> m_pMainTxbxBkd; // Break-Descriptors for them
1050  std::unique_ptr<WW8PLCFspecial> m_pHdFtTxbx; // TextBoxes in Header / Footer
1051  std::unique_ptr<WW8PLCFspecial> m_pHdFtTxbxBkd; // Break-Descriptors for previous
1052  std::unique_ptr<WW8PLCFspecial> m_pMagicTables; // Break-Descriptors for them
1053  std::unique_ptr<WW8PLCFspecial> m_pSubdocs; // subdoc references in master document
1054  std::unique_ptr<sal_uInt8[]>
1055  m_pExtendedAtrds; // Extended ATRDs
1056  std::unique_ptr<WW8PLCFx_Book> m_pBook; // Bookmarks
1057  std::unique_ptr<WW8PLCFx_AtnBook> m_pAtnBook; // Annotationmarks
1059  std::unique_ptr<WW8PLCFx_FactoidBook> m_pFactoidBook;
1060 
1061  std::unique_ptr<WW8PLCFpcd> m_pPiecePLCF; // for FastSave ( Basis-PLCF without iterator )
1062  std::unique_ptr<WW8PLCFpcd_Iter> m_pPieceIter; // for FastSave ( iterator for previous )
1063  std::unique_ptr<WW8PLCFx_PCD> m_pPLCFx_PCD; // ditto
1064  std::unique_ptr<WW8PLCFx_PCDAttrs> m_pPLCFx_PCDAttrs;
1065  std::vector<std::unique_ptr<sal_uInt8[]>> m_aPieceGrpprls; // attributes of Piece-Table
1066 
1067  std::unique_ptr<WW8PLCFpcd> OpenPieceTable( SvStream* pStr, const WW8Fib* pWwF );
1068 
1069  WW8ScannerBase(const WW8ScannerBase&) = delete;
1070  WW8ScannerBase& operator=(const WW8ScannerBase&) = delete;
1071 
1072 public:
1073  WW8ScannerBase( SvStream* pSt, SvStream* pTableSt, SvStream* pDataSt,
1074  WW8Fib* pWwF );
1075  ~WW8ScannerBase();
1076  bool AreThereFootnotes() const { return m_pFootnotePLCF->Count() > 0; };
1077  bool AreThereEndnotes() const { return m_pEdnPLCF->Count() > 0; };
1078 
1079  //If you use WW8Fc2Cp you are almost certainly doing the wrong thing
1080  //when it comes to fastsaved files, avoid like the plague. For export
1081  //given that we never write fastsaved files you can use it, otherwise
1082  //I will beat you with a stick
1083  WW8_CP WW8Fc2Cp(WW8_FC nFcPos) const ;
1084  WW8_FC WW8Cp2Fc(WW8_CP nCpPos, bool* pIsUnicode = nullptr,
1085  WW8_CP* pNextPieceCp = nullptr, bool* pTestFlag = nullptr) const;
1086 
1087  sal_Int32 WW8ReadString(SvStream& rStrm, OUString& rStr, WW8_CP nCurrentStartCp,
1088  long nTotalLen, rtl_TextEncoding eEnc ) const;
1089 
1090 };
1091 
1098 class WW8Fib
1099 {
1100 private:
1102 
1103 public:
1113  /*
1114  error status
1115  */
1117  /*
1118  data read from FIB by Ctor
1119  (corresponds only approximately to the real structure
1120  of the Winword-FIB)
1121  */
1122  sal_uInt16 m_wIdent = 0; // 0x0 int magic number
1123  /*
1124  File Information Block (FIB) values:
1125  WinWord 1.0 = 33
1126  WinWord 2.0 = 45
1127  WinWord 6.0c for 16bit = 101
1128  Word 6/32 bit = 104
1129  Word 95 = 104
1130  Word 97 = 193
1131  Word 2000 = 217
1132  Word 2002 = 257
1133  Word 2003 = 268
1134  Word 2007 = 274
1135  */
1136  sal_uInt16 m_nFib = 0; // 0x2 FIB version written
1137  sal_uInt16 m_nProduct = 0; // 0x4 product version written by
1138  LanguageType m_lid; // 0x6 language stamp---localized version;
1139  WW8_PN m_pnNext = 0; // 0x8
1140 
1141  bool m_fDot :1 /*= false*/; // 0xa 0001
1142  bool m_fGlsy :1 /*= false*/;
1143  bool m_fComplex :1 /*= false*/; // 0004 when 1, file is in complex, fast-saved format.
1144  bool m_fHasPic :1 /*= false*/; // 0008 file contains 1 or more pictures
1145  sal_uInt16 m_cQuickSaves :4 /*= 0*/; // 00F0 count of times file was quicksaved
1146  bool m_fEncrypted :1 /*= false*/; //0100 1 if file is encrypted, 0 if not
1147  bool m_fWhichTableStm :1 /*= false*/; //0200 When 0, this fib refers to the table stream
1148  bool m_fReadOnlyRecommended :1 /*= false*/;
1149  bool m_fWriteReservation :1 /*= false*/;
1150  // named "0Table", when 1, this fib refers to the
1151  // table stream named "1Table". Normally, a file
1152  // will have only one table stream, but under unusual
1153  // circumstances a file may have table streams with
1154  // both names. In that case, this flag must be used
1155  // to decide which table stream is valid.
1156 
1157  bool m_fExtChar :1 /*= false*/; // 1000 =1, when using extended character set in file
1158  bool m_fFarEast :1 /*= false*/; // 4000 =1, probably, when far-East language variants of Word is used to create a file #i90932#
1159 
1160  bool m_fObfuscated :1 /*= false*/; // 8000=1. specifies whether the document is obfuscated using XOR obfuscation. otherwise this bit MUST be ignored.
1161 
1162  sal_uInt16 m_nFibBack = 0; // 0xc
1163  sal_uInt16 m_nHash = 0; // 0xe file encrypted hash
1164  sal_uInt16 m_nKey = 0; // 0x10 file encrypted key
1165  sal_uInt8 m_envr = 0; // 0x12 environment in which file was created
1166  // 0 created by Win Word / 1 created by Mac Word
1167  bool m_fMac :1 /*= false*/; // 0x13 when 1, this file was last saved in the Mac environment
1168  bool m_fEmptySpecial :1 /*= false*/;
1169  bool m_fLoadOverridePage :1 /*= false*/;
1170  bool m_fFuturesavedUndo :1 /*= false*/;
1171  bool m_fWord97Saved :1 /*= false*/;
1172  bool m_fWord2000Saved :1 /*= false*/;
1174 
1175  sal_uInt16 m_chse = 0; // 0x14 default extended character set id for text in document stream. (overridden by chp.chse)
1176  // 0 = ANSI / 256 Macintosh character set.
1177  sal_uInt16 m_chseTables = 0; // 0x16 default extended character set id for text in
1178  // internal data structures: 0 = ANSI, 256 = Macintosh
1179  WW8_FC m_fcMin = 0; // 0x18 file offset of first character of text
1180  WW8_FC m_fcMac = 0; // 0x1c file offset of last character of text + 1
1181 
1182  // start of WW8 section
1183  sal_uInt16 m_csw = 0; // Count of fields in the array of "shorts"
1184 
1185  // marker: "rgsw" Beginning of the array of shorts
1186  sal_uInt16 m_wMagicCreated = 0; // unique number Identifying the File's creator
1187  // 0x6A62 is the creator ID for Word and is reserved.
1188  // Other creators should choose a different value.
1189  sal_uInt16 m_wMagicRevised = 0; // identifies the File's last modifier
1190  sal_uInt16 m_wMagicCreatedPrivate = 0; // private data
1191  sal_uInt16 m_wMagicRevisedPrivate = 0; // private data
1192 
1193  LanguageType m_lidFE; // Language id if document was written by Far East version
1194  // of Word (i.e. FIB.fFarEast is on)
1195  sal_uInt16 m_clw = 0; // Number of fields in the array of longs
1196 
1197  // end of WW8 section
1198 
1199  // Marker: "rglw" Beginning of the array of longs
1200  WW8_FC m_cbMac = 0; // 0x20 file offset of last byte written to file + 1.
1201 
1202  // WW8_FC u4[4]; // 0x24
1203  WW8_CP m_ccpText = 0; // 0x34 length of main document text stream
1204  WW8_CP m_ccpFootnote = 0; // 0x38 length of footnote subdocument text stream
1205  WW8_CP m_ccpHdr = 0; // 0x3c length of header subdocument text stream
1206  WW8_CP m_ccpMcr = 0; // 0x40 length of macro subdocument text stream
1207  WW8_CP m_ccpAtn = 0; // 0x44 length of annotation subdocument text stream
1208  WW8_CP m_ccpEdn = 0; // 0x48 length of endnote subdocument text stream
1209  WW8_CP m_ccpTxbx = 0; // 0x4c length of textbox subdocument text stream
1210  WW8_CP m_ccpHdrTxbx = 0; // 0x50 length of header textbox subdocument text stream
1211 
1212  // start of WW8 section
1213  sal_Int32 m_pnFbpChpFirst = 0; // when there was insufficient memory for Word to expand
1214  // the PLCFbte at save time, the PLCFbte is written
1215  // to the file in a linked list of 512-byte pieces
1216  // starting with this pn.
1217  sal_Int32 m_pnFbpPapFirst = 0; // when there was insufficient memory for Word to expand
1218  // the PLCFbte at save time, the PLCFbte is written to
1219  // the file in a linked list of 512-byte pieces
1220  // starting with this pn
1221 
1222  sal_Int32 m_pnFbpLvcFirst = 0; // when there was insufficient memory for Word to expand
1223  // the PLCFbte at save time, the PLCFbte is written to
1224  // the file in a linked list of 512-byte pieces
1225  // starting with this pn
1226  sal_Int32 m_pnLvcFirst = 0; // the page number of the lowest numbered page in the
1227  // document that records LVC FKP information
1228  sal_Int32 m_cpnBteLvc = 0; // count of LVC FKPs recorded in file. In non-complex
1229  // files if the number of entries in the PLCFbtePapx is
1230  // less than this, the PLCFbtePapx is incomplete.
1231  sal_Int32 m_fcIslandFirst = 0; // ?
1232  sal_Int32 m_fcIslandLim = 0; // ?
1233  sal_uInt16 m_cfclcb = 0; // Number of fields in the array of FC/LCB pairs.
1235  sal_uInt16 m_cswNew = 0;
1236 
1237  // end of WW8 section
1238 
1239  // Marker: "rgfclcb" Beginning of array of FC/LCB pairs.
1240  WW8_FC m_fcStshfOrig = 0; // file offset of original allocation for STSH in table
1241  // stream. During fast save Word will attempt to reuse
1242  // this allocation if STSH is small enough to fit.
1243  sal_Int32 m_lcbStshfOrig = 0; // 0x5c count of bytes of original STSH allocation
1244  WW8_FC m_fcStshf = 0; // 0x60 file offset of STSH in file.
1245  sal_Int32 m_lcbStshf = 0; // 0x64 count of bytes of current STSH allocation
1246  WW8_FC m_fcPlcffndRef = 0; // 0x68 file offset of footnote reference PLCF.
1247  sal_Int32 m_lcbPlcffndRef = 0; // 0x6c count of bytes of footnote reference PLCF
1248  // == 0 if no footnotes defined in document.
1249 
1250  WW8_FC m_fcPlcffndText = 0; // 0x70 file offset of footnote text PLCF.
1251  sal_Int32 m_lcbPlcffndText = 0; // 0x74 count of bytes of footnote text PLCF.
1252  // == 0 if no footnotes defined in document
1253 
1254  WW8_FC m_fcPlcfandRef = 0; // 0x78 file offset of annotation reference PLCF.
1255  sal_Int32 m_lcbPlcfandRef = 0; // 0x7c count of bytes of annotation reference PLCF.
1256 
1257  WW8_FC m_fcPlcfandText = 0; // 0x80 file offset of annotation text PLCF.
1258  sal_Int32 m_lcbPlcfandText = 0; // 0x84 count of bytes of the annotation text PLCF
1259 
1260  WW8_FC m_fcPlcfsed = 0; // 8x88 file offset of section descriptor PLCF.
1261  sal_Int32 m_lcbPlcfsed = 0; // 0x8c count of bytes of section descriptor PLCF.
1262 
1263  WW8_FC m_fcPlcfpad = 0; // 0x90 file offset of paragraph descriptor PLCF
1264  sal_Int32 m_lcbPlcfpad = 0; // 0x94 count of bytes of paragraph descriptor PLCF.
1265  // ==0 if file was never viewed in Outline view.
1266  // Should not be written by third party creators
1267 
1268  WW8_FC m_fcPlcfphe = 0; // 0x98 file offset of PLCF of paragraph heights.
1269  sal_Int32 m_lcbPlcfphe = 0; // 0x9c count of bytes of paragraph height PLCF.
1270  // ==0 when file is non-complex.
1271 
1272  WW8_FC m_fcSttbfglsy = 0; // 0xa0 file offset of glossary string table.
1273  sal_Int32 m_lcbSttbfglsy = 0; // 0xa4 count of bytes of glossary string table.
1274  // == 0 for non-glossary documents.
1275  // !=0 for glossary documents.
1276 
1277  WW8_FC m_fcPlcfglsy = 0; // 0xa8 file offset of glossary PLCF.
1278  sal_Int32 m_lcbPlcfglsy = 0; // 0xac count of bytes of glossary PLCF.
1279  // == 0 for non-glossary documents.
1280  // !=0 for glossary documents.
1281 
1282  WW8_FC m_fcPlcfhdd = 0; // 0xb0 byte offset of header PLCF.
1283  sal_Int32 m_lcbPlcfhdd = 0; // 0xb4 count of bytes of header PLCF.
1284  // == 0 if document contains no headers
1285 
1286  WW8_FC m_fcPlcfbteChpx = 0; // 0xb8 file offset of character property bin table.PLCF.
1287  sal_Int32 m_lcbPlcfbteChpx = 0;// 0xbc count of bytes of character property bin table PLCF.
1288 
1289  WW8_FC m_fcPlcfbtePapx = 0; // 0xc0 file offset of paragraph property bin table.PLCF.
1290  sal_Int32 m_lcbPlcfbtePapx = 0;// 0xc4 count of bytes of paragraph property bin table PLCF.
1291 
1292  WW8_FC m_fcPlcfsea = 0; // 0xc8 file offset of PLCF reserved for private use. The SEA is 6 bytes long.
1293  sal_Int32 m_lcbPlcfsea = 0; // 0xcc count of bytes of private use PLCF.
1294 
1295  WW8_FC m_fcSttbfffn = 0; // 0xd0 file offset of font information STTBF. See the FFN file structure definition.
1296  sal_Int32 m_lcbSttbfffn = 0; // 0xd4 count of bytes in sttbfffn.
1297 
1298  WW8_FC m_fcPlcffldMom = 0; // 0xd8 offset in doc stream to the PLCF of field positions in the main document.
1299  sal_Int32 m_lcbPlcffldMom = 0; // 0xdc
1300 
1301  WW8_FC m_fcPlcffldHdr = 0; // 0xe0 offset in doc stream to the PLCF of field positions in the header subdocument.
1302  sal_Int32 m_lcbPlcffldHdr = 0; // 0xe4
1303 
1304  WW8_FC m_fcPlcffldFootnote = 0; // 0xe8 offset in doc stream to the PLCF of field positions in the footnote subdocument.
1305  sal_Int32 m_lcbPlcffldFootnote = 0; // 0xec
1306 
1307  WW8_FC m_fcPlcffldAtn = 0; // 0xf0 offset in doc stream to the PLCF of field positions in the annotation subdocument.
1308  sal_Int32 m_lcbPlcffldAtn = 0; // 0xf4
1309 
1310  WW8_FC m_fcPlcffldMcr = 0; // 0xf8 offset in doc stream to the PLCF of field positions in the macro subdocument.
1311  sal_Int32 m_lcbPlcffldMcr = 0; // 9xfc
1312 
1313  WW8_FC m_fcSttbfbkmk = 0; // 0x100 offset in document stream of the STTBF that records bookmark names in the main document
1314  sal_Int32 m_lcbSttbfbkmk = 0; // 0x104
1315 
1316  WW8_FC m_fcPlcfbkf = 0; // 0x108 offset in document stream of the PLCF that records the beginning CP offsets of bookmarks in the main document. See BKF
1317  sal_Int32 m_lcbPlcfbkf = 0; // 0x10c
1318 
1319  WW8_FC m_fcPlcfbkl = 0; // 0x110 offset in document stream of the PLCF that records the ending CP offsets of bookmarks recorded in the main document. See the BKL structure definition.
1320  sal_Int32 m_lcbPlcfbkl = 0; // 0x114 sal_Int32
1321 
1322  WW8_FC m_fcCmds = 0; // 0x118 FC
1323  sal_uInt32 m_lcbCmds = 0; // 0x11c
1324 
1325  WW8_FC m_fcPlcfmcr = 0; // 0x120 FC
1326  sal_Int32 m_lcbPlcfmcr = 0; // 0x124
1327 
1328  WW8_FC m_fcSttbfmcr = 0; // 0x128 FC
1329  sal_Int32 m_lcbSttbfmcr = 0; // 0x12c
1330 
1331  WW8_FC m_fcPrDrvr = 0; // 0x130 file offset of the printer driver information (names of drivers, port etc...)
1332  sal_Int32 m_lcbPrDrvr = 0; // 0x134 count of bytes of the printer driver information (names of drivers, port etc...)
1333 
1334  WW8_FC m_fcPrEnvPort = 0; // 0x138 file offset of the print environment in portrait mode.
1335  sal_Int32 m_lcbPrEnvPort = 0; // 0x13c count of bytes of the print environment in portrait mode.
1336 
1337  WW8_FC m_fcPrEnvLand = 0; // 0x140 file offset of the print environment in landscape mode.
1338  sal_Int32 m_lcbPrEnvLand = 0; // 0x144 count of bytes of the print environment in landscape mode.
1339 
1340  WW8_FC m_fcWss = 0; // 0x148 file offset of Window Save State data structure. See WSS.
1341  sal_Int32 m_lcbWss = 0; // 0x14c count of bytes of WSS. ==0 if unable to store the window state.
1342 
1343  WW8_FC m_fcDop = 0; // 0x150 file offset of document property data structure.
1344  sal_uInt32 m_lcbDop = 0; // 0x154 count of bytes of document properties.
1345  // cbDOP is 84 when nFib < 103
1346 
1347  WW8_FC m_fcSttbfAssoc = 0; // 0x158 offset to STTBF of associated strings. See STTBFASSOC.
1348  sal_Int32 m_lcbSttbfAssoc = 0; // 0x15C
1349 
1350  WW8_FC m_fcClx = 0; // 0x160 file offset of beginning of information for complex files.
1351  sal_Int32 m_lcbClx = 0; // 0x164 count of bytes of complex file information. 0 if file is non-complex.
1352 
1353  WW8_FC m_fcPlcfpgdFootnote = 0; // 0x168 file offset of page descriptor PLCF for footnote subdocument.
1354  sal_Int32 m_lcbPlcfpgdFootnote = 0; // 0x16C count of bytes of page descriptor PLCF for footnote subdocument.
1355  // ==0 if document has not been paginated. The length of the PGD is 8 bytes.
1356 
1357  WW8_FC m_fcAutosaveSource = 0; // 0x170 file offset of the name of the original file.
1358  sal_Int32 m_lcbAutosaveSource = 0; // 0x174 count of bytes of the name of the original file.
1359 
1360  WW8_FC m_fcGrpStAtnOwners = 0; // 0x178 group of strings recording the names of the owners of annotations
1361  sal_Int32 m_lcbGrpStAtnOwners = 0; // 0x17C count of bytes of the group of strings
1362 
1363  WW8_FC m_fcSttbfAtnbkmk = 0; // 0x180 file offset of the sttbf that records names of bookmarks in the annotation subdocument
1364  sal_Int32 m_lcbSttbfAtnbkmk = 0; // 0x184 length in bytes of the sttbf that records names of bookmarks in the annotation subdocument
1365 
1366  // end of WW67 section
1367 
1368  WW8_FC m_fcPlcfdoaMom = 0; // 0x192 file offset of the FDOA (drawn object) PLCF for main document.
1369  // ==0 if document has no drawn objects. The length of the FDOA is 6 bytes.
1370  // unused starting from Ver8
1371  sal_Int32 m_lcbPlcfdoaMom = 0; // 0x196 length in bytes of the FDOA PLCF of the main document
1372  // unused starting from Ver8
1373  WW8_FC m_fcPlcfdoaHdr = 0; // 0x19A file offset of the FDOA (drawn object) PLCF for the header document.
1374  // ==0 if document has no drawn objects. The length of the FDOA is 6 bytes.
1375  // unused starting from Ver8
1376  sal_Int32 m_lcbPlcfdoaHdr = 0; // 0x19E length in bytes of the FDOA PLCF of the header document
1377  // unused starting from Ver8
1378 
1379  WW8_FC m_fcPlcfspaMom = 0; // offset in table stream of the FSPA PLCF for main document.
1380  // == 0 if document has no office art objects
1381  // was empty reserve in Ver67
1382  sal_Int32 m_lcbPlcfspaMom = 0; // length in bytes of the FSPA PLCF of the main document
1383  // was empty reserve in Ver67
1384  WW8_FC m_fcPlcfspaHdr = 0; // offset in table stream of the FSPA PLCF for header document.
1385  // == 0 if document has no office art objects
1386  // was empty reserve in Ver67
1387  sal_Int32 m_lcbPlcfspaHdr = 0; // length in bytes of the FSPA PLCF of the header document
1388  // was empty reserve in Ver67
1389 
1390  WW8_FC m_fcPlcfAtnbkf = 0; // 0x1B2 file offset of BKF (bookmark first) PLCF of the annotation subdocument
1391  sal_Int32 m_lcbPlcfAtnbkf = 0; // 0x1B6 length in bytes of BKF (bookmark first) PLCF of the annotation subdocument
1392 
1393  WW8_FC m_fcPlcfAtnbkl = 0; // 0x1BA file offset of BKL (bookmark last) PLCF of the annotation subdocument
1394  sal_Int32 m_lcbPlcfAtnbkl = 0; // 0x1BE length in bytes of BKL (bookmark first) PLCF of the annotation subdocument
1395 
1396  WW8_FC m_fcPms = 0; // 0x1C2 file offset of PMS (Print Merge State) information block
1397  sal_Int32 m_lcbPMS = 0; // 0x1C6 length in bytes of PMS
1398 
1399  WW8_FC m_fcFormFieldSttbf = 0; // 0x1CA file offset of form field Sttbf which contains strings used in form field dropdown controls
1400  sal_Int32 m_lcbFormFieldSttbf = 0; // 0x1CE length in bytes of form field Sttbf
1401 
1402  WW8_FC m_fcPlcfendRef = 0; // 0x1D2 file offset of PLCFendRef which points to endnote references in the main document stream
1403  sal_Int32 m_lcbPlcfendRef = 0; // 0x1D6
1404 
1405  WW8_FC m_fcPlcfendText = 0; // 0x1DA file offset of PLCFendRef which points to endnote text in the endnote document
1406  // stream which corresponds with the PLCFendRef
1407  sal_Int32 m_lcbPlcfendText = 0; // 0x1DE
1408 
1409  WW8_FC m_fcPlcffldEdn = 0; // 0x1E2 offset to PLCF of field positions in the endnote subdoc
1410  sal_Int32 m_lcbPlcffldEdn = 0; // 0x1E6
1411 
1412  WW8_FC m_fcPlcfpgdEdn = 0; // 0x1EA offset to PLCF of page boundaries in the endnote subdoc.
1413  sal_Int32 m_lcbPlcfpgdEdn = 0; // 0x1EE
1414 
1415  WW8_FC m_fcDggInfo = 0; // offset in table stream of the office art object table data.
1416  // The format of office art object table data is found in a separate document.
1417  // was empty reserve in Ver67
1418  sal_Int32 m_lcbDggInfo = 0; // length in bytes of the office art object table data
1419  // was empty reserve in Ver67
1420 
1421  WW8_FC m_fcSttbfRMark = 0; // 0x1fa offset to STTBF that records the author abbreviations...
1422  sal_Int32 m_lcbSttbfRMark = 0; // 0x1fe
1423  WW8_FC m_fcSttbfCaption = 0; // 0x202 offset to STTBF that records caption titles...
1424  sal_Int32 m_lcbSttbfCaption = 0; // 0x206
1425  WW8_FC m_fcSttbAutoCaption = 0; // offset in table stream to the STTBF that records the object names and
1426  // indices into the caption STTBF for objects which get auto captions.
1427  sal_Int32 m_lcbSttbAutoCaption = 0; // 0x20e
1428 
1429  WW8_FC m_fcPlcfwkb = 0; // 0x212 offset to PLCF that describes the boundaries of contributing documents...
1430  sal_Int32 m_lcbPlcfwkb = 0; // 0x216
1431 
1432  WW8_FC m_fcPlcfspl = 0; // offset in table stream of PLCF (of SPLS structures) that records spell check state
1433  // was empty reserve in Ver67
1434  sal_Int32 m_lcbPlcfspl = 0; // was empty reserve in Ver67
1435 
1436  WW8_FC m_fcPlcftxbxText = 0; // 0x222 ...PLCF of beginning CP in the text box subdoc
1437  sal_Int32 m_lcbPlcftxbxText = 0; // 0x226
1438  WW8_FC m_fcPlcffldTxbx = 0; // 0x22a ...PLCF of field boundaries recorded in the textbox subdoc.
1439  sal_Int32 m_lcbPlcffldTxbx = 0; // 0x22e
1440  WW8_FC m_fcPlcfHdrtxbxText = 0;// 0x232 ...PLCF of beginning CP in the header text box subdoc
1441  sal_Int32 m_lcbPlcfHdrtxbxText = 0;// 0x236
1442  WW8_FC m_fcPlcffldHdrTxbx = 0;// 0x23a ...PLCF of field boundaries recorded in the header textbox subdoc.
1443  sal_Int32 m_lcbPlcffldHdrTxbx = 0;// 0x23e
1445  sal_uInt32 m_lcbStwUser = 0;
1447  sal_uInt32 m_lcbSttbttmbd = 0;
1448 
1449  WW8_FC m_fcSttbFnm = 0; // 0x02da offset in the table stream of masters subdocument names
1450  sal_Int32 m_lcbSttbFnm = 0; // 0x02de length
1451 
1452  /*
1453  special list handling for WW8
1454  */
1455  WW8_FC m_fcPlcfLst = 0; // 0x02e2 offset in the table stream of list format information.
1456  sal_Int32 m_lcbPlcfLst = 0; // 0x02e6 length
1457  WW8_FC m_fcPlfLfo = 0; // 0x02ea offset in the table stream of list format override information.
1458  sal_Int32 m_lcbPlfLfo = 0; // 0x02ee length
1459  /*
1460  special Break handling for text-box-stories in WW8
1461  */
1462  WW8_FC m_fcPlcftxbxBkd = 0; // 0x02f2 PLCF for TextBox-Break-descriptors in the Maintext
1463  sal_Int32 m_lcbPlcftxbxBkd = 0; // 0x02f6
1464  WW8_FC m_fcPlcfHdrtxbxBkd = 0;// 0x02fa PLCF for TextBox-Break-descriptors in the Header-/Footer- area
1465  sal_Int32 m_lcbPlcfHdrtxbxBkd = 0;// 0x02fe
1466 
1467  // 0x302 - 372 == ignore
1468  /*
1469  ListNames (skip to here!)
1470  */
1471  WW8_FC m_fcSttbListNames = 0;// 0x0372 PLCF for Listname Table
1472  sal_Int32 m_lcbSttbListNames = 0;// 0x0376
1473 
1475  sal_Int32 m_lcbPlcfTch = 0;
1476 
1477  // 0x38A - 41A == ignore
1479  sal_uInt32 m_lcbAtrdExtra = 0;
1480 
1481  // 0x422 - 0x429 == ignore
1482 
1486  sal_uInt32 m_lcbSttbfBkmkFactoid = 0;
1490  sal_uInt32 m_lcbPlcfBkfFactoid = 0;
1491 
1492  // 0x43a - 0x441 == ignore
1493 
1497  sal_uInt32 m_lcbPlcfBklFactoid = 0;
1501  sal_uInt32 m_lcbFactoidData = 0;
1502 
1503  // 0x452 - 0x4b9 == ignore
1504 
1508  sal_uInt32 m_lcbPlcffactoid = 0;
1509 
1510  // 0x4bf - 0x4d4 == ignore
1511 
1512  WW8_FC m_fcHplxsdr = 0; //bizarrely, word xp seems to require this set to shows dates from AtrdExtra
1513  sal_uInt32 m_lcbHplxsdr = 0;
1514 
1515  /*
1516  general variables that were used for Ver67 and Ver8,
1517  even though they had different sizes in the corresponding files:
1518  */
1519  sal_Int32 m_pnChpFirst = 0;
1520  sal_Int32 m_pnPapFirst = 0;
1521  sal_Int32 m_cpnBteChp = 0;
1522  sal_Int32 m_cpnBtePap = 0;
1523  /*
1524  The actual nFib, moved here because some readers assumed
1525  they couldn't read any format with nFib > some constant
1526  */
1527  sal_uInt16 m_nFib_actual = 0; // 0x05bc #i56856#
1528 
1529  WW8Fib(SvStream& rStrm, sal_uInt8 nWantedVersion,sal_uInt32 nOffset=0);
1530  explicit WW8Fib(sal_uInt8 nVersion, bool bDot = false);
1531 
1532  void WriteHeader(SvStream& rStrm);
1533  void Write(SvStream& rStrm);
1534  static rtl_TextEncoding GetFIBCharset(sal_uInt16 chs, LanguageType nLidLocale);
1536  bool GetBaseCp(ManTypes nType, WW8_CP * cp) const;
1538 };
1539 
1541 {
1542 protected:
1545 
1546  sal_uInt16 m_cstd; // Count of styles in stylesheet
1547  sal_uInt16 m_cbSTDBaseInFile; // Length of STD Base as stored in a file
1548  sal_uInt16 m_fStdStylenamesWritten : 1; // Are built-in stylenames stored?
1549  sal_uInt16 : 15; // Spare flags
1550  sal_uInt16 m_stiMaxWhenSaved; // Max sti known when file was written
1551  sal_uInt16 m_istdMaxFixedWhenSaved; // How many fixed-index istds are there?
1552  sal_uInt16 m_nVerBuiltInNamesWhenSaved; // Current version of built-in stylenames
1553  // ftc used by StandardChpStsh for this document
1554  sal_uInt16 m_ftcAsci;
1555  // CJK ftc used by StandardChpStsh for this document
1556  sal_uInt16 m_ftcFE;
1557  // CTL/Other ftc used by StandardChpStsh for this document
1558  sal_uInt16 m_ftcOther;
1559  // CTL ftc used by StandardChpStsh for this document
1560  sal_uInt16 m_ftcBi;
1561 
1562  //No copying
1563  WW8Style(const WW8Style&);
1564  WW8Style& operator=(const WW8Style&);
1565 
1566 public:
1567  WW8Style( SvStream& rSt, WW8Fib& rFibPara );
1568  std::unique_ptr<WW8_STD> Read1STDFixed(sal_uInt16& rSkip);
1569  std::unique_ptr<WW8_STD> Read1Style(sal_uInt16& rSkip, OUString* pString);
1570  sal_uInt16 GetCount() const { return m_cstd; }
1571 };
1572 
1573 class WW8Fonts final
1574 {
1575 private:
1576  WW8Fonts(const WW8Fonts&) = delete;
1577  WW8Fonts& operator=(const WW8Fonts&) = delete;
1578 
1579  std::vector<WW8_FFN> m_aFontA; // Array of Pointers to Font Description
1580 
1581 public:
1582  WW8Fonts( SvStream& rSt, WW8Fib const & rFib );
1583  const WW8_FFN* GetFont( sal_uInt16 nNum ) const;
1584  sal_uInt16 GetMax() const { return m_aFontA.size(); }
1585 };
1586 
1588 namespace nsHdFtFlags
1589 {
1596 }
1597 
1599 struct WW8Dop
1600 {
1601 public:
1602  /* Error Status */
1604  /*
1605  Corresponds only roughly to the actual structure of the Winword DOP,
1606  the winword FIB version matters to what exists.
1607  */
1608  bool fFacingPages : 1 /*= false*/; // 1 when facing pages should be printed
1609 
1610  bool fWidowControl : 1 /*= false*/; //a: orig 97 docs say
1611  // 1 when widow control is in effect. 0 when widow control disabled.
1612  //b: MS-DOC: Word Binary File Format (.doc) Structure Specification 2008 says
1613  // B - unused1 (1 bit): Undefined and MUST be ignored.
1614 
1615  bool fPMHMainDoc : 1 /*= false*/; // 1 when doc is a main doc for Print Merge Helper, 0 when not; default=0
1616  sal_uInt16 grfSuppression : 2 /*= 0*/; // 0 Default line suppression storage; 0= form letter line suppression; 1= no line suppression; default=0
1617  sal_uInt16 fpc : 2 /*= 0*/; // 1 footnote position code: 0 as endnotes, 1 at bottom of page, 2 immediately beneath text
1618  sal_uInt16 : 1; // 0 unused
1619 
1620  sal_uInt16 grpfIhdt : 8 /*= 0*/; // 0 specification of document headers and footers. See explanation under Headers and Footers topic.
1621 
1622  sal_uInt16 rncFootnote : 2 /*= 0*/; // 0 restart index for footnotes, 0 don't restart note numbering, 1 section, 2 page
1623  sal_uInt16 nFootnote : 14 /*= 0*/; // 1 initial footnote number for document
1624  bool fOutlineDirtySave : 1 /*= false*/; // when 1, indicates that information in the hPLCFpad should be refreshed since outline has been dirtied
1625  sal_uInt16 : 7; // reserved
1626  bool fOnlyMacPics : 1 /*= false*/; // when 1, Word believes all pictures recorded in the document were created on a Macintosh
1627  bool fOnlyWinPics : 1 /*= false*/; // when 1, Word believes all pictures recorded in the document were created in Windows
1628  bool fLabelDoc : 1 /*= false*/; // when 1, document was created as a print merge labels document
1629  bool fHyphCapitals : 1 /*= false*/; // when 1, Word is allowed to hyphenate words that are capitalized. When 0, capitalized may not be hyphenated
1630  bool fAutoHyphen : 1 /*= false*/; // when 1, Word will hyphenate newly typed text as a background task
1631  bool fFormNoFields : 1 /*= false*/;
1632  bool fLinkStyles : 1 /*= false*/; // when 1, Word will merge styles from its template
1633  bool fRevMarking : 1 /*= false*/; // when 1, Word will mark revisions as the document is edited
1634  bool fBackup : 1 /*= false*/; // always make backup when document saved when 1.
1635  bool fExactCWords : 1 /*= false*/;
1636  bool fPagHidden : 1 /*= false*/;
1637  bool fPagResults : 1 /*= false*/;
1638  bool fLockAtn : 1 /*= false*/; // when 1, annotations are locked for editing
1639  bool fMirrorMargins : 1 /*= false*/; // swap margins on left/right pages when 1.
1640  bool fReadOnlyRecommended : 1 /*= false*/;// user has recommended that this doc be opened read-only when 1
1641  bool fDfltTrueType : 1 /*= false*/; // when 1, use TrueType fonts by default (flag obeyed only when doc was created by WinWord 2.x)
1642  bool fPagSuppressTopSpacing : 1 /*= false*/;//when 1, file created with SUPPRESSTOPSPACING=YES in win.ini. (flag obeyed only when doc was created by WinWord 2.x).
1643  bool fProtEnabled : 1 /*= false*/; // when 1, document is protected from edit operations
1644  bool fDispFormFieldSel : 1 /*= false*/;// when 1, restrict selections to occur only within form fields
1645  bool fRMView : 1 /*= false*/; // when 1, show revision markings on screen
1646  bool fRMPrint : 1 /*= false*/; // when 1, print revision marks when document is printed
1647  bool fWriteReservation : 1 /*= false*/;
1648  bool fLockRev : 1 /*= false*/; // when 1, the current revision marking state is locked
1649  bool fEmbedFonts : 1 /*= false*/; // when 1, document contains embedded True Type fonts
1650  // compatibility options
1651  bool copts_fNoTabForInd : 1 /*= false*/; // when 1, don't add automatic tab stops for hanging indent
1652  bool copts_fNoSpaceRaiseLower : 1 /*= false*/; // when 1, don't add extra space for raised or lowered characters
1653  bool copts_fSupressSpbfAfterPgBrk : 1 /*= false*/; // when 1, suppress the paragraph Space Before and Space After options after a page break
1654  bool copts_fWrapTrailSpaces : 1 /*= false*/; // when 1, wrap trailing spaces at the end of a line to the next line
1655  bool copts_fMapPrintTextColor : 1 /*= false*/; // when 1, print colors as black on non-color printers
1656  bool copts_fNoColumnBalance : 1 /*= false*/; // when 1, don't balance columns for Continuous Section starts
1657  bool copts_fConvMailMergeEsc : 1 /*= false*/;
1658  bool copts_fSupressTopSpacing : 1 /*= false*/; // when 1, suppress extra line spacing at top of page
1659  bool copts_fOrigWordTableRules : 1 /*= false*/; // when 1, combine table borders like Word 5.x for the Macintosh
1660  bool copts_fTransparentMetafiles : 1 /*= false*/; // when 1, don't blank area between metafile pictures
1661  bool copts_fShowBreaksInFrames : 1 /*= false*/; // when 1, show hard page or column breaks in frames
1662  bool copts_fSwapBordersFacingPgs : 1 /*= false*/; // when 1, swap left and right pages on odd facing pages
1663  bool copts_fExpShRtn : 1 /*= false*/; // when 1, expand character spaces on the line ending SHIFT+RETURN // #i56856#
1664 
1665  sal_Int16 dxaTab = 0; // 720 twips - default tab width
1666  sal_uInt16 wSpare = 0;
1667  sal_uInt16 dxaHotZ = 0; // width of hyphenation hot zone measured in twips
1668  sal_uInt16 cConsecHypLim = 0; // number of lines allowed to have consecutive hyphens
1669  sal_uInt16 wSpare2 = 0; // reserved
1670  sal_Int32 dttmCreated = 0; // DTTM date and time document was created
1671  sal_Int32 dttmRevised = 0; // DTTM date and time document was last revised
1672  sal_Int32 dttmLastPrint = 0; // DTTM date and time document was last printed
1673  sal_Int16 nRevision = 0; // number of times document has been revised since its creation
1674  sal_Int32 tmEdited = 0; // time document was last edited
1675  sal_Int32 cWords = 0; // count of words tallied by last Word Count execution
1676  sal_Int32 cCh = 0; // count of characters tallied by last Word Count execution
1677  sal_Int16 cPg = 0; // count of pages tallied by last Word Count execution
1678  sal_Int32 cParas = 0; // count of paragraphs tallied by last Word Count execution
1679  sal_uInt16 rncEdn : 2 /*= 0*/; // restart endnote number code: 0 don't restart endnote numbering, 1 section, 2 page
1680  sal_uInt16 nEdn : 14 /*= 0*/; // beginning endnote number
1681  sal_uInt16 epc : 2 /*= 0*/; // endnote position code: 0 at end of section, 3 at end of document
1682 
1683  bool fPrintFormData : 1 /*= false*/; // only print data inside of form fields
1684  bool fSaveFormData : 1 /*= false*/; // only save document data that is inside of a form field.
1685  bool fShadeFormData : 1 /*= false*/; // shade form fields
1686  sal_uInt16 : 2; // reserved
1687  bool fWCFootnoteEdn : 1 /*= false*/; // when 1, include footnotes and endnotes in word count
1688  sal_Int32 cLines = 0; // count of lines tallied by last Word Count operation
1689  sal_Int32 cWordsFootnoteEnd = 0; // count of words in footnotes and endnotes tallied by last Word Count operation
1690  sal_Int32 cChFootnoteEdn = 0; // count of characters in footnotes and endnotes tallied by last Word Count operation
1691  sal_Int16 cPgFootnoteEdn = 0; // count of pages in footnotes and endnotes tallied by last Word Count operation
1692  sal_Int32 cParasFootnoteEdn = 0; // count of paragraphs in footnotes and endnotes tallied by last Word Count operation
1693  sal_Int32 cLinesFootnoteEdn = 0; // count of paragraphs in footnotes and endnotes tallied by last Word Count operation
1694  sal_Int32 lKeyProtDoc = 0; // document protection password key, only valid if dop.fProtEnabled, dop.fLockAtn or dop.fLockRev are 1.
1695  sal_uInt16 wvkSaved : 3 /*= 0*/; // document view kind: 0 Normal view, 1 Outline view, 2 Page View
1696  sal_uInt16 wScaleSaved : 9 /*= 0*/;
1697  sal_uInt16 zkSaved : 2 /*= 0*/; // document zoom type: 0 percent, 1 whole/entire page, 2 page width, 3 text width/optimal
1698  bool fRotateFontW6 : 1 /*= false*/;
1699  bool iGutterPos : 1 /*= false*/;
1700 
1701  // this should be the end for nFib < 103, otherwise the file is broken!
1702 
1703  /*
1704  for nFib >= 103 it continues:
1705  */
1706  bool fNoTabForInd : 1 /*= false*/; // see above in compatibility options
1707  bool fNoSpaceRaiseLower : 1 /*= false*/; // see above
1708  bool fSupressSpbfAfterPageBreak : 1 /*= false*/; // see above
1709  bool fWrapTrailSpaces : 1 /*= false*/; // see above
1710  bool fMapPrintTextColor : 1 /*= false*/; // see above
1711  bool fNoColumnBalance : 1 /*= false*/; // see above
1712  bool fConvMailMergeEsc : 1 /*= false*/; // see above
1713  bool fSupressTopSpacing : 1 /*= false*/; // see above
1714  bool fOrigWordTableRules : 1 /*= false*/; // see above
1715  bool fTransparentMetafiles : 1 /*= false*/; // see above
1716  bool fShowBreaksInFrames : 1 /*= false*/; // see above
1717  bool fSwapBordersFacingPgs : 1 /*= false*/; // see above
1718  bool fCompatibilityOptions_Unknown1_13 : 1 /*= false*/; // #i78591#
1719  bool fExpShRtn : 1 /*= false*/; // #i78591# and #i56856#
1720  bool fCompatibilityOptions_Unknown1_15 : 1 /*= false*/; // #i78591#
1721  bool fCompatibilityOptions_Unknown1_16 : 1 /*= false*/; // #i78591#
1722  bool fSuppressTopSpacingMac5 : 1 /*= false*/; // Suppress extra line spacing at top
1723  // of page like MacWord 5.x
1724  bool fTruncDxaExpand : 1 /*= false*/; // Expand/Condense by whole number of points
1725  bool fPrintBodyBeforeHdr : 1 /*= false*/; // Print body text before header/footer
1726  bool fNoLeading : 1 /*= false*/; // Don't add extra spacebetween rows of text
1727  bool fCompatibilityOptions_Unknown1_21 : 1 /*= false*/; // #i78591#
1728  bool fMWSmallCaps : 1 /*= false*/; // Use larger small caps like MacWord 5.x
1729  bool fCompatibilityOptions_Unknown1_23 : 1 /*= false*/; // #i78591#
1730  bool fCompatibilityOptions_Unknown1_24 : 1 /*= false*/; // #i78591#
1731  bool fCompatibilityOptions_Unknown1_25 : 1 /*= false*/; // #i78591#
1732  bool fCompatibilityOptions_Unknown1_26 : 1 /*= false*/; // #i78591#
1733  bool fCompatibilityOptions_Unknown1_27 : 1 /*= false*/; // #i78591#
1734  bool fCompatibilityOptions_Unknown1_28 : 1 /*= false*/; // #i78591#
1735  bool fCompatibilityOptions_Unknown1_29 : 1 /*= false*/; // #i78591#
1736  bool fCompatibilityOptions_Unknown1_30 : 1 /*= false*/; // #i78591#
1737  bool fCompatibilityOptions_Unknown1_31 : 1 /*= false*/; // #i78591#
1738  bool fUsePrinterMetrics : 1 /*= false*/; //The magic option
1739 
1740  // this should be the end for nFib <= 105, otherwise the file is broken!
1741 
1742  /*
1743  for nFib > 105 it continues:
1744  */
1745  sal_Int16 adt = 0; // Autoformat Document Type:
1746  // 0 for normal.
1747  // 1 for letter, and
1748  // 2 for email.
1749  WW8DopTypography doptypography = {}; // see WW8STRUC.HXX
1750  WW8_DOGRID dogrid = {}; // see WW8STRUC.HXX
1751  sal_uInt16 : 1; // reserved
1752  sal_uInt16 lvl : 4 /*= 0*/; // Which outline levels are showing in outline view
1753  sal_uInt16 : 4; // reserved
1754  bool fHtmlDoc : 1 /*= false*/; // This file is based upon an HTML file
1755  sal_uInt16 : 1; // reserved
1756  bool fSnapBorder : 1 /*= false*/; // Snap table and page borders to page border
1757  bool fIncludeHeader : 1 /*= false*/; // Place header inside page border
1758  bool fIncludeFooter : 1 /*= false*/; // Place footer inside page border
1759  bool fForcePageSizePag : 1 /*= false*/; // Are we in online view
1760  bool fMinFontSizePag : 1 /*= false*/; // Are we auto-promoting fonts to >= hpsZoomFontPag?
1761  bool fHaveVersions : 1 /*= false*/; // versioning is turned on
1762  bool fAutoVersion : 1 /*= false*/; // autoversioning is enabled
1763  sal_uInt16 : 14; // reserved
1764  // Skip 12 Bytes here: ASUMI
1765  sal_Int32 cChWS = 0;
1766  sal_Int32 cChWSFootnoteEdn = 0;
1767  sal_Int32 grfDocEvents = 0;
1768  // Skip 4+30+8 Bytes here
1769  sal_Int32 cDBC = 0;
1770  sal_Int32 cDBCFootnoteEdn = 0;
1771  // Skip 4 Bytes here
1772  sal_Int16 nfcFootnoteRef = 0;
1773  sal_Int16 nfcEdnRef = 0;
1774  sal_Int16 hpsZoomFontPag = 0;
1775  sal_Int16 dywDispPag = 0;
1776 
1777  bool fCompatibilityOptions_Unknown2_1 : 1 /*= false*/; // #i78591#
1778  bool fCompatibilityOptions_Unknown2_2 : 1 /*= false*/; // #i78591#
1779  bool fDontUseHTMLAutoSpacing : 1 /*= false*/;
1780  bool fCompatibilityOptions_Unknown2_4 : 1 /*= false*/; // #i78591#
1781  bool fCompatibilityOptions_Unknown2_5 : 1 /*= false*/; // #i78591#
1782  bool fCompatibilityOptions_Unknown2_6 : 1 /*= false*/; // #i78591#
1783  bool fCompatibilityOptions_Unknown2_7 : 1 /*= false*/; // #i78591#
1784  bool fCompatibilityOptions_Unknown2_8 : 1 /*= false*/; // #i78591#
1785  bool fCompatibilityOptions_Unknown2_9 : 1 /*= false*/; // #i78591#
1786  bool fCompatibilityOptions_Unknown2_10 : 1 /*= false*/; // #i78591#
1787  bool fCompatibilityOptions_Unknown2_11 : 1 /*= false*/; // #i78591#
1788  bool fCompatibilityOptions_Unknown2_12 : 1 /*= false*/; // #i78591#
1789  bool fCompatibilityOptions_Unknown2_13 : 1 /*= false*/; // #i78591#
1790  bool fCompatibilityOptions_Unknown2_14 : 1 /*= false*/; // #i78591#
1791  bool fCompatibilityOptions_Unknown2_15 : 1 /*= false*/; // #i78591#
1792  bool fCompatibilityOptions_Unknown2_16 : 1 /*= false*/; // #i78591#
1793  bool fCompatibilityOptions_Unknown2_17 : 1 /*= false*/; // #i78591#
1794  bool fCompatibilityOptions_Unknown2_18 : 1 /*= false*/; // #i78591#
1795  bool fCompatibilityOptions_Unknown2_19 : 1 /*= false*/; // #i78591#
1796  bool fCompatibilityOptions_Unknown2_20 : 1 /*= false*/; // #i78591#
1797  bool fCompatibilityOptions_Unknown2_21 : 1 /*= false*/; // #i78591#
1798  bool fCompatibilityOptions_Unknown2_22 : 1 /*= false*/; // #i78591#
1799  bool fCompatibilityOptions_Unknown2_23 : 1 /*= false*/; // #i78591#
1800  bool fCompatibilityOptions_Unknown2_24 : 1 /*= false*/; // #i78591#
1801  bool fCompatibilityOptions_Unknown2_25 : 1 /*= false*/; // #i78591#
1802  bool fCompatibilityOptions_Unknown2_26 : 1 /*= false*/; // #i78591#
1803  bool fCompatibilityOptions_Unknown2_27 : 1 /*= false*/; // #i78591#
1804  bool fCompatibilityOptions_Unknown2_28 : 1 /*= false*/; // #i78591#
1805  bool fCompatibilityOptions_Unknown2_29 : 1 /*= false*/; // #i78591#
1806  bool fCompatibilityOptions_Unknown2_30 : 1 /*= false*/; // #i78591#
1807  bool fCompatibilityOptions_Unknown2_31 : 1 /*= false*/; // #i78591#
1808  bool fCompatibilityOptions_Unknown2_32 : 1 /*= false*/; // #i78591#
1809 
1810  sal_uInt16 fUnknown3 : 15 /*= 0*/;
1811  bool fUseBackGroundInAllmodes : 1 /*= false*/;
1812 
1813  bool fDoNotEmbedSystemFont : 1 /*= false*/;
1814  bool fWordCompat : 1 /*= false*/;
1815  bool fLiveRecover : 1 /*= false*/;
1816  bool fEmbedFactoids : 1 /*= false*/;
1817  bool fFactoidXML : 1 /*= false*/;
1818  bool fFactoidAllDone : 1 /*= false*/;
1819  bool fFolioPrint : 1 /*= false*/;
1820  bool fReverseFolio : 1 /*= false*/;
1821  sal_uInt16 iTextLineEnding : 3 /*= 0*/;
1822  bool fHideFcc : 1 /*= false*/;
1823  bool fAcetateShowMarkup : 1 /*= false*/;
1824  bool fAcetateShowAtn : 1 /*= false*/;
1825  bool fAcetateShowInsDel : 1 /*= false*/;
1826  bool fAcetateShowProps : 1 /*= false*/;
1827 
1829 
1830  /* Constructor for importing, needs to know the version of word used */
1831  WW8Dop(SvStream& rSt, sal_Int16 nFib, sal_Int32 nPos, sal_uInt32 nSize);
1832 
1833  /* Constructs default DOP suitable for exporting */
1834  WW8Dop();
1835  void Write(SvStream& rStrm, WW8Fib& rFib) const;
1836 
1837  sal_uInt32 GetCompatibilityOptions() const;
1838  void SetCompatibilityOptions(sal_uInt32 a32Bit);
1839  // i#78591#
1840  sal_uInt32 GetCompatibilityOptions2() const;
1841  void SetCompatibilityOptions2(sal_uInt32 a32Bit);
1842 };
1843 
1845 {
1846 private:
1848  short nIdxOffset;
1849 
1850 public:
1851  WW8PLCF_HdFt( SvStream* pSt, WW8Fib const & rFib, WW8Dop const & rDop );
1852  bool GetTextPos(sal_uInt8 grpfIhdt, sal_uInt8 nWhich, WW8_CP& rStart, WW8_CP& rLen);
1853  void GetTextPosExact(short nIdx, WW8_CP& rStart, WW8_CP& rLen);
1854  void UpdateIndex( sal_uInt8 grpfIhdt );
1855 };
1856 
1857 Word2CHPX ReadWord2Chpx(SvStream &rSt, std::size_t nOffset, sal_uInt8 nSize);
1858 std::vector<sal_uInt8> ChpxToSprms(const Word2CHPX &rChpx);
1859 
1860 [[nodiscard]] bool checkRead(SvStream &rSt, void *pDest, sal_uInt32 nLength);
1861 
1862 //MS has a (slightly) inaccurate view of how many twips
1863 //are in the default letter size of a page
1864 const sal_uInt16 lLetterWidth = 12242;
1865 const sal_uInt16 lLetterHeight = 15842;
1866 
1867 #ifdef OSL_BIGENDIAN
1868 void swapEndian(sal_Unicode *pString);
1869 #endif
1870 
1871 #endif
1872 
1873 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sal_Int32 m_lcbPlcfsed
Definition: ww8scan.hxx:1261
WW8Fib * m_pWw8Fib
Definition: ww8scan.hxx:1032
virtual void advance() override
Definition: ww8scan.cxx:4363
sal_Int32 m_lcbPlcffldMcr
Definition: ww8scan.hxx:1311
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4699
WW8PLCFpcd(const WW8PLCFpcd &)=delete
sal_Int32 m_lcbPlcffldAtn
Definition: ww8scan.hxx:1308
WW8PLCFspecial * GetFdoa() const
Definition: ww8scan.hxx:1005
simple Iterator for SPRMs
Definition: ww8scan.hxx:259
void GeneratePLCF(SvStream &rSt, sal_Int32 nPN, sal_Int32 ncpN)
Definition: ww8scan.cxx:2363
bool fCompatibilityOptions_Unknown2_18
Definition: ww8scan.hxx:1794
virtual bool SeekPos(WW8_FC nFcPos) override
Definition: ww8scan.cxx:3171
WW8PLCFxDesc * m_pSep
Definition: ww8scan.hxx:946
bool fHyphCapitals
Definition: ww8scan.hxx:1629
sal_uInt16 nEdn
Definition: ww8scan.hxx:1680
Iterator for Booknotes.
Definition: ww8scan.hxx:745
bool fBackup
Definition: ww8scan.hxx:1634
WW8_FC m_fcStshf
Definition: ww8scan.hxx:1244
sal_uInt8 * pPLCF_Contents
Definition: ww8scan.hxx:342
bool bCodeNest
instruction used recursively
Definition: ww8scan.hxx:196
OUString GetUniqueBookmarkName(const OUString &rSuggestedName)
Definition: ww8scan.cxx:4473
sal_uInt16 m_chse
Definition: ww8scan.hxx:1175
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4690
WW8_FC m_fcMin
Definition: ww8scan.hxx:1179
void advance()
Definition: ww8scan.cxx:5456
WW8_FC m_fcPlcftxbxBkd
Definition: ww8scan.hxx:1462
WW8PLCFspecial * m_pFdoa
Definition: ww8scan.hxx:948
bool fDfltTrueType
Definition: ww8scan.hxx:1641
sal_Int32 m_lcbPMS
Definition: ww8scan.hxx:1397
const HdFtFlags WW8_FOOTER_FIRST
Definition: ww8scan.hxx:1595
sal_uInt16 rncEdn
Definition: ww8scan.hxx:1679
Handles the import of PlcfAtnBkf and PlcfAtnBkl: start / end position of annotation marks...
Definition: ww8scan.hxx:784
void RestoreAllPLCFx(const WW8PLCFxSaveAll &rSave)
Definition: ww8scan.cxx:5159
WW8_FC m_fcPlcfLst
Definition: ww8scan.hxx:1455
std::unique_ptr< WW8PLCFspecial > m_pMagicTables
Definition: ww8scan.hxx:1052
bool fCompatibilityOptions_Unknown2_19
Definition: ww8scan.hxx:1795
virtual void advance() override
Definition: ww8scan.cxx:3666
bool Find4Sprms(sal_uInt16 nId1, sal_uInt16 nId2, sal_uInt16 nId3, sal_uInt16 nId4, SprmResult &r1, SprmResult &r2, SprmResult &r3, SprmResult &r4) const
Definition: ww8scan.cxx:3799
WW8_FC m_fcPlcfTch
Definition: ww8scan.hxx:1474
sal_uInt8 * GetSprmsAndPos(WW8_FC &rStart, WW8_FC &rEnd, sal_Int32 &rLen)
Definition: ww8scan.cxx:3206
std::unique_ptr< WW8PLCFx_FLD > m_pFieldHdFtPLCF
Definition: ww8scan.hxx:1040
WW8PLCF_HdFt(SvStream *pSt, WW8Fib const &rFib, WW8Dop const &rDop)
Definition: ww8scan.cxx:7441
sal_uInt16 GetMax() const
Definition: ww8scan.hxx:1584
sal_Int32 nIMax
Number of annotation marks.
Definition: ww8scan.hxx:790
sal_uInt8 * GetLenAndIStdAndSprms(sal_Int32 &rLen) const
Definition: ww8scan.cxx:2951
sal_uInt32 GetCompatibilityOptions() const
Definition: ww8scan.cxx:7903
WW8PLCFx_FLD & operator=(const WW8PLCFx_FLD &)=delete
bool Get(WW8PLCFManResult *pResult) const
Definition: ww8scan.cxx:5476
unsigned int nLen
Definition: ww8scan.hxx:56
void SetSprms(const sal_uInt8 *pSprms_, sal_Int32 nLen_)
Definition: ww8scan.cxx:881
ManTypes m_nManType
Definition: ww8scan.hxx:939
virtual void GetSprms(WW8PLCFxDesc *p)
Definition: ww8scan.cxx:2997
sal_Int32 m_lcbStshf
Definition: ww8scan.hxx:1245
sal_Int32 m_lcbPlfLfo
Definition: ww8scan.hxx:1458
wwSprmParser maSprmParser
Definition: ww8scan.hxx:530
WW8PLCFx * pPLCFx
Definition: ww8scan.hxx:876
iterator for footnotes/endnotes and comments
Definition: ww8scan.hxx:690
void TruncToSortedRange()
Definition: ww8scan.cxx:2348
bool fCompatibilityOptions_Unknown1_23
Definition: ww8scan.hxx:1729
WW8PLCFx_Fc_FKP & operator=(const WW8PLCFx_Fc_FKP &)=delete
WW8_CP nStartPos
Definition: ww8scan.hxx:881
virtual void Restore(const WW8PLCFxSave1 &rSave)
Definition: ww8scan.cxx:5556
bool GetData(long nIdx, WW8_CP &rPos, void *&rpValue) const
Definition: ww8scan.cxx:2248
WW8_FC m_fcPlcfwkb
Definition: ww8scan.hxx:1429
sal_uInt16 nSprmSiz
Definition: ww8scan.hxx:666
bool fUseBackGroundInAllmodes
Definition: ww8scan.hxx:1811
bool fUsePrinterMetrics
Definition: ww8scan.hxx:1738
OUString read_uInt8_lenPrefixed_uInt8s_ToOUString(SvStream &rStrm, rtl_TextEncoding eEnc)
sal_uInt32 nPLCFxPos2
for PLCF_Cp_Fkp: PieceIter-Pos
Definition: ww8scan.hxx:203
WW8PLCFx_Cp_FKP & operator=(const WW8PLCFx_Cp_FKP &)=delete
bool bDirty
Definition: ww8scan.hxx:394
bool m_fEmptySpecial
Definition: ww8scan.hxx:1168
bool fIncludeFooter
Definition: ww8scan.hxx:1758
virtual WW8_CP Where() override
Definition: ww8scan.cxx:977
LanguageType m_lidFE
Definition: ww8scan.hxx:1193
void SeekPos(long nNewCp)
Definition: ww8scan.cxx:5135
const char aData[]
Definition: ww8scan.hxx:47
bool fPagSuppressTopSpacing
Definition: ww8scan.hxx:1642
std::unique_ptr< WW8PLCFpcd > m_pPiecePLCF
Definition: ww8scan.hxx:1061
WW8PLCFxDesc * m_pPcd
Definition: ww8scan.hxx:946
sal_Int32 nBookmarkId
Definition: ww8scan.hxx:753
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4671
WW8_CP nSCode
start of instructions code
Definition: ww8scan.hxx:190
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:1155
sal_uInt32 nStru
Definition: ww8scan.hxx:224
bool fCompatibilityOptions_Unknown2_13
Definition: ww8scan.hxx:1789
WW8_FC m_fcSttbFnm
Definition: ww8scan.hxx:1449
WW8Style & operator=(const WW8Style &)
WW8_FC m_fcPlcfbteChpx
Definition: ww8scan.hxx:1286
virtual void advance() override
Definition: ww8scan.cxx:3223
virtual WW8_CP Where() override
Definition: ww8scan.cxx:3904
std::unique_ptr< WW8PLCFpcd > OpenPieceTable(SvStream *pStr, const WW8Fib *pWwF)
Definition: ww8scan.cxx:1677
sal_uInt32 m_lcbCmds
Definition: ww8scan.hxx:1323
WW8PLCFxSave1 aS[WW8PLCFMan::MAN_PLCF_COUNT]
Definition: ww8scan.hxx:1017
bool fWriteReservation
Definition: ww8scan.hxx:1647
sal_Int32 m_lcbPlcfbteChpx
Definition: ww8scan.hxx:1287
bool mbDoingDrawTextBox
Definition: ww8scan.hxx:940
WW8PLCFxDesc m_aD[MAN_PLCF_COUNT]
Definition: ww8scan.hxx:945
bool IsMustRemainCache() const
Definition: ww8scan.hxx:574
WW8_CP nStartCp
for cp based iterator like PAP and CHP
Definition: ww8scan.hxx:205
bool fCompatibilityOptions_Unknown2_4
Definition: ww8scan.hxx:1780
SprmResult HasCharSprm(sal_uInt16 nId) const
Definition: ww8scan.cxx:5537
bool fCompatibilityOptions_Unknown2_15
Definition: ww8scan.hxx:1791
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:4676
WW8PLCFx_PCDAttrs & operator=(const WW8PLCFx_PCDAttrs &)=delete
WW8PLCFspecial * m_pTxbxBkd
Definition: ww8scan.hxx:948
void patchCJKVariant()
Definition: ww8scan.cxx:426
long Count() const
Definition: ww8scan.hxx:716
bool EndPosIsFieldEnd(WW8_CP &)
Definition: ww8scan.cxx:4043
WW8_FC m_fcPlcffldHdr
Definition: ww8scan.hxx:1301
virtual ~WW8PLCFx_Cp_FKP() override
Definition: ww8scan.cxx:3352
virtual long GetNoSprms(WW8_CP &rStart, WW8_CP &, sal_Int32 &rLen)
Definition: ww8scan.cxx:3006
WW8_FC m_fcPlcfphe
Definition: ww8scan.hxx:1268
sal_Int32 m_lcbPrDrvr
Definition: ww8scan.hxx:1332
std::stack< sal_uInt16 > * pIdStack
Definition: ww8scan.hxx:877
bool fSupressSpbfAfterPageBreak
Definition: ww8scan.hxx:1708
SprmResult findSprmData(sal_uInt16 nId, sal_uInt8 *pSprms, sal_Int32 nLen) const
Returns the offset to data of the first sprm of id nId, 0.
Definition: ww8scan.cxx:8425
long GetFilePos() const
Definition: ww8scan.hxx:540
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:4682
OUString GetBookmark(long nStart, long nEnd, sal_uInt16 &nIndex)
Definition: ww8scan.cxx:4439
bool m_fDot
Definition: ww8scan.hxx:1141
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:3713
bool fMWSmallCaps
Definition: ww8scan.hxx:1728
wwSprmParser maSprmParser
Definition: ww8scan.hxx:934
std::unique_ptr< WW8PLCFx_PCD > pPcd
Definition: ww8scan.hxx:632
sal_Unicode getNumDecimalSep() const
Definition: ww8scan.hxx:1537
bool fHideFcc
Definition: ww8scan.hxx:1822
bool copts_fOrigWordTableRules
Definition: ww8scan.hxx:1659
bool fCompatibilityOptions_Unknown2_28
Definition: ww8scan.hxx:1804
bool copts_fSwapBordersFacingPgs
Definition: ww8scan.hxx:1662
bool copts_fWrapTrailSpaces
Definition: ww8scan.hxx:1654
WW8_FC m_fcPlcfbkf
Definition: ww8scan.hxx:1316
sal_uInt16 GetCurrentId() const
Definition: ww8scan.hxx:282
WW8_FC m_fcPlcfandText
Definition: ww8scan.hxx:1257
WW8_FC m_fcPlcfglsy
Definition: ww8scan.hxx:1277
WW8_FC m_fcPlcfsed
Definition: ww8scan.hxx:1260
std::unique_ptr< WW8PLCFspecial > m_pMainTxbx
Definition: ww8scan.hxx:1048
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4329
sal_uInt16 m_ftcAsci
Definition: ww8scan.hxx:1554
const sal_uInt8 * pMemPos
Definition: ww8scan.hxx:852
bool bUseThaiLineBreakingRules
Definition: ww8scan.hxx:1828
ManMaskTypes
Definition: ww8scan.hxx:859
std::unique_ptr< WW8PLCFx_AtnBook > m_pAtnBook
Definition: ww8scan.hxx:1057
bool fHaveVersions
Definition: ww8scan.hxx:1761
sal_Int16 nfcFootnoteRef
Definition: ww8scan.hxx:1772
SprmInfo const * search(sal_uInt16 id) const
Definition: ww8scan.hxx:77
sal_Int32 dttmCreated
Definition: ww8scan.hxx:1670
bool fCompatibilityOptions_Unknown1_25
Definition: ww8scan.hxx:1731
sal_uInt16 grpfIhdt
Definition: ww8scan.hxx:1620
eBookStatus
Definition: ww8scan.hxx:742
WW8PLCFpcd_Iter * GetPLCFIter()
Definition: ww8scan.hxx:479
void AdvNoSprm(short nIdx, bool bStart)
Definition: ww8scan.cxx:5400
bool fDispFormFieldSel
Definition: ww8scan.hxx:1644
WW8_CP nCp2OrIdx
Definition: ww8scan.hxx:896
bool Get(WW8_CP &rStart, WW8_CP &rEnd, void *&rpValue) const
Definition: ww8scan.cxx:2577
sal_Int32 cLines
Definition: ww8scan.hxx:1688
sal_Int32 m_lcbPlcffldEdn
Definition: ww8scan.hxx:1410
std::unique_ptr< WW8PLCFx_SubDoc > m_pFootnotePLCF
Definition: ww8scan.hxx:1036
std::unique_ptr< sal_Int32[]> pPLCF_PosArray
Definition: ww8scan.hxx:341
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:5563
virtual sal_uInt16 GetIstd() const override
Definition: ww8scan.cxx:3236
sal_Int16 nId
sal_uInt8 m_envr
Definition: ww8scan.hxx:1165
bool fFacingPages
Definition: ww8scan.hxx:1608
void advance()
Definition: ww8scan.hxx:372
const void * GetData(sal_Int32 nInIdx) const
Definition: ww8scan.hxx:329
WW8_FC m_fcPlcfandRef
Definition: ww8scan.hxx:1254
bool fReverseFolio
Definition: ww8scan.hxx:1820
sal_Int32 cLinesFootnoteEdn
Definition: ww8scan.hxx:1693
WW8_FC m_fcPlcfsea
Definition: ww8scan.hxx:1292
WW8_FC m_fcPlcfendText
Definition: ww8scan.hxx:1405
sal_Int32 m_lcbPlcfLst
Definition: ww8scan.hxx:1456
long nOrigSprmsLen
Definition: ww8scan.hxx:879
bool fOrigWordTableRules
Definition: ww8scan.hxx:1714
sal_Int32 m_lcbPlcfandText
Definition: ww8scan.hxx:1258
void SetIdx(long nI)
Definition: ww8scan.hxx:233
WW8_FC m_fcPlcffldMom
Definition: ww8scan.hxx:1298
std::unique_ptr< WW8PLCFspecial > m_pHdFtTxbxBkd
Definition: ww8scan.hxx:1051
SprmResult(const sal_uInt8 *pInSprm, sal_Int32 nInRemainingData)
Definition: ww8scan.hxx:101
bool fPrintBodyBeforeHdr
Definition: ww8scan.hxx:1725
WW8_CP nLen
total length (to skip over text)
Definition: ww8scan.hxx:189
bool fRMPrint
Definition: ww8scan.hxx:1646
static const wwSprmSearcher * GetWW2SprmSearcher()
Definition: ww8scan.cxx:85
sal_uInt16 m_cfclcb
Definition: ww8scan.hxx:1233
WW8ScannerBase(const WW8ScannerBase &)=delete
std::unique_ptr< WW8_CP[]> pPLCF_PosArray
Definition: ww8scan.hxx:294
WW8_FC m_fcPlcfAtnbkf
Definition: ww8scan.hxx:1390
bool copts_fNoColumnBalance
Definition: ww8scan.hxx:1656
virtual ~WW8PLCFx_Book() override
Definition: ww8scan.cxx:4288
sal_uInt16 GetSprmId(const sal_uInt8 *pSp) const
Return the SPRM id at the beginning of this byte sequence.
Definition: ww8scan.cxx:8387
long GetLen() const
Definition: ww8scan.cxx:4387
sal_Int32 m_lcbFormFieldSttbf
Definition: ww8scan.hxx:1400
void SetDirty(bool bIn)
Definition: ww8scan.hxx:425
void Restore(const WW8PLCFxSave1 &rSave)
Definition: ww8scan.cxx:5621
bool m_fExtChar
Definition: ww8scan.hxx:1157
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:4553
virtual void Save(WW8PLCFxSave1 &rSave) const
Definition: ww8scan.cxx:5548
WW8PLCFx_PCDAttrs(const WW8PLCFx_PCDAttrs &)=delete
virtual void advance() override
Definition: ww8scan.cxx:3776
bool getIsEnd() const
Definition: ww8scan.cxx:4643
sal_Int32 dttmLastPrint
Definition: ww8scan.hxx:1672
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:3889
WW8PLCFxDesc * m_pFootnote
Definition: ww8scan.hxx:946
bool fCompatibilityOptions_Unknown2_22
Definition: ww8scan.hxx:1798
bool fRotateFontW6
Definition: ww8scan.hxx:1698
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:3144
const char aListBox[]
Definition: ww8scan.hxx:49
WW8PLCFx_FLD * GetField() const
Definition: ww8scan.cxx:5527
sal_uInt16 m_nKey
Definition: ww8scan.hxx:1164
WW8_FC m_fcPrEnvPort
Definition: ww8scan.hxx:1334
bool StartPosIsFieldStart()
Definition: ww8scan.cxx:4036
bool iGutterPos
Definition: ww8scan.hxx:1699
bool fConvMailMergeEsc
Definition: ww8scan.hxx:1712
void AdjustEnds(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:4780
WW8_FC m_fcPrEnvLand
Definition: ww8scan.hxx:1337
std::unique_ptr< sal_uInt8[]> m_pExtendedAtrds
Definition: ww8scan.hxx:1055
sal_Int32 m_lcbPlcfmcr
Definition: ww8scan.hxx:1326
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4570
sal_Int32 m_lcbPlcfphe
Definition: ww8scan.hxx:1269
WW8_CP nOrigEndPos
Definition: ww8scan.hxx:885
WW8_FC m_fcPlcfpgdEdn
Definition: ww8scan.hxx:1412
bool copts_fSupressTopSpacing
Definition: ww8scan.hxx:1658
sal_uInt32 nPLCFxPos
Definition: ww8scan.hxx:202
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:3881
bool fCompatibilityOptions_Unknown2_25
Definition: ww8scan.hxx:1801
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4542
bool fEmbedFactoids
Definition: ww8scan.hxx:1816
bool fCompatibilityOptions_Unknown2_24
Definition: ww8scan.hxx:1800
std::unique_ptr< WW8PLCFx_SubDoc > m_pEdnPLCF
Definition: ww8scan.hxx:1037
WW8PLCFspecial(const WW8PLCFspecial &)=delete
sal_uInt32 m_lcbPlcfBkfFactoid
0x436 smart-tag bookmark ends length.
Definition: ww8scan.hxx:1490
const WW8Fib * m_pWwFib
Definition: ww8scan.hxx:951
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:3152
sal_Int32 grfDocEvents
Definition: ww8scan.hxx:1767
sal_uInt32 GetIMax() const
Definition: ww8scan.cxx:1150
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:4067
sal_Int32 m_lcbPlcfwkb
Definition: ww8scan.hxx:1430
WW8PLCFpcd & rPLCF
Definition: ww8scan.hxx:358
sal_uInt32 m_lcbAtrdExtra
Definition: ww8scan.hxx:1479
sal_Int32 m_lcbPrEnvLand
Definition: ww8scan.hxx:1338
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:1166
bool fPMHMainDoc
Definition: ww8scan.hxx:1615
bool fAcetateShowInsDel
Definition: ww8scan.hxx:1825
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4020
sal_uInt8 SVBT32[4]
bool SeekPosExact(long nPos)
Definition: ww8scan.cxx:2212
long GetIdx() const
Definition: ww8scan.hxx:232
bool fCompatibilityOptions_Unknown2_31
Definition: ww8scan.hxx:1807
WW8_FC m_fcSttbfAtnbkmk
Definition: ww8scan.hxx:1363
sal_uInt16 iTextLineEnding
Definition: ww8scan.hxx:1821
std::unique_ptr< WW8PLCFx_Book > m_pBook
Definition: ww8scan.hxx:1056
bool fWordCompat
Definition: ww8scan.hxx:1814
const char a1Table[]
Definition: ww8scan.hxx:45
WW8PLCFpcd_Iter * pPieceIter
Definition: ww8scan.hxx:633
sal_uInt16 m_stiMaxWhenSaved
Definition: ww8scan.hxx:1550
sal_uInt16 wSpare
Definition: ww8scan.hxx:1666
bool IsSevenMinus(WordVersion eVer)
Definition: types.hxx:32
bool fNoLeading
Definition: ww8scan.hxx:1726
virtual void Restore(const WW8PLCFxSave1 &rSave) override
Definition: ww8scan.cxx:5585
sal_Int32 m_lcbPlcffldMom
Definition: ww8scan.hxx:1299
bool fMinFontSizePag
Definition: ww8scan.hxx:1760
WW8_FC m_fcPlcffactoid
0x4ba Plcffactoid offset.
Definition: ww8scan.hxx:1506
sal_Int32 cCh
Definition: ww8scan.hxx:1676
WW8_FC m_fcSttbfBkmkFactoid
0x42a smart-tag bookmark string table offset.
Definition: ww8scan.hxx:1484
WW8PLCFx_FLD(const WW8PLCFx_FLD &)=delete
WW8PLCFx(const WW8PLCFx &)=delete
sal_uInt16 sal_Unicode
bool fLinkStyles
Definition: ww8scan.hxx:1632
sal_Int32 m_lcbPlcfandRef
Definition: ww8scan.hxx:1255
sal_uInt16 GetSprmTailLen(sal_uInt16 nId, const sal_uInt8 *pSprm, sal_Int32 nRemLen) const
Get len of a sprms data area, ignoring the bytes of the sprm id and ignoring any len bytes...
Definition: ww8scan.cxx:8315
void TransferOpenSprms(std::stack< sal_uInt16 > &rStack)
Definition: ww8scan.cxx:5274
sal_Int32 m_pnChpFirst
Definition: ww8scan.hxx:1519
virtual void advance() override
Definition: ww8scan.cxx:973
WW8SprmIter(const sal_uInt8 *pSprms_, sal_Int32 nLen_, const wwSprmParser &rSprmParser)
Definition: ww8scan.cxx:874
void GetSprmStart(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5172
bool fRevMarking
Definition: ww8scan.hxx:1633
virtual WW8_FC Where()=0
WW8PLCFx_PCD(const WW8PLCFx_PCD &)=delete
std::unique_ptr< WW8PLCFx_PCDAttrs > pPCDAttrs
Definition: ww8scan.hxx:608
sal_Int32 Where() const
Definition: ww8scan.cxx:2590
WW8PLCFspecial * GetMagicTables() const
Definition: ww8scan.hxx:1008
long getHandle() const
Handle is the unique ID of an annotation mark.
Definition: ww8scan.cxx:4627
virtual sal_uInt32 GetIdx() const =0
sal_uInt16 GetId(const WW8PLCFxDesc *p) const
Definition: ww8scan.cxx:4885
sal_uInt32 m_lcbSttbfBkmkFactoid
0x42e smart-tag bookmark string table length.
Definition: ww8scan.hxx:1486
long GetIMax() const
Definition: ww8scan.hxx:761
std::unique_ptr< WW8PLCF > pRef
Definition: ww8scan.hxx:693
Handles the import of PlcfBkfFactoid and PlcfBklFactoid: start / end position of factoids.
Definition: ww8scan.hxx:814
WW8_CP CurrentPieceStartFc2Cp(WW8_FC nStartPos)
Definition: ww8scan.cxx:1260
sal_Int32 m_lcbAutosaveSource
Definition: ww8scan.hxx:1358
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
sal_Int32 m_lcbPlcffldHdrTxbx
Definition: ww8scan.hxx:1443
bool AreThereEndnotes() const
Definition: ww8scan.hxx:1077
virtual ~WW8PLCFx_AtnBook() override
Definition: ww8scan.cxx:4538
WW8_FC m_fcPlcftxbxText
Definition: ww8scan.hxx:1436
sal_uInt8 GetIdx() const
Definition: ww8scan.hxx:541
bool fOutlineDirtySave
Definition: ww8scan.hxx:1624
std::unique_ptr< WW8PLCFx_PCDAttrs > m_pPLCFx_PCDAttrs
Definition: ww8scan.hxx:1064
void advance()
Definition: ww8scan.hxx:251
bool fCompatibilityOptions_Unknown1_26
Definition: ww8scan.hxx:1732
sal_uInt8 SprmDataOfs(sal_uInt16 nId) const
Definition: ww8scan.cxx:8415
WW8_FC m_fcPlcffldTxbx
Definition: ww8scan.hxx:1438
WW8PLCFx_Cp_FKP * GetChpPLCF() const
Definition: ww8scan.hxx:994
WW8PLCFx_SubDoc(const WW8PLCFx_SubDoc &)=delete
bool fForcePageSizePag
Definition: ww8scan.hxx:1759
sal_Int16 dxaTab
Definition: ww8scan.hxx:1665
virtual void Save(WW8PLCFxSave1 &rSave) const override
Definition: ww8scan.cxx:5574
virtual long GetNoSprms(WW8_CP &rStart, WW8_CP &, sal_Int32 &rLen) override
Definition: ww8scan.cxx:1176
bool fSnapBorder
Definition: ww8scan.hxx:1756
static void CurrentPieceFc2Cp(WW8_CP &rStartPos, WW8_CP &rEndPos, const WW8ScannerBase *pSBase)
Definition: ww8scan.cxx:1249
void MapName(OUString &rName)
Definition: ww8scan.cxx:4494
WW8Fonts(const WW8Fonts &)=delete
ww::WordVersion meVersion
Definition: ww8scan.hxx:115
std::unique_ptr< WW8PLCFspecial > m_pMainTxbxBkd
Definition: ww8scan.hxx:1049
bool fFormNoFields
Definition: ww8scan.hxx:1631
long getHandle() const
Handle is the unique ID of a factoid mark.
Definition: ww8scan.cxx:4756
const WW8Fib & rFib
Definition: ww8scan.hxx:724
virtual ~WW8PLCFx()
Definition: ww8scan.hxx:407
void SetCompatibilityOptions(sal_uInt32 a32Bit)
Definition: ww8scan.cxx:7866
const char a0Table[]
Definition: ww8scan.hxx:46
WW8_FC m_fcPlcfdoaHdr
Definition: ww8scan.hxx:1373
WW8PLCFx_AtnBook(const WW8PLCFx_AtnBook &)=delete
bool copts_fMapPrintTextColor
Definition: ww8scan.hxx:1655
std::unordered_map< sal_uInt16, SprmInfo > Map
Definition: ww8scan.hxx:83
const HdFtFlags WW8_FOOTER_EVEN
Definition: ww8scan.hxx:1592
SprmInfo info
Definition: ww8scan.hxx:62
sal_Int32 m_lcbPlcfTch
Definition: ww8scan.hxx:1475
SprmResult HasSprm(sal_uInt16 nId) const
Definition: ww8scan.cxx:3782
virtual WW8_CP Where() override
Definition: ww8scan.cxx:3382
std::unique_ptr< WW8PLCFx_Cp_FKP > m_pPapPLCF
Definition: ww8scan.hxx:1034
sal_Int32 m_pnFbpChpFirst
Definition: ww8scan.hxx:1213
SvStream & m_rStream
Definition: ww8scan.hxx:1544
const char aCheckBox[]
Definition: ww8scan.hxx:48
This is what we use in the Parser (and Dumper)
Definition: ww8struc.hxx:221
std::unique_ptr< WW8_STD > Read1Style(sal_uInt16 &rSkip, OUString *pString)
Definition: ww8scan.cxx:6977
bool fCompatibilityOptions_Unknown1_29
Definition: ww8scan.hxx:1735
sal_uInt16 m_cswNew
Specifies the count of 16-bit values corresponding to fibRgCswNew that follow.
Definition: ww8scan.hxx:1235
sal_uInt8 mnDelta
Definition: ww8scan.hxx:116
sal_Int32 cChWS
Definition: ww8scan.hxx:1765
virtual void advance() override
Definition: ww8scan.cxx:3959
void SetIdx(sal_uInt8 nI)
Definition: ww8scan.cxx:2943
Iterator for fields.
Definition: ww8scan.hxx:720
WW8PLCFx_SEPX(const WW8PLCFx_SEPX &)=delete
unsigned int nVari
Definition: ww8scan.hxx:57
std::unique_ptr< WW8PLCFx_FLD > m_pFieldEdnPLCF
Definition: ww8scan.hxx:1044
const sal_uInt16 lLetterHeight
Definition: ww8scan.hxx:1865
sal_Int32 m_lcbPlcffndText
Definition: ww8scan.hxx:1251
WW8_FC m_fcPlcfmcr
Definition: ww8scan.hxx:1325
WW8PLCFMan(const WW8ScannerBase *pBase, ManTypes nType, long nStartCp, bool bDoingDrawTextBox=false)
Definition: ww8scan.cxx:4903
bool fExpShRtn
Definition: ww8scan.hxx:1719
wwSprmParser maSprmParser
Definition: ww8scan.hxx:661
sal_Int32 m_lcbPlcftxbxText
Definition: ww8scan.hxx:1437
WW8_FC nStartFc
Definition: ww8scan.hxx:393
ErrCode m_nFibError
Definition: ww8scan.hxx:1116
sal_uInt32 GetCompatibilityOptions2() const
Definition: ww8scan.cxx:7978
sal_Int32 nIdx
Definition: ww8scan.hxx:297
sal_Int16 cPg
Definition: ww8scan.hxx:1677
WW8_FC m_fcPlcffldAtn
Definition: ww8scan.hxx:1307
sal_uInt8 * Get(WW8_FC &rStart, WW8_FC &rEnd, sal_Int32 &rLen) const
Definition: ww8scan.cxx:2925
SprmResult HasParaSprm(sal_uInt16 nId) const
Definition: ww8scan.cxx:5532
WW8PLCF(SvStream &rSt, WW8_FC nFilePos, sal_Int32 nPLCF, int nStruct, WW8_CP nStartPos=-1)
Definition: ww8scan.cxx:2263
std::unique_ptr< WW8PLCF > pPLCF
Definition: ww8scan.hxx:663
sal_Int32 m_lcbPlcfHdrtxbxBkd
Definition: ww8scan.hxx:1465
std::unique_ptr< WW8PLCFx_FLD > m_pFieldAndPLCF
Definition: ww8scan.hxx:1045
sal_Int32 m_lcbPlcfspaMom
Definition: ww8scan.hxx:1382
bool fCompatibilityOptions_Unknown1_30
Definition: ww8scan.hxx:1736
std::vector< std::unique_ptr< sal_uInt8[]> > const & mrGrpprls
Definition: ww8scan.hxx:434
sal_Int32 m_lcbPlcfHdrtxbxText
Definition: ww8scan.hxx:1441
WW8_FC m_fcPlcfhdd
Definition: ww8scan.hxx:1282
Entry & operator=(const Entry &rEntry)
Definition: ww8scan.cxx:2856
sal_uInt16 m_nHash
Definition: ww8scan.hxx:1163
WW8DopTypography doptypography
Definition: ww8scan.hxx:1749
bool m_fGlsy
Definition: ww8scan.hxx:1142
const HdFtFlags WW8_HEADER_ODD
Definition: ww8scan.hxx:1591
sal_Int16 dywDispPag
Definition: ww8scan.hxx:1775
WW8PLCFxDesc * m_pPap
Definition: ww8scan.hxx:946
Definition: ww8scan.hxx:42
bool fCompatibilityOptions_Unknown1_21
Definition: ww8scan.hxx:1727
bool fAutoHyphen
Definition: ww8scan.hxx:1630
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:968
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:3390
WW8_CP nLCode
length
Definition: ww8scan.hxx:191
sal_Int32 m_nIMax
Number of factoid marks.
Definition: ww8scan.hxx:820
sal_uInt8 m_nVersion
Program-Version asked for by us: in Ctor we check if it matches the value of nFib.
Definition: ww8scan.hxx:1112
SprmResult HasSprm(sal_uInt16 nId, bool bFindFirst=true)
Definition: ww8scan.cxx:2957
virtual long GetNoSprms(WW8_CP &rStart, WW8_CP &rEnd, sal_Int32 &rLen) override
Definition: ww8scan.cxx:4716
sal_Int32 m_lcbPlcfbkl
Definition: ww8scan.hxx:1320
void ReadPLCF(SvStream &rSt, WW8_FC nFilePos, sal_uInt32 nPLCF)
Definition: ww8scan.cxx:2306
sal_uInt16 rncFootnote
Definition: ww8scan.hxx:1622
sal_Int32 m_lcbGrpStAtnOwners
Definition: ww8scan.hxx:1361
void SetIdx(sal_Int32 nI)
Definition: ww8scan.hxx:322
WW8_FC m_fcPlcfHdrtxbxBkd
Definition: ww8scan.hxx:1464
sal_Int32 m_lcbSttbAutoCaption
Definition: ww8scan.hxx:1427
bool fAcetateShowProps
Definition: ww8scan.hxx:1826
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:3368
ManTypes GetManType() const
Definition: ww8scan.hxx:1011
bool fLockRev
Definition: ww8scan.hxx:1648
sal_Int32 m_lcbSttbfmcr
Definition: ww8scan.hxx:1329
WW8_CP m_nLineEnd
Definition: ww8scan.hxx:937
bool copts_fExpShRtn
Definition: ww8scan.hxx:1663
SprmResult()
Definition: ww8scan.hxx:96
const char aObjectPool[]
Definition: ww8scan.hxx:44
bool SeekPos(WW8_FC nFc)
Definition: ww8scan.cxx:2893
WW8PLCFx_AtnBook * GetAtnBook() const
Definition: ww8scan.hxx:983
WW8_FC Where() const
Definition: ww8scan.hxx:544
sal_Int32 lKeyProtDoc
Definition: ww8scan.hxx:1694
std::vector< WW8_FFN > m_aFontA
Definition: ww8scan.hxx:1579
WW8Fib & m_rFib
Definition: ww8scan.hxx:1543
virtual WW8_CP Where() override
Definition: ww8scan.cxx:3718
WW8Fkp * pFkp
Definition: ww8scan.hxx:583
WW8_FC m_fcPlcfspl
Definition: ww8scan.hxx:1432
virtual void advance() override
Definition: ww8scan.cxx:4603
sal_uInt32 m_lcbStwUser
Definition: ww8scan.hxx:1445
sal_Int16 cPgFootnoteEdn
Definition: ww8scan.hxx:1691
WW8_FC m_fcSttbttmbd
Definition: ww8scan.hxx:1446
bool bResNest
instruction inserted into result
Definition: ww8scan.hxx:197
bool m_fHasPic
Definition: ww8scan.hxx:1144
WW8_CP m_nCpO
Definition: ww8scan.hxx:935
WW8_FC m_fcHplxsdr
Definition: ww8scan.hxx:1512
sal_uInt16 dxaHotZ
Definition: ww8scan.hxx:1667
std::unique_ptr< WW8PLCFspecial > m_pSubdocs
Definition: ww8scan.hxx:1053
WW8_FC WW8Cp2Fc(WW8_CP nCpPos, bool *pIsUnicode=nullptr, WW8_CP *pNextPieceCp=nullptr, bool *pTestFlag=nullptr) const
Definition: ww8scan.cxx:1565
sal_uInt16 nIsEnd
Definition: ww8scan.hxx:752
bool fEmbedFonts
Definition: ww8scan.hxx:1649
WW8PLCFxSaveAll()=default
#define SAL_MAX_INT32
wwSprmParser(const WW8Fib &rFib)
Definition: ww8scan.cxx:781
WW8PLCFx_SEPX * GetSepPLCF() const
Definition: ww8scan.hxx:998
bool fLabelDoc
Definition: ww8scan.hxx:1628
WW8_FC nStartFC
Definition: ww8scan.hxx:207
sal_Int16 nfcEdnRef
Definition: ww8scan.hxx:1773
sal_uInt16 m_nFib_actual
Definition: ww8scan.hxx:1527
virtual ~WW8PLCFx_Fc_FKP() override
Definition: ww8scan.cxx:3137
bool SeekPos(long nPos)
Definition: ww8scan.cxx:2544
sal_Int32 m_lcbPlcfdoaMom
Definition: ww8scan.hxx:1371
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:3708
sal_Int32 m_lcbDggInfo
Definition: ww8scan.hxx:1418
void FillEntry(Entry &rEntry, std::size_t nDataOffset, sal_uInt16 nLen)
Definition: ww8scan.cxx:2614
int i
OUString read_uInt8_PascalString(SvStream &rStrm, rtl_TextEncoding eEnc)
Definition: ww8scan.hxx:154
virtual long GetNoSprms(WW8_CP &rStart, WW8_CP &rEnd, sal_Int32 &rLen) override
Definition: ww8scan.cxx:4334
sal_Int32 m_fcIslandLim
Definition: ww8scan.hxx:1232
sal_uInt16 m_cQuickSaves
Definition: ww8scan.hxx:1145
WW8_CP m_ccpHdrTxbx
Definition: ww8scan.hxx:1210
WW8_FC m_fcPlcfBkfFactoid
0x432 smart-tag bookmark starts offset.
Definition: ww8scan.hxx:1488
ww::WordVersion GetFIBVersion() const
Definition: ww8scan.cxx:5738
bool copts_fConvMailMergeEsc
Definition: ww8scan.hxx:1657
std::unique_ptr< WW8_STD > Read1STDFixed(sal_uInt16 &rSkip)
Definition: ww8scan.cxx:6902
std::unique_ptr< WW8PLCFx_FLD > m_pFieldTxbxHdFtPLCF
Definition: ww8scan.hxx:1042
std::unique_ptr< WW8PLCFpcd_Iter > pPcdI
Definition: ww8scan.hxx:457
among others for fields, that is, the same number of attr as positions, if Ctor-Param bNoEnd = false ...
Definition: ww8scan.hxx:217
virtual void advance() override
Definition: ww8scan.cxx:4106
sal_Int32 m_lcbSttbfAtnbkmk
Definition: ww8scan.hxx:1364
WW8Dop()
Definition: ww8scan.cxx:7799
sal_uInt16 epc
Definition: ww8scan.hxx:1681
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4711
int MinSprmLen() const
The minimum acceptable sprm len possible for this type of parser.
Definition: ww8scan.hxx:145
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:4303
bool fCompatibilityOptions_Unknown1_27
Definition: ww8scan.hxx:1733
const sal_uInt8 * pCurrentParams
Definition: ww8scan.hxx:265
sal_uInt16 m_nVerBuiltInNamesWhenSaved
Definition: ww8scan.hxx:1552
virtual void advance() override
Definition: ww8scan.cxx:4732
SvStream * pDataStrm
Definition: ww8scan.hxx:580
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:5568
int nStru
Definition: ww8scan.hxx:298
WW8_FC m_fcSttbfRMark
Definition: ww8scan.hxx:1421
WW8_FC m_fcPlcfbkl
Definition: ww8scan.hxx:1319
bool copts_fShowBreaksInFrames
Definition: ww8scan.hxx:1661
sal_Int32 m_pnPapFirst
Definition: ww8scan.hxx:1520
SprmResult FindSprm(sal_uInt16 nId, bool bFindFirst, const sal_uInt8 *pNextByteMatch=nullptr)
Definition: ww8scan.cxx:923
bool m_fLoadOverridePage
Definition: ww8scan.hxx:1169
bool fCompatibilityOptions_Unknown2_26
Definition: ww8scan.hxx:1802
WW8_FC m_fcDop
Definition: ww8scan.hxx:1343
Word2CHPX ReadWord2Chpx(SvStream &rSt, std::size_t nOffset, sal_uInt8 nSize)
Definition: ww8par2.cxx:4128
void SetIdx(long nI)
Definition: ww8scan.hxx:367
sal_uInt16 m_csw
Definition: ww8scan.hxx:1183
wwSprmSearcher(SprmInfoRow const *rows, std::size_t size, bool bPatchCJK=false)
Definition: ww8scan.hxx:68
WW8_CP nAttrStart
Definition: ww8scan.hxx:634
sal_Int32 Where() const
Definition: ww8scan.hxx:238
SvStream * pStrm
Definition: ww8scan.hxx:662
WW8PLCFxDesc * m_pField
Definition: ww8scan.hxx:946
Definition: ww8scan.hxx:380
sal_Int32 m_lcbPlcftxbxBkd
Definition: ww8scan.hxx:1463
bool fWCFootnoteEdn
Definition: ww8scan.hxx:1687
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:3899
virtual WW8_FC Where() override
Definition: ww8scan.cxx:3194
WW8PLCFspecial & operator=(const WW8PLCFspecial &)=delete
WW8PLCFx_PCD * pPcd
Definition: ww8scan.hxx:433
bool fCompatibilityOptions_Unknown2_12
Definition: ww8scan.hxx:1788
SprmInfo GetSprmInfo(sal_uInt16 nId) const
Definition: ww8scan.cxx:796
WW8PLCFspecial * GetTxbx() const
Definition: ww8scan.hxx:1006
WW8_FC m_fcWss
Definition: ww8scan.hxx:1340
bool copts_fTransparentMetafiles
Definition: ww8scan.hxx:1660
std::deque< std::unique_ptr< WW8Fkp > > maFkpCache
Definition: ww8scan.hxx:598
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:964
virtual ~WW8PLCFx_FLD() override
Definition: ww8scan.cxx:4011
WW8_FC m_fcGrpStAtnOwners
Definition: ww8scan.hxx:1360
bool fCompatibilityOptions_Unknown2_5
Definition: ww8scan.hxx:1781
sal_uInt8 * GetExtendedAtrds() const
Definition: ww8scan.hxx:1010
WW8PLCFxDesc * m_pChp
Definition: ww8scan.hxx:946
void GetSprmEnd(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5207
WW8_CP nClipStart
Definition: ww8scan.hxx:459
const WW8_CP WW8_CP_MAX
Definition: ww8struc.hxx:156
float u
OUString read_uInt16_lenPrefixed_uInt16s_ToOUString(SvStream &rStrm)
WW8_CP GetStartPos() const
Definition: ww8scan.hxx:771
sal_uInt32 m_lcbPlcfBklFactoid
0x446 smart-tag bookmark ends length.
Definition: ww8scan.hxx:1497
WW8_FC m_fcSttbfCaption
Definition: ww8scan.hxx:1423
bool m_fReadOnlyRecommended
Definition: ww8scan.hxx:1148
std::unique_ptr< WW8PLCFpcd_Iter > m_pPieceIter
Definition: ww8scan.hxx:1062
sal_Int32 m_lcbClx
Definition: ww8scan.hxx:1351
std::unique_ptr< WW8PLCFspecial > m_pHdFtFdoa
Definition: ww8scan.hxx:1047
virtual void advance() override
Definition: ww8scan.cxx:1189
bool fCompatibilityOptions_Unknown2_29
Definition: ww8scan.hxx:1805
WW8PLCFx_AtnBook & operator=(const WW8PLCFx_AtnBook &)=delete
std::unique_ptr< WW8PLCF > pPLCF
Definition: ww8scan.hxx:581
WW8PLCFxDesc * m_pAtnBkm
Definition: ww8scan.hxx:946
std::unique_ptr< WW8PLCF > pText
Definition: ww8scan.hxx:694
WW8Style(const WW8Style &)
ePLCFT
Definition: ww8scan.hxx:380
sal_uInt8 * m_pExtendedAtrds
Definition: ww8scan.hxx:949
bool fReadOnlyRecommended
Definition: ww8scan.hxx:1640
bool m_fFuturesavedUndo
Definition: ww8scan.hxx:1170
std::unique_ptr< WW8PLCFx_SubDoc > m_pAndPLCF
Definition: ww8scan.hxx:1038
bool fCompatibilityOptions_Unknown1_31
Definition: ww8scan.hxx:1737
WW8PLCFxDesc * m_pAnd
Definition: ww8scan.hxx:946
const sal_uInt8 * pSprm
Definition: ww8scan.hxx:94
WW8_FC m_fcSttbfglsy
Definition: ww8scan.hxx:1272
sal_Int16 adt
Definition: ww8scan.hxx:1745
sal_uInt16 grfSuppression
Definition: ww8scan.hxx:1616
virtual ~WW8PLCFx_FactoidBook() override
Definition: ww8scan.cxx:4667
WW8PLCFpcd_Iter * GetIter() const
Definition: ww8scan.hxx:451
bool SeekPos(long nPos)
Definition: ww8scan.cxx:2177
bool fLiveRecover
Definition: ww8scan.hxx:1815
bool fFolioPrint
Definition: ww8scan.hxx:1819
sal_uInt16 m_cbSTDBaseInFile
Definition: ww8scan.hxx:1547
bool copts_fNoSpaceRaiseLower
Definition: ww8scan.hxx:1652
WW8PLCFx_FactoidBook(const WW8PLCFx_FactoidBook &)=delete
virtual bool SeekPos(WW8_CP nCpPos)=0
bool fCompatibilityOptions_Unknown2_30
Definition: ww8scan.hxx:1806
ManTypes
Definition: ww8scan.hxx:865
sal_Int32 m_lcbWss
Definition: ww8scan.hxx:1341
void Save(WW8PLCFxSave1 &rSave) const
Definition: ww8scan.cxx:5597
sal_uInt32 nStru
Definition: ww8scan.hxx:344
std::unique_ptr< WW8PLCFx_FactoidBook > m_pFactoidBook
Smart tag bookmarks.
Definition: ww8scan.hxx:1059
sal_Int32 m_lcbStshfOrig
Definition: ww8scan.hxx:1243
sal_uInt16 m_ftcOther
Definition: ww8scan.hxx:1558
WW8PLCFx_SubDoc & operator=(const WW8PLCFx_SubDoc &)=delete
sal_uInt32 GetPCDIdx() const
Definition: ww8scan.cxx:3363
bool fCompatibilityOptions_Unknown2_32
Definition: ww8scan.hxx:1808
sal_Int32 m_lcbPlcffndRef
Definition: ww8scan.hxx:1247
bool fOnlyWinPics
Definition: ww8scan.hxx:1627
sal_Int32 m_pnLvcFirst
Definition: ww8scan.hxx:1226
WW8_FC m_fcPlcfpad
Definition: ww8scan.hxx:1263
WW8_CP m_ccpTxbx
Definition: ww8scan.hxx:1209
bool fWrapTrailSpaces
Definition: ww8scan.hxx:1709
WW8_CP nCurrentCp
Definition: ww8scan.hxx:851
bool fSwapBordersFacingPgs
Definition: ww8scan.hxx:1717
bool fCompatibilityOptions_Unknown2_6
Definition: ww8scan.hxx:1782
bool fCompatibilityOptions_Unknown2_17
Definition: ww8scan.hxx:1793
sal_Int32 DistanceToData(sal_uInt16 nId) const
Get known len of a sprms head, the bytes of the sprm id + any bytes reserved to hold a variable lengt...
Definition: ww8scan.cxx:8420
bool fNoColumnBalance
Definition: ww8scan.hxx:1711
sal_uInt8 maRawData[512]
Definition: ww8scan.hxx:518
sal_Int32 cWordsFootnoteEnd
Definition: ww8scan.hxx:1689
bool AreThereFootnotes() const
Definition: ww8scan.hxx:1076
WW8_CP Where() const
Definition: ww8scan.cxx:5128
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4582
WW8_FC m_fcPms
Definition: ww8scan.hxx:1396
long GetIMax() const
Definition: ww8scan.hxx:234
WW8PLCFx_Book & operator=(const WW8PLCFx_Book &)=delete
WW8PLCFxDesc * m_pBkm
Definition: ww8scan.hxx:946
sal_Int32 m_pnFbpLvcFirst
Definition: ww8scan.hxx:1222
sal_uInt16 wScaleSaved
Specifies the zoom percentage that was in use when the document was saved.
Definition: ww8scan.hxx:1696
sal_Int32 m_lcbPlcfbkf
Definition: ww8scan.hxx:1317
WW8_FC m_fcAtrdExtra
Definition: ww8scan.hxx:1478
bool fCompatibilityOptions_Unknown2_11
Definition: ww8scan.hxx:1787
sal_Int32 m_lcbPlcfspaHdr
Definition: ww8scan.hxx:1387
bool fAcetateShowAtn
Definition: ww8scan.hxx:1824
WW8PLCFspecial * GetWkbPLCF() const
Definition: ww8scan.hxx:1009
long nIMax
number of elements
Definition: ww8scan.hxx:222
std::unique_ptr< sal_Int32[]> pPLCF_PosArray
pointer to Pos-array and to the whole structure
Definition: ww8scan.hxx:220
const OUString * GetName() const
Definition: ww8scan.cxx:4511
WW8PLCFx_FactoidBook & operator=(const WW8PLCFx_FactoidBook &)=delete
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:3909
WW8_CP nEndPos
Definition: ww8scan.hxx:882
virtual sal_uInt16 GetIstd() const
Definition: ww8scan.hxx:418
sal_Int32 nRemLen
Definition: ww8scan.hxx:269
sal_Int16 WW8_PN
Definition: ww8struc.hxx:151
void Reset(WW8_FC nPos)
Definition: ww8scan.cxx:2886
bool m_fWriteReservation
Definition: ww8scan.hxx:1149
bool m_fObfuscated
Definition: ww8scan.hxx:1160
bool fOnlyMacPics
Definition: ww8scan.hxx:1626
const wwSprmParser & GetSprmParser() const
Definition: ww8scan.hxx:571
sal_uInt16 m_chseTables
Definition: ww8scan.hxx:1177
WW8PLCFx_Cp_FKP * GetPapPLCF() const
Definition: ww8scan.hxx:996
WW8PLCFx(const WW8Fib &rFib, bool bSprm)
Definition: ww8scan.hxx:400
sal_Int32 m_lcbPlcfglsy
Definition: ww8scan.hxx:1278
sal_Int32 WW8_CP
Definition: ww8struc.hxx:153
eBookStatus GetStatus() const
Definition: ww8scan.cxx:4415
bool m_fWord2000Saved
Definition: ww8scan.hxx:1172
bool fLockAtn
Definition: ww8scan.hxx:1638
bool Get(WW8_CP &rStart, void *&rpValue) const
Definition: ww8scan.cxx:2243
sal_Int32 m_lcbPlcfhdd
Definition: ww8scan.hxx:1283
sal_Int32 m_lcbPlcfbtePapx
Definition: ww8scan.hxx:1290
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4292
sal_Int32 m_lcbSttbListNames
Definition: ww8scan.hxx:1472
sal_uInt8 HdFtFlags
Definition: ww8scan.hxx:1587
WW8PLCFx_SEPX & operator=(const WW8PLCFx_SEPX &)=delete
WW8_CP nLRes
length ( == 0, if no result )
Definition: ww8scan.hxx:193
static const wwSprmSearcher * GetWW6SprmSearcher(const WW8Fib &rFib)
Definition: ww8scan.cxx:236
bool fCompatibilityOptions_Unknown2_16
Definition: ww8scan.hxx:1792
WW8_FC m_fcFactoidData
0x44a smart tag data offset.
Definition: ww8scan.hxx:1499
Iterator for Piece Table Exceptions of Fkps works only with FCs, not with CPs ! ( Low-Level ) ...
Definition: ww8scan.hxx:494
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:3703
sal_uInt16 m_clw
Definition: ww8scan.hxx:1195
sal_uInt16 m_fStdStylenamesWritten
Definition: ww8scan.hxx:1548
WW8PLCF aPLCF
Definition: ww8scan.hxx:1847
sal_Int32 m_lcbPlcffldFootnote
Definition: ww8scan.hxx:1305
static const wwSprmSearcher * GetWW8SprmSearcher()
Definition: ww8scan.cxx:441
sal_Int32 nSprmsLen
Definition: ww8scan.hxx:897
bool fPagHidden
Definition: ww8scan.hxx:1636
bool fSaveFormData
Definition: ww8scan.hxx:1684
sal_Int32 GetRemLen() const
Definition: ww8scan.hxx:283
WW8_FC m_fcPlcffldFootnote
Definition: ww8scan.hxx:1304
WW8_FC m_fcPlcffldHdrTxbx
Definition: ww8scan.hxx:1442
void ResetAttrStartEnd()
Definition: ww8scan.cxx:3356
sal_Int16 hpsZoomFontPag
Definition: ww8scan.hxx:1774
WW8_FC m_fcSttbfffn
Definition: ww8scan.hxx:1295
long GetCpOfs() const
Definition: ww8scan.hxx:985
WW8_FC m_fcAutosaveSource
Definition: ww8scan.hxx:1357
sal_uInt16 m_nPLCF
Definition: ww8scan.hxx:938
WW8PLCFx & operator=(const WW8PLCFx &)=delete
WW8_CP m_ccpEdn
Definition: ww8scan.hxx:1208
WW8_FC m_fcPlcfspaHdr
Definition: ww8scan.hxx:1384
void GetPCDSprms(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:3241
sal_Int32 tmEdited
Definition: ww8scan.hxx:1674
bool copts_fNoTabForInd
Definition: ww8scan.hxx:1651
WW8_FC m_fcPlcfpgdFootnote
Definition: ww8scan.hxx:1353
bool checkRead(SvStream &rSt, void *pDest, sal_uInt32 nLength)
Definition: ww8scan.cxx:8472
void SetStatus(sal_uInt16 nIndex, eBookStatus eStat)
Definition: ww8scan.cxx:4407
WW8_FC m_fcFormFieldSttbf
Definition: ww8scan.hxx:1399
sal_Int32 cParas
Definition: ww8scan.hxx:1678
WW8PLCFx_Book(const WW8PLCFx_Book &)=delete
OUString read_uInt16_BeltAndBracesString(SvStream &rStrm)
Definition: ww8scan.cxx:2081
std::unique_ptr< WW8PLCFspecial > m_pMainFdoa
Definition: ww8scan.hxx:1046
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:4547
bool fNoSpaceRaiseLower
Definition: ww8scan.hxx:1707
WW8_FC m_fcPlcfAtnbkl
Definition: ww8scan.hxx:1393
virtual long GetNoSprms(WW8_CP &rStart, WW8_CP &rEnd, sal_Int32 &rLen) override
Definition: ww8scan.cxx:4587
std::unique_ptr< WW8PLCFspecial > m_pBook[2]
Start and end positions.
Definition: ww8scan.hxx:818
sal_Int16 nRelativeJustify
Definition: ww8scan.hxx:901
long GetHandle() const
Definition: ww8scan.cxx:4423
sal_uInt16 m_wMagicCreated
Definition: ww8scan.hxx:1186
sal_Int32 cWords
Definition: ww8scan.hxx:1675
static sal_Int32 TransformPieceAddress(long nfc, bool &bIsUnicodeAddress)
Definition: ww8scan.hxx:483
void SaveAllPLCFx(WW8PLCFxSaveAll &rSave) const
Definition: ww8scan.cxx:5146
long nIdx
marker where we currently are
Definition: ww8scan.hxx:223
sal_uInt16 nArrMax
Definition: ww8scan.hxx:665
WW8_DOGRID dogrid
Definition: ww8scan.hxx:1750
bool fRMView
Definition: ww8scan.hxx:1645
WW8_CP m_ccpMcr
Definition: ww8scan.hxx:1206
SvStream * pFKPStrm
Definition: ww8scan.hxx:579
WW8_FC m_fcPlcffndRef
Definition: ww8scan.hxx:1246
sal_Int32 GetIMax() const
Definition: ww8scan.hxx:323
const void * GetData(long nInIdx) const
Definition: ww8scan.hxx:243
bool fExactCWords
Definition: ww8scan.hxx:1635
WW8PLCFpcd & operator=(const WW8PLCFpcd &)=delete
sal_Int32 cParasFootnoteEdn
Definition: ww8scan.hxx:1692
std::unique_ptr< WW8PLCFx_FLD > m_pFieldFootnotePLCF
Definition: ww8scan.hxx:1043
sal_uInt16 m_ftcBi
Definition: ww8scan.hxx:1560
WW8_FC m_fcSttbfAssoc
Definition: ww8scan.hxx:1347
sal_uInt8 nOpt
WW-Flags ( e.g.: changed by user )
Definition: ww8scan.hxx:195
sal_uInt16 GetCount() const
Definition: ww8scan.hxx:1570
WW8_FC m_fcPlcfbtePapx
Definition: ww8scan.hxx:1289
WW8PLCFxDesc * m_pPcdA
Definition: ww8scan.hxx:946
long GetIdx() const
Definition: ww8scan.hxx:366
void WW8ReadSTTBF(bool bVer8, SvStream &rStrm, sal_uInt32 nStart, sal_Int32 nLen, sal_uInt16 nExtraLen, rtl_TextEncoding eCS, std::vector< OUString > &rArray, std::vector< ww::bytes > *pExtraArray=nullptr, std::vector< OUString > *pValueArray=nullptr)
reads array of strings (see MS documentation: String Table stored in File) returns NOT the original p...
Definition: ww8scan.cxx:4130
void ReduceByOffset()
Definition: ww8scan.cxx:4831
bool fDontUseHTMLAutoSpacing
Definition: ww8scan.hxx:1779
WW8_FC m_fcSttbListNames
Definition: ww8scan.hxx:1471
std::vector< eBookStatus > aStatus
Definition: ww8scan.hxx:750
sal_uInt16 m_ftcFE
Definition: ww8scan.hxx:1556
WW8_FC m_fcSttbAutoCaption
Definition: ww8scan.hxx:1425
std::unique_ptr< WW8PLCFspecial > pPLCF
Definition: ww8scan.hxx:723
sal_uInt16 lvl
Definition: ww8scan.hxx:1752
sal_Int32 m_cpnBtePap
Definition: ww8scan.hxx:1522
WW8_FC m_fcPlcffndText
Definition: ww8scan.hxx:1250
virtual ~WW8PLCFx_SEPX() override
Definition: ww8scan.cxx:3699
virtual void SetIdx2(sal_uInt32 nIdx)
Definition: ww8scan.cxx:3020
WW8PLCFspecial * m_pTxbx
Definition: ww8scan.hxx:948
void Write(SvStream &rStrm)
Definition: ww8scan.cxx:6360
WW8_FC m_fcClx
Definition: ww8scan.hxx:1350
sal_uInt16 GetIstd() const
Definition: ww8scan.hxx:554
sal_uInt16 m_wMagicRevised
Definition: ww8scan.hxx:1189
bool fNoTabForInd
Definition: ww8scan.hxx:1706
bool fSupressTopSpacing
Definition: ww8scan.hxx:1713
sal_Int32 m_cpnBteLvc
Definition: ww8scan.hxx:1228
std::unique_ptr< WW8PLCFspecial > m_pBook[2]
Start and end positions.
Definition: ww8scan.hxx:788
void advance()
Definition: ww8scan.cxx:888
sal_uInt16 nCurrentId
Definition: ww8scan.hxx:266
unsigned char sal_uInt8
sal_uInt16 nId
WW-id for fields.
Definition: ww8scan.hxx:194
Definition: ww8scan.hxx:380
sal_Int32 m_lcbPlcfspl
Definition: ww8scan.hxx:1434
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4561
bool IsSprm() const
Definition: ww8scan.hxx:408
sal_uInt16 GetColl() const
Definition: ww8scan.cxx:5516
long nIMax
Definition: ww8scan.hxx:343
sal_uInt16 wvkSaved
Definition: ww8scan.hxx:1695
virtual sal_uInt32 GetIdx2() const
Definition: ww8scan.cxx:3015
bool fIncludeHeader
Definition: ww8scan.hxx:1757
bool GetIsEnd() const
Definition: ww8scan.hxx:774
sal_uInt16 m_wMagicCreatedPrivate
Definition: ww8scan.hxx:1190
bool GetPara(long nIdx, WW8FieldDesc &rF)
Definition: ww8scan.cxx:4114
void WriteHeader(SvStream &rStrm)
Definition: ww8scan.cxx:6278
bool fCompatibilityOptions_Unknown1_24
Definition: ww8scan.hxx:1730
WW8PLCFx_SubDoc * GetAtn() const
Definition: ww8scan.hxx:981
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4031
WW8PLCFpcd_Iter * pPcdI
Definition: ww8scan.hxx:432
sal_Int32 m_lcbSttbfAssoc
Definition: ww8scan.hxx:1348
wwSprmParser knows how to take a sequence of bytes and split it up into sprms and their arguments ...
Definition: ww8scan.hxx:112
std::unique_ptr< WW8PLCFx_SEPX > m_pSepPLCF
Definition: ww8scan.hxx:1035
sal_uInt16 nSprmId
Definition: ww8scan.hxx:853
WW8_CP Where() const
Definition: ww8scan.cxx:2496
bool m_fEncrypted
Definition: ww8scan.hxx:1146
sal_Int32 m_lcbPlcfdoaHdr
Definition: ww8scan.hxx:1376
sal_Int32 m_lcbSttbfffn
Definition: ww8scan.hxx:1296
bool fAcetateShowMarkup
Definition: ww8scan.hxx:1823
WW8PLCFxDesc * m_pFactoidBkm
Definition: ww8scan.hxx:946
void SetClipStart(WW8_CP nIn)
Definition: ww8scan.hxx:480
sal_Int32 m_lcbPlcfsea
Definition: ww8scan.hxx:1293
WW8_FC m_fcPlcffldEdn
Definition: ww8scan.hxx:1409
const HdFtFlags WW8_HEADER_FIRST
Definition: ww8scan.hxx:1594
sal_uInt16 m_istdMaxFixedWhenSaved
Definition: ww8scan.hxx:1551
bool GetTextPos(sal_uInt8 grpfIhdt, sal_uInt8 nWhich, WW8_CP &rStart, WW8_CP &rLen)
Definition: ww8scan.cxx:7463
std::unique_ptr< WW8PLCFspecial > m_pHdFtTxbx
Definition: ww8scan.hxx:1050
sal_Int32 m_lcbSttbfRMark
Definition: ww8scan.hxx:1422
Document Properties.
Definition: ww8scan.hxx:1599
iterator for Piece Table Exceptions of Fkps works on CPs (high-level)
Definition: ww8scan.hxx:628
sal_Int32 nIMax
Definition: ww8scan.hxx:296
sal_Int32 nRemainingData
Definition: ww8scan.hxx:95
sal_Unicode m_nNumDecimalSep
Definition: ww8scan.hxx:1101
Definition: ww8scan.hxx:380
sal_Int32 WW8ReadString(SvStream &rStrm, OUString &rStr, WW8_CP nCurrentStartCp, long nTotalLen, rtl_TextEncoding eEnc) const
Definition: ww8scan.cxx:2088
sal_Int32 m_lcbPlcfendRef
Definition: ww8scan.hxx:1403
sal_uInt16 m_nFibBack
Definition: ww8scan.hxx:1162
const wwSprmSearcher * mpKnownSprms
Definition: ww8scan.hxx:117
std::unique_ptr< WW8PLCFx_Cp_FKP > m_pChpPLCF
Definition: ww8scan.hxx:1033
const sal_uInt8 * GetCurrentParams() const
Definition: ww8scan.hxx:281
bool m_fWhichTableStm
Definition: ww8scan.hxx:1147
bool fCompatibilityOptions_Unknown2_7
Definition: ww8scan.hxx:1783
sal_Int32 dttmRevised
Definition: ww8scan.hxx:1671
WW8_CP nSRes
start of result
Definition: ww8scan.hxx:192
WW8_FC m_fcPlcfdoaMom
Definition: ww8scan.hxx:1368
sal_uInt16 m_nProduct
Definition: ww8scan.hxx:1137
bool fCompatibilityOptions_Unknown1_13
Definition: ww8scan.hxx:1718
std::unique_ptr< WW8PLCFx_PCD > m_pPLCFx_PCD
Definition: ww8scan.hxx:1063
sal_uInt8 * pPLCF_Contents
Definition: ww8scan.hxx:295
FIB - the File Information Block.
Definition: ww8scan.hxx:1098
WW8PLCFx_PCD & operator=(const WW8PLCFx_PCD &)=delete
bool m_fFarEast
Definition: ww8scan.hxx:1158
void SetStartFc(WW8_FC nFc)
Definition: ww8scan.hxx:423
sal_uInt16 m_wMagicRevisedPrivate
Definition: ww8scan.hxx:1191
WW8_CP m_ccpText
Definition: ww8scan.hxx:1203
sal_uInt16 fpc
Definition: ww8scan.hxx:1617
sal_Int32 m_pnFbpPapFirst
Definition: ww8scan.hxx:1217
WW8_FC m_fcCmds
Definition: ww8scan.hxx:1322
sal_uInt32 m_lcbDop
Definition: ww8scan.hxx:1344
bool fCompatibilityOptions_Unknown2_10
Definition: ww8scan.hxx:1786
bool fCompatibilityOptions_Unknown2_20
Definition: ww8scan.hxx:1796
WW8_CP m_ccpFootnote
Definition: ww8scan.hxx:1204
long nPLCFxMemOfs
Definition: ww8scan.hxx:204
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:4297
WW8_CP m_ccpAtn
Definition: ww8scan.hxx:1207
bool bFirstSprm
Definition: ww8scan.hxx:899
sal_Int32 cChFootnoteEdn
Definition: ww8scan.hxx:1690
WW8_PN m_pnNext
Definition: ww8scan.hxx:1139
sal_uInt32 m_lcbSttbttmbd
Definition: ww8scan.hxx:1447
sal_Int32 m_lcbPlcfpgdEdn
Definition: ww8scan.hxx:1413
virtual ~WW8PLCFx_PCD() override
Definition: ww8scan.cxx:1146
sal_uInt32 m_lcbHplxsdr
Definition: ww8scan.hxx:1513
bool copts_fSupressSpbfAfterPgBrk
Definition: ww8scan.hxx:1653
bool fCompatibilityOptions_Unknown1_15
Definition: ww8scan.hxx:1720
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:982
sal_Int32 cDBCFootnoteEdn
Definition: ww8scan.hxx:1770
const WW8_FFN * GetFont(sal_uInt16 nNum) const
Definition: ww8scan.cxx:7419
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:959
sal_uInt8 nFlags
Definition: ww8scan.hxx:856
void UpdateMyMembers()
Definition: ww8scan.cxx:901
sal_uInt16 wSpare2
Definition: ww8scan.hxx:1669
bool m_fComplex
Definition: ww8scan.hxx:1143
const char aTextField[]
Definition: ww8scan.hxx:50
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4015
Iterator for Piece Table Exceptions of Sepx.
Definition: ww8scan.hxx:658
bool GetDirty() const
Definition: ww8scan.hxx:426
bool m_fWord97Saved
Definition: ww8scan.hxx:1171
void AdvSprm(short nIdx, bool bStart)
Definition: ww8scan.cxx:5289
WW8ScannerBase & operator=(const WW8ScannerBase &)=delete
std::vector< OUString > aBookNames
Definition: ww8scan.hxx:749
WW8_CP nOrigStartPos
Definition: ww8scan.hxx:884
static void GetNewNoSprms(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:4871
const sal_uInt16 lLetterWidth
Definition: ww8scan.hxx:1864
bool fAutoVersion
Definition: ww8scan.hxx:1762
void GetNewSprms(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:4861
bool fCompatibilityOptions_Unknown1_16
Definition: ww8scan.hxx:1721
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:1160
ErrCode nDopError
Definition: ww8scan.hxx:1603
sal_Int32 cDBC
Definition: ww8scan.hxx:1769
WW8_FC m_fcPlfLfo
Definition: ww8scan.hxx:1457
void SetCompatibilityOptions2(sal_uInt32 a32Bit)
Definition: ww8scan.cxx:7942
WW8PLCFxDesc * GetPap() const
Definition: ww8scan.hxx:1000
WW8_FC CurrentPieceStartCp2Fc(WW8_CP nCp)
Definition: ww8scan.cxx:1196
bool fCompatibilityOptions_Unknown2_14
Definition: ww8scan.hxx:1790
sal_Int32 GetIdx() const
Definition: ww8scan.hxx:321
bool fCompatibilityOptions_Unknown1_28
Definition: ww8scan.hxx:1734
std::unique_ptr< sal_uInt8[]> pSprms
Definition: ww8scan.hxx:664
long GetIMax() const
Definition: ww8scan.hxx:368
sal_uInt8 * pPLCF_Contents
pointer to content-array-part of Pos-array
Definition: ww8scan.hxx:221
bool getIsEnd() const
Definition: ww8scan.cxx:4772
SprmResult HasSprm(sal_uInt16 nId, bool bFindFirst=true)
Definition: ww8scan.cxx:3257
bool fDoNotEmbedSystemFont
Definition: ww8scan.hxx:1813
WW8_FC m_fcPlcfspaMom
Definition: ww8scan.hxx:1379
sal_uInt32 m_lcbFactoidData
0x44e smart tag data length.
Definition: ww8scan.hxx:1501
bool bIsSprm
Definition: ww8scan.hxx:392
bool fMirrorMargins
Definition: ww8scan.hxx:1639
bool fPagResults
Definition: ww8scan.hxx:1637
WW8_FC m_fcStshfOrig
Definition: ww8scan.hxx:1240
const sal_uInt8 * pSprms
Definition: ww8scan.hxx:264
bool bRealLineEnd
Definition: ww8scan.hxx:900
WW8_CP WW8Fc2Cp(WW8_FC nFcPos) const
Definition: ww8scan.cxx:1443
bool fShowBreaksInFrames
Definition: ww8scan.hxx:1716
std::unique_ptr< WW8PLCFx_FLD > m_pFieldTxbxPLCF
Definition: ww8scan.hxx:1041
void MakeFailedPLCF()
Definition: ww8scan.cxx:2340
bool fCompatibilityOptions_Unknown2_23
Definition: ww8scan.hxx:1799
bool fCompatibilityOptions_Unknown2_8
Definition: ww8scan.hxx:1784
WW8PLCFx_SubDoc * GetFootnote() const
Definition: ww8scan.hxx:980
void GetTextPosExact(short nIdx, WW8_CP &rStart, WW8_CP &rLen)
Definition: ww8scan.cxx:7502
WW8Fonts & operator=(const WW8Fonts &)=delete
static rtl_TextEncoding GetFIBCharset(sal_uInt16 chs, LanguageType nLidLocale)
Definition: ww8scan.cxx:6601
std::vector< Entry > maEntries
Definition: ww8scan.hxx:519
virtual ~WW8PLCFx_SubDoc() override
Definition: ww8scan.cxx:3875
sal_uInt16 nId
A ww8 sprm is hardcoded as 16bits.
Definition: ww8scan.hxx:61
const WW8ScannerBase & rSBase
Definition: ww8scan.hxx:631
std::vector< sal_uInt8 > ChpxToSprms(const Word2CHPX &rChpx)
Definition: ww8par2.cxx:4016
sal_Int32 m_lcbPlcffldTxbx
Definition: ww8scan.hxx:1439
bool fCompatibilityOptions_Unknown2_9
Definition: ww8scan.hxx:1785
bool fCompatibilityOptions_Unknown2_1
Definition: ww8scan.hxx:1777
sal_Int32 m_lcbPrEnvPort
Definition: ww8scan.hxx:1335
bool fHtmlDoc
Definition: ww8scan.hxx:1754
WW8_CP nAttrEnd
Definition: ww8scan.hxx:634
WW8_FC m_fcMac
Definition: ww8scan.hxx:1180
WW8Fib(SvStream &rStrm, sal_uInt8 nWantedVersion, sal_uInt32 nOffset=0)
Definition: ww8scan.cxx:5783
WW8_FC GetStartFc() const
Definition: ww8scan.hxx:424
OUString read_uInt16_PascalString(SvStream &rStrm)
Definition: ww8scan.hxx:159
sal_Int32 nCurrentSize
Definition: ww8scan.hxx:267
WW8_FC m_fcPlcfHdrtxbxText
Definition: ww8scan.hxx:1440
bool HasFkp() const
Definition: ww8scan.hxx:624
bool fTransparentMetafiles
Definition: ww8scan.hxx:1715
WordVersion
Definition: types.hxx:31
sal_Int16 nRevision
Definition: ww8scan.hxx:1673
std::vector< std::unique_ptr< sal_uInt8[]> > m_aPieceGrpprls
Definition: ww8scan.hxx:1065
sal_uInt16 m_nFib
Definition: ww8scan.hxx:1136
void advance()
Definition: ww8scan.hxx:327
void GetNoSprmEnd(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5254
WW8PLCFx_Fc_FKP(const WW8PLCFx_Fc_FKP &)=delete
void GetNoSprmStart(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5222
sal_uInt16 WhereIdx(bool *pbStart, WW8_CP *pPos=nullptr) const
Definition: ww8scan.cxx:5089
WW8_FC m_fcSttbfmcr
Definition: ww8scan.hxx:1328
sal_uInt16 m_cstd
Definition: ww8scan.hxx:1546
sal_Int32 WW8_FC
Definition: ww8struc.hxx:152
sal_Int32 m_lcbSttbfbkmk
Definition: ww8scan.hxx:1314
bool GetDoingDrawTextBox() const
Definition: ww8scan.hxx:1012
bool operator<(const Entry &rEntry) const
Definition: ww8scan.cxx:2599
WW8_FC m_fcSttbfbkmk
Definition: ww8scan.hxx:1313
std::unique_ptr< WW8PLCFx_FLD > m_pFieldPLCF
Definition: ww8scan.hxx:1039
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:3723
WW8SprmIter & operator=(const WW8SprmIter &)=delete
WW8PLCFspecial * m_pMagicTables
Definition: ww8scan.hxx:948
sal_uInt16 fUnknown3
Definition: ww8scan.hxx:1810
sal_Int32 m_lcbSttbfglsy
Definition: ww8scan.hxx:1273
WW8_FC m_fcPrDrvr
Definition: ww8scan.hxx:1331
const WW8_FC WW8_FC_MAX
Definition: ww8struc.hxx:155
bool fTruncDxaExpand
Definition: ww8scan.hxx:1724
WW8_CP GetClipStart() const
Definition: ww8scan.hxx:481
WW8PLCFspecial * m_pSubdocs
Definition: ww8scan.hxx:948
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4317
const WW8Fib & mrFib
Definition: ww8scan.hxx:391
const wwSprmParser & mrSprmParser
Definition: ww8scan.hxx:262
bool fSuppressTopSpacingMac5
Definition: ww8scan.hxx:1722
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4308
ww::WordVersion GetFIBVersion() const
Definition: ww8scan.cxx:2992
bool fPrintFormData
Definition: ww8scan.hxx:1683
WW8PLCFspecial * GetTxbxBkd() const
Definition: ww8scan.hxx:1007
const sal_uInt8 * pMemPos
Definition: ww8scan.hxx:878
sal_Int32 m_lcbSttbFnm
Definition: ww8scan.hxx:1450
WW8_CP nAttrEnd
Definition: ww8scan.hxx:209
WW8_CP m_ccpHdr
Definition: ww8scan.hxx:1205
WW8_FC m_fcPlcfendRef
Definition: ww8scan.hxx:1402
virtual void advance()=0
bool fFactoidAllDone
Definition: ww8scan.hxx:1818
sal_Int32 m_fcIslandFirst
Definition: ww8scan.hxx:1231
sal_Int32 GetPos(long nInIdx) const
Definition: ww8scan.hxx:248
WW8_FC m_fcDggInfo
Definition: ww8scan.hxx:1415
bool SeekPos(WW8_CP nPos)
Definition: ww8scan.cxx:2447
sal_uInt16 cConsecHypLim
Definition: ww8scan.hxx:1668
const WW8Fib & GetFIB() const
Definition: ww8scan.hxx:422
WW8PLCFpcd_Iter(const WW8PLCFpcd_Iter &)=delete
WW8_CP nAttrStart
Definition: ww8scan.hxx:208
bool m_fMac
Definition: ww8scan.hxx:1167
sal_Int32 m_lcbSttbfCaption
Definition: ww8scan.hxx:1424
bool fWidowControl
Definition: ww8scan.hxx:1610
WW8PLCFpcd_Iter & operator=(const WW8PLCFpcd_Iter &)=delete
WW8PLCFx_FactoidBook * GetFactoidBook() const
Definition: ww8scan.hxx:984
WW8PLCFx_Cp_FKP(const WW8PLCFx_Cp_FKP &)=delete
sal_Int32 m_lcbPlcfendText
Definition: ww8scan.hxx:1407
sal_uInt16 m_wIdent
Definition: ww8scan.hxx:1122
sal_Int32 m_lcbPlcfpgdFootnote
Definition: ww8scan.hxx:1354
sal_Int32 m_lcbPlcfpad
Definition: ww8scan.hxx:1264
sal_Int32 m_cpnBteChp
Definition: ww8scan.hxx:1521
sal_Int32 m_lcbPlcffldHdr
Definition: ww8scan.hxx:1302
WW8PLCFx_Book * GetBook() const
Definition: ww8scan.hxx:982
sal_Int32 GetSprmSize(sal_uInt16 nId, const sal_uInt8 *pSprm, sal_Int32 nRemLen) const
Definition: ww8scan.cxx:8410
sal_uInt16 nFootnote
Definition: ww8scan.hxx:1623
bool Get(WW8_CP &rStart, WW8_CP &rEnd, void *&rpValue) const
Definition: ww8scan.cxx:2483
WW8_FC m_fcStwUser
Definition: ww8scan.hxx:1444
bool fShadeFormData
Definition: ww8scan.hxx:1685
eExtSprm
Definition: ww8scan.hxx:383
sal_Int32 m_lcbPlcfAtnbkl
Definition: ww8scan.hxx:1394
std::unique_ptr< WW8PLCFspecial > pBook[2]
Definition: ww8scan.hxx:748
short nIdxOffset
Definition: ww8scan.hxx:1848
const HdFtFlags WW8_FOOTER_ODD
Definition: ww8scan.hxx:1593
const sal_uInt8 * GetSprms() const
Definition: ww8scan.hxx:279
sal_uInt32 m_lcbPlcffactoid
0x4be Plcffactoid offset.
Definition: ww8scan.hxx:1508
sal_Int32 m_lcbPlcfAtnbkf
Definition: ww8scan.hxx:1391
sal_uInt16 zkSaved
Definition: ww8scan.hxx:1697
WW8_FC m_fcPlcfBklFactoid
0x442 smart-tag bookmark ends offset.
Definition: ww8scan.hxx:1495
bool fCompatibilityOptions_Unknown2_21
Definition: ww8scan.hxx:1797
const char aMSMacroCmds[]
Definition: ww8scan.hxx:51
bool fProtEnabled
Definition: ww8scan.hxx:1643
WW8Fkp(const WW8Fib &rFib, SvStream *pFKPStrm, SvStream *pDataStrm, long _nFilePos, long nItemSiz, ePLCFT ePl, WW8_FC nStartFc)
Definition: ww8scan.cxx:2633
bool fCompatibilityOptions_Unknown2_27
Definition: ww8scan.hxx:1803
sal_Int32 cChWSFootnoteEdn
Definition: ww8scan.hxx:1766
OUString read_uInt8_BeltAndBracesString(SvStream &rStrm, rtl_TextEncoding eEnc)
Definition: ww8scan.cxx:2074
void UpdateIndex(sal_uInt8 grpfIhdt)
Definition: ww8scan.cxx:7522
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4026
void Write(SvStream &rStrm, WW8Fib &rFib) const
Definition: ww8scan.cxx:8020
WW8_FC m_cbMac
Definition: ww8scan.hxx:1200
LanguageType m_lid
Definition: ww8scan.hxx:1138
WW8PLCFx_SubDoc * GetEdn() const
Definition: ww8scan.hxx:979
WW8PLCFxDesc * m_pEdn
Definition: ww8scan.hxx:946
const void * GetData() const
Definition: ww8scan.hxx:709
virtual WW8_CP Where() override
Definition: ww8scan.cxx:1171
WW8_FC m_fcPlcffldMcr
Definition: ww8scan.hxx:1310
const HdFtFlags WW8_HEADER_EVEN
Definition: ww8scan.hxx:1590
bool fCompatibilityOptions_Unknown2_2
Definition: ww8scan.hxx:1778
bool fMapPrintTextColor
Definition: ww8scan.hxx:1710
virtual void SetIdx(sal_uInt32 nIdx)=0
bool fFactoidXML
Definition: ww8scan.hxx:1817
typedef void(CALLTYPE *GetFuncDataPtr)(sal_uInt16 &nNo
bool GetBaseCp(ManTypes nType, WW8_CP *cp) const
Definition: ww8scan.cxx:5675