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