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