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