LibreOffice Module sw (master) 1
ww8scan.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#ifndef INCLUDED_SW_SOURCE_FILTER_WW8_WW8SCAN_HXX
21#define INCLUDED_SW_SOURCE_FILTER_WW8_WW8SCAN_HXX
22
23#include <cassert>
24#include <cstddef>
25#include <deque>
26#include <memory>
27#include <optional>
28#include <stack>
29#include <unordered_map>
30#include <vector>
31
32#include <osl/endian.h>
33#include <tools/solar.h>
34#include <tools/stream.hxx>
35#include <rtl/ustring.hxx>
36
37#include "ww8struc.hxx"
38#include "types.hxx"
39
40class SvStream;
41
42//Commonly used string literals for stream and storage names in word docs
43namespace SL
44{
45 inline constexpr OUStringLiteral aObjectPool = u"ObjectPool";
46 inline constexpr OUStringLiteral a1Table = u"1Table";
47 inline constexpr OUStringLiteral a0Table = u"0Table";
48 inline constexpr OUStringLiteral aData = u"Data";
49 inline constexpr OUStringLiteral aCheckBox = u"CheckBox";
50 inline constexpr OUStringLiteral aListBox = u"ListBox";
51 inline constexpr OUStringLiteral aTextField = u"TextField";
52 inline constexpr OUStringLiteral aMSMacroCmds = u"MSMacroCmds";
53}
54
56{
57 unsigned int nLen : 6;
58 unsigned int nVari : 2;
59};
60
62 sal_uInt16 nId;
64};
65
67public:
68 //see Read_AmbiguousSPRM for the bPatchCJK oddity
69 wwSprmSearcher(SprmInfoRow const * rows, std::size_t size, bool bPatchCJK = false) {
70 for (std::size_t i = 0; i != size; ++i) {
71 bool ins = map_.emplace(rows[i].nId, rows[i].info).second;
72 assert(ins); (void) ins;
73 }
74 if (bPatchCJK)
76 }
77
78 SprmInfo const * search(sal_uInt16 id) const {
79 Map::const_iterator i(map_.find(id));
80 return i == map_.end() ? nullptr : &i->second;
81 }
82
83private:
84 typedef std::unordered_map<sal_uInt16, SprmInfo> Map;
85
87
88 void patchCJKVariant();
89};
90
91class WW8Fib;
92
94{
96 sal_Int32 nRemainingData;
98 : pSprm(nullptr)
100 {
101 }
102 SprmResult(const sal_uInt8* pInSprm, sal_Int32 nInRemainingData)
103 : pSprm(pInSprm)
104 , nRemainingData(nInRemainingData)
105 {
106 }
107};
108
114{
115private:
119 static const wwSprmSearcher* GetWW8SprmSearcher();
120 static const wwSprmSearcher* GetWW6SprmSearcher(const WW8Fib& rFib);
121 static const wwSprmSearcher* GetWW2SprmSearcher();
122
123 SprmInfo GetSprmInfo(sal_uInt16 nId) const;
124
125 sal_uInt8 SprmDataOfs(sal_uInt16 nId) const;
126
127public:
128 enum SprmType {L_FIX=0, L_VAR=1, L_VAR2=2};
129
130 //7- ids are very different to 8+ ones
131 explicit wwSprmParser(const WW8Fib& rFib);
133 sal_uInt16 GetSprmId(const sal_uInt8* pSp) const;
134
135 sal_Int32 GetSprmSize(sal_uInt16 nId, const sal_uInt8* pSprm, sal_Int32 nRemLen) const;
136
139 sal_Int32 DistanceToData(sal_uInt16 nId) const;
140
143 sal_uInt16 GetSprmTailLen(sal_uInt16 nId, const sal_uInt8* pSprm, sal_Int32 nRemLen) const;
144
146 int MinSprmLen() const { return (IsSevenMinus(meVersion)) ? 2 : 3; }
147
149 // if not found. nLen must be the <= length of pSprms
150 SprmResult findSprmData(sal_uInt16 nId, sal_uInt8* pSprms, sal_Int32 nLen) const;
151
153};
154
155//Read a Pascal-style, i.e. single byte string length followed
156//by string contents
157inline OUString read_uInt8_PascalString(SvStream& rStrm, rtl_TextEncoding eEnc)
158{
160}
161
162inline OUString read_uInt16_PascalString(SvStream& rStrm)
163{
165}
166
167//Belt and Braces strings, i.e. Pascal-style strings followed by
168//null termination, Spolsky calls them "fucked strings" FWIW
169//http://www.joelonsoftware.com/articles/fog0000000319.html
170OUString read_uInt8_BeltAndBracesString(SvStream& rStrm, rtl_TextEncoding eEnc);
172
173//--Line above which the code has meaningful comments
174
175class WW8ScannerBase;
176class WW8PLCFspecial;
177struct WW8PLCFxDesc;
178class WW8PLCFx_PCD;
179
186void WW8ReadSTTBF(bool bVer8, SvStream& rStrm, sal_uInt32 nStart, sal_Int32 nLen,
187 sal_uInt16 nExtraLen, rtl_TextEncoding eCS, std::vector<OUString> &rArray,
188 std::vector<ww::bytes>* pExtraArray = nullptr, std::vector<OUString>* pValueArray = nullptr);
189
191{
197 sal_uInt16 nId;
199 bool bCodeNest:1;
200 bool bResNest:1;
201};
202
204{
205 sal_uInt32 nPLCFxPos;
206 sal_uInt32 nPLCFxPos2;
214};
215
220class WW8PLCFspecial // iterator for PLCFs
221{
222private:
223 std::unique_ptr<sal_Int32[]> m_pPLCF_PosArray;
227 sal_uInt32 m_nStru;
228
231
232public:
233 WW8PLCFspecial(SvStream* pSt, sal_uInt32 nFilePos, sal_uInt32 nPLCF,
234 sal_uInt32 nStruct);
235 tools::Long GetIdx() const { return m_nIdx; }
236 void SetIdx( tools::Long nI ) { m_nIdx = nI; }
237 tools::Long GetIMax() const { return m_nIMax; }
238 bool SeekPos(tools::Long nPos); // walks over FC- or CP-value
239 // resp. next biggest value
240 bool SeekPosExact(tools::Long nPos);
241 sal_Int32 Where() const
242 { return ( m_nIdx >= m_nIMax ) ? SAL_MAX_INT32 : m_pPLCF_PosArray[m_nIdx]; }
243 bool Get(WW8_CP& rStart, void*& rpValue) const;
244 bool GetData(tools::Long nIdx, WW8_CP& rPos, void*& rpValue) const;
245
246 const void* GetData( tools::Long nInIdx ) const
247 {
248 return ( nInIdx >= m_nIMax ) ? nullptr
249 : static_cast<const void*>(&m_pPLCF_Contents[nInIdx * m_nStru]);
250 }
251 sal_Int32 GetPos( tools::Long nInIdx ) const
252 { return ( nInIdx >= m_nIMax ) ? SAL_MAX_INT32 : m_pPLCF_PosArray[nInIdx]; }
253
254 void advance()
255 {
256 if (m_nIdx <= m_nIMax)
257 ++m_nIdx;
258 }
259};
260
263{
264private:
266 // these members will be updated
267 const sal_uInt8* m_pSprms; // remaining part of the SPRMs ( == start of current SPRM)
268 const sal_uInt8* m_pCurrentParams; // start of current SPRM's parameters
269 sal_uInt16 m_nCurrentId;
270 sal_Int32 m_nCurrentSize;
271
272 sal_Int32 m_nRemLen; // length of remaining SPRMs (including current SPRM)
273
274 void UpdateMyMembers();
275
276public:
277 explicit WW8SprmIter(const sal_uInt8* pSprms_, sal_Int32 nLen_,
278 const wwSprmParser &rSprmParser);
279 void SetSprms(const sal_uInt8* pSprms_, sal_Int32 nLen_);
280 SprmResult FindSprm(sal_uInt16 nId, bool bFindFirst, const sal_uInt8* pNextByteMatch = nullptr);
281 void advance();
282 const sal_uInt8* GetSprms() const
283 { return ( m_pSprms && (0 < m_nRemLen) ) ? m_pSprms : nullptr; }
284 const sal_uInt8* GetCurrentParams() const { return m_pCurrentParams; }
285 sal_uInt16 GetCurrentId() const { return m_nCurrentId; }
286 sal_Int32 GetRemLen() const { return m_nRemLen; }
287
288private:
289 WW8SprmIter(const WW8SprmIter&) = delete;
291};
292
293/* among others for FKPs to normal attr., i.e. one less attr than positions */
294class WW8PLCF // Iterator for PLCFs
295{
296private:
297 std::unique_ptr<WW8_CP[]> m_pPLCF_PosArray; // pointer to Pos-array and the whole structure
298 sal_uInt8* m_pPLCF_Contents; // pointer to content-array-part of Pos-array
299 sal_Int32 m_nIMax; // number of elements
300 sal_Int32 m_nIdx;
302
303 void ReadPLCF(SvStream& rSt, WW8_FC nFilePos, sal_uInt32 nPLCF);
304
305 /*
306 If a PLC is missing in the doc and the FKPs stand alone,
307 we create a PLC with this:
308 */
309 void GeneratePLCF(SvStream& rSt, sal_Int32 nPN, sal_Int32 ncpN);
310
311 void MakeFailedPLCF();
312
313 void TruncToSortedRange();
314public:
315 WW8PLCF(SvStream& rSt, WW8_FC nFilePos, sal_Int32 nPLCF, int nStruct,
316 WW8_CP nStartPos = -1);
317
318 /*
319 the following ctor generates a PLC from nPN and ncpN, if necessary
320 */
321 WW8PLCF(SvStream& rSt, WW8_FC nFilePos, sal_Int32 nPLCF, int nStruct,
322 WW8_CP nStartPos, sal_Int32 nPN, sal_Int32 ncpN);
323
324 sal_Int32 GetIdx() const { return m_nIdx; }
325 void SetIdx( sal_Int32 nI ) { m_nIdx = nI; }
326 sal_Int32 GetIMax() const { return m_nIMax; }
327 bool SeekPos(WW8_CP nPos);
328 WW8_CP Where() const;
329 bool Get(WW8_CP& rStart, WW8_CP& rEnd, void*& rpValue) const;
330 void advance() { if( m_nIdx < m_nIMax ) ++m_nIdx; }
331
332 const void* GetData( sal_Int32 nInIdx ) const
333 {
334 return ( nInIdx >= m_nIMax ) ? nullptr :
335 static_cast<const void*>(&m_pPLCF_Contents[nInIdx * m_nStru]);
336 }
337};
338
339/* for Piece Table (.i.e. FastSave Table) */
341{
342 friend class WW8PLCFpcd_Iter;
343
344 std::unique_ptr<WW8_CP[]> m_pPLCF_PosArray; // pointer to Pos-array and the whole structure
345 sal_uInt8* m_pPLCF_Contents; // pointer to content-array-part of Pos-array
346 sal_Int32 m_nIMax;
347 sal_uInt32 m_nStru;
348
349 WW8PLCFpcd(const WW8PLCFpcd&) = delete;
350 WW8PLCFpcd& operator=(const WW8PLCFpcd&) = delete;
351
352 void TruncToSortedRange();
353
354public:
355 WW8PLCFpcd(SvStream* pSt, sal_uInt32 nFilePos, sal_uInt32 nPLCF,
356 sal_uInt32 nStruct);
357};
358
359/* multiple WW8PLCFpcd_Iter may point to the same WW8PLCFpcd !!! */
361{
362private:
365
368
369public:
370 WW8PLCFpcd_Iter( WW8PLCFpcd& rPLCFpcd, tools::Long nStartPos = -1 );
371 tools::Long GetIdx() const { return m_nIdx; }
372 void SetIdx( tools::Long nI ) { m_nIdx = nI; }
373 tools::Long GetIMax() const { return m_rPLCF.m_nIMax; }
374 bool SeekPos(tools::Long nPos);
375 sal_Int32 Where() const;
376 bool Get(WW8_CP& rStart, WW8_CP& rEnd, void*& rpValue) const;
377 void advance()
378 {
379 if( m_nIdx < m_rPLCF.m_nIMax )
380 ++m_nIdx;
381 }
382};
383
384// PLCF-type:
385enum ePLCFT{ CHP=0, PAP, SEP, /*HED, FNR, ENR,*/ PLCF_END };
386
387//It's hardcoded that eFTN be the first one: a very poor hack, needs to be fixed
388enum eExtSprm { eFTN = 256, eEDN = 257, eFLD = 258, eBKN = 259, eAND = 260, eATNBKN = 261, eFACTOIDBKN = 262 };
389
390/*
391 pure virtual:
392*/
393class WW8PLCFx // virtual iterator for Piece Table Exceptions
394{
395private:
396 const WW8Fib& mrFib;
397 bool m_bIsSprm; // PLCF of Sprms or other stuff ( Footnote, ... )
400
401 WW8PLCFx(const WW8PLCFx&) = delete;
402 WW8PLCFx& operator=(const WW8PLCFx&) = delete;
403
404public:
405 WW8PLCFx(const WW8Fib& rFib, bool bSprm)
406 : mrFib(rFib)
407 , m_bIsSprm(bSprm)
408 , m_nStartFc(-1)
409 , m_bDirty(false)
410 {
411 }
412 virtual ~WW8PLCFx() {}
413 bool IsSprm() const { return m_bIsSprm; }
414 virtual sal_uInt32 GetIdx() const = 0;
415 virtual void SetIdx(sal_uInt32 nIdx) = 0;
416 virtual sal_uInt32 GetIdx2() const;
417 virtual void SetIdx2(sal_uInt32 nIdx);
418 virtual bool SeekPos(WW8_CP nCpPos) = 0;
419 virtual WW8_FC Where() = 0;
420 virtual void GetSprms( WW8PLCFxDesc* p );
421 virtual tools::Long GetNoSprms( WW8_CP& rStart, WW8_CP&, sal_Int32& rLen );
422 virtual void advance() = 0;
423 virtual sal_uInt16 GetIstd() const { return 0xffff; }
424 virtual void Save( WW8PLCFxSave1& rSave ) const;
425 virtual void Restore( const WW8PLCFxSave1& rSave );
427 const WW8Fib& GetFIB() const { return mrFib; }
428 void SetStartFc( WW8_FC nFc ) { m_nStartFc = nFc; }
429 WW8_FC GetStartFc() const { return m_nStartFc; }
430 void SetDirty(bool bIn) {m_bDirty=bIn;}
431 bool GetDirty() const {return m_bDirty;}
432};
433
435{
436private:
439 std::vector<std::unique_ptr<sal_uInt8[]>> const & mrGrpprls; // attribute of Piece-table
440 SVBT32 m_aShortSprm; // mini storage: can contain ONE sprm with
441 // 1 byte param
442
445
446public:
447 WW8PLCFx_PCDAttrs(const WW8Fib& rFib, WW8PLCFx_PCD* pPLCFx_PCD,
448 const WW8ScannerBase* pBase );
449 virtual sal_uInt32 GetIdx() const override;
450 virtual void SetIdx(sal_uInt32 nI) override;
451 virtual bool SeekPos(WW8_CP nCpPos) override;
452 virtual WW8_CP Where() override;
453 virtual void GetSprms( WW8PLCFxDesc* p ) override;
454 virtual void advance() override;
455
456 WW8PLCFpcd_Iter* GetIter() const { return m_pPcdI; }
457};
458
459class WW8PLCFx_PCD : public WW8PLCFx // iterator for Piece table
460{
461private:
462 std::unique_ptr<WW8PLCFpcd_Iter> m_pPcdI;
465
466 WW8PLCFx_PCD(const WW8PLCFx_PCD&) = delete;
468
469public:
470 WW8PLCFx_PCD(const WW8Fib& rFib, WW8PLCFpcd* pPLCFpcd,
471 WW8_CP nStartCp, bool bVer67P);
472 virtual ~WW8PLCFx_PCD() override;
473 sal_uInt32 GetIMax() const;
474 virtual sal_uInt32 GetIdx() const override;
475 virtual void SetIdx(sal_uInt32 nI) override;
476 virtual bool SeekPos(WW8_CP nCpPos) override;
477 virtual WW8_CP Where() override;
478 virtual tools::Long GetNoSprms( WW8_CP& rStart, WW8_CP&, sal_Int32& rLen ) override;
479 virtual void advance() override;
482 static void CurrentPieceFc2Cp(WW8_CP& rStartPos, WW8_CP& rEndPos,
483 const WW8ScannerBase *pSBase);
485 void SetClipStart(WW8_CP nIn) { m_nClipStart = nIn; }
486 WW8_CP GetClipStart() const { return m_nClipStart; }
487
488 static sal_Int32 TransformPieceAddress(tools::Long nfc, bool& bIsUnicodeAddress)
489 {
490 bIsUnicodeAddress = 0 == (0x40000000 & nfc);
491 return bIsUnicodeAddress ? nfc : (nfc & 0x3fffFFFF) / 2;
492 }
493};
494
500{
501public:
502 class WW8Fkp // Iterator for Formatted Disk Page
503 {
504 private:
505 class Entry
506 {
507 public:
509
511 sal_uInt16 mnLen;
512 sal_uInt16 mnIStd; // only for Fkp.Papx (actually Style-Nr)
514
515 explicit Entry(WW8_FC nFC) : mnFC(nFC), mpData(nullptr), mnLen(0),
516 mnIStd(0), mbMustDelete(false) {}
517 Entry(const Entry &rEntry);
518 ~Entry();
519 bool operator<(const Entry& rEntry) const;
520 Entry& operator=(const Entry& rEntry);
521 };
522
524 std::vector<Entry> maEntries;
525
526 tools::Long m_nItemSize; // either 1 Byte or a complete BX
527
528 // Offset in Stream where last read of 512 bytes took place
530 sal_uInt8 mnIdx; // Pos marker
532 sal_uInt8 mnIMax; // number of entries
533 int mnMustRemainCached; // after SaveAllPLCFx, before RestoreAllPLCFx
534
536
537 //Fill in an Entry with sanity testing
538 void FillEntry(Entry &rEntry, std::size_t nDataOffset, sal_uInt16 nLen);
539
540 public:
541 WW8Fkp (const WW8Fib& rFib, SvStream* pFKPStrm,
542 SvStream* pDataStrm, tools::Long _nFilePos, tools::Long nItemSiz, ePLCFT ePl,
543 WW8_FC nStartFc);
544 void Reset(WW8_FC nPos);
546 sal_uInt8 GetIdx() const { return mnIdx; }
547 void SetIdx(sal_uInt8 nI);
548 bool SeekPos(WW8_FC nFc);
549 WW8_FC Where() const
550 {
551 return (mnIdx < mnIMax) ? maEntries[mnIdx].mnFC : WW8_FC_MAX;
552 }
553 void advance()
554 {
555 if (mnIdx < mnIMax)
556 ++mnIdx;
557 }
558 sal_uInt8* Get( WW8_FC& rStart, WW8_FC& rEnd, sal_Int32& rLen ) const;
559 sal_uInt16 GetIstd() const { return maEntries[mnIdx].mnIStd; }
560
561 /*
562 returns a real pointer to the Sprm of type nId,
563 if such a thing is in the Fkp.
564 */
565 sal_uInt8* GetLenAndIStdAndSprms(sal_Int32& rLen) const;
566
567 /*
568 calls GetLenAndIStdAndSprms()...
569 2020 bFindFirst note: Normally the last SPRM takes effect, so I don't know why HasSprm always returned the first value!
570 I don't dare to change the default due to regression potential (and slower in the few cases looking for a boolean result),
571 but first thing to try is use FindFirst as false.
572 */
573 SprmResult HasSprm(sal_uInt16 nId, bool bFindFirst = true);
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
583private:
584 SvStream* m_pFKPStrm; // input file
585 SvStream* m_pDataStrm; // input file
586 std::unique_ptr<WW8PLCF> m_pPLCF;
587protected:
589private:
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
610
611protected:
613 std::unique_ptr<WW8PLCFx_PCDAttrs> m_pPCDAttrs;
614
615public:
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, bool bFindFirst = true);
628 void HasSprm(sal_uInt16 nId, std::vector<SprmResult> &rResult);
629 bool HasFkp() const { return (nullptr != m_pFkp); }
630};
631
634{
635private:
637 std::unique_ptr<WW8PLCFx_PCD> m_pPcd;
640 bool m_bLineEnd : 1;
641 bool m_bComplex : 1;
642
645
646public:
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
664{
665private:
668 std::unique_ptr<WW8PLCF> m_pPLCF;
669 std::unique_ptr<sal_uInt8[]> m_pSprms;
670 sal_uInt16 m_nArrMax;
671 sal_uInt16 m_nSprmSiz;
672
673 WW8PLCFx_SEPX(const WW8PLCFx_SEPX&) = delete;
675
676public:
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 tools::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
696{
697private:
698 std::unique_ptr<WW8PLCF> m_pRef;
699 std::unique_ptr<WW8PLCF> m_pText;
700
703
704public:
705 WW8PLCFx_SubDoc(SvStream* pSt, const WW8Fib& rFib, WW8_CP nStartCp,
706 tools::Long nFcRef, tools::Long nLenRef, tools::Long nFcText, tools::Long nLenText, tools::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 m_pRef ? m_pRef->GetData( m_pRef->GetIdx() ) : nullptr;
717 }
718
719 virtual void GetSprms(WW8PLCFxDesc* p) override;
720 virtual void advance() override;
721 tools::Long Count() const { return m_pRef ? m_pRef->GetIMax() : 0; }
722};
723
725class WW8PLCFx_FLD : public WW8PLCFx
726{
727private:
728 std::unique_ptr<WW8PLCFspecial> m_pPLCF;
730 WW8PLCFx_FLD(const WW8PLCFx_FLD&) = delete;
732
733public:
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;
744 bool GetPara(tools::Long nIdx, WW8FieldDesc& rF);
745};
746
748
751{
752private:
753 std::unique_ptr<WW8PLCFspecial> m_pBook[2]; // Start and End Position
754 std::vector<OUString> m_aBookNames; // Name
755 std::vector<eBookStatus> m_aStatus;
756 tools::Long m_nIMax; // Number of Booknotes
757 sal_uInt16 m_nIsEnd;
758 sal_Int32 m_nBookmarkId; // counter incremented by GetUniqueBookmarkName.
759
760 WW8PLCFx_Book(const WW8PLCFx_Book&) = delete;
762
763public:
764 WW8PLCFx_Book(SvStream* pTableSt,const WW8Fib& rFib);
765 virtual ~WW8PLCFx_Book() override;
766 tools::Long GetIMax() const { return m_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 tools::Long GetNoSprms( WW8_CP& rStart, WW8_CP& rEnd, sal_Int32& rLen ) override;
774 virtual void advance() override;
775 const OUString* GetName() const;
777 { return m_nIsEnd ? WW8_CP_MAX : m_pBook[0]->Where(); }
778 tools::Long GetLen() const;
779 bool GetIsEnd() const { return m_nIsEnd != 0; }
780 tools::Long GetHandle() const;
781 void SetStatus( sal_uInt16 nIndex, eBookStatus eStat );
782 void MapName(OUString& rName);
783 OUString GetBookmark(tools::Long nStart,tools::Long nEnd, sal_uInt16 &nIndex);
784 eBookStatus GetStatus() const;
785 OUString GetUniqueBookmarkName(const OUString &rSuggestedName);
786};
787
790{
791private:
793 std::unique_ptr<WW8PLCFspecial> m_pBook[2];
795 sal_Int32 m_nIMax;
797
800
801public:
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 tools::Long GetNoSprms( WW8_CP& rStart, WW8_CP& rEnd, sal_Int32& rLen ) override;
811 virtual void advance() override;
812
814 tools::Long getHandle() const;
815 bool getIsEnd() const;
816};
817
820{
821private:
823 std::unique_ptr<WW8PLCFspecial> m_pBook[2];
825 sal_Int32 m_nIMax;
827
830
831public:
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 tools::Long GetNoSprms(WW8_CP& rStart, WW8_CP& rEnd, sal_Int32& rLen) override;
841 virtual void advance() override;
842
844 tools::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 tools::Long nMemLen; // length for previous
855 tools::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
869
870enum ManTypes // enums for PLCFMan-ctor
871{
872 MAN_MAINTEXT = 0, MAN_FTN = 1, MAN_EDN = 2, MAN_HDFT = 3, MAN_AND = 4,
875
876/*
877 this is what the manager uses inside:
878*/
880{
882 std::optional<std::stack<sal_uInt16>> xIdStack; // 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 tools::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
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 , pMemPos(nullptr)
915 , nOrigSprmsLen(0)
921 , nSprmsLen(0)
922 , nCpOfs(0)
923 , bFirstSprm(false)
924 , bRealLineEnd(false)
925 , nRelativeJustify(-1)
926 {
927 }
928 void ReduceByOffset();
929};
930
931struct WW8PLCFxSaveAll;
933{
934public:
936
937private:
939 WW8_CP m_nCpO; //< Origin Cp -- the basis for nNewCp
940
941 WW8_CP m_nLineEnd; // points *after* the <CR>
942 sal_uInt16 m_nPLCF; // this many PLCFs are managed
944 bool mbDoingDrawTextBox; //Normally we adjust the end of attributes
945 //so that the end of a paragraph occurs
946 //before the para end mark, but for
947 //drawboxes we want the true offsets
948
954
956
957 sal_uInt16 WhereIdx(bool* pbStart, WW8_CP * pPos=nullptr) const;
958 void AdjustEnds(WW8PLCFxDesc& rDesc);
959 void GetNewSprms(WW8PLCFxDesc& rDesc);
960 static void GetNewNoSprms(WW8PLCFxDesc& rDesc);
961 void GetSprmStart(short nIdx, WW8PLCFManResult* pRes) const;
962 void GetSprmEnd(short nIdx, WW8PLCFManResult* pRes) const;
963 void GetNoSprmStart(short nIdx, WW8PLCFManResult* pRes) const;
964 void GetNoSprmEnd(short nIdx, WW8PLCFManResult* pRes) const;
965 void AdvSprm(short nIdx, bool bStart);
966 void AdvNoSprm(short nIdx, bool bStart);
967 sal_uInt16 GetId(const WW8PLCFxDesc* p ) const;
968
969 bool IsSprmLegalForCategory(sal_uInt16 nSprmId, short nIdx) const;
970
971public:
972 WW8PLCFMan(const WW8ScannerBase* pBase, ManTypes nType, tools::Long nStartCp,
973 bool bDoingDrawTextBox = false);
974 ~WW8PLCFMan();
975
976 /*
977 Where asks on which following position any Attr changes...
978 */
979 WW8_CP Where() const;
980
981 bool Get(WW8PLCFManResult* pResult) const;
982 void advance();
983 sal_uInt16 GetColl() const; // index of actual Style
984 WW8PLCFx_FLD* GetField() const;
985 WW8PLCFx_SubDoc* GetEdn() const { return static_cast<WW8PLCFx_SubDoc*>(m_pEdn->pPLCFx); }
986 WW8PLCFx_SubDoc* GetFootnote() const { return static_cast<WW8PLCFx_SubDoc*>(m_pFootnote->pPLCFx); }
987 WW8PLCFx_SubDoc* GetAtn() const { return static_cast<WW8PLCFx_SubDoc*>(m_pAnd->pPLCFx); }
988 WW8PLCFx_Book* GetBook() const { return static_cast<WW8PLCFx_Book*>(m_pBkm->pPLCFx); }
989 WW8PLCFx_AtnBook* GetAtnBook() const { return static_cast<WW8PLCFx_AtnBook*>(m_pAtnBkm->pPLCFx); }
991 tools::Long GetCpOfs() const { return m_pChp->nCpOfs; } // for Header/Footer...
992
993 /* asks, if *current paragraph* has an Sprm of this type */
994 SprmResult HasParaSprm(sal_uInt16 nId) const;
995
996 /* asks, if *current textrun* has an Sprm of this type */
997 SprmResult HasCharSprm(sal_uInt16 nId) const;
998 void HasCharSprm(sal_uInt16 nId, std::vector<SprmResult> &rResult) const;
999
1001 { return static_cast<WW8PLCFx_Cp_FKP*>(m_pChp->pPLCFx); }
1003 { return static_cast<WW8PLCFx_Cp_FKP*>(m_pPap->pPLCFx); }
1005 { return static_cast<WW8PLCFx_SEPX*>(m_pSep->pPLCFx); }
1006 WW8PLCFxDesc* GetPap() const { return m_pPap; }
1007 void TransferOpenSprms(std::stack<sal_uInt16> &rStack);
1008 void SeekPos( tools::Long nNewCp );
1009 void SaveAllPLCFx( WW8PLCFxSaveAll& rSave ) const;
1010 void RestoreAllPLCFx( const WW8PLCFxSaveAll& rSave );
1011 WW8PLCFspecial* GetFdoa() const { return m_pFdoa; }
1012 WW8PLCFspecial* GetTxbx() const { return m_pTxbx; }
1017 ManTypes GetManType() const { return m_nManType; }
1019};
1020
1022{
1024 WW8PLCFxSaveAll() = default;
1025};
1026
1028{
1030 WW8PLCFx_PCD* pPLCFx_PCD, const WW8ScannerBase* pBase );
1032 const WW8ScannerBase&, ePLCFT );
1033
1036
1037private:
1039 std::unique_ptr<WW8PLCFx_Cp_FKP> m_pChpPLCF; // Character-Attrs
1040 std::unique_ptr<WW8PLCFx_Cp_FKP> m_pPapPLCF; // Paragraph-Attrs
1041 std::unique_ptr<WW8PLCFx_SEPX> m_pSepPLCF; // Section-Attrs
1042 std::unique_ptr<WW8PLCFx_SubDoc> m_pFootnotePLCF; // Footnotes
1043 std::unique_ptr<WW8PLCFx_SubDoc> m_pEdnPLCF; // EndNotes
1044 std::unique_ptr<WW8PLCFx_SubDoc> m_pAndPLCF; // Comments
1045 std::unique_ptr<WW8PLCFx_FLD> m_pFieldPLCF; // Fields in Main Text
1046 std::unique_ptr<WW8PLCFx_FLD> m_pFieldHdFtPLCF; // Fields in Header / Footer
1047 std::unique_ptr<WW8PLCFx_FLD> m_pFieldTxbxPLCF; // Fields in Textboxes in Main Text
1048 std::unique_ptr<WW8PLCFx_FLD> m_pFieldTxbxHdFtPLCF; // Fields in Textboxes in Header / Footer
1049 std::unique_ptr<WW8PLCFx_FLD> m_pFieldFootnotePLCF; // Fields in Footnotes
1050 std::unique_ptr<WW8PLCFx_FLD> m_pFieldEdnPLCF; // Fields in Endnotes
1051 std::unique_ptr<WW8PLCFx_FLD> m_pFieldAndPLCF; // Fields in Comments
1052 std::unique_ptr<WW8PLCFspecial> m_pMainFdoa; // Graphic Primitives in Main Text
1053 std::unique_ptr<WW8PLCFspecial> m_pHdFtFdoa; // Graphic Primitives in Header / Footer
1054 std::unique_ptr<WW8PLCFspecial> m_pMainTxbx; // Textboxes in Main Text
1055 std::unique_ptr<WW8PLCFspecial> m_pMainTxbxBkd; // Break-Descriptors for them
1056 std::unique_ptr<WW8PLCFspecial> m_pHdFtTxbx; // TextBoxes in Header / Footer
1057 std::unique_ptr<WW8PLCFspecial> m_pHdFtTxbxBkd; // Break-Descriptors for previous
1058 std::unique_ptr<WW8PLCFspecial> m_pMagicTables; // Break-Descriptors for them
1059 std::unique_ptr<WW8PLCFspecial> m_pSubdocs; // subdoc references in master document
1060 std::unique_ptr<sal_uInt8[]>
1061 m_pExtendedAtrds; // Extended ATRDs
1062 std::unique_ptr<WW8PLCFx_Book> m_pBook; // Bookmarks
1063 std::unique_ptr<WW8PLCFx_AtnBook> m_pAtnBook; // Annotationmarks
1065 std::unique_ptr<WW8PLCFx_FactoidBook> m_pFactoidBook;
1066
1067 std::unique_ptr<WW8PLCFpcd> m_pPiecePLCF; // for FastSave ( Basis-PLCF without iterator )
1068 std::unique_ptr<WW8PLCFpcd_Iter> m_pPieceIter; // for FastSave ( iterator for previous )
1069 std::unique_ptr<WW8PLCFx_PCD> m_pPLCFx_PCD; // ditto
1070 std::unique_ptr<WW8PLCFx_PCDAttrs> m_pPLCFx_PCDAttrs;
1071 std::vector<std::unique_ptr<sal_uInt8[]>> m_aPieceGrpprls; // attributes of Piece-Table
1072
1073 std::unique_ptr<WW8PLCFpcd> OpenPieceTable( SvStream* pStr, const WW8Fib* pWwF );
1074
1077
1078public:
1079 WW8ScannerBase( SvStream* pSt, SvStream* pTableSt, SvStream* pDataSt,
1080 WW8Fib* pWwF );
1082 bool AreThereFootnotes() const { return m_pFootnotePLCF->Count() > 0; };
1083 bool AreThereEndnotes() const { return m_pEdnPLCF->Count() > 0; };
1084
1085 //If you use WW8Fc2Cp you are almost certainly doing the wrong thing
1086 //when it comes to fastsaved files, avoid like the plague. For export
1087 //given that we never write fastsaved files you can use it, otherwise
1088 //I will beat you with a stick
1089 WW8_CP WW8Fc2Cp(WW8_FC nFcPos) const ;
1090 WW8_FC WW8Cp2Fc(WW8_CP nCpPos, bool* pIsUnicode = nullptr,
1091 WW8_CP* pNextPieceCp = nullptr, bool* pTestFlag = nullptr) const;
1092
1093 sal_Int32 WW8ReadString(SvStream& rStrm, OUString& rStr, WW8_CP nCurrentStartCp,
1094 tools::Long nTotalLen, rtl_TextEncoding eEnc ) const;
1095
1096};
1097
1105{
1106private:
1108
1109public:
1119 /*
1120 error status
1121 */
1123 /*
1124 data read from FIB by Ctor
1125 (corresponds only approximately to the real structure
1126 of the Winword-FIB)
1127 */
1128 sal_uInt16 m_wIdent = 0; // 0x0 int magic number
1129 /*
1130 File Information Block (FIB) values:
1131 WinWord 1.0 = 33
1132 WinWord 2.0 = 45
1133 WinWord 6.0c for 16bit = 101
1134 Word 6/32 bit = 104
1135 Word 95 = 104
1136 Word 97 = 193
1137 Word 2000 = 217
1138 Word 2002 = 257
1139 Word 2003 = 268
1140 Word 2007 = 274
1141 */
1142 sal_uInt16 m_nFib = 0; // 0x2 FIB version written
1143 sal_uInt16 m_nProduct = 0; // 0x4 product version written by
1144 LanguageType m_lid; // 0x6 language stamp---localized version;
1145 WW8_PN m_pnNext = 0; // 0x8
1146
1147 bool m_fDot :1 /*= false*/; // 0xa 0001
1148 bool m_fGlsy :1 /*= false*/;
1149 bool m_fComplex :1 /*= false*/; // 0004 when 1, file is in complex, fast-saved format.
1150 bool m_fHasPic :1 /*= false*/; // 0008 file contains 1 or more pictures
1151 sal_uInt16 m_cQuickSaves :4 /*= 0*/; // 00F0 count of times file was quicksaved
1152 bool m_fEncrypted :1 /*= false*/; //0100 1 if file is encrypted, 0 if not
1153 bool m_fWhichTableStm :1 /*= false*/; //0200 When 0, this fib refers to the table stream
1154 bool m_fReadOnlyRecommended :1 /*= false*/;
1155 bool m_fWriteReservation :1 /*= false*/;
1156 // named "0Table", when 1, this fib refers to the
1157 // table stream named "1Table". Normally, a file
1158 // will have only one table stream, but under unusual
1159 // circumstances a file may have table streams with
1160 // both names. In that case, this flag must be used
1161 // to decide which table stream is valid.
1162
1163 bool m_fExtChar :1 /*= false*/; // 1000 =1, when using extended character set in file
1164 bool m_fFarEast :1 /*= false*/; // 4000 =1, probably, when far-East language variants of Word is used to create a file #i90932#
1165
1166 bool m_fObfuscated :1 /*= false*/; // 8000=1. specifies whether the document is obfuscated using XOR obfuscation. otherwise this bit MUST be ignored.
1167
1168 sal_uInt16 m_nFibBack = 0; // 0xc
1169 sal_uInt16 m_nHash = 0; // 0xe file encrypted hash
1170 sal_uInt16 m_nKey = 0; // 0x10 file encrypted key
1171 sal_uInt8 m_envr = 0; // 0x12 environment in which file was created
1172 // 0 created by Win Word / 1 created by Mac Word
1173 bool m_fMac :1 /*= false*/; // 0x13 when 1, this file was last saved in the Mac environment
1174 bool m_fEmptySpecial :1 /*= false*/;
1175 bool m_fLoadOverridePage :1 /*= false*/;
1176 bool m_fFuturesavedUndo :1 /*= false*/;
1177 bool m_fWord97Saved :1 /*= false*/;
1178 bool m_fWord2000Saved :1 /*= false*/;
1180
1181 sal_uInt16 m_chse = 0; // 0x14 default extended character set id for text in document stream. (overridden by chp.chse)
1182 // 0 = ANSI / 256 Macintosh character set.
1183 sal_uInt16 m_chseTables = 0; // 0x16 default extended character set id for text in
1184 // internal data structures: 0 = ANSI, 256 = Macintosh
1185 WW8_FC m_fcMin = 0; // 0x18 file offset of first character of text
1186 WW8_FC m_fcMac = 0; // 0x1c file offset of last character of text + 1
1187
1188 // start of WW8 section
1189 sal_uInt16 m_csw = 0; // Count of fields in the array of "shorts"
1190
1191 // marker: "rgsw" Beginning of the array of shorts
1192 sal_uInt16 m_wMagicCreated = 0; // unique number Identifying the File's creator
1193 // 0x6A62 is the creator ID for Word and is reserved.
1194 // Other creators should choose a different value.
1195 sal_uInt16 m_wMagicRevised = 0; // identifies the File's last modifier
1196 sal_uInt16 m_wMagicCreatedPrivate = 0; // private data
1197 sal_uInt16 m_wMagicRevisedPrivate = 0; // private data
1198
1199 LanguageType m_lidFE; // Language id if document was written by Far East version
1200 // of Word (i.e. FIB.fFarEast is on)
1201 sal_uInt16 m_clw = 0; // Number of fields in the array of longs
1202
1203 // end of WW8 section
1204
1205 // Marker: "rglw" Beginning of the array of longs
1206 WW8_FC m_cbMac = 0; // 0x20 file offset of last byte written to file + 1.
1207
1208 // WW8_FC u4[4]; // 0x24
1209 WW8_CP m_ccpText = 0; // 0x34 length of main document text stream
1210 WW8_CP m_ccpFootnote = 0; // 0x38 length of footnote subdocument text stream
1211 WW8_CP m_ccpHdr = 0; // 0x3c length of header subdocument text stream
1212 WW8_CP m_ccpMcr = 0; // 0x40 length of macro subdocument text stream
1213 WW8_CP m_ccpAtn = 0; // 0x44 length of annotation subdocument text stream
1214 WW8_CP m_ccpEdn = 0; // 0x48 length of endnote subdocument text stream
1215 WW8_CP m_ccpTxbx = 0; // 0x4c length of textbox subdocument text stream
1216 WW8_CP m_ccpHdrTxbx = 0; // 0x50 length of header textbox subdocument text stream
1217
1218 // start of WW8 section
1219 sal_Int32 m_pnFbpChpFirst = 0; // when there was insufficient memory for Word to expand
1220 // the PLCFbte at save time, the PLCFbte is written
1221 // to the file in a linked list of 512-byte pieces
1222 // starting with this pn.
1223 sal_Int32 m_pnFbpPapFirst = 0; // when there was insufficient memory for Word to expand
1224 // the PLCFbte at save time, the PLCFbte is written to
1225 // the file in a linked list of 512-byte pieces
1226 // starting with this pn
1227
1228 sal_Int32 m_pnFbpLvcFirst = 0; // when there was insufficient memory for Word to expand
1229 // the PLCFbte at save time, the PLCFbte is written to
1230 // the file in a linked list of 512-byte pieces
1231 // starting with this pn
1232 sal_Int32 m_pnLvcFirst = 0; // the page number of the lowest numbered page in the
1233 // document that records LVC FKP information
1234 sal_Int32 m_cpnBteLvc = 0; // count of LVC FKPs recorded in file. In non-complex
1235 // files if the number of entries in the PLCFbtePapx is
1236 // less than this, the PLCFbtePapx is incomplete.
1237 sal_Int32 m_fcIslandFirst = 0; // ?
1238 sal_Int32 m_fcIslandLim = 0; // ?
1239 sal_uInt16 m_cfclcb = 0; // Number of fields in the array of FC/LCB pairs.
1241 sal_uInt16 m_cswNew = 0;
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
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{
1548protected:
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
1571
1572public:
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
1579class WW8Fonts final
1580{
1581private:
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
1587public:
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
1595{
1602}
1603
1606{
1607public:
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_fSuppressSpbfAfterPgBrk : 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_fSuppressTopSpacing : 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 fSuppressSpbfAfterPageBreak : 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 fSuppressTopSpacing : 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 >= hpsZoomFontPag?
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 hpsZoomFontPag = 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{
1852private:
1855
1856public:
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
1863Word2CHPX ReadWord2Chpx(SvStream &rSt, std::size_t nOffset, sal_uInt8 nSize);
1864std::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
1870const sal_uInt16 lLetterWidth = 12242;
1871const sal_uInt16 lLetterHeight = 15842;
1872
1873#ifdef OSL_BIGENDIAN
1874void swapEndian(sal_Unicode *pString);
1875#endif
1876
1877#endif
1878
1879/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
FIB - the File Information Block.
Definition: ww8scan.hxx:1105
sal_Int32 m_lcbSttbListNames
Definition: ww8scan.hxx:1478
sal_uInt16 m_nFib_actual
Definition: ww8scan.hxx:1533
WW8_CP m_ccpHdr
Definition: ww8scan.hxx:1211
WW8_FC m_fcPlcfspl
Definition: ww8scan.hxx:1438
sal_Int32 m_lcbPlcfHdrtxbxBkd
Definition: ww8scan.hxx:1471
WW8_FC m_fcPlcfhdd
Definition: ww8scan.hxx:1288
sal_Int32 m_lcbSttbfffn
Definition: ww8scan.hxx:1302
sal_Int32 m_lcbPlcfspaHdr
Definition: ww8scan.hxx:1393
WW8_FC m_fcPlcfglsy
Definition: ww8scan.hxx:1283
WW8_FC m_fcPlcfAtnbkf
Definition: ww8scan.hxx:1396
WW8_FC m_fcPlcfsed
Definition: ww8scan.hxx:1266
WW8_FC m_fcPlcfspaHdr
Definition: ww8scan.hxx:1390
sal_Int32 m_lcbPlcftxbxBkd
Definition: ww8scan.hxx:1469
sal_Int32 m_lcbPlcfAtnbkf
Definition: ww8scan.hxx:1397
sal_Int32 m_lcbSttbAutoCaption
Definition: ww8scan.hxx:1433
WW8_FC m_fcSttbfffn
Definition: ww8scan.hxx:1301
sal_Int32 m_lcbSttbfRMark
Definition: ww8scan.hxx:1428
sal_Int32 m_lcbPlcfHdrtxbxText
Definition: ww8scan.hxx:1447
WW8_FC m_fcPlcffactoid
0x4ba Plcffactoid offset.
Definition: ww8scan.hxx:1512
bool m_fComplex
Definition: ww8scan.hxx:1149
WW8_FC m_fcFormFieldSttbf
Definition: ww8scan.hxx:1405
WW8_FC m_fcMac
Definition: ww8scan.hxx:1186
sal_uInt32 m_lcbStwUser
Definition: ww8scan.hxx:1451
bool m_fLoadOverridePage
Definition: ww8scan.hxx:1175
sal_Int32 m_lcbPlfLfo
Definition: ww8scan.hxx:1464
WW8_FC m_fcPlcftxbxBkd
Definition: ww8scan.hxx:1468
sal_Int32 m_lcbSttbfbkmk
Definition: ww8scan.hxx:1320
sal_Int32 m_lcbSttbfCaption
Definition: ww8scan.hxx:1430
sal_Int32 m_lcbFormFieldSttbf
Definition: ww8scan.hxx:1406
sal_Int32 m_lcbPlcfpgdEdn
Definition: ww8scan.hxx:1419
LanguageType m_lid
Definition: ww8scan.hxx:1144
ErrCode m_nFibError
Definition: ww8scan.hxx:1122
WW8Fib(SvStream &rStrm, sal_uInt8 nWantedVersion, sal_uInt32 nOffset=0)
Definition: ww8scan.cxx:5853
WW8_FC m_fcPlcfAtnbkl
Definition: ww8scan.hxx:1399
WW8_FC m_fcWss
Definition: ww8scan.hxx:1346
WW8_FC m_fcPrEnvPort
Definition: ww8scan.hxx:1340
bool m_fEncrypted
Definition: ww8scan.hxx:1152
LanguageType m_lidFE
Definition: ww8scan.hxx:1199
sal_uInt32 m_lcbAtrdExtra
Definition: ww8scan.hxx:1485
WW8_CP m_ccpFootnote
Definition: ww8scan.hxx:1210
WW8_FC m_fcPlcfsea
Definition: ww8scan.hxx:1298
WW8_CP m_ccpEdn
Definition: ww8scan.hxx:1214
sal_uInt32 m_lcbPlcfBklFactoid
0x446 smart-tag bookmark ends length.
Definition: ww8scan.hxx:1503
WW8_FC m_fcPlcfpgdEdn
Definition: ww8scan.hxx:1418
sal_uInt32 m_lcbCmds
Definition: ww8scan.hxx:1329
bool m_fFuturesavedUndo
Definition: ww8scan.hxx:1176
WW8_FC m_fcFactoidData
0x44a smart tag data offset.
Definition: ww8scan.hxx:1505
WW8_FC m_fcPlfLfo
Definition: ww8scan.hxx:1463
sal_Int32 m_lcbPlcfmcr
Definition: ww8scan.hxx:1332
WW8_FC m_fcPlcfphe
Definition: ww8scan.hxx:1274
bool m_fWord97Saved
Definition: ww8scan.hxx:1177
sal_uInt16 m_nFib
Definition: ww8scan.hxx:1142
sal_Int32 m_lcbPlcftxbxText
Definition: ww8scan.hxx:1443
sal_uInt32 m_lcbFactoidData
0x44e smart tag data length.
Definition: ww8scan.hxx:1507
sal_Int32 m_lcbPlcffldEdn
Definition: ww8scan.hxx:1416
void Write(SvStream &rStrm)
Definition: ww8scan.cxx:6430
WW8_FC m_fcAutosaveSource
Definition: ww8scan.hxx:1363
sal_Int32 m_lcbGrpStAtnOwners
Definition: ww8scan.hxx:1367
sal_Int32 m_lcbSttbfAtnbkmk
Definition: ww8scan.hxx:1370
WW8_CP m_ccpHdrTxbx
Definition: ww8scan.hxx:1216
sal_Int32 m_lcbPlcfpgdFootnote
Definition: ww8scan.hxx:1360
sal_Int32 m_lcbPlcfbteChpx
Definition: ww8scan.hxx:1293
sal_Int32 m_lcbPlcfspaMom
Definition: ww8scan.hxx:1388
WW8_FC m_fcPlcftxbxText
Definition: ww8scan.hxx:1442
void WriteHeader(SvStream &rStrm)
Definition: ww8scan.cxx:6348
sal_Int32 m_lcbPlcfbkf
Definition: ww8scan.hxx:1323
WW8_FC m_fcPlcfTch
Definition: ww8scan.hxx:1480
sal_Int32 m_fcIslandFirst
Definition: ww8scan.hxx:1237
sal_Int32 m_pnChpFirst
Definition: ww8scan.hxx:1525
sal_Int32 m_lcbPlcfhdd
Definition: ww8scan.hxx:1289
sal_uInt8 m_envr
Definition: ww8scan.hxx:1171
bool m_fHasPic
Definition: ww8scan.hxx:1150
WW8_FC m_fcSttbttmbd
Definition: ww8scan.hxx:1452
sal_uInt16 m_cQuickSaves
Definition: ww8scan.hxx:1151
sal_Int32 m_pnPapFirst
Definition: ww8scan.hxx:1526
sal_Int32 m_lcbPlcffldMcr
Definition: ww8scan.hxx:1317
WW8_FC m_fcPlcffldEdn
Definition: ww8scan.hxx:1415
sal_Int32 m_lcbStshfOrig
Definition: ww8scan.hxx:1249
WW8_FC m_fcPlcffldAtn
Definition: ww8scan.hxx:1313
sal_uInt16 m_nProduct
Definition: ww8scan.hxx:1143
WW8_FC m_fcSttbfAssoc
Definition: ww8scan.hxx:1353
WW8_FC m_fcStshf
Definition: ww8scan.hxx:1250
bool m_fWhichTableStm
Definition: ww8scan.hxx:1153
sal_Int32 m_lcbPlcfAtnbkl
Definition: ww8scan.hxx:1400
sal_uInt16 m_cfclcb
Definition: ww8scan.hxx:1239
sal_Int32 m_lcbSttbFnm
Definition: ww8scan.hxx:1456
sal_Int32 m_lcbSttbfmcr
Definition: ww8scan.hxx:1335
sal_Int32 m_pnLvcFirst
Definition: ww8scan.hxx:1232
sal_uInt16 m_chse
Definition: ww8scan.hxx:1181
sal_uInt8 m_nVersion
Program-Version asked for by us: in Ctor we check if it matches the value of nFib.
Definition: ww8scan.hxx:1118
sal_uInt16 m_clw
Definition: ww8scan.hxx:1201
WW8_FC m_fcAtrdExtra
Definition: ww8scan.hxx:1484
WW8_FC m_fcPlcfHdrtxbxText
Definition: ww8scan.hxx:1446
sal_Int32 m_lcbPlcfphe
Definition: ww8scan.hxx:1275
bool m_fWord2000Saved
Definition: ww8scan.hxx:1178
sal_Int32 m_pnFbpPapFirst
Definition: ww8scan.hxx:1223
WW8_FC m_fcSttbfmcr
Definition: ww8scan.hxx:1334
WW8_FC m_fcPlcfandRef
Definition: ww8scan.hxx:1260
WW8_FC m_fcSttbfBkmkFactoid
0x42a smart-tag bookmark string table offset.
Definition: ww8scan.hxx:1490
sal_uInt16 m_wMagicCreated
Definition: ww8scan.hxx:1192
sal_uInt16 m_cswNew
Specifies the count of 16-bit values corresponding to fibRgCswNew that follow.
Definition: ww8scan.hxx:1241
sal_Int32 m_lcbAutosaveSource
Definition: ww8scan.hxx:1364
sal_Int32 m_lcbPlcfandText
Definition: ww8scan.hxx:1264
sal_Int32 m_lcbPrDrvr
Definition: ww8scan.hxx:1338
WW8_FC m_fcPlcffndText
Definition: ww8scan.hxx:1256
WW8_PN m_pnNext
Definition: ww8scan.hxx:1145
WW8_CP m_ccpTxbx
Definition: ww8scan.hxx:1215
sal_uInt32 m_lcbPlcfBkfFactoid
0x436 smart-tag bookmark ends length.
Definition: ww8scan.hxx:1496
WW8_FC m_fcPrEnvLand
Definition: ww8scan.hxx:1343
WW8_FC m_fcSttbfglsy
Definition: ww8scan.hxx:1278
WW8_FC m_fcPms
Definition: ww8scan.hxx:1402
sal_uInt16 m_csw
Definition: ww8scan.hxx:1189
bool m_fExtChar
Definition: ww8scan.hxx:1163
sal_uInt16 m_wIdent
Definition: ww8scan.hxx:1128
WW8_FC m_fcPlcfspaMom
Definition: ww8scan.hxx:1385
bool m_fGlsy
Definition: ww8scan.hxx:1148
WW8_FC m_fcPlcfpad
Definition: ww8scan.hxx:1269
WW8_FC m_fcSttbfCaption
Definition: ww8scan.hxx:1429
sal_Int32 m_lcbPrEnvPort
Definition: ww8scan.hxx:1341
sal_uInt32 m_lcbSttbfBkmkFactoid
0x42e smart-tag bookmark string table length.
Definition: ww8scan.hxx:1492
WW8_FC m_fcStshfOrig
Definition: ww8scan.hxx:1246
sal_Int32 m_cpnBteLvc
Definition: ww8scan.hxx:1234
WW8_FC m_fcStwUser
Definition: ww8scan.hxx:1450
sal_Int32 m_lcbPlcfwkb
Definition: ww8scan.hxx:1436
sal_Int32 m_lcbPlcfpad
Definition: ww8scan.hxx:1270
WW8_FC m_fcPlcfHdrtxbxBkd
Definition: ww8scan.hxx:1470
sal_Int32 m_lcbPlcfdoaMom
Definition: ww8scan.hxx:1377
sal_Int32 m_lcbPlcfbtePapx
Definition: ww8scan.hxx:1296
ww::WordVersion GetFIBVersion() const
Definition: ww8scan.cxx:5808
WW8_FC m_fcSttbAutoCaption
Definition: ww8scan.hxx:1431
WW8_FC m_fcPlcffldMom
Definition: ww8scan.hxx:1304
WW8_FC m_fcPlcfwkb
Definition: ww8scan.hxx:1435
WW8_FC m_fcPlcfmcr
Definition: ww8scan.hxx:1331
sal_Int32 m_lcbPMS
Definition: ww8scan.hxx:1403
sal_uInt32 m_lcbHplxsdr
Definition: ww8scan.hxx:1519
WW8_FC m_fcPlcfbteChpx
Definition: ww8scan.hxx:1292
sal_Int32 m_lcbPlcffldFootnote
Definition: ww8scan.hxx:1311
sal_uInt16 m_wMagicRevised
Definition: ww8scan.hxx:1195
sal_Int32 m_cpnBtePap
Definition: ww8scan.hxx:1528
sal_Int32 m_lcbPlcffldTxbx
Definition: ww8scan.hxx:1445
WW8_FC m_fcPlcfdoaMom
Definition: ww8scan.hxx:1374
WW8_FC m_fcPlcfdoaHdr
Definition: ww8scan.hxx:1379
static rtl_TextEncoding GetFIBCharset(sal_uInt16 chs, LanguageType nLidLocale)
Definition: ww8scan.cxx:6671
WW8_FC m_fcSttbfbkmk
Definition: ww8scan.hxx:1319
WW8_FC m_fcPlcffldFootnote
Definition: ww8scan.hxx:1310
sal_Int32 m_fcIslandLim
Definition: ww8scan.hxx:1238
WW8_FC m_fcSttbListNames
Definition: ww8scan.hxx:1477
sal_uInt32 m_lcbDop
Definition: ww8scan.hxx:1350
WW8_FC m_fcMin
Definition: ww8scan.hxx:1185
WW8_FC m_fcPlcfendText
Definition: ww8scan.hxx:1411
sal_Int32 m_lcbSttbfAssoc
Definition: ww8scan.hxx:1354
sal_Int32 m_lcbPlcfdoaHdr
Definition: ww8scan.hxx:1382
bool m_fReadOnlyRecommended
Definition: ww8scan.hxx:1154
sal_Int32 m_lcbPlcfLst
Definition: ww8scan.hxx:1462
sal_Unicode m_nNumDecimalSep
Definition: ww8scan.hxx:1107
WW8_FC m_fcSttbfAtnbkmk
Definition: ww8scan.hxx:1369
sal_Int32 m_lcbPlcfendText
Definition: ww8scan.hxx:1413
bool m_fFarEast
Definition: ww8scan.hxx:1164
sal_Int32 m_cpnBteChp
Definition: ww8scan.hxx:1527
sal_uInt16 m_nHash
Definition: ww8scan.hxx:1169
WW8_FC m_fcDggInfo
Definition: ww8scan.hxx:1421
sal_Unicode getNumDecimalSep() const
Definition: ww8scan.hxx:1543
WW8_FC m_fcPlcffldMcr
Definition: ww8scan.hxx:1316
bool m_fEmptySpecial
Definition: ww8scan.hxx:1174
sal_Int32 m_lcbPlcffndRef
Definition: ww8scan.hxx:1253
WW8_FC m_fcPlcfpgdFootnote
Definition: ww8scan.hxx:1359
sal_Int32 m_lcbSttbfglsy
Definition: ww8scan.hxx:1279
WW8_FC m_fcPlcfendRef
Definition: ww8scan.hxx:1408
sal_uInt16 m_nKey
Definition: ww8scan.hxx:1170
sal_uInt32 m_lcbPlcffactoid
0x4be Plcffactoid offset.
Definition: ww8scan.hxx:1514
sal_Int32 m_pnFbpLvcFirst
Definition: ww8scan.hxx:1228
WW8_FC m_fcPlcffndRef
Definition: ww8scan.hxx:1252
sal_uInt16 m_chseTables
Definition: ww8scan.hxx:1183
sal_Int32 m_lcbPlcffldMom
Definition: ww8scan.hxx:1305
sal_Int32 m_lcbPlcfglsy
Definition: ww8scan.hxx:1284
WW8_FC m_fcPlcffldHdrTxbx
Definition: ww8scan.hxx:1448
WW8_FC m_fcPlcffldHdr
Definition: ww8scan.hxx:1307
WW8_FC m_fcPlcfBkfFactoid
0x432 smart-tag bookmark starts offset.
Definition: ww8scan.hxx:1494
sal_uInt16 m_nFibBack
Definition: ww8scan.hxx:1168
sal_Int32 m_lcbPrEnvLand
Definition: ww8scan.hxx:1344
sal_Int32 m_lcbPlcffldAtn
Definition: ww8scan.hxx:1314
WW8_FC m_fcPlcfbtePapx
Definition: ww8scan.hxx:1295
WW8_FC m_cbMac
Definition: ww8scan.hxx:1206
sal_uInt16 m_wMagicRevisedPrivate
Definition: ww8scan.hxx:1197
sal_Int32 m_lcbPlcffldHdr
Definition: ww8scan.hxx:1308
WW8_FC m_fcPrDrvr
Definition: ww8scan.hxx:1337
WW8_FC m_fcCmds
Definition: ww8scan.hxx:1328
sal_Int32 m_lcbDggInfo
Definition: ww8scan.hxx:1424
WW8_FC m_fcPlcfbkf
Definition: ww8scan.hxx:1322
WW8_FC m_fcGrpStAtnOwners
Definition: ww8scan.hxx:1366
sal_Int32 m_lcbPlcfspl
Definition: ww8scan.hxx:1440
bool m_fObfuscated
Definition: ww8scan.hxx:1166
sal_Int32 m_lcbPlcfbkl
Definition: ww8scan.hxx:1326
sal_Int32 m_lcbClx
Definition: ww8scan.hxx:1357
sal_Int32 m_lcbWss
Definition: ww8scan.hxx:1347
bool m_fWriteReservation
Definition: ww8scan.hxx:1155
WW8_CP m_ccpAtn
Definition: ww8scan.hxx:1213
sal_uInt32 m_lcbSttbttmbd
Definition: ww8scan.hxx:1453
sal_Int32 m_lcbPlcfendRef
Definition: ww8scan.hxx:1409
sal_Int32 m_lcbPlcffldHdrTxbx
Definition: ww8scan.hxx:1449
WW8_FC m_fcSttbfRMark
Definition: ww8scan.hxx:1427
sal_Int32 m_lcbPlcfsed
Definition: ww8scan.hxx:1267
WW8_FC m_fcPlcfandText
Definition: ww8scan.hxx:1263
WW8_FC m_fcHplxsdr
Definition: ww8scan.hxx:1518
WW8_FC m_fcPlcffldTxbx
Definition: ww8scan.hxx:1444
sal_Int32 m_lcbPlcfandRef
Definition: ww8scan.hxx:1261
WW8_FC m_fcPlcfbkl
Definition: ww8scan.hxx:1325
WW8_FC m_fcClx
Definition: ww8scan.hxx:1356
sal_Int32 m_lcbStshf
Definition: ww8scan.hxx:1251
WW8_FC m_fcPlcfLst
Definition: ww8scan.hxx:1461
WW8_FC m_fcDop
Definition: ww8scan.hxx:1349
sal_uInt16 m_wMagicCreatedPrivate
Definition: ww8scan.hxx:1196
WW8_CP m_ccpText
Definition: ww8scan.hxx:1209
bool m_fMac
Definition: ww8scan.hxx:1173
WW8_CP m_ccpMcr
Definition: ww8scan.hxx:1212
sal_Int32 m_lcbPlcfsea
Definition: ww8scan.hxx:1299
WW8_FC m_fcPlcfBklFactoid
0x442 smart-tag bookmark ends offset.
Definition: ww8scan.hxx:1501
bool GetBaseCp(ManTypes nType, WW8_CP *cp) const
Definition: ww8scan.cxx:5745
sal_Int32 m_lcbPlcffndText
Definition: ww8scan.hxx:1257
WW8_FC m_fcSttbFnm
Definition: ww8scan.hxx:1455
bool m_fDot
Definition: ww8scan.hxx:1147
sal_Int32 m_lcbPlcfTch
Definition: ww8scan.hxx:1481
sal_Int32 m_pnFbpChpFirst
Definition: ww8scan.hxx:1219
WW8Fonts & operator=(const WW8Fonts &)=delete
std::vector< WW8_FFN > m_aFontA
Definition: ww8scan.hxx:1585
const WW8_FFN * GetFont(sal_uInt16 nNum) const
Definition: ww8scan.cxx:7491
sal_uInt16 GetMax() const
Definition: ww8scan.hxx:1590
WW8Fonts(const WW8Fonts &)=delete
const WW8Fib * m_pWwFib
Definition: ww8scan.hxx:955
bool mbDoingDrawTextBox
Definition: ww8scan.hxx:944
void SaveAllPLCFx(WW8PLCFxSaveAll &rSave) const
Definition: ww8scan.cxx:5169
void GetNoSprmEnd(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5321
WW8PLCFspecial * GetTxbx() const
Definition: ww8scan.hxx:1012
void TransferOpenSprms(std::stack< sal_uInt16 > &rStack)
Definition: ww8scan.cxx:5341
WW8PLCFx_Cp_FKP * GetPapPLCF() const
Definition: ww8scan.hxx:1002
sal_uInt16 WhereIdx(bool *pbStart, WW8_CP *pPos=nullptr) const
Definition: ww8scan.cxx:5112
WW8PLCFxDesc * m_pPap
Definition: ww8scan.hxx:950
WW8PLCFx_SEPX * GetSepPLCF() const
Definition: ww8scan.hxx:1004
SprmResult HasParaSprm(sal_uInt16 nId) const
Definition: ww8scan.cxx:5602
WW8PLCFx_Book * GetBook() const
Definition: ww8scan.hxx:988
void SeekPos(tools::Long nNewCp)
Definition: ww8scan.cxx:5158
sal_uInt16 GetId(const WW8PLCFxDesc *p) const
Definition: ww8scan.cxx:4908
bool IsSprmLegalForCategory(sal_uInt16 nSprmId, short nIdx) const
Definition: ww8scan.cxx:5208
ManTypes m_nManType
Definition: ww8scan.hxx:943
WW8_CP m_nCpO
Definition: ww8scan.hxx:939
bool Get(WW8PLCFManResult *pResult) const
Definition: ww8scan.cxx:5546
@ MAN_PLCF_COUNT
Definition: ww8scan.hxx:935
void AdvNoSprm(short nIdx, bool bStart)
Definition: ww8scan.cxx:5470
sal_uInt8 * m_pExtendedAtrds
Definition: ww8scan.hxx:953
sal_uInt16 GetColl() const
Definition: ww8scan.cxx:5586
void RestoreAllPLCFx(const WW8PLCFxSaveAll &rSave)
Definition: ww8scan.cxx:5182
WW8PLCFspecial * m_pFdoa
Definition: ww8scan.hxx:952
WW8PLCFxDesc * m_pEdn
Definition: ww8scan.hxx:950
static void GetNewNoSprms(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:4894
void GetSprmEnd(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5274
wwSprmParser maSprmParser
Definition: ww8scan.hxx:938
WW8PLCFxDesc * m_pField
Definition: ww8scan.hxx:950
WW8PLCFspecial * m_pTxbx
Definition: ww8scan.hxx:952
WW8_CP Where() const
Definition: ww8scan.cxx:5151
WW8PLCFxDesc * m_pChp
Definition: ww8scan.hxx:950
void GetSprmStart(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5240
WW8PLCFx_SubDoc * GetAtn() const
Definition: ww8scan.hxx:987
ManTypes GetManType() const
Definition: ww8scan.hxx:1017
WW8PLCFxDesc * m_pFactoidBkm
Definition: ww8scan.hxx:951
WW8PLCFx_AtnBook * GetAtnBook() const
Definition: ww8scan.hxx:989
WW8PLCFxDesc * m_pPcd
Definition: ww8scan.hxx:950
WW8PLCFxDesc m_aD[MAN_PLCF_COUNT]
Definition: ww8scan.hxx:949
WW8PLCFxDesc * m_pBkm
Definition: ww8scan.hxx:950
void AdjustEnds(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:4803
WW8PLCFspecial * GetTxbxBkd() const
Definition: ww8scan.hxx:1013
WW8PLCFx_SubDoc * GetEdn() const
Definition: ww8scan.hxx:985
bool GetDoingDrawTextBox() const
Definition: ww8scan.hxx:1018
WW8PLCFspecial * GetFdoa() const
Definition: ww8scan.hxx:1011
WW8PLCFspecial * GetWkbPLCF() const
Definition: ww8scan.hxx:1015
WW8PLCFMan(const WW8ScannerBase *pBase, ManTypes nType, tools::Long nStartCp, bool bDoingDrawTextBox=false)
Definition: ww8scan.cxx:4926
WW8PLCFspecial * GetMagicTables() const
Definition: ww8scan.hxx:1014
WW8PLCFx_FactoidBook * GetFactoidBook() const
Definition: ww8scan.hxx:990
WW8PLCFxDesc * m_pAtnBkm
Definition: ww8scan.hxx:951
tools::Long GetCpOfs() const
Definition: ww8scan.hxx:991
SprmResult HasCharSprm(sal_uInt16 nId) const
Definition: ww8scan.cxx:5607
WW8PLCFxDesc * m_pAnd
Definition: ww8scan.hxx:951
WW8_CP m_nLineEnd
Definition: ww8scan.hxx:941
WW8PLCFx_Cp_FKP * GetChpPLCF() const
Definition: ww8scan.hxx:1000
WW8PLCFxDesc * GetPap() const
Definition: ww8scan.hxx:1006
WW8PLCFspecial * m_pMagicTables
Definition: ww8scan.hxx:952
void advance()
Definition: ww8scan.cxx:5526
WW8PLCFxDesc * m_pSep
Definition: ww8scan.hxx:950
WW8PLCFx_FLD * GetField() const
Definition: ww8scan.cxx:5597
WW8PLCFx_SubDoc * GetFootnote() const
Definition: ww8scan.hxx:986
sal_uInt16 m_nPLCF
Definition: ww8scan.hxx:942
WW8PLCFspecial * m_pSubdocs
Definition: ww8scan.hxx:952
void GetNewSprms(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:4884
WW8PLCFxDesc * m_pPcdA
Definition: ww8scan.hxx:951
void AdvSprm(short nIdx, bool bStart)
Definition: ww8scan.cxx:5356
sal_uInt8 * GetExtendedAtrds() const
Definition: ww8scan.hxx:1016
WW8PLCFxDesc * m_pFootnote
Definition: ww8scan.hxx:950
void GetNoSprmStart(short nIdx, WW8PLCFManResult *pRes) const
Definition: ww8scan.cxx:5289
WW8PLCFspecial * m_pTxbxBkd
Definition: ww8scan.hxx:952
WW8PLCF_HdFt(SvStream *pSt, WW8Fib const &rFib, WW8Dop const &rDop)
Definition: ww8scan.cxx:7513
WW8PLCF m_aPLCF
Definition: ww8scan.hxx:1853
void GetTextPosExact(short nIdx, WW8_CP &rStart, WW8_CP &rLen)
Definition: ww8scan.cxx:7574
void UpdateIndex(sal_uInt8 grpfIhdt)
Definition: ww8scan.cxx:7594
short m_nIdxOffset
Definition: ww8scan.hxx:1854
bool GetTextPos(sal_uInt8 grpfIhdt, sal_uInt8 nWhich, WW8_CP &rStart, WW8_CP &rLen)
Definition: ww8scan.cxx:7535
WW8PLCF(SvStream &rSt, WW8_FC nFilePos, sal_Int32 nPLCF, int nStruct, WW8_CP nStartPos=-1)
Definition: ww8scan.cxx:2264
std::unique_ptr< WW8_CP[]> m_pPLCF_PosArray
Definition: ww8scan.hxx:297
WW8_CP Where() const
Definition: ww8scan.cxx:2518
sal_Int32 GetIdx() const
Definition: ww8scan.hxx:324
void advance()
Definition: ww8scan.hxx:330
void ReadPLCF(SvStream &rSt, WW8_FC nFilePos, sal_uInt32 nPLCF)
Definition: ww8scan.cxx:2307
void GeneratePLCF(SvStream &rSt, sal_Int32 nPN, sal_Int32 ncpN)
Definition: ww8scan.cxx:2385
sal_Int32 m_nIMax
Definition: ww8scan.hxx:299
void MakeFailedPLCF()
Definition: ww8scan.cxx:2348
int m_nStru
Definition: ww8scan.hxx:301
sal_Int32 GetIMax() const
Definition: ww8scan.hxx:326
bool Get(WW8_CP &rStart, WW8_CP &rEnd, void *&rpValue) const
Definition: ww8scan.cxx:2505
void SetIdx(sal_Int32 nI)
Definition: ww8scan.hxx:325
const void * GetData(sal_Int32 nInIdx) const
Definition: ww8scan.hxx:332
void TruncToSortedRange()
Definition: ww8scan.cxx:2380
sal_Int32 m_nIdx
Definition: ww8scan.hxx:300
bool SeekPos(WW8_CP nPos)
Definition: ww8scan.cxx:2469
sal_uInt8 * m_pPLCF_Contents
Definition: ww8scan.hxx:298
tools::Long m_nIdx
Definition: ww8scan.hxx:364
void SetIdx(tools::Long nI)
Definition: ww8scan.hxx:372
bool SeekPos(tools::Long nPos)
Definition: ww8scan.cxx:2567
tools::Long GetIMax() const
Definition: ww8scan.hxx:373
void advance()
Definition: ww8scan.hxx:377
WW8PLCFpcd_Iter(const WW8PLCFpcd_Iter &)=delete
WW8PLCFpcd_Iter & operator=(const WW8PLCFpcd_Iter &)=delete
sal_Int32 Where() const
Definition: ww8scan.cxx:2613
WW8PLCFpcd & m_rPLCF
Definition: ww8scan.hxx:363
bool Get(WW8_CP &rStart, WW8_CP &rEnd, void *&rpValue) const
Definition: ww8scan.cxx:2600
tools::Long GetIdx() const
Definition: ww8scan.hxx:371
WW8PLCFpcd & operator=(const WW8PLCFpcd &)=delete
std::unique_ptr< WW8_CP[]> m_pPLCF_PosArray
Definition: ww8scan.hxx:344
sal_Int32 m_nIMax
Definition: ww8scan.hxx:346
sal_uInt8 * m_pPLCF_Contents
Definition: ww8scan.hxx:345
sal_uInt32 m_nStru
Definition: ww8scan.hxx:347
void TruncToSortedRange()
Definition: ww8scan.cxx:2375
WW8PLCFpcd(const WW8PLCFpcd &)=delete
among others for fields, that is, the same number of attr as positions, if Ctor-Param bNoEnd = false
Definition: ww8scan.hxx:221
bool Get(WW8_CP &rStart, void *&rpValue) const
Definition: ww8scan.cxx:2244
sal_uInt8 * m_pPLCF_Contents
pointer to content-array-part of Pos-array
Definition: ww8scan.hxx:224
sal_Int32 GetPos(tools::Long nInIdx) const
Definition: ww8scan.hxx:251
bool GetData(tools::Long nIdx, WW8_CP &rPos, void *&rpValue) const
Definition: ww8scan.cxx:2249
WW8PLCFspecial & operator=(const WW8PLCFspecial &)=delete
std::unique_ptr< sal_Int32[]> m_pPLCF_PosArray
pointer to Pos-array and to the whole structure
Definition: ww8scan.hxx:223
bool SeekPosExact(tools::Long nPos)
Definition: ww8scan.cxx:2213
bool SeekPos(tools::Long nPos)
Definition: ww8scan.cxx:2178
WW8PLCFspecial(const WW8PLCFspecial &)=delete
tools::Long m_nIdx
marker where we currently are
Definition: ww8scan.hxx:226
void advance()
Definition: ww8scan.hxx:254
void SetIdx(tools::Long nI)
Definition: ww8scan.hxx:236
tools::Long m_nIMax
number of elements
Definition: ww8scan.hxx:225
tools::Long GetIdx() const
Definition: ww8scan.hxx:235
const void * GetData(tools::Long nInIdx) const
Definition: ww8scan.hxx:246
tools::Long GetIMax() const
Definition: ww8scan.hxx:237
sal_Int32 Where() const
Definition: ww8scan.hxx:241
sal_uInt32 m_nStru
Definition: ww8scan.hxx:227
Handles the import of PlcfAtnBkf and PlcfAtnBkl: start / end position of annotation marks.
Definition: ww8scan.hxx:790
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4584
bool getIsEnd() const
Definition: ww8scan.cxx:4666
std::unique_ptr< WW8PLCFspecial > m_pBook[2]
Start and end positions.
Definition: ww8scan.hxx:793
WW8PLCFx_AtnBook(const WW8PLCFx_AtnBook &)=delete
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4605
sal_Int32 m_nIMax
Number of annotation marks.
Definition: ww8scan.hxx:795
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:4576
virtual ~WW8PLCFx_AtnBook() override
Definition: ww8scan.cxx:4561
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4565
WW8PLCFx_AtnBook & operator=(const WW8PLCFx_AtnBook &)=delete
virtual void advance() override
Definition: ww8scan.cxx:4626
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4593
tools::Long getHandle() const
Handle is the unique ID of an annotation mark.
Definition: ww8scan.cxx:4650
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:4570
virtual tools::Long GetNoSprms(WW8_CP &rStart, WW8_CP &rEnd, sal_Int32 &rLen) override
Definition: ww8scan.cxx:4610
Iterator for Booknotes.
Definition: ww8scan.hxx:751
void MapName(OUString &rName)
Definition: ww8scan.cxx:4517
tools::Long GetHandle() const
Definition: ww8scan.cxx:4446
std::vector< eBookStatus > m_aStatus
Definition: ww8scan.hxx:755
sal_uInt16 m_nIsEnd
Definition: ww8scan.hxx:757
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4352
void SetStatus(sal_uInt16 nIndex, eBookStatus eStat)
Definition: ww8scan.cxx:4430
virtual void advance() override
Definition: ww8scan.cxx:4386
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:4320
std::vector< OUString > m_aBookNames
Definition: ww8scan.hxx:754
eBookStatus GetStatus() const
Definition: ww8scan.cxx:4438
OUString GetUniqueBookmarkName(const OUString &rSuggestedName)
Definition: ww8scan.cxx:4496
WW8PLCFx_Book(const WW8PLCFx_Book &)=delete
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4315
virtual tools::Long GetNoSprms(WW8_CP &rStart, WW8_CP &rEnd, sal_Int32 &rLen) override
Definition: ww8scan.cxx:4357
tools::Long GetIMax() const
Definition: ww8scan.hxx:766
OUString GetBookmark(tools::Long nStart, tools::Long nEnd, sal_uInt16 &nIndex)
Definition: ww8scan.cxx:4462
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4340
WW8_CP GetStartPos() const
Definition: ww8scan.hxx:776
sal_Int32 m_nBookmarkId
Definition: ww8scan.hxx:758
bool GetIsEnd() const
Definition: ww8scan.hxx:779
tools::Long GetLen() const
Definition: ww8scan.cxx:4410
tools::Long m_nIMax
Definition: ww8scan.hxx:756
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4331
const OUString * GetName() const
Definition: ww8scan.cxx:4534
virtual ~WW8PLCFx_Book() override
Definition: ww8scan.cxx:4311
WW8PLCFx_Book & operator=(const WW8PLCFx_Book &)=delete
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:4326
std::unique_ptr< WW8PLCFspecial > m_pBook[2]
Definition: ww8scan.hxx:753
iterator for Piece Table Exceptions of Fkps works on CPs (high-level)
Definition: ww8scan.hxx:634
std::unique_ptr< WW8PLCFx_PCD > m_pPcd
Definition: ww8scan.hxx:637
WW8PLCFpcd_Iter * m_pPieceIter
Definition: ww8scan.hxx:638
WW8PLCFx_Cp_FKP(const WW8PLCFx_Cp_FKP &)=delete
WW8PLCFx_Cp_FKP & operator=(const WW8PLCFx_Cp_FKP &)=delete
virtual WW8_CP Where() override
Definition: ww8scan.cxx:3405
virtual void Restore(const WW8PLCFxSave1 &rSave) override
Definition: ww8scan.cxx:5655
WW8_CP m_nAttrStart
Definition: ww8scan.hxx:639
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:5633
virtual void advance() override
Definition: ww8scan.cxx:3688
void ResetAttrStartEnd()
Definition: ww8scan.cxx:3379
virtual void Save(WW8PLCFxSave1 &rSave) const override
Definition: ww8scan.cxx:5644
const WW8ScannerBase & m_rSBase
Definition: ww8scan.hxx:636
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:3391
WW8_CP m_nAttrEnd
Definition: ww8scan.hxx:639
virtual ~WW8PLCFx_Cp_FKP() override
Definition: ww8scan.cxx:3375
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:3413
sal_uInt32 GetPCDIdx() const
Definition: ww8scan.cxx:3386
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:5638
Iterator for fields.
Definition: ww8scan.hxx:726
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:4089
bool GetPara(tools::Long nIdx, WW8FieldDesc &rF)
Definition: ww8scan.cxx:4136
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4053
WW8PLCFx_FLD & operator=(const WW8PLCFx_FLD &)=delete
virtual ~WW8PLCFx_FLD() override
Definition: ww8scan.cxx:4033
bool StartPosIsFieldStart()
Definition: ww8scan.cxx:4058
virtual void advance() override
Definition: ww8scan.cxx:4128
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4048
bool EndPosIsFieldEnd(WW8_CP &)
Definition: ww8scan.cxx:4065
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4037
WW8PLCFx_FLD(const WW8PLCFx_FLD &)=delete
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4042
const WW8Fib & m_rFib
Definition: ww8scan.hxx:729
std::unique_ptr< WW8PLCFspecial > m_pPLCF
Definition: ww8scan.hxx:728
Handles the import of PlcfBkfFactoid and PlcfBklFactoid: start / end position of factoids.
Definition: ww8scan.hxx:820
virtual ~WW8PLCFx_FactoidBook() override
Definition: ww8scan.cxx:4690
bool getIsEnd() const
Definition: ww8scan.cxx:4795
virtual void SetIdx2(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:4713
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:4694
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:4699
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:4722
tools::Long getHandle() const
Handle is the unique ID of a factoid mark.
Definition: ww8scan.cxx:4779
sal_Int32 m_nIMax
Number of factoid marks.
Definition: ww8scan.hxx:825
virtual sal_uInt32 GetIdx2() const override
Definition: ww8scan.cxx:4705
virtual WW8_CP Where() override
Definition: ww8scan.cxx:4734
WW8PLCFx_FactoidBook & operator=(const WW8PLCFx_FactoidBook &)=delete
WW8PLCFx_FactoidBook(const WW8PLCFx_FactoidBook &)=delete
std::unique_ptr< WW8PLCFspecial > m_pBook[2]
Start and end positions.
Definition: ww8scan.hxx:823
virtual void advance() override
Definition: ww8scan.cxx:4755
virtual tools::Long GetNoSprms(WW8_CP &rStart, WW8_CP &rEnd, sal_Int32 &rLen) override
Definition: ww8scan.cxx:4739
Entry & operator=(const Entry &rEntry)
Definition: ww8scan.cxx:2879
bool operator<(const Entry &rEntry) const
Definition: ww8scan.cxx:2622
sal_uInt16 GetIstd() const
Definition: ww8scan.hxx:559
WW8Fkp(const WW8Fib &rFib, SvStream *pFKPStrm, SvStream *pDataStrm, tools::Long _nFilePos, tools::Long nItemSiz, ePLCFT ePl, WW8_FC nStartFc)
Definition: ww8scan.cxx:2656
bool IsMustRemainCache() const
Definition: ww8scan.hxx:579
WW8_FC Where() const
Definition: ww8scan.hxx:549
sal_uInt8 GetIdx() const
Definition: ww8scan.hxx:546
sal_uInt8 * Get(WW8_FC &rStart, WW8_FC &rEnd, sal_Int32 &rLen) const
Definition: ww8scan.cxx:2948
void FillEntry(Entry &rEntry, std::size_t nDataOffset, sal_uInt16 nLen)
Definition: ww8scan.cxx:2637
void SetIdx(sal_uInt8 nI)
Definition: ww8scan.cxx:2966
const wwSprmParser & GetSprmParser() const
Definition: ww8scan.hxx:576
tools::Long m_nItemSize
Definition: ww8scan.hxx:526
tools::Long GetFilePos() const
Definition: ww8scan.hxx:545
tools::Long m_nFilePos
Definition: ww8scan.hxx:529
sal_uInt8 * GetLenAndIStdAndSprms(sal_Int32 &rLen) const
Definition: ww8scan.cxx:2974
bool SeekPos(WW8_FC nFc)
Definition: ww8scan.cxx:2916
void Reset(WW8_FC nPos)
Definition: ww8scan.cxx:2909
std::vector< Entry > maEntries
Definition: ww8scan.hxx:524
sal_uInt8 maRawData[512]
Definition: ww8scan.hxx:523
SprmResult HasSprm(sal_uInt16 nId, bool bFindFirst=true)
Definition: ww8scan.cxx:2980
wwSprmParser maSprmParser
Definition: ww8scan.hxx:535
Iterator for Piece Table Exceptions of Fkps works only with FCs, not with CPs ! ( Low-Level )
Definition: ww8scan.hxx:500
virtual sal_uInt16 GetIstd() const override
Definition: ww8scan.cxx:3259
virtual WW8_FC Where() override
Definition: ww8scan.cxx:3217
WW8PLCFx_Fc_FKP(const WW8PLCFx_Fc_FKP &)=delete
virtual bool SeekPos(WW8_FC nFcPos) override
Definition: ww8scan.cxx:3194
virtual ~WW8PLCFx_Fc_FKP() override
Definition: ww8scan.cxx:3160
SvStream * m_pFKPStrm
Definition: ww8scan.hxx:584
sal_uInt8 * GetSprmsAndPos(WW8_FC &rStart, WW8_FC &rEnd, sal_Int32 &rLen)
Definition: ww8scan.cxx:3229
bool HasFkp() const
Definition: ww8scan.hxx:629
WW8Fkp * m_pFkp
Definition: ww8scan.hxx:588
SprmResult HasSprm(sal_uInt16 nId, bool bFindFirst=true)
Definition: ww8scan.cxx:3280
SvStream * m_pDataStrm
Definition: ww8scan.hxx:585
std::deque< std::unique_ptr< WW8Fkp > > maFkpCache
Definition: ww8scan.hxx:603
virtual void advance() override
Definition: ww8scan.cxx:3246
std::unique_ptr< WW8PLCF > m_pPLCF
Definition: ww8scan.hxx:586
std::unique_ptr< WW8PLCFx_PCDAttrs > m_pPCDAttrs
Definition: ww8scan.hxx:613
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:3167
WW8PLCFx_Fc_FKP & operator=(const WW8PLCFx_Fc_FKP &)=delete
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:3175
ePLCFT m_ePLCF
Definition: ww8scan.hxx:612
void GetPCDSprms(WW8PLCFxDesc &rDesc)
Definition: ww8scan.cxx:3264
WW8PLCFx_PCDAttrs(const WW8PLCFx_PCDAttrs &)=delete
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:969
virtual WW8_CP Where() override
Definition: ww8scan.cxx:978
WW8PLCFx_PCD * m_pPcd
Definition: ww8scan.hxx:438
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:960
virtual void advance() override
Definition: ww8scan.cxx:974
SVBT32 m_aShortSprm
Definition: ww8scan.hxx:440
std::vector< std::unique_ptr< sal_uInt8[]> > const & mrGrpprls
Definition: ww8scan.hxx:439
WW8PLCFx_PCDAttrs & operator=(const WW8PLCFx_PCDAttrs &)=delete
WW8PLCFpcd_Iter * GetIter() const
Definition: ww8scan.hxx:456
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:965
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:983
WW8PLCFpcd_Iter * m_pPcdI
Definition: ww8scan.hxx:437
WW8_CP GetClipStart() const
Definition: ww8scan.hxx:486
static sal_Int32 TransformPieceAddress(tools::Long nfc, bool &bIsUnicodeAddress)
Definition: ww8scan.hxx:488
virtual void SetIdx(sal_uInt32 nI) override
Definition: ww8scan.cxx:1161
virtual WW8_CP Where() override
Definition: ww8scan.cxx:1172
virtual void advance() override
Definition: ww8scan.cxx:1190
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:1156
WW8PLCFpcd_Iter * GetPLCFIter()
Definition: ww8scan.hxx:484
virtual ~WW8PLCFx_PCD() override
Definition: ww8scan.cxx:1147
WW8_CP m_nClipStart
Definition: ww8scan.hxx:464
std::unique_ptr< WW8PLCFpcd_Iter > m_pPcdI
Definition: ww8scan.hxx:462
static void CurrentPieceFc2Cp(WW8_CP &rStartPos, WW8_CP &rEndPos, const WW8ScannerBase *pSBase)
Definition: ww8scan.cxx:1250
bool m_bVer67
Definition: ww8scan.hxx:463
sal_uInt32 GetIMax() const
Definition: ww8scan.cxx:1151
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:1167
virtual tools::Long GetNoSprms(WW8_CP &rStart, WW8_CP &, sal_Int32 &rLen) override
Definition: ww8scan.cxx:1177
void SetClipStart(WW8_CP nIn)
Definition: ww8scan.hxx:485
WW8PLCFx_PCD & operator=(const WW8PLCFx_PCD &)=delete
WW8_CP CurrentPieceStartFc2Cp(WW8_FC nStartPos)
Definition: ww8scan.cxx:1261
WW8PLCFx_PCD(const WW8PLCFx_PCD &)=delete
WW8_FC CurrentPieceStartCp2Fc(WW8_CP nCp)
Definition: ww8scan.cxx:1197
Iterator for Piece Table Exceptions of Sepx.
Definition: ww8scan.hxx:664
WW8PLCFx_SEPX & operator=(const WW8PLCFx_SEPX &)=delete
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:3821
SprmResult HasSprm(sal_uInt16 nId) const
Definition: ww8scan.cxx:3804
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:3745
virtual WW8_CP Where() override
Definition: ww8scan.cxx:3740
std::unique_ptr< WW8PLCF > m_pPLCF
Definition: ww8scan.hxx:668
wwSprmParser maSprmParser
Definition: ww8scan.hxx:666
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:3730
std::unique_ptr< sal_uInt8[]> m_pSprms
Definition: ww8scan.hxx:669
WW8PLCFx_SEPX(const WW8PLCFx_SEPX &)=delete
sal_uInt16 m_nArrMax
Definition: ww8scan.hxx:670
virtual ~WW8PLCFx_SEPX() override
Definition: ww8scan.cxx:3721
sal_uInt16 m_nSprmSiz
Definition: ww8scan.hxx:671
SvStream * m_pStrm
Definition: ww8scan.hxx:667
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:3735
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:3725
virtual void advance() override
Definition: ww8scan.cxx:3798
iterator for footnotes/endnotes and comments
Definition: ww8scan.hxx:696
virtual WW8_CP Where() override
Definition: ww8scan.cxx:3926
std::unique_ptr< WW8PLCF > m_pRef
Definition: ww8scan.hxx:698
virtual bool SeekPos(WW8_CP nCpPos) override
Definition: ww8scan.cxx:3921
std::unique_ptr< WW8PLCF > m_pText
Definition: ww8scan.hxx:699
tools::Long Count() const
Definition: ww8scan.hxx:721
const void * GetData() const
Definition: ww8scan.hxx:714
virtual void advance() override
Definition: ww8scan.cxx:3981
virtual ~WW8PLCFx_SubDoc() override
Definition: ww8scan.cxx:3897
virtual sal_uInt32 GetIdx() const override
Definition: ww8scan.cxx:3903
virtual void SetIdx(sal_uInt32 nIdx) override
Definition: ww8scan.cxx:3911
virtual void GetSprms(WW8PLCFxDesc *p) override
Definition: ww8scan.cxx:3931
WW8PLCFx_SubDoc & operator=(const WW8PLCFx_SubDoc &)=delete
WW8PLCFx_SubDoc(const WW8PLCFx_SubDoc &)=delete
virtual void SetIdx2(sal_uInt32 nIdx)
Definition: ww8scan.cxx:3043
virtual sal_uInt32 GetIdx() const =0
virtual WW8_FC Where()=0
void SetStartFc(WW8_FC nFc)
Definition: ww8scan.hxx:428
virtual void Restore(const WW8PLCFxSave1 &rSave)
Definition: ww8scan.cxx:5626
WW8_FC GetStartFc() const
Definition: ww8scan.hxx:429
virtual sal_uInt32 GetIdx2() const
Definition: ww8scan.cxx:3038
virtual void SetIdx(sal_uInt32 nIdx)=0
ww::WordVersion GetFIBVersion() const
Definition: ww8scan.cxx:3015
WW8PLCFx & operator=(const WW8PLCFx &)=delete
virtual void Save(WW8PLCFxSave1 &rSave) const
Definition: ww8scan.cxx:5618
virtual void GetSprms(WW8PLCFxDesc *p)
Definition: ww8scan.cxx:3020
void SetDirty(bool bIn)
Definition: ww8scan.hxx:430
WW8PLCFx(const WW8Fib &rFib, bool bSprm)
Definition: ww8scan.hxx:405
virtual ~WW8PLCFx()
Definition: ww8scan.hxx:412
bool IsSprm() const
Definition: ww8scan.hxx:413
WW8_FC m_nStartFc
Definition: ww8scan.hxx:398
bool GetDirty() const
Definition: ww8scan.hxx:431
const WW8Fib & GetFIB() const
Definition: ww8scan.hxx:427
WW8PLCFx(const WW8PLCFx &)=delete
const WW8Fib & mrFib
Definition: ww8scan.hxx:396
bool m_bDirty
Definition: ww8scan.hxx:399
bool m_bIsSprm
Definition: ww8scan.hxx:397
virtual void advance()=0
virtual tools::Long GetNoSprms(WW8_CP &rStart, WW8_CP &, sal_Int32 &rLen)
Definition: ww8scan.cxx:3029
virtual bool SeekPos(WW8_CP nCpPos)=0
virtual sal_uInt16 GetIstd() const
Definition: ww8scan.hxx:423
std::unique_ptr< WW8PLCFx_PCD > m_pPLCFx_PCD
Definition: ww8scan.hxx:1069
std::unique_ptr< WW8PLCFx_SubDoc > m_pFootnotePLCF
Definition: ww8scan.hxx:1042
std::unique_ptr< WW8PLCFx_Book > m_pBook
Definition: ww8scan.hxx:1062
bool AreThereEndnotes() const
Definition: ww8scan.hxx:1083
WW8Fib * m_pWw8Fib
Definition: ww8scan.hxx:1038
std::unique_ptr< WW8PLCFx_FLD > m_pFieldEdnPLCF
Definition: ww8scan.hxx:1050
std::unique_ptr< WW8PLCFspecial > m_pHdFtFdoa
Definition: ww8scan.hxx:1053
std::unique_ptr< WW8PLCFx_SEPX > m_pSepPLCF
Definition: ww8scan.hxx:1041
std::unique_ptr< WW8PLCFspecial > m_pSubdocs
Definition: ww8scan.hxx:1059
std::unique_ptr< WW8PLCFx_FLD > m_pFieldAndPLCF
Definition: ww8scan.hxx:1051
std::unique_ptr< WW8PLCFx_FLD > m_pFieldFootnotePLCF
Definition: ww8scan.hxx:1049
std::unique_ptr< WW8PLCFx_SubDoc > m_pEdnPLCF
Definition: ww8scan.hxx:1043
std::vector< std::unique_ptr< sal_uInt8[]> > m_aPieceGrpprls
Definition: ww8scan.hxx:1071
std::unique_ptr< WW8PLCFx_FLD > m_pFieldTxbxPLCF
Definition: ww8scan.hxx:1047
WW8ScannerBase(const WW8ScannerBase &)=delete
std::unique_ptr< WW8PLCFx_FactoidBook > m_pFactoidBook
Smart tag bookmarks.
Definition: ww8scan.hxx:1065
std::unique_ptr< WW8PLCFpcd > OpenPieceTable(SvStream *pStr, const WW8Fib *pWwF)
Definition: ww8scan.cxx:1678
std::unique_ptr< WW8PLCFx_FLD > m_pFieldPLCF
Definition: ww8scan.hxx:1045
WW8ScannerBase & operator=(const WW8ScannerBase &)=delete
std::unique_ptr< sal_uInt8[]> m_pExtendedAtrds
Definition: ww8scan.hxx:1061
std::unique_ptr< WW8PLCFx_PCDAttrs > m_pPLCFx_PCDAttrs
Definition: ww8scan.hxx:1070
std::unique_ptr< WW8PLCFx_Cp_FKP > m_pPapPLCF
Definition: ww8scan.hxx:1040
std::unique_ptr< WW8PLCFx_SubDoc > m_pAndPLCF
Definition: ww8scan.hxx:1044
std::unique_ptr< WW8PLCFspecial > m_pMagicTables
Definition: ww8scan.hxx:1058
std::unique_ptr< WW8PLCFspecial > m_pMainTxbxBkd
Definition: ww8scan.hxx:1055
std::unique_ptr< WW8PLCFx_FLD > m_pFieldHdFtPLCF
Definition: ww8scan.hxx:1046
std::unique_ptr< WW8PLCFspecial > m_pMainFdoa
Definition: ww8scan.hxx:1052
std::unique_ptr< WW8PLCFspecial > m_pMainTxbx
Definition: ww8scan.hxx:1054
std::unique_ptr< WW8PLCFspecial > m_pHdFtTxbx
Definition: ww8scan.hxx:1056
std::unique_ptr< WW8PLCFspecial > m_pHdFtTxbxBkd
Definition: ww8scan.hxx:1057
std::unique_ptr< WW8PLCFpcd_Iter > m_pPieceIter
Definition: ww8scan.hxx:1068
WW8_CP WW8Fc2Cp(WW8_FC nFcPos) const
Definition: ww8scan.cxx:1444
bool AreThereFootnotes() const
Definition: ww8scan.hxx:1082
std::unique_ptr< WW8PLCFx_Cp_FKP > m_pChpPLCF
Definition: ww8scan.hxx:1039
std::unique_ptr< WW8PLCFpcd > m_pPiecePLCF
Definition: ww8scan.hxx:1067
std::unique_ptr< WW8PLCFx_AtnBook > m_pAtnBook
Definition: ww8scan.hxx:1063
std::unique_ptr< WW8PLCFx_FLD > m_pFieldTxbxHdFtPLCF
Definition: ww8scan.hxx:1048
WW8_FC WW8Cp2Fc(WW8_CP nCpPos, bool *pIsUnicode=nullptr, WW8_CP *pNextPieceCp=nullptr, bool *pTestFlag=nullptr) const
Definition: ww8scan.cxx:1566
sal_Int32 WW8ReadString(SvStream &rStrm, OUString &rStr, WW8_CP nCurrentStartCp, tools::Long nTotalLen, rtl_TextEncoding eEnc) const
Definition: ww8scan.cxx:2089
simple Iterator for SPRMs
Definition: ww8scan.hxx:263
void UpdateMyMembers()
Definition: ww8scan.cxx:902
const sal_uInt8 * m_pCurrentParams
Definition: ww8scan.hxx:268
const sal_uInt8 * GetSprms() const
Definition: ww8scan.hxx:282
const wwSprmParser & mrSprmParser
Definition: ww8scan.hxx:265
WW8SprmIter(const WW8SprmIter &)=delete
sal_Int32 GetRemLen() const
Definition: ww8scan.hxx:286
WW8SprmIter & operator=(const WW8SprmIter &)=delete
const sal_uInt8 * GetCurrentParams() const
Definition: ww8scan.hxx:284
sal_uInt16 m_nCurrentId
Definition: ww8scan.hxx:269
sal_Int32 m_nCurrentSize
Definition: ww8scan.hxx:270
void SetSprms(const sal_uInt8 *pSprms_, sal_Int32 nLen_)
Definition: ww8scan.cxx:882
SprmResult FindSprm(sal_uInt16 nId, bool bFindFirst, const sal_uInt8 *pNextByteMatch=nullptr)
Definition: ww8scan.cxx:924
const sal_uInt8 * m_pSprms
Definition: ww8scan.hxx:267
sal_uInt16 GetCurrentId() const
Definition: ww8scan.hxx:285
sal_Int32 m_nRemLen
Definition: ww8scan.hxx:272
void advance()
Definition: ww8scan.cxx:889
WW8SprmIter(const sal_uInt8 *pSprms_, sal_Int32 nLen_, const wwSprmParser &rSprmParser)
Definition: ww8scan.cxx:875
sal_uInt16 m_nVerBuiltInNamesWhenSaved
Definition: ww8scan.hxx:1558
std::unique_ptr< WW8_STD > Read1STDFixed(sal_uInt16 &rSkip)
Definition: ww8scan.cxx:6972
std::unique_ptr< WW8_STD > Read1Style(sal_uInt16 &rSkip, OUString *pString)
Definition: ww8scan.cxx:7053
sal_uInt16 m_ftcFE
Definition: ww8scan.hxx:1562
sal_uInt16 m_istdMaxFixedWhenSaved
Definition: ww8scan.hxx:1557
sal_uInt16 m_ftcBi
Definition: ww8scan.hxx:1566
sal_uInt16 m_ftcAsci
Definition: ww8scan.hxx:1560
sal_uInt16 m_cstd
Definition: ww8scan.hxx:1552
sal_uInt16 m_ftcOther
Definition: ww8scan.hxx:1564
WW8Fib & m_rFib
Definition: ww8scan.hxx:1549
sal_uInt16 GetCount() const
Definition: ww8scan.hxx:1576
WW8Style & operator=(const WW8Style &)
WW8Style(const WW8Style &)
sal_uInt16 m_fStdStylenamesWritten
Definition: ww8scan.hxx:1554
SvStream & m_rStream
Definition: ww8scan.hxx:1550
sal_uInt16 m_cbSTDBaseInFile
Definition: ww8scan.hxx:1553
sal_uInt16 m_stiMaxWhenSaved
Definition: ww8scan.hxx:1556
wwSprmParser knows how to take a sequence of bytes and split it up into sprms and their arguments
Definition: ww8scan.hxx:114
sal_uInt16 GetSprmId(const sal_uInt8 *pSp) const
Return the SPRM id at the beginning of this byte sequence.
Definition: ww8scan.cxx:8459
static const wwSprmSearcher * GetWW8SprmSearcher()
Definition: ww8scan.cxx:442
sal_uInt8 mnDelta
Definition: ww8scan.hxx:117
wwSprmParser(const WW8Fib &rFib)
Definition: ww8scan.cxx:782
static const wwSprmSearcher * GetWW2SprmSearcher()
Definition: ww8scan.cxx:86
ww::WordVersion meVersion
Definition: ww8scan.hxx:116
const wwSprmSearcher * mpKnownSprms
Definition: ww8scan.hxx:118
ww::WordVersion GetFIBVersion() const
Definition: ww8scan.hxx:152
sal_Int32 DistanceToData(sal_uInt16 nId) const
Get known len of a sprms head, the bytes of the sprm id + any bytes reserved to hold a variable lengt...
Definition: ww8scan.cxx:8492
int MinSprmLen() const
The minimum acceptable sprm len possible for this type of parser.
Definition: ww8scan.hxx:146
static const wwSprmSearcher * GetWW6SprmSearcher(const WW8Fib &rFib)
Definition: ww8scan.cxx:237
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:8392
SprmInfo GetSprmInfo(sal_uInt16 nId) const
Definition: ww8scan.cxx:797
SprmResult findSprmData(sal_uInt16 nId, sal_uInt8 *pSprms, sal_Int32 nLen) const
Returns the offset to data of the first sprm of id nId, 0.
Definition: ww8scan.cxx:8497
sal_Int32 GetSprmSize(sal_uInt16 nId, const sal_uInt8 *pSprm, sal_Int32 nRemLen) const
Definition: ww8scan.cxx:8482
sal_uInt8 SprmDataOfs(sal_uInt16 nId) const
Definition: ww8scan.cxx:8487
SprmInfo const * search(sal_uInt16 id) const
Definition: ww8scan.hxx:78
void patchCJKVariant()
Definition: ww8scan.cxx:427
wwSprmSearcher(SprmInfoRow const *rows, std::size_t size, bool bPatchCJK=false)
Definition: ww8scan.hxx:69
std::unordered_map< sal_uInt16, SprmInfo > Map
Definition: ww8scan.hxx:84
float u
Definition: ww8scan.hxx:44
constexpr OUStringLiteral aCheckBox
Definition: ww8scan.hxx:49
constexpr OUStringLiteral aMSMacroCmds
Definition: ww8scan.hxx:52
constexpr OUStringLiteral aTextField
Definition: ww8scan.hxx:51
constexpr OUStringLiteral aObjectPool
Definition: ww8scan.hxx:45
constexpr OUStringLiteral aListBox
Definition: ww8scan.hxx:50
constexpr OUStringLiteral a0Table
Definition: ww8scan.hxx:47
constexpr OUStringLiteral aData
Definition: ww8scan.hxx:48
constexpr OUStringLiteral a1Table
Definition: ww8scan.hxx:46
size
int i
void SvStream & rStrm
const HdFtFlags WW8_HEADER_FIRST
Definition: ww8scan.hxx:1600
const HdFtFlags WW8_FOOTER_ODD
Definition: ww8scan.hxx:1599
const HdFtFlags WW8_FOOTER_EVEN
Definition: ww8scan.hxx:1598
const HdFtFlags WW8_HEADER_EVEN
Definition: ww8scan.hxx:1596
const HdFtFlags WW8_FOOTER_FIRST
Definition: ww8scan.hxx:1601
const HdFtFlags WW8_HEADER_ODD
Definition: ww8scan.hxx:1597
long Long
WordVersion
Definition: types.hxx:31
bool IsSevenMinus(WordVersion eVer)
Definition: types.hxx:32
sal_Int16 nId
sal_uInt8 SVBT32[4]
OUString read_uInt8_lenPrefixed_uInt8s_ToOUString(SvStream &rStrm, rtl_TextEncoding eEnc)
OUString read_uInt16_lenPrefixed_uInt16s_ToOUString(SvStream &rStrm)
SprmInfo info
Definition: ww8scan.hxx:63
sal_uInt16 nId
A ww8 sprm is hardcoded as 16bits.
Definition: ww8scan.hxx:62
unsigned int nLen
Definition: ww8scan.hxx:57
unsigned int nVari
Definition: ww8scan.hxx:58
const sal_uInt8 * pSprm
Definition: ww8scan.hxx:95
sal_Int32 nRemainingData
Definition: ww8scan.hxx:96
SprmResult()
Definition: ww8scan.hxx:97
SprmResult(const sal_uInt8 *pInSprm, sal_Int32 nInRemainingData)
Definition: ww8scan.hxx:102
Document Properties.
Definition: ww8scan.hxx:1606
bool fNoSpaceRaiseLower
Definition: ww8scan.hxx:1713
bool fShowBreaksInFrames
Definition: ww8scan.hxx:1722
bool fOnlyWinPics
Definition: ww8scan.hxx:1633
bool fCompatibilityOptions_Unknown1_24
Definition: ww8scan.hxx:1736
bool fCompatibilityOptions_Unknown2_17
Definition: ww8scan.hxx:1799
bool fCompatibilityOptions_Unknown2_19
Definition: ww8scan.hxx:1801
bool fCompatibilityOptions_Unknown2_11
Definition: ww8scan.hxx:1793
bool fPrintFormData
Definition: ww8scan.hxx:1689
bool fRevMarking
Definition: ww8scan.hxx:1639
bool fDfltTrueType
Definition: ww8scan.hxx:1647
bool fLiveRecover
Definition: ww8scan.hxx:1821
sal_Int32 cParas
Definition: ww8scan.hxx:1684
bool fDontUseHTMLAutoSpacing
Definition: ww8scan.hxx:1785
bool fRMPrint
Definition: ww8scan.hxx:1652
bool fCompatibilityOptions_Unknown2_14
Definition: ww8scan.hxx:1796
bool fDispFormFieldSel
Definition: ww8scan.hxx:1650
sal_Int32 cCh
Definition: ww8scan.hxx:1682
bool fCompatibilityOptions_Unknown1_13
Definition: ww8scan.hxx:1724
bool fReverseFolio
Definition: ww8scan.hxx:1826
bool fCompatibilityOptions_Unknown2_20
Definition: ww8scan.hxx:1802
sal_Int16 dywDispPag
Definition: ww8scan.hxx:1781
sal_uInt16 cConsecHypLim
Definition: ww8scan.hxx:1674
sal_uInt16 fUnknown3
Definition: ww8scan.hxx:1816
bool fCompatibilityOptions_Unknown2_6
Definition: ww8scan.hxx:1788
bool fWCFootnoteEdn
Definition: ww8scan.hxx:1693
sal_uInt16 grfSuppression
Definition: ww8scan.hxx:1622
sal_Int32 dttmRevised
Definition: ww8scan.hxx:1677
sal_uInt16 rncFootnote
Definition: ww8scan.hxx:1628
bool fShadeFormData
Definition: ww8scan.hxx:1691
bool fHaveVersions
Definition: ww8scan.hxx:1767
bool fCompatibilityOptions_Unknown1_25
Definition: ww8scan.hxx:1737
sal_Int32 cWords
Definition: ww8scan.hxx:1681
bool fHtmlDoc
Definition: ww8scan.hxx:1760
bool fWriteReservation
Definition: ww8scan.hxx:1653
bool fLockAtn
Definition: ww8scan.hxx:1644
bool copts_fNoTabForInd
Definition: ww8scan.hxx:1657
bool fCompatibilityOptions_Unknown1_29
Definition: ww8scan.hxx:1741
bool fFactoidXML
Definition: ww8scan.hxx:1823
bool fPMHMainDoc
Definition: ww8scan.hxx:1621
bool fOrigWordTableRules
Definition: ww8scan.hxx:1720
sal_Int32 cChFootnoteEdn
Definition: ww8scan.hxx:1696
sal_uInt32 GetCompatibilityOptions2() const
Definition: ww8scan.cxx:8050
bool fRotateFontW6
Definition: ww8scan.hxx:1704
bool fNoLeading
Definition: ww8scan.hxx:1732
bool fCompatibilityOptions_Unknown2_28
Definition: ww8scan.hxx:1810
bool fCompatibilityOptions_Unknown2_26
Definition: ww8scan.hxx:1808
sal_uInt16 wSpare2
Definition: ww8scan.hxx:1675
sal_uInt16 rncEdn
Definition: ww8scan.hxx:1685
bool fMapPrintTextColor
Definition: ww8scan.hxx:1716
bool fEmbedFactoids
Definition: ww8scan.hxx:1822
sal_uInt16 epc
Definition: ww8scan.hxx:1687
sal_Int16 cPgFootnoteEdn
Definition: ww8scan.hxx:1697
bool fCompatibilityOptions_Unknown2_12
Definition: ww8scan.hxx:1794
bool fTransparentMetafiles
Definition: ww8scan.hxx:1721
sal_Int32 lKeyProtDoc
Definition: ww8scan.hxx:1700
bool fCompatibilityOptions_Unknown1_16
Definition: ww8scan.hxx:1727
bool fExpShRtn
Definition: ww8scan.hxx:1725
bool copts_fMapPrintTextColor
Definition: ww8scan.hxx:1661
ErrCode nDopError
Definition: ww8scan.hxx:1609
bool fBackup
Definition: ww8scan.hxx:1640
bool fCompatibilityOptions_Unknown2_16
Definition: ww8scan.hxx:1798
bool fCompatibilityOptions_Unknown2_22
Definition: ww8scan.hxx:1804
sal_Int16 dxaTab
Definition: ww8scan.hxx:1671
bool fSuppressTopSpacingMac5
Definition: ww8scan.hxx:1728
sal_uInt16 wSpare
Definition: ww8scan.hxx:1672
bool fAutoHyphen
Definition: ww8scan.hxx:1636
bool fFolioPrint
Definition: ww8scan.hxx:1825
bool fCompatibilityOptions_Unknown2_25
Definition: ww8scan.hxx:1807
bool fIncludeHeader
Definition: ww8scan.hxx:1763
sal_Int16 nfcEdnRef
Definition: ww8scan.hxx:1779
bool fCompatibilityOptions_Unknown2_32
Definition: ww8scan.hxx:1814
sal_Int32 cParasFootnoteEdn
Definition: ww8scan.hxx:1698
bool fMirrorMargins
Definition: ww8scan.hxx:1645
bool fCompatibilityOptions_Unknown2_27
Definition: ww8scan.hxx:1809
bool fOutlineDirtySave
Definition: ww8scan.hxx:1630
bool iGutterPos
Definition: ww8scan.hxx:1705
bool fFormNoFields
Definition: ww8scan.hxx:1637
bool copts_fOrigWordTableRules
Definition: ww8scan.hxx:1665
sal_uInt16 zkSaved
Definition: ww8scan.hxx:1703
bool fCompatibilityOptions_Unknown2_21
Definition: ww8scan.hxx:1803
bool fReadOnlyRecommended
Definition: ww8scan.hxx:1646
sal_Int32 cChWSFootnoteEdn
Definition: ww8scan.hxx:1772
sal_uInt16 nFootnote
Definition: ww8scan.hxx:1629
sal_Int16 nfcFootnoteRef
Definition: ww8scan.hxx:1778
bool bUseThaiLineBreakingRules
Definition: ww8scan.hxx:1834
bool fCompatibilityOptions_Unknown2_8
Definition: ww8scan.hxx:1790
bool fCompatibilityOptions_Unknown2_24
Definition: ww8scan.hxx:1806
sal_Int16 cPg
Definition: ww8scan.hxx:1683
sal_uInt16 fpc
Definition: ww8scan.hxx:1623
sal_Int32 cChWS
Definition: ww8scan.hxx:1771
bool fSnapBorder
Definition: ww8scan.hxx:1762
bool fSaveFormData
Definition: ww8scan.hxx:1690
sal_Int32 cDBCFootnoteEdn
Definition: ww8scan.hxx:1776
bool fPagHidden
Definition: ww8scan.hxx:1642
void SetCompatibilityOptions(sal_uInt32 a32Bit)
Definition: ww8scan.cxx:7938
WW8Dop()
Definition: ww8scan.cxx:7871
bool fCompatibilityOptions_Unknown2_4
Definition: ww8scan.hxx:1786
bool fFactoidAllDone
Definition: ww8scan.hxx:1824
bool fCompatibilityOptions_Unknown1_26
Definition: ww8scan.hxx:1738
bool fLabelDoc
Definition: ww8scan.hxx:1634
bool fPrintBodyBeforeHdr
Definition: ww8scan.hxx:1731
bool fMinFontSizePag
Definition: ww8scan.hxx:1766
bool fCompatibilityOptions_Unknown2_13
Definition: ww8scan.hxx:1795
sal_Int16 adt
Definition: ww8scan.hxx:1751
bool fHyphCapitals
Definition: ww8scan.hxx:1635
sal_Int32 cLines
Definition: ww8scan.hxx:1694
sal_Int32 dttmLastPrint
Definition: ww8scan.hxx:1678
sal_uInt16 wvkSaved
Definition: ww8scan.hxx:1701
sal_Int32 cWordsFootnoteEnd
Definition: ww8scan.hxx:1695
bool fNoColumnBalance
Definition: ww8scan.hxx:1717
bool copts_fExpShRtn
Definition: ww8scan.hxx:1669
bool fCompatibilityOptions_Unknown1_23
Definition: ww8scan.hxx:1735
bool copts_fConvMailMergeEsc
Definition: ww8scan.hxx:1663
sal_uInt16 nEdn
Definition: ww8scan.hxx:1686
sal_Int32 cDBC
Definition: ww8scan.hxx:1775
bool fAutoVersion
Definition: ww8scan.hxx:1768
bool fExactCWords
Definition: ww8scan.hxx:1641
bool fForcePageSizePag
Definition: ww8scan.hxx:1765
bool copts_fSuppressSpbfAfterPgBrk
Definition: ww8scan.hxx:1659
sal_uInt16 grpfIhdt
Definition: ww8scan.hxx:1626
bool fCompatibilityOptions_Unknown2_10
Definition: ww8scan.hxx:1792
sal_Int32 dttmCreated
Definition: ww8scan.hxx:1676
bool fConvMailMergeEsc
Definition: ww8scan.hxx:1718
bool fSuppressSpbfAfterPageBreak
Definition: ww8scan.hxx:1714
bool fRMView
Definition: ww8scan.hxx:1651
bool fEmbedFonts
Definition: ww8scan.hxx:1655
bool fCompatibilityOptions_Unknown2_23
Definition: ww8scan.hxx:1805
bool fCompatibilityOptions_Unknown1_28
Definition: ww8scan.hxx:1740
bool fWordCompat
Definition: ww8scan.hxx:1820
bool fIncludeFooter
Definition: ww8scan.hxx:1764
bool fSwapBordersFacingPgs
Definition: ww8scan.hxx:1723
bool fCompatibilityOptions_Unknown2_2
Definition: ww8scan.hxx:1784
bool fWidowControl
Definition: ww8scan.hxx:1616
bool fCompatibilityOptions_Unknown2_7
Definition: ww8scan.hxx:1789
bool fUsePrinterMetrics
Definition: ww8scan.hxx:1744
bool fCompatibilityOptions_Unknown1_30
Definition: ww8scan.hxx:1742
sal_Int16 hpsZoomFontPag
Definition: ww8scan.hxx:1780
bool fAcetateShowInsDel
Definition: ww8scan.hxx:1831
sal_Int16 nRevision
Definition: ww8scan.hxx:1679
bool fCompatibilityOptions_Unknown2_9
Definition: ww8scan.hxx:1791
sal_uInt16 lvl
Definition: ww8scan.hxx:1758
bool fCompatibilityOptions_Unknown2_18
Definition: ww8scan.hxx:1800
bool fCompatibilityOptions_Unknown2_29
Definition: ww8scan.hxx:1811
sal_uInt16 wScaleSaved
Specifies the zoom percentage that was in use when the document was saved.
Definition: ww8scan.hxx:1702
bool copts_fNoSpaceRaiseLower
Definition: ww8scan.hxx:1658
bool fCompatibilityOptions_Unknown1_21
Definition: ww8scan.hxx:1733
bool copts_fNoColumnBalance
Definition: ww8scan.hxx:1662
bool fCompatibilityOptions_Unknown2_30
Definition: ww8scan.hxx:1812
bool fCompatibilityOptions_Unknown1_31
Definition: ww8scan.hxx:1743
bool fLockRev
Definition: ww8scan.hxx:1654
sal_uInt16 iTextLineEnding
Definition: ww8scan.hxx:1827
bool fAcetateShowMarkup
Definition: ww8scan.hxx:1829
bool fSuppressTopSpacing
Definition: ww8scan.hxx:1719
void Write(SvStream &rStrm, WW8Fib &rFib) const
Definition: ww8scan.cxx:8092
bool fCompatibilityOptions_Unknown1_27
Definition: ww8scan.hxx:1739
bool fLinkStyles
Definition: ww8scan.hxx:1638
bool fOnlyMacPics
Definition: ww8scan.hxx:1632
bool copts_fShowBreaksInFrames
Definition: ww8scan.hxx:1667
bool fAcetateShowAtn
Definition: ww8scan.hxx:1830
bool fPagResults
Definition: ww8scan.hxx:1643
bool fCompatibilityOptions_Unknown2_1
Definition: ww8scan.hxx:1783
bool copts_fSuppressTopSpacing
Definition: ww8scan.hxx:1664
bool fNoTabForInd
Definition: ww8scan.hxx:1712
bool fWrapTrailSpaces
Definition: ww8scan.hxx:1715
bool fPagSuppressTopSpacing
Definition: ww8scan.hxx:1648
sal_Int32 grfDocEvents
Definition: ww8scan.hxx:1773
WW8_DOGRID dogrid
Definition: ww8scan.hxx:1756
bool fCompatibilityOptions_Unknown2_31
Definition: ww8scan.hxx:1813
sal_uInt32 GetCompatibilityOptions() const
Definition: ww8scan.cxx:7975
sal_Int32 cLinesFootnoteEdn
Definition: ww8scan.hxx:1699
bool fHideFcc
Definition: ww8scan.hxx:1828
bool fCompatibilityOptions_Unknown2_5
Definition: ww8scan.hxx:1787
bool copts_fSwapBordersFacingPgs
Definition: ww8scan.hxx:1668
bool fFacingPages
Definition: ww8scan.hxx:1614
WW8DopTypography doptypography
Definition: ww8scan.hxx:1755
bool fProtEnabled
Definition: ww8scan.hxx:1649
bool fDoNotEmbedSystemFont
Definition: ww8scan.hxx:1819
bool fCompatibilityOptions_Unknown2_15
Definition: ww8scan.hxx:1797
sal_Int32 tmEdited
Definition: ww8scan.hxx:1680
bool fUseBackGroundInAllmodes
Definition: ww8scan.hxx:1817
void SetCompatibilityOptions2(sal_uInt32 a32Bit)
Definition: ww8scan.cxx:8014
bool fMWSmallCaps
Definition: ww8scan.hxx:1734
bool copts_fWrapTrailSpaces
Definition: ww8scan.hxx:1660
bool fAcetateShowProps
Definition: ww8scan.hxx:1832
bool copts_fTransparentMetafiles
Definition: ww8scan.hxx:1666
bool fCompatibilityOptions_Unknown1_15
Definition: ww8scan.hxx:1726
bool fTruncDxaExpand
Definition: ww8scan.hxx:1730
sal_uInt16 dxaHotZ
Definition: ww8scan.hxx:1673
sal_uInt16 nId
WW-id for fields.
Definition: ww8scan.hxx:197
WW8_CP nLen
total length (to skip over text)
Definition: ww8scan.hxx:192
sal_uInt8 nOpt
WW-Flags ( e.g.: changed by user )
Definition: ww8scan.hxx:198
WW8_CP nSCode
start of instructions code
Definition: ww8scan.hxx:193
bool bCodeNest
instruction used recursively
Definition: ww8scan.hxx:199
WW8_CP nLCode
length
Definition: ww8scan.hxx:194
WW8_CP nLRes
length ( == 0, if no result )
Definition: ww8scan.hxx:196
WW8_CP nSRes
start of result
Definition: ww8scan.hxx:195
bool bResNest
instruction inserted into result
Definition: ww8scan.hxx:200
sal_uInt8 nFlags
Definition: ww8scan.hxx:861
WW8_CP nCurrentCp
Definition: ww8scan.hxx:856
tools::Long nMemLen
Definition: ww8scan.hxx:854
const sal_uInt8 * pMemPos
Definition: ww8scan.hxx:857
sal_uInt16 nSprmId
Definition: ww8scan.hxx:858
tools::Long nCp2OrIdx
Definition: ww8scan.hxx:855
WW8_CP nOrigEndPos
Definition: ww8scan.hxx:890
bool bRealLineEnd
Definition: ww8scan.hxx:905
tools::Long nCpOfs
Definition: ww8scan.hxx:903
WW8_CP nEndPos
Definition: ww8scan.hxx:887
WW8_CP nStartPos
Definition: ww8scan.hxx:886
tools::Long nOrigSprmsLen
Definition: ww8scan.hxx:884
std::optional< std::stack< sal_uInt16 > > xIdStack
Definition: ww8scan.hxx:882
bool bFirstSprm
Definition: ww8scan.hxx:904
sal_Int32 nSprmsLen
Definition: ww8scan.hxx:902
WW8_CP nOrigStartPos
Definition: ww8scan.hxx:889
WW8_CP nCp2OrIdx
Definition: ww8scan.hxx:901
void Save(WW8PLCFxSave1 &rSave) const
Definition: ww8scan.cxx:5667
sal_Int16 nRelativeJustify
Definition: ww8scan.hxx:906
void ReduceByOffset()
Definition: ww8scan.cxx:4854
void Restore(const WW8PLCFxSave1 &rSave)
Definition: ww8scan.cxx:5691
const sal_uInt8 * pMemPos
Definition: ww8scan.hxx:883
WW8PLCFx * pPLCFx
Definition: ww8scan.hxx:881
WW8_CP nAttrStart
Definition: ww8scan.hxx:211
sal_uInt32 nPLCFxPos2
for PLCF_Cp_Fkp: PieceIter-Pos
Definition: ww8scan.hxx:206
tools::Long nPLCFxMemOfs
Definition: ww8scan.hxx:207
WW8_FC nStartFC
Definition: ww8scan.hxx:210
sal_uInt32 nPLCFxPos
Definition: ww8scan.hxx:205
WW8_CP nStartCp
for cp based iterator like PAP and CHP
Definition: ww8scan.hxx:208
WW8_CP nAttrEnd
Definition: ww8scan.hxx:212
tools::Long nCpOfs
Definition: ww8scan.hxx:209
WW8PLCFxSave1 aS[WW8PLCFMan::MAN_PLCF_COUNT]
Definition: ww8scan.hxx:1023
WW8PLCFxSaveAll()=default
This is what we use in the Parser (and Dumper)
Definition: ww8struc.hxx:222
unsigned char sal_uInt8
#define SAL_MAX_INT32
sal_uInt16 sal_Unicode
const sal_uInt16 lLetterWidth
Definition: ww8scan.hxx:1870
OUString read_uInt8_PascalString(SvStream &rStrm, rtl_TextEncoding eEnc)
Definition: ww8scan.hxx:157
eBookStatus
Definition: ww8scan.hxx:747
@ BOOK_IGNORE
Definition: ww8scan.hxx:747
@ BOOK_NORMAL
Definition: ww8scan.hxx:747
@ BOOK_FIELD
Definition: ww8scan.hxx:747
sal_uInt8 HdFtFlags
Definition: ww8scan.hxx:1593
ManMaskTypes
Definition: ww8scan.hxx:865
@ MAN_MASK_NEW_SEP
Definition: ww8scan.hxx:867
@ MAN_MASK_NEW_PAP
Definition: ww8scan.hxx:866
Word2CHPX ReadWord2Chpx(SvStream &rSt, std::size_t nOffset, sal_uInt8 nSize)
Definition: ww8par2.cxx:4160
std::vector< sal_uInt8 > ChpxToSprms(const Word2CHPX &rChpx)
Definition: ww8par2.cxx:4048
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:4152
ManTypes
Definition: ww8scan.hxx:871
@ MAN_HDFT
Definition: ww8scan.hxx:872
@ MAN_FTN
Definition: ww8scan.hxx:872
@ MAN_EDN
Definition: ww8scan.hxx:872
@ MAN_MAINTEXT
Definition: ww8scan.hxx:872
@ MAN_TXBX
Definition: ww8scan.hxx:873
@ MAN_AND
Definition: ww8scan.hxx:872
@ MAN_TXBX_HDFT
Definition: ww8scan.hxx:873
bool checkRead(SvStream &rSt, void *pDest, sal_uInt32 nLength)
Definition: ww8scan.cxx:8544
OUString read_uInt16_BeltAndBracesString(SvStream &rStrm)
Definition: ww8scan.cxx:2082
const sal_uInt16 lLetterHeight
Definition: ww8scan.hxx:1871
ePLCFT
Definition: ww8scan.hxx:385
@ CHP
Definition: ww8scan.hxx:385
@ PAP
Definition: ww8scan.hxx:385
@ SEP
Definition: ww8scan.hxx:385
@ PLCF_END
Definition: ww8scan.hxx:385
eExtSprm
Definition: ww8scan.hxx:388
@ eFTN
Definition: ww8scan.hxx:388
@ eBKN
Definition: ww8scan.hxx:388
@ eEDN
Definition: ww8scan.hxx:388
@ eFLD
Definition: ww8scan.hxx:388
@ eATNBKN
Definition: ww8scan.hxx:388
@ eAND
Definition: ww8scan.hxx:388
@ eFACTOIDBKN
Definition: ww8scan.hxx:388
OUString read_uInt8_BeltAndBracesString(SvStream &rStrm, rtl_TextEncoding eEnc)
Definition: ww8scan.cxx:2075
OUString read_uInt16_PascalString(SvStream &rStrm)
Definition: ww8scan.hxx:162
sal_Int16 WW8_PN
Definition: ww8struc.hxx:151
sal_Int32 WW8_CP
Definition: ww8struc.hxx:153
sal_Int32 WW8_FC
Definition: ww8struc.hxx:152
const WW8_FC WW8_FC_MAX
Definition: ww8struc.hxx:155
const WW8_CP WW8_CP_MAX
Definition: ww8struc.hxx:156