1
/* This file is part of the wvWare 2 project
2
Copyright (C) 2001 Werner Trobin <trobin@kde.org>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the Library GNU General Public
6
version 2 of the License, or (at your option) version 3 or,
7
at the discretion of KDE e.V (which shall act as a proxy as in
8
section 14 of the GPLv3), any later version..
10
This library is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
Library General Public License for more details.
15
You should have received a copy of the GNU Library General Public License
16
along with this library; see the file COPYING.LIB. If not, write to
17
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18
Boston, MA 02110-1301, USA.
21
// This code is generated from the Microsoft HTML specification of the
22
// WinWord format. Do NOT edit this code, but fix the spec or the script
23
// generating the sources. If you want to add some additional code, some
24
// includes or any other stuff, please add it to the template file!
25
// For information about the script and the "hidden features" please read
26
// the comments at the begin of the script.
28
// If you find bugs or strange behavior please contact Werner Trobin
31
#include <word95_generated.h>
32
#include <olestream.h>
33
#include <string.h> // memset(), memcpy()
41
// DTTM implementation
47
DTTM::DTTM(OLEStreamReader *stream, bool preservePos) {
49
read(stream, preservePos);
52
DTTM::DTTM(const U8 *ptr) {
57
bool DTTM::read(OLEStreamReader *stream, bool preservePos) {
64
shifterU16=stream->readU16();
70
shifterU16=stream->readU16();
82
void DTTM::readPtr(const U8 *ptr) {
86
shifterU16=readU16(ptr);
93
shifterU16=readU16(ptr);
102
bool DTTM::write(OLEStreamWriter *stream, bool preservePos) const {
111
shifterU16|=dom << 11;
112
stream->write(shifterU16);
115
shifterU16|=wdy << 13;
116
stream->write(shifterU16);
132
void DTTM::dump() const
134
wvlog << "Dumping DTTM:" << endl;
135
wvlog << toString().c_str() << endl;
136
wvlog << "\nDumping DTTM done." << endl;
139
std::string DTTM::toString() const
141
std::string s( "DTTM:" );
143
s += uint2string( mint );
145
s += uint2string( hr );
147
s += uint2string( dom );
149
s += uint2string( mon );
151
s += uint2string( yr );
153
s += uint2string( wdy );
158
bool operator==(const DTTM &lhs, const DTTM &rhs) {
160
return lhs.mint==rhs.mint &&
168
bool operator!=(const DTTM &lhs, const DTTM &rhs) {
173
// PRM2 implementation
179
PRM2::PRM2(OLEStreamReader *stream, bool preservePos) {
181
read(stream, preservePos);
184
bool PRM2::read(OLEStreamReader *stream, bool preservePos) {
191
shifterU16=stream->readU16();
201
bool PRM2::write(OLEStreamWriter *stream, bool preservePos) const {
209
shifterU16|=igrpprl << 1;
210
stream->write(shifterU16);
222
bool operator==(const PRM2 &lhs, const PRM2 &rhs) {
224
return lhs.fComplex==rhs.fComplex &&
225
lhs.igrpprl==rhs.igrpprl;
228
bool operator!=(const PRM2 &lhs, const PRM2 &rhs) {
233
// PRM implementation
235
const unsigned int PRM::sizeOf = 2;
241
PRM::PRM(OLEStreamReader *stream, bool preservePos) {
243
read(stream, preservePos);
246
PRM::PRM(const U8 *ptr) {
251
bool PRM::read(OLEStreamReader *stream, bool preservePos) {
258
shifterU8=stream->readU8();
262
val=stream->readU8();
269
void PRM::readPtr(const U8 *ptr) {
273
shifterU8=readU8(ptr);
282
bool PRM::write(OLEStreamWriter *stream, bool preservePos) const {
290
shifterU8|=sprm << 1;
291
stream->write(shifterU8);
305
bool operator==(const PRM &lhs, const PRM &rhs) {
307
return lhs.fComplex==rhs.fComplex &&
308
lhs.sprm==rhs.sprm &&
312
bool operator!=(const PRM &lhs, const PRM &rhs) {
317
// SHD implementation
323
SHD::SHD(OLEStreamReader *stream, bool preservePos) {
325
read(stream, preservePos);
328
SHD::SHD(const U8 *ptr) {
333
bool SHD::read(OLEStreamReader *stream, bool preservePos) {
340
shifterU16=stream->readU16();
352
void SHD::readPtr(const U8 *ptr) {
356
shifterU16=readU16(ptr);
365
bool SHD::write(OLEStreamWriter *stream, bool preservePos) const {
373
shifterU16|=icoBack << 5;
374
shifterU16|=ipat << 10;
375
stream->write(shifterU16);
388
void SHD::dump() const
390
wvlog << "Dumping SHD:" << endl;
391
wvlog << toString().c_str() << endl;
392
wvlog << "\nDumping SHD done." << endl;
395
std::string SHD::toString() const
397
std::string s( "SHD:" );
399
s += uint2string( icoFore );
401
s += uint2string( icoBack );
403
s += uint2string( ipat );
408
bool operator==(const SHD &lhs, const SHD &rhs) {
410
return lhs.icoFore==rhs.icoFore &&
411
lhs.icoBack==rhs.icoBack &&
415
bool operator!=(const SHD &lhs, const SHD &rhs) {
420
// PHE implementation
422
const unsigned int PHE::sizeOf = 6;
428
PHE::PHE(OLEStreamReader *stream, bool preservePos) {
430
read(stream, preservePos);
433
PHE::PHE(const U8 *ptr) {
438
bool PHE::read(OLEStreamReader *stream, bool preservePos) {
445
shifterU16=stream->readU16();
450
fDiffLines=shifterU16;
452
unused0_3=shifterU16;
455
dxaCol=stream->readU16();
456
dylLine_dylHeight=stream->readU16();
463
void PHE::readPtr(const U8 *ptr) {
467
shifterU16=readU16(ptr);
473
fDiffLines=shifterU16;
475
unused0_3=shifterU16;
480
dylLine_dylHeight=readU16(ptr);
484
bool PHE::write(OLEStreamWriter *stream, bool preservePos) const {
492
shifterU16|=fUnk << 1;
493
shifterU16|=fDiffLines << 2;
494
shifterU16|=unused0_3 << 3;
495
shifterU16|=clMac << 8;
496
stream->write(shifterU16);
497
stream->write(dxaCol);
498
stream->write(dylLine_dylHeight);
515
void PHE::dump() const
517
wvlog << "Dumping PHE:" << endl;
518
wvlog << toString().c_str() << endl;
519
wvlog << "\nDumping PHE done." << endl;
522
std::string PHE::toString() const
524
std::string s( "PHE:" );
526
s += uint2string( fSpare );
528
s += uint2string( fUnk );
529
s += "\nfDiffLines=";
530
s += uint2string( fDiffLines );
532
s += uint2string( unused0_3 );
534
s += uint2string( clMac );
536
s += uint2string( dxaCol );
537
s += "\ndylLine_dylHeight=";
538
s += uint2string( dylLine_dylHeight );
543
bool operator==(const PHE &lhs, const PHE &rhs) {
545
return lhs.fSpare==rhs.fSpare &&
546
lhs.fUnk==rhs.fUnk &&
547
lhs.fDiffLines==rhs.fDiffLines &&
548
lhs.unused0_3==rhs.unused0_3 &&
549
lhs.clMac==rhs.clMac &&
550
lhs.dxaCol==rhs.dxaCol &&
551
lhs.dylLine_dylHeight==rhs.dylLine_dylHeight;
554
bool operator!=(const PHE &lhs, const PHE &rhs) {
559
// BRC implementation
561
const unsigned int BRC::sizeOf = 2;
567
BRC::BRC(OLEStreamReader *stream, bool preservePos) {
569
read(stream, preservePos);
572
BRC::BRC(const U8 *ptr) {
577
bool BRC::read(OLEStreamReader *stream, bool preservePos) {
584
shifterU16=stream->readU16();
585
dxpLineWidth=shifterU16;
600
void BRC::readPtr(const U8 *ptr) {
604
shifterU16=readU16(ptr);
606
dxpLineWidth=shifterU16;
617
bool BRC::write(OLEStreamWriter *stream, bool preservePos) const {
624
shifterU16=dxpLineWidth;
625
shifterU16|=brcType << 3;
626
shifterU16|=fShadow << 5;
627
shifterU16|=ico << 6;
628
shifterU16|=dxpSpace << 11;
629
stream->write(shifterU16);
644
void BRC::dump() const
646
wvlog << "Dumping BRC:" << endl;
647
wvlog << toString().c_str() << endl;
648
wvlog << "\nDumping BRC done." << endl;
651
std::string BRC::toString() const
653
std::string s( "BRC:" );
654
s += "\ndxpLineWidth=";
655
s += uint2string( dxpLineWidth );
657
s += uint2string( brcType );
659
s += uint2string( fShadow );
661
s += uint2string( ico );
663
s += uint2string( dxpSpace );
668
bool operator==(const BRC &lhs, const BRC &rhs) {
670
return lhs.dxpLineWidth==rhs.dxpLineWidth &&
671
lhs.brcType==rhs.brcType &&
672
lhs.fShadow==rhs.fShadow &&
674
lhs.dxpSpace==rhs.dxpSpace;
677
bool operator!=(const BRC &lhs, const BRC &rhs) {
682
// TLP implementation
688
TLP::TLP(OLEStreamReader *stream, bool preservePos) {
690
read(stream, preservePos);
693
TLP::TLP(const U8 *ptr) {
698
bool TLP::read(OLEStreamReader *stream, bool preservePos) {
705
itl=stream->readU16();
706
shifterU16=stream->readU16();
725
unused2_9=shifterU16;
732
void TLP::readPtr(const U8 *ptr) {
738
shifterU16=readU16(ptr);
758
unused2_9=shifterU16;
761
bool TLP::write(OLEStreamWriter *stream, bool preservePos) const {
770
shifterU16|=fShading << 1;
771
shifterU16|=fFont << 2;
772
shifterU16|=fColor << 3;
773
shifterU16|=fBestFit << 4;
774
shifterU16|=fHdrRows << 5;
775
shifterU16|=fLastRow << 6;
776
shifterU16|=fHdrCols << 7;
777
shifterU16|=fLastCol << 8;
778
shifterU16|=unused2_9 << 9;
779
stream->write(shifterU16);
800
void TLP::dump() const
802
wvlog << "Dumping TLP:" << endl;
803
wvlog << toString().c_str() << endl;
804
wvlog << "\nDumping TLP done." << endl;
807
std::string TLP::toString() const
809
std::string s( "TLP:" );
811
s += uint2string( itl );
813
s += uint2string( fBorders );
815
s += uint2string( fShading );
817
s += uint2string( fFont );
819
s += uint2string( fColor );
821
s += uint2string( fBestFit );
823
s += uint2string( fHdrRows );
825
s += uint2string( fLastRow );
827
s += uint2string( fHdrCols );
829
s += uint2string( fLastCol );
831
s += uint2string( unused2_9 );
836
bool operator==(const TLP &lhs, const TLP &rhs) {
838
return lhs.itl==rhs.itl &&
839
lhs.fBorders==rhs.fBorders &&
840
lhs.fShading==rhs.fShading &&
841
lhs.fFont==rhs.fFont &&
842
lhs.fColor==rhs.fColor &&
843
lhs.fBestFit==rhs.fBestFit &&
844
lhs.fHdrRows==rhs.fHdrRows &&
845
lhs.fLastRow==rhs.fLastRow &&
846
lhs.fHdrCols==rhs.fHdrCols &&
847
lhs.fLastCol==rhs.fLastCol &&
848
lhs.unused2_9==rhs.unused2_9;
851
bool operator!=(const TLP &lhs, const TLP &rhs) {
858
const unsigned int TC::sizeOf = 10;
864
TC::TC(OLEStreamReader *stream, bool preservePos) {
866
read(stream, preservePos);
869
TC::TC(const U8 *ptr) {
874
bool TC::read(OLEStreamReader *stream, bool preservePos) {
881
shifterU16=stream->readU16();
882
fFirstMerged=shifterU16;
887
brcTop.read(stream, false);
888
brcLeft.read(stream, false);
889
brcBottom.read(stream, false);
890
brcRight.read(stream, false);
897
void TC::readPtr(const U8 *ptr) {
901
shifterU16=readU16(ptr);
903
fFirstMerged=shifterU16;
910
brcLeft.readPtr(ptr);
912
brcBottom.readPtr(ptr);
914
brcRight.readPtr(ptr);
918
bool TC::write(OLEStreamWriter *stream, bool preservePos) const {
925
shifterU16=fFirstMerged;
926
shifterU16|=fMerged << 1;
927
shifterU16|=fUnused << 2;
928
stream->write(shifterU16);
929
brcTop.write(stream, false);
930
brcLeft.write(stream, false);
931
brcBottom.write(stream, false);
932
brcRight.write(stream, false);
949
void TC::dump() const
951
wvlog << "Dumping TC:" << endl;
952
wvlog << toString().c_str() << endl;
953
wvlog << "\nDumping TC done." << endl;
956
std::string TC::toString() const
958
std::string s( "TC:" );
959
s += "\nfFirstMerged=";
960
s += uint2string( fFirstMerged );
962
s += uint2string( fMerged );
964
s += uint2string( fUnused );
966
s += "\n{" + brcTop.toString() + "}\n";
968
s += "\n{" + brcLeft.toString() + "}\n";
970
s += "\n{" + brcBottom.toString() + "}\n";
972
s += "\n{" + brcRight.toString() + "}\n";
977
bool operator==(const TC &lhs, const TC &rhs) {
979
return lhs.fFirstMerged==rhs.fFirstMerged &&
980
lhs.fMerged==rhs.fMerged &&
981
lhs.fUnused==rhs.fUnused &&
982
lhs.brcTop==rhs.brcTop &&
983
lhs.brcLeft==rhs.brcLeft &&
984
lhs.brcBottom==rhs.brcBottom &&
985
lhs.brcRight==rhs.brcRight;
988
bool operator!=(const TC &lhs, const TC &rhs) {
993
// DPHEAD implementation
999
DPHEAD::DPHEAD(OLEStreamReader *stream, bool preservePos) {
1001
read(stream, preservePos);
1004
bool DPHEAD::read(OLEStreamReader *stream, bool preservePos) {
1009
dpk=stream->readU16();
1010
cb=stream->readU16();
1011
xa=stream->readU16();
1012
ya=stream->readU16();
1013
dxa=stream->readU16();
1014
dya=stream->readU16();
1021
bool DPHEAD::write(OLEStreamWriter *stream, bool preservePos) const {
1038
void DPHEAD::clear() {
1047
bool operator==(const DPHEAD &lhs, const DPHEAD &rhs) {
1049
return lhs.dpk==rhs.dpk &&
1057
bool operator!=(const DPHEAD &lhs, const DPHEAD &rhs) {
1062
// DPTXBX implementation
1068
DPTXBX::DPTXBX(OLEStreamReader *stream, bool preservePos) {
1070
read(stream, preservePos);
1073
bool DPTXBX::read(OLEStreamReader *stream, bool preservePos) {
1080
dphead.read(stream, false);
1081
lnpc=stream->readU32();
1082
lnpw=stream->readU16();
1083
lnps=stream->readU16();
1084
dlpcFg=stream->readU32();
1085
dlpcBg=stream->readU32();
1086
flpp=stream->readU16();
1087
shdwpi=stream->readU16();
1088
xaOffset=stream->readU16();
1089
yaOffset=stream->readU16();
1090
shifterU16=stream->readU16();
1091
fRoundCorners=shifterU16;
1094
dzaInternalMargin=stream->readU16();
1101
bool DPTXBX::write(OLEStreamWriter *stream, bool preservePos) const {
1108
dphead.write(stream, false);
1109
stream->write(lnpc);
1110
stream->write(lnpw);
1111
stream->write(lnps);
1112
stream->write(dlpcFg);
1113
stream->write(dlpcBg);
1114
stream->write(flpp);
1115
stream->write(shdwpi);
1116
stream->write(xaOffset);
1117
stream->write(yaOffset);
1118
shifterU16=fRoundCorners;
1119
shifterU16|=zaShape << 1;
1120
stream->write(shifterU16);
1121
stream->write(dzaInternalMargin);
1128
void DPTXBX::clear() {
1141
dzaInternalMargin=0;
1144
bool operator==(const DPTXBX &lhs, const DPTXBX &rhs) {
1146
return lhs.dphead==rhs.dphead &&
1147
lhs.lnpc==rhs.lnpc &&
1148
lhs.lnpw==rhs.lnpw &&
1149
lhs.lnps==rhs.lnps &&
1150
lhs.dlpcFg==rhs.dlpcFg &&
1151
lhs.dlpcBg==rhs.dlpcBg &&
1152
lhs.flpp==rhs.flpp &&
1153
lhs.shdwpi==rhs.shdwpi &&
1154
lhs.xaOffset==rhs.xaOffset &&
1155
lhs.yaOffset==rhs.yaOffset &&
1156
lhs.fRoundCorners==rhs.fRoundCorners &&
1157
lhs.zaShape==rhs.zaShape &&
1158
lhs.dzaInternalMargin==rhs.dzaInternalMargin;
1161
bool operator!=(const DPTXBX &lhs, const DPTXBX &rhs) {
1166
// DPPOLYLINE implementation
1168
DPPOLYLINE::DPPOLYLINE() {
1172
DPPOLYLINE::DPPOLYLINE(OLEStreamReader *stream, bool preservePos) {
1174
read(stream, preservePos);
1177
DPPOLYLINE::DPPOLYLINE(const DPPOLYLINE &rhs) {
1185
eppsStart=rhs.eppsStart;
1186
eppwStart=rhs.eppwStart;
1187
epplStart=rhs.epplStart;
1188
unused30_6=rhs.unused30_6;
1189
eppsEnd=rhs.eppsEnd;
1190
eppwEnd=rhs.eppwEnd;
1191
epplEnd=rhs.epplEnd;
1192
unused32_6=rhs.unused32_6;
1194
xaOffset=rhs.xaOffset;
1195
yaOffset=rhs.yaOffset;
1196
fPolygon=rhs.fPolygon;
1198
xaFirst=rhs.xaFirst;
1199
yaFirst=rhs.yaFirst;
1205
DPPOLYLINE::~DPPOLYLINE() {
1209
DPPOLYLINE &DPPOLYLINE::operator=(const DPPOLYLINE &rhs) {
1211
// Check for assignment to self
1222
eppsStart=rhs.eppsStart;
1223
eppwStart=rhs.eppwStart;
1224
epplStart=rhs.epplStart;
1225
unused30_6=rhs.unused30_6;
1226
eppsEnd=rhs.eppsEnd;
1227
eppwEnd=rhs.eppwEnd;
1228
epplEnd=rhs.epplEnd;
1229
unused32_6=rhs.unused32_6;
1231
xaOffset=rhs.xaOffset;
1232
yaOffset=rhs.yaOffset;
1233
fPolygon=rhs.fPolygon;
1235
xaFirst=rhs.xaFirst;
1236
yaFirst=rhs.yaFirst;
1244
bool DPPOLYLINE::read(OLEStreamReader *stream, bool preservePos) {
1251
dphead.read(stream, false);
1252
lnpc=stream->readU32();
1253
lnpw=stream->readU16();
1254
lnps=stream->readU16();
1255
dlpcFg=stream->readU32();
1256
dlpcBg=stream->readU32();
1257
flpp=stream->readU16();
1258
shifterU16=stream->readU16();
1259
eppsStart=shifterU16;
1261
eppwStart=shifterU16;
1263
epplStart=shifterU16;
1265
unused30_6=shifterU16;
1266
shifterU16=stream->readU16();
1273
unused32_6=shifterU16;
1274
shdwpi=stream->readU16();
1275
xaOffset=stream->readU16();
1276
yaOffset=stream->readU16();
1277
shifterU16=stream->readU16();
1278
fPolygon=shifterU16;
1281
xaFirst=stream->readU16();
1282
yaFirst=stream->readU16();
1283
xaEnd=stream->readU16();
1284
yaEnd=stream->readU16();
1285
// Attention: I don't know how to read rgpta - U16[]
1287
#warning "Couldn't generate reading code for DPPOLYLINE::rgpta"
1295
bool DPPOLYLINE::write(OLEStreamWriter *stream, bool preservePos) const {
1302
dphead.write(stream, false);
1303
stream->write(lnpc);
1304
stream->write(lnpw);
1305
stream->write(lnps);
1306
stream->write(dlpcFg);
1307
stream->write(dlpcBg);
1308
stream->write(flpp);
1309
shifterU16=eppsStart;
1310
shifterU16|=eppwStart << 2;
1311
shifterU16|=epplStart << 4;
1312
shifterU16|=unused30_6 << 6;
1313
stream->write(shifterU16);
1315
shifterU16|=eppwEnd << 2;
1316
shifterU16|=epplEnd << 4;
1317
shifterU16|=unused32_6 << 6;
1318
stream->write(shifterU16);
1319
stream->write(shdwpi);
1320
stream->write(xaOffset);
1321
stream->write(yaOffset);
1322
shifterU16=fPolygon;
1323
shifterU16|=cpt << 1;
1324
stream->write(shifterU16);
1325
stream->write(xaFirst);
1326
stream->write(yaFirst);
1327
stream->write(xaEnd);
1328
stream->write(yaEnd);
1329
// Attention: I don't know how to write rgpta - U16[]
1331
#warning "Couldn't generate writing code for DPPOLYLINE::rgpta"
1339
void DPPOLYLINE::clear() {
1344
void DPPOLYLINE::clearInternal() {
1372
bool operator==(const DPPOLYLINE &lhs, const DPPOLYLINE &rhs) {
1373
// Attention: I don't know how to compare rgpta - U16[]
1375
#warning "Can't compare DPPOLYLINE::rgpta items"
1378
return lhs.dphead==rhs.dphead &&
1379
lhs.lnpc==rhs.lnpc &&
1380
lhs.lnpw==rhs.lnpw &&
1381
lhs.lnps==rhs.lnps &&
1382
lhs.dlpcFg==rhs.dlpcFg &&
1383
lhs.dlpcBg==rhs.dlpcBg &&
1384
lhs.flpp==rhs.flpp &&
1385
lhs.eppsStart==rhs.eppsStart &&
1386
lhs.eppwStart==rhs.eppwStart &&
1387
lhs.epplStart==rhs.epplStart &&
1388
lhs.unused30_6==rhs.unused30_6 &&
1389
lhs.eppsEnd==rhs.eppsEnd &&
1390
lhs.eppwEnd==rhs.eppwEnd &&
1391
lhs.epplEnd==rhs.epplEnd &&
1392
lhs.unused32_6==rhs.unused32_6 &&
1393
lhs.shdwpi==rhs.shdwpi &&
1394
lhs.xaOffset==rhs.xaOffset &&
1395
lhs.yaOffset==rhs.yaOffset &&
1396
lhs.fPolygon==rhs.fPolygon &&
1398
lhs.xaFirst==rhs.xaFirst &&
1399
lhs.yaFirst==rhs.yaFirst &&
1400
lhs.xaEnd==rhs.xaEnd &&
1401
lhs.yaEnd==rhs.yaEnd;
1404
bool operator!=(const DPPOLYLINE &lhs, const DPPOLYLINE &rhs) {
1409
// TAP implementation
1411
TAP::TAP() : Shared() {
1415
TAP::TAP(OLEStreamReader *stream, bool preservePos) : Shared() {
1417
read(stream, preservePos);
1420
TAP::TAP(const TAP &rhs) : Shared() {
1422
dxaGapHalf=rhs.dxaGapHalf;
1423
dyaRowHeight=rhs.dyaRowHeight;
1424
fCantSplit=rhs.fCantSplit;
1425
fTableHeader=rhs.fTableHeader;
1427
fCaFull=rhs.fCaFull;
1428
fFirstRow=rhs.fFirstRow;
1429
fLastRow=rhs.fLastRow;
1430
fOutline=rhs.fOutline;
1431
unused12_4=rhs.unused12_4;
1433
dxaAdjust=rhs.dxaAdjust;
1434
rgdxaCenter=new U16[itcMac + 1];
1435
memcpy(rgdxaCenter, rhs.rgdxaCenter, sizeof(U16)*(itcMac + 1));
1436
rgtc=new TC[itcMac];
1437
memcpy(rgtc, rhs.rgtc, sizeof(TC)*(itcMac));
1438
rgshd=new SHD[itcMac];
1439
memcpy(rgshd, rhs.rgshd, sizeof(SHD)*(itcMac));
1440
memcpy(&rgbrcTable, &rhs.rgbrcTable, sizeof(rgbrcTable));
1444
delete [] rgdxaCenter;
1449
TAP &TAP::operator=(const TAP &rhs) {
1451
// Check for assignment to self
1456
dxaGapHalf=rhs.dxaGapHalf;
1457
dyaRowHeight=rhs.dyaRowHeight;
1458
fCantSplit=rhs.fCantSplit;
1459
fTableHeader=rhs.fTableHeader;
1461
fCaFull=rhs.fCaFull;
1462
fFirstRow=rhs.fFirstRow;
1463
fLastRow=rhs.fLastRow;
1464
fOutline=rhs.fOutline;
1465
unused12_4=rhs.unused12_4;
1467
dxaAdjust=rhs.dxaAdjust;
1468
delete [] rgdxaCenter;
1469
rgdxaCenter=new U16[itcMac + 1];
1470
memcpy(rgdxaCenter, rhs.rgdxaCenter, sizeof(U16)*(itcMac + 1));
1472
rgtc=new TC[itcMac];
1473
memcpy(rgtc, rhs.rgtc, sizeof(TC)*(itcMac));
1475
rgshd=new SHD[itcMac];
1476
memcpy(rgshd, rhs.rgshd, sizeof(SHD)*(itcMac));
1477
memcpy(&rgbrcTable, &rhs.rgbrcTable, sizeof(rgbrcTable));
1482
bool TAP::read(OLEStreamReader *stream, bool preservePos) {
1489
jc=stream->readU16();
1490
dxaGapHalf=stream->readU16();
1491
dyaRowHeight=stream->readU16();
1492
fCantSplit=stream->readU8();
1493
fTableHeader=stream->readU8();
1494
tlp.read(stream, false);
1495
shifterU16=stream->readU16();
1498
fFirstRow=shifterU16;
1500
fLastRow=shifterU16;
1502
fOutline=shifterU16;
1504
unused12_4=shifterU16;
1505
itcMac=stream->readU16();
1506
dxaAdjust=stream->readU16();
1507
rgdxaCenter=new U16[itcMac + 1];
1508
for(int _i=0; _i<(itcMac + 1); ++_i)
1509
rgdxaCenter[_i]=stream->readU16();
1510
rgtc=new TC[itcMac];
1511
for(int _i=0; _i<(itcMac); ++_i)
1512
rgtc[_i].read(stream, false);
1513
rgshd=new SHD[itcMac];
1514
for(int _i=0; _i<(itcMac); ++_i)
1515
rgshd[_i].read(stream, false);
1516
for(int _i=0; _i<(6); ++_i)
1517
rgbrcTable[_i].read(stream, false);
1524
bool TAP::write(OLEStreamWriter *stream, bool preservePos) const {
1532
stream->write(dxaGapHalf);
1533
stream->write(dyaRowHeight);
1534
stream->write(fCantSplit);
1535
stream->write(fTableHeader);
1536
tlp.write(stream, false);
1538
shifterU16|=fFirstRow << 1;
1539
shifterU16|=fLastRow << 2;
1540
shifterU16|=fOutline << 3;
1541
shifterU16|=unused12_4 << 4;
1542
stream->write(shifterU16);
1543
stream->write(itcMac);
1544
stream->write(dxaAdjust);
1545
for(int _i=0; _i<(itcMac + 1); ++_i)
1546
stream->write(rgdxaCenter[_i]);
1547
for(int _i=0; _i<(itcMac); ++_i)
1548
rgtc[_i].write(stream, false);
1549
for(int _i=0; _i<(itcMac); ++_i)
1550
rgshd[_i].write(stream, false);
1551
for(int _i=0; _i<(6); ++_i)
1552
rgbrcTable[_i].write(stream, false);
1560
delete [] rgdxaCenter;
1566
void TAP::dump() const
1568
wvlog << "Dumping TAP:" << endl;
1569
wvlog << toString().c_str() << endl;
1570
wvlog << "\nDumping TAP done." << endl;
1573
std::string TAP::toString() const
1575
std::string s( "TAP:" );
1577
s += uint2string( jc );
1578
s += "\ndxaGapHalf=";
1579
s += uint2string( dxaGapHalf );
1580
s += "\ndyaRowHeight=";
1581
s += uint2string( dyaRowHeight );
1582
s += "\nfCantSplit=";
1583
s += uint2string( fCantSplit );
1584
s += "\nfTableHeader=";
1585
s += uint2string( fTableHeader );
1587
s += "\n{" + tlp.toString() + "}\n";
1589
s += uint2string( fCaFull );
1590
s += "\nfFirstRow=";
1591
s += uint2string( fFirstRow );
1593
s += uint2string( fLastRow );
1595
s += uint2string( fOutline );
1596
s += "\nunused12_4=";
1597
s += uint2string( unused12_4 );
1599
s += uint2string( itcMac );
1600
s += "\ndxaAdjust=";
1601
s += uint2string( dxaAdjust );
1602
for(int _i=0; _i<(itcMac + 1); ++_i) {
1603
s += "\nrgdxaCenter[" + int2string( _i ) + "]=";
1604
s += uint2string( rgdxaCenter[_i] );
1606
for(int _i=0; _i<(itcMac); ++_i) {
1607
s += "\nrgtc[" + int2string( _i ) + "]=";
1608
s += "\n{" + rgtc[_i].toString() + "}\n";
1610
for(int _i=0; _i<(itcMac); ++_i) {
1611
s += "\nrgshd[" + int2string( _i ) + "]=";
1612
s += "\n{" + rgshd[_i].toString() + "}\n";
1614
for(int _i=0; _i<(6); ++_i) {
1615
s += "\nrgbrcTable[" + int2string( _i ) + "]=";
1616
s += "\n{" + rgbrcTable[_i].toString() + "}\n";
1622
void TAP::clearInternal() {
1639
for(int _i=0; _i<(6); ++_i)
1640
rgbrcTable[_i].clear();
1643
bool operator==(const TAP &lhs, const TAP &rhs) {
1645
if((lhs.itcMac)!=(rhs.itcMac))
1647
for(int _i=0; _i<(lhs.itcMac); ++_i) {
1648
if(lhs.rgdxaCenter[_i]!=rhs.rgdxaCenter[_i])
1652
if((lhs.itcMac)!=(rhs.itcMac))
1654
for(int _i=0; _i<(lhs.itcMac); ++_i) {
1655
if(lhs.rgtc[_i]!=rhs.rgtc[_i])
1659
if((lhs.itcMac)!=(rhs.itcMac))
1661
for(int _i=0; _i<(lhs.itcMac); ++_i) {
1662
if(lhs.rgshd[_i]!=rhs.rgshd[_i])
1666
for(int _i=0; _i<(6); ++_i) {
1667
if(lhs.rgbrcTable[_i]!=rhs.rgbrcTable[_i])
1671
return lhs.jc==rhs.jc &&
1672
lhs.dxaGapHalf==rhs.dxaGapHalf &&
1673
lhs.dyaRowHeight==rhs.dyaRowHeight &&
1674
lhs.fCantSplit==rhs.fCantSplit &&
1675
lhs.fTableHeader==rhs.fTableHeader &&
1677
lhs.fCaFull==rhs.fCaFull &&
1678
lhs.fFirstRow==rhs.fFirstRow &&
1679
lhs.fLastRow==rhs.fLastRow &&
1680
lhs.fOutline==rhs.fOutline &&
1681
lhs.unused12_4==rhs.unused12_4 &&
1682
lhs.itcMac==rhs.itcMac &&
1683
lhs.dxaAdjust==rhs.dxaAdjust;
1686
bool operator!=(const TAP &lhs, const TAP &rhs) {
1691
// ANLD implementation
1697
ANLD::ANLD(OLEStreamReader *stream, bool preservePos) {
1699
read(stream, preservePos);
1702
ANLD::ANLD(const U8 *ptr) {
1707
bool ANLD::read(OLEStreamReader *stream, bool preservePos) {
1714
nfc=stream->readU8();
1715
cxchTextBefore=stream->readU8();
1716
cxchTextAfter=stream->readU8();
1717
shifterU8=stream->readU8();
1726
fSetItalic=shifterU8;
1728
fSetSmallCaps=shifterU8;
1731
shifterU8=stream->readU8();
1732
fSetStrike=shifterU8;
1736
fPrevSpace=shifterU8;
1742
fSmallCaps=shifterU8;
1747
shifterU8=stream->readU8();
1751
ftc=stream->readS16();
1752
hps=stream->readU16();
1753
iStartAt=stream->readU16();
1754
dxaIndent=stream->readU16();
1755
dxaSpace=stream->readU16();
1756
fNumber1=stream->readU8();
1757
fNumberAcross=stream->readU8();
1758
fRestartHdn=stream->readU8();
1759
fSpareX=stream->readU8();
1760
for(int _i=0; _i<(32); ++_i)
1761
rgchAnld[_i]=stream->readU8();
1768
void ANLD::readPtr(const U8 *ptr) {
1774
cxchTextBefore=readU8(ptr);
1776
cxchTextAfter=readU8(ptr);
1778
shifterU8=readU8(ptr);
1788
fSetItalic=shifterU8;
1790
fSetSmallCaps=shifterU8;
1793
shifterU8=readU8(ptr);
1795
fSetStrike=shifterU8;
1799
fPrevSpace=shifterU8;
1805
fSmallCaps=shifterU8;
1810
shifterU8=readU8(ptr);
1819
iStartAt=readU16(ptr);
1821
dxaIndent=readU16(ptr);
1823
dxaSpace=readU16(ptr);
1825
fNumber1=readU8(ptr);
1827
fNumberAcross=readU8(ptr);
1829
fRestartHdn=readU8(ptr);
1831
fSpareX=readU8(ptr);
1833
for(int _i=0; _i<(32); ++_i) {
1834
rgchAnld[_i]=readU8(ptr);
1839
bool ANLD::write(OLEStreamWriter *stream, bool preservePos) const {
1847
stream->write(cxchTextBefore);
1848
stream->write(cxchTextAfter);
1850
shifterU8|=fPrev << 2;
1851
shifterU8|=fHang << 3;
1852
shifterU8|=fSetBold << 4;
1853
shifterU8|=fSetItalic << 5;
1854
shifterU8|=fSetSmallCaps << 6;
1855
shifterU8|=fSetCaps << 7;
1856
stream->write(shifterU8);
1857
shifterU8=fSetStrike;
1858
shifterU8|=fSetKul << 1;
1859
shifterU8|=fPrevSpace << 2;
1860
shifterU8|=fBold << 3;
1861
shifterU8|=fItalic << 4;
1862
shifterU8|=fSmallCaps << 5;
1863
shifterU8|=fCaps << 6;
1864
shifterU8|=fStrike << 7;
1865
stream->write(shifterU8);
1867
shifterU8|=ico << 3;
1868
stream->write(shifterU8);
1871
stream->write(iStartAt);
1872
stream->write(dxaIndent);
1873
stream->write(dxaSpace);
1874
stream->write(fNumber1);
1875
stream->write(fNumberAcross);
1876
stream->write(fRestartHdn);
1877
stream->write(fSpareX);
1878
for(int _i=0; _i<(32); ++_i)
1879
stream->write(rgchAnld[_i]);
1886
void ANLD::clear() {
1916
for(int _i=0; _i<(32); ++_i)
1920
void ANLD::dump() const
1922
wvlog << "Dumping ANLD:" << endl;
1923
wvlog << toString().c_str() << endl;
1924
wvlog << "\nDumping ANLD done." << endl;
1927
std::string ANLD::toString() const
1929
std::string s( "ANLD:" );
1931
s += uint2string( nfc );
1932
s += "\ncxchTextBefore=";
1933
s += uint2string( cxchTextBefore );
1934
s += "\ncxchTextAfter=";
1935
s += uint2string( cxchTextAfter );
1937
s += uint2string( jc );
1939
s += uint2string( fPrev );
1941
s += uint2string( fHang );
1943
s += uint2string( fSetBold );
1944
s += "\nfSetItalic=";
1945
s += uint2string( fSetItalic );
1946
s += "\nfSetSmallCaps=";
1947
s += uint2string( fSetSmallCaps );
1949
s += uint2string( fSetCaps );
1950
s += "\nfSetStrike=";
1951
s += uint2string( fSetStrike );
1953
s += uint2string( fSetKul );
1954
s += "\nfPrevSpace=";
1955
s += uint2string( fPrevSpace );
1957
s += uint2string( fBold );
1959
s += uint2string( fItalic );
1960
s += "\nfSmallCaps=";
1961
s += uint2string( fSmallCaps );
1963
s += uint2string( fCaps );
1965
s += uint2string( fStrike );
1967
s += uint2string( kul );
1969
s += uint2string( ico );
1971
s += int2string( ftc );
1973
s += uint2string( hps );
1975
s += uint2string( iStartAt );
1976
s += "\ndxaIndent=";
1977
s += uint2string( dxaIndent );
1979
s += uint2string( dxaSpace );
1981
s += uint2string( fNumber1 );
1982
s += "\nfNumberAcross=";
1983
s += uint2string( fNumberAcross );
1984
s += "\nfRestartHdn=";
1985
s += uint2string( fRestartHdn );
1987
s += uint2string( fSpareX );
1988
for(int _i=0; _i<(32); ++_i) {
1989
s += "\nrgchAnld[" + int2string( _i ) + "]=";
1990
s += uint2string( rgchAnld[_i] );
1992
s += "\nANLD Done.";
1996
bool operator==(const ANLD &lhs, const ANLD &rhs) {
1998
for(int _i=0; _i<(32); ++_i) {
1999
if(lhs.rgchAnld[_i]!=rhs.rgchAnld[_i])
2003
return lhs.nfc==rhs.nfc &&
2004
lhs.cxchTextBefore==rhs.cxchTextBefore &&
2005
lhs.cxchTextAfter==rhs.cxchTextAfter &&
2007
lhs.fPrev==rhs.fPrev &&
2008
lhs.fHang==rhs.fHang &&
2009
lhs.fSetBold==rhs.fSetBold &&
2010
lhs.fSetItalic==rhs.fSetItalic &&
2011
lhs.fSetSmallCaps==rhs.fSetSmallCaps &&
2012
lhs.fSetCaps==rhs.fSetCaps &&
2013
lhs.fSetStrike==rhs.fSetStrike &&
2014
lhs.fSetKul==rhs.fSetKul &&
2015
lhs.fPrevSpace==rhs.fPrevSpace &&
2016
lhs.fBold==rhs.fBold &&
2017
lhs.fItalic==rhs.fItalic &&
2018
lhs.fSmallCaps==rhs.fSmallCaps &&
2019
lhs.fCaps==rhs.fCaps &&
2020
lhs.fStrike==rhs.fStrike &&
2025
lhs.iStartAt==rhs.iStartAt &&
2026
lhs.dxaIndent==rhs.dxaIndent &&
2027
lhs.dxaSpace==rhs.dxaSpace &&
2028
lhs.fNumber1==rhs.fNumber1 &&
2029
lhs.fNumberAcross==rhs.fNumberAcross &&
2030
lhs.fRestartHdn==rhs.fRestartHdn &&
2031
lhs.fSpareX==rhs.fSpareX;
2034
bool operator!=(const ANLD &lhs, const ANLD &rhs) {
2039
// ANLV implementation
2041
const unsigned int ANLV::sizeOf = 16;
2047
ANLV::ANLV(OLEStreamReader *stream, bool preservePos) {
2049
read(stream, preservePos);
2052
ANLV::ANLV(const U8 *ptr) {
2057
bool ANLV::read(OLEStreamReader *stream, bool preservePos) {
2064
nfc=stream->readU8();
2065
cxchTextBefore=stream->readU8();
2066
cxchTextAfter=stream->readU8();
2067
shifterU8=stream->readU8();
2076
fSetItalic=shifterU8;
2078
fSetSmallCaps=shifterU8;
2081
shifterU8=stream->readU8();
2082
fSetStrike=shifterU8;
2086
fPrevSpace=shifterU8;
2092
fSmallCaps=shifterU8;
2097
shifterU8=stream->readU8();
2101
ftc=stream->readS16();
2102
hps=stream->readU16();
2103
iStartAt=stream->readU16();
2104
dxaIndent=stream->readU16();
2105
dxaSpace=stream->readU16();
2112
void ANLV::readPtr(const U8 *ptr) {
2118
cxchTextBefore=readU8(ptr);
2120
cxchTextAfter=readU8(ptr);
2122
shifterU8=readU8(ptr);
2132
fSetItalic=shifterU8;
2134
fSetSmallCaps=shifterU8;
2137
shifterU8=readU8(ptr);
2139
fSetStrike=shifterU8;
2143
fPrevSpace=shifterU8;
2149
fSmallCaps=shifterU8;
2154
shifterU8=readU8(ptr);
2163
iStartAt=readU16(ptr);
2165
dxaIndent=readU16(ptr);
2167
dxaSpace=readU16(ptr);
2171
bool ANLV::write(OLEStreamWriter *stream, bool preservePos) const {
2179
stream->write(cxchTextBefore);
2180
stream->write(cxchTextAfter);
2182
shifterU8|=fPrev << 2;
2183
shifterU8|=fHang << 3;
2184
shifterU8|=fSetBold << 4;
2185
shifterU8|=fSetItalic << 5;
2186
shifterU8|=fSetSmallCaps << 6;
2187
shifterU8|=fSetCaps << 7;
2188
stream->write(shifterU8);
2189
shifterU8=fSetStrike;
2190
shifterU8|=fSetKul << 1;
2191
shifterU8|=fPrevSpace << 2;
2192
shifterU8|=fBold << 3;
2193
shifterU8|=fItalic << 4;
2194
shifterU8|=fSmallCaps << 5;
2195
shifterU8|=fCaps << 6;
2196
shifterU8|=fStrike << 7;
2197
stream->write(shifterU8);
2199
shifterU8|=ico << 3;
2200
stream->write(shifterU8);
2203
stream->write(iStartAt);
2204
stream->write(dxaIndent);
2205
stream->write(dxaSpace);
2212
void ANLV::clear() {
2240
void ANLV::dump() const
2242
wvlog << "Dumping ANLV:" << endl;
2243
wvlog << toString().c_str() << endl;
2244
wvlog << "\nDumping ANLV done." << endl;
2247
std::string ANLV::toString() const
2249
std::string s( "ANLV:" );
2251
s += uint2string( nfc );
2252
s += "\ncxchTextBefore=";
2253
s += uint2string( cxchTextBefore );
2254
s += "\ncxchTextAfter=";
2255
s += uint2string( cxchTextAfter );
2257
s += uint2string( jc );
2259
s += uint2string( fPrev );
2261
s += uint2string( fHang );
2263
s += uint2string( fSetBold );
2264
s += "\nfSetItalic=";
2265
s += uint2string( fSetItalic );
2266
s += "\nfSetSmallCaps=";
2267
s += uint2string( fSetSmallCaps );
2269
s += uint2string( fSetCaps );
2270
s += "\nfSetStrike=";
2271
s += uint2string( fSetStrike );
2273
s += uint2string( fSetKul );
2274
s += "\nfPrevSpace=";
2275
s += uint2string( fPrevSpace );
2277
s += uint2string( fBold );
2279
s += uint2string( fItalic );
2280
s += "\nfSmallCaps=";
2281
s += uint2string( fSmallCaps );
2283
s += uint2string( fCaps );
2285
s += uint2string( fStrike );
2287
s += uint2string( kul );
2289
s += uint2string( ico );
2291
s += int2string( ftc );
2293
s += uint2string( hps );
2295
s += uint2string( iStartAt );
2296
s += "\ndxaIndent=";
2297
s += uint2string( dxaIndent );
2299
s += uint2string( dxaSpace );
2300
s += "\nANLV Done.";
2304
bool operator==(const ANLV &lhs, const ANLV &rhs) {
2306
return lhs.nfc==rhs.nfc &&
2307
lhs.cxchTextBefore==rhs.cxchTextBefore &&
2308
lhs.cxchTextAfter==rhs.cxchTextAfter &&
2310
lhs.fPrev==rhs.fPrev &&
2311
lhs.fHang==rhs.fHang &&
2312
lhs.fSetBold==rhs.fSetBold &&
2313
lhs.fSetItalic==rhs.fSetItalic &&
2314
lhs.fSetSmallCaps==rhs.fSetSmallCaps &&
2315
lhs.fSetCaps==rhs.fSetCaps &&
2316
lhs.fSetStrike==rhs.fSetStrike &&
2317
lhs.fSetKul==rhs.fSetKul &&
2318
lhs.fPrevSpace==rhs.fPrevSpace &&
2319
lhs.fBold==rhs.fBold &&
2320
lhs.fItalic==rhs.fItalic &&
2321
lhs.fSmallCaps==rhs.fSmallCaps &&
2322
lhs.fCaps==rhs.fCaps &&
2323
lhs.fStrike==rhs.fStrike &&
2328
lhs.iStartAt==rhs.iStartAt &&
2329
lhs.dxaIndent==rhs.dxaIndent &&
2330
lhs.dxaSpace==rhs.dxaSpace;
2333
bool operator!=(const ANLV &lhs, const ANLV &rhs) {
2338
// BKF implementation
2344
BKF::BKF(OLEStreamReader *stream, bool preservePos) {
2346
read(stream, preservePos);
2349
bool BKF::read(OLEStreamReader *stream, bool preservePos) {
2356
ibkl=stream->readS16();
2357
shifterU16=stream->readU16();
2358
itcFirst=shifterU16;
2371
bool BKF::write(OLEStreamWriter *stream, bool preservePos) const {
2378
stream->write(ibkl);
2379
shifterU16=itcFirst;
2380
shifterU16|=fPub << 7;
2381
shifterU16|=itcLim << 8;
2382
shifterU16|=fCol << 15;
2383
stream->write(shifterU16);
2398
bool operator==(const BKF &lhs, const BKF &rhs) {
2400
return lhs.ibkl==rhs.ibkl &&
2401
lhs.itcFirst==rhs.itcFirst &&
2402
lhs.fPub==rhs.fPub &&
2403
lhs.itcLim==rhs.itcLim &&
2407
bool operator!=(const BKF &lhs, const BKF &rhs) {
2412
// BKL implementation
2418
BKL::BKL(OLEStreamReader *stream, bool preservePos) {
2420
read(stream, preservePos);
2423
bool BKL::read(OLEStreamReader *stream, bool preservePos) {
2428
ibkf=stream->readS16();
2435
bool BKL::write(OLEStreamWriter *stream, bool preservePos) const {
2440
stream->write(ibkf);
2451
bool operator==(const BKL &lhs, const BKL &rhs) {
2453
return lhs.ibkf==rhs.ibkf;
2456
bool operator!=(const BKL &lhs, const BKL &rhs) {
2461
// BRC10 implementation
2467
BRC10::BRC10(OLEStreamReader *stream, bool preservePos) {
2469
read(stream, preservePos);
2472
bool BRC10::read(OLEStreamReader *stream, bool preservePos) {
2479
shifterU16=stream->readU16();
2480
dxpLine2Width=shifterU16;
2482
dxpSpaceBetween=shifterU16;
2484
dxpLine1Width=shifterU16;
2486
dxpSpace=shifterU16;
2497
bool BRC10::write(OLEStreamWriter *stream, bool preservePos) const {
2504
shifterU16=dxpLine2Width;
2505
shifterU16|=dxpSpaceBetween << 3;
2506
shifterU16|=dxpLine1Width << 6;
2507
shifterU16|=dxpSpace << 9;
2508
shifterU16|=fShadow << 14;
2509
shifterU16|=fSpare << 15;
2510
stream->write(shifterU16);
2517
void BRC10::clear() {
2526
bool operator==(const BRC10 &lhs, const BRC10 &rhs) {
2528
return lhs.dxpLine2Width==rhs.dxpLine2Width &&
2529
lhs.dxpSpaceBetween==rhs.dxpSpaceBetween &&
2530
lhs.dxpLine1Width==rhs.dxpLine1Width &&
2531
lhs.dxpSpace==rhs.dxpSpace &&
2532
lhs.fShadow==rhs.fShadow &&
2533
lhs.fSpare==rhs.fSpare;
2536
bool operator!=(const BRC10 &lhs, const BRC10 &rhs) {
2541
// BTE implementation
2543
const unsigned int BTE::sizeOf = 2;
2549
BTE::BTE(OLEStreamReader *stream, bool preservePos) {
2551
read(stream, preservePos);
2554
bool BTE::read(OLEStreamReader *stream, bool preservePos) {
2559
pn=stream->readU16();
2566
bool BTE::write(OLEStreamWriter *stream, bool preservePos) const {
2582
bool operator==(const BTE &lhs, const BTE &rhs) {
2584
return lhs.pn==rhs.pn;
2587
bool operator!=(const BTE &lhs, const BTE &rhs) {
2592
// CHP implementation
2594
CHP::CHP() : Shared() {
2598
CHP::CHP(OLEStreamReader *stream, bool preservePos) : Shared() {
2600
read(stream, preservePos);
2603
bool CHP::read(OLEStreamReader *stream, bool preservePos) {
2610
shifterU8=stream->readU8();
2615
fRMarkDel=shifterU8;
2619
fFldVanish=shifterU8;
2621
fSmallCaps=shifterU8;
2626
shifterU8=stream->readU8();
2637
fLowerCase=shifterU8;
2642
unused2=stream->readU16();
2643
ftc=stream->readU16();
2644
hps=stream->readU16();
2645
dxaSpace=stream->readU16();
2646
shifterU8=stream->readU8();
2649
unused10_3=shifterU8;
2651
fSysVanish=shifterU8;
2653
unused10_7=shifterU8;
2654
shifterU8=stream->readU8();
2658
hpsPos=stream->readS16();
2659
lid=stream->readU16();
2660
fcPic_fcObj_lTagObj=stream->readU32();
2661
ibstRMark=stream->readU16();
2662
dttmRMark.read(stream, false);
2663
unused26=stream->readU16();
2664
istd=stream->readU16();
2665
ftcSym=stream->readU16();
2666
chSym=stream->readU8();
2667
fChsDiff=stream->readU8();
2668
idslRMReason=stream->readU16();
2669
ysr=stream->readU8();
2670
chYsr=stream->readU8();
2671
chse=stream->readU16();
2672
hpsKern=stream->readU16();
2679
bool CHP::write(OLEStreamWriter *stream, bool preservePos) const {
2687
shifterU8|=fItalic << 1;
2688
shifterU8|=fRMarkDel << 2;
2689
shifterU8|=fOutline << 3;
2690
shifterU8|=fFldVanish << 4;
2691
shifterU8|=fSmallCaps << 5;
2692
shifterU8|=fCaps << 6;
2693
shifterU8|=fVanish << 7;
2694
stream->write(shifterU8);
2696
shifterU8|=fSpec << 1;
2697
shifterU8|=fStrike << 2;
2698
shifterU8|=fObj << 3;
2699
shifterU8|=fShadow << 4;
2700
shifterU8|=fLowerCase << 5;
2701
shifterU8|=fData << 6;
2702
shifterU8|=fOle2 << 7;
2703
stream->write(shifterU8);
2704
stream->write(unused2);
2707
stream->write(dxaSpace);
2709
shifterU8|=unused10_3 << 3;
2710
shifterU8|=fSysVanish << 6;
2711
shifterU8|=unused10_7 << 7;
2712
stream->write(shifterU8);
2714
shifterU8|=kul << 5;
2715
stream->write(shifterU8);
2716
stream->write(hpsPos);
2718
stream->write(fcPic_fcObj_lTagObj);
2719
stream->write(ibstRMark);
2720
dttmRMark.write(stream, false);
2721
stream->write(unused26);
2722
stream->write(istd);
2723
stream->write(ftcSym);
2724
stream->write(chSym);
2725
stream->write(fChsDiff);
2726
stream->write(idslRMReason);
2728
stream->write(chYsr);
2729
stream->write(chse);
2730
stream->write(hpsKern);
2766
fcPic_fcObj_lTagObj=0;
2781
void CHP::dump() const
2783
wvlog << "Dumping CHP:" << endl;
2784
wvlog << toString().c_str() << endl;
2785
wvlog << "\nDumping CHP done." << endl;
2788
std::string CHP::toString() const
2790
std::string s( "CHP:" );
2792
s += uint2string( fBold );
2794
s += uint2string( fItalic );
2795
s += "\nfRMarkDel=";
2796
s += uint2string( fRMarkDel );
2798
s += uint2string( fOutline );
2799
s += "\nfFldVanish=";
2800
s += uint2string( fFldVanish );
2801
s += "\nfSmallCaps=";
2802
s += uint2string( fSmallCaps );
2804
s += uint2string( fCaps );
2806
s += uint2string( fVanish );
2808
s += uint2string( fRMark );
2810
s += uint2string( fSpec );
2812
s += uint2string( fStrike );
2814
s += uint2string( fObj );
2816
s += uint2string( fShadow );
2817
s += "\nfLowerCase=";
2818
s += uint2string( fLowerCase );
2820
s += uint2string( fData );
2822
s += uint2string( fOle2 );
2824
s += uint2string( unused2 );
2826
s += uint2string( ftc );
2828
s += uint2string( hps );
2830
s += uint2string( dxaSpace );
2832
s += uint2string( iss );
2833
s += "\nunused10_3=";
2834
s += uint2string( unused10_3 );
2835
s += "\nfSysVanish=";
2836
s += uint2string( fSysVanish );
2837
s += "\nunused10_7=";
2838
s += uint2string( unused10_7 );
2840
s += uint2string( ico );
2842
s += uint2string( kul );
2844
s += int2string( hpsPos );
2846
s += uint2string( lid );
2847
s += "\nfcPic_fcObj_lTagObj=";
2848
s += uint2string( fcPic_fcObj_lTagObj );
2849
s += "\nibstRMark=";
2850
s += uint2string( ibstRMark );
2851
s += "\ndttmRMark=";
2852
s += "\n{" + dttmRMark.toString() + "}\n";
2854
s += uint2string( unused26 );
2856
s += uint2string( istd );
2858
s += uint2string( ftcSym );
2860
s += uint2string( chSym );
2862
s += uint2string( fChsDiff );
2863
s += "\nidslRMReason=";
2864
s += uint2string( idslRMReason );
2866
s += uint2string( ysr );
2868
s += uint2string( chYsr );
2870
s += uint2string( chse );
2872
s += uint2string( hpsKern );
2877
bool operator==(const CHP &lhs, const CHP &rhs) {
2879
return lhs.fBold==rhs.fBold &&
2880
lhs.fItalic==rhs.fItalic &&
2881
lhs.fRMarkDel==rhs.fRMarkDel &&
2882
lhs.fOutline==rhs.fOutline &&
2883
lhs.fFldVanish==rhs.fFldVanish &&
2884
lhs.fSmallCaps==rhs.fSmallCaps &&
2885
lhs.fCaps==rhs.fCaps &&
2886
lhs.fVanish==rhs.fVanish &&
2887
lhs.fRMark==rhs.fRMark &&
2888
lhs.fSpec==rhs.fSpec &&
2889
lhs.fStrike==rhs.fStrike &&
2890
lhs.fObj==rhs.fObj &&
2891
lhs.fShadow==rhs.fShadow &&
2892
lhs.fLowerCase==rhs.fLowerCase &&
2893
lhs.fData==rhs.fData &&
2894
lhs.fOle2==rhs.fOle2 &&
2895
lhs.unused2==rhs.unused2 &&
2898
lhs.dxaSpace==rhs.dxaSpace &&
2900
lhs.unused10_3==rhs.unused10_3 &&
2901
lhs.fSysVanish==rhs.fSysVanish &&
2902
lhs.unused10_7==rhs.unused10_7 &&
2905
lhs.hpsPos==rhs.hpsPos &&
2907
lhs.fcPic_fcObj_lTagObj==rhs.fcPic_fcObj_lTagObj &&
2908
lhs.ibstRMark==rhs.ibstRMark &&
2909
lhs.dttmRMark==rhs.dttmRMark &&
2910
lhs.unused26==rhs.unused26 &&
2911
lhs.istd==rhs.istd &&
2912
lhs.ftcSym==rhs.ftcSym &&
2913
lhs.chSym==rhs.chSym &&
2914
lhs.fChsDiff==rhs.fChsDiff &&
2915
lhs.idslRMReason==rhs.idslRMReason &&
2917
lhs.chYsr==rhs.chYsr &&
2918
lhs.chse==rhs.chse &&
2919
lhs.hpsKern==rhs.hpsKern;
2922
bool operator!=(const CHP &lhs, const CHP &rhs) {
2927
// DCS implementation
2933
DCS::DCS(OLEStreamReader *stream, bool preservePos) {
2935
read(stream, preservePos);
2938
DCS::DCS(const U8 *ptr) {
2943
bool DCS::read(OLEStreamReader *stream, bool preservePos) {
2950
shifterU8=stream->readU8();
2954
unused1=stream->readU8();
2961
void DCS::readPtr(const U8 *ptr) {
2965
shifterU8=readU8(ptr);
2970
unused1=readU8(ptr);
2974
bool DCS::write(OLEStreamWriter *stream, bool preservePos) const {
2982
shifterU8|=lines << 3;
2983
stream->write(shifterU8);
2984
stream->write(unused1);
2997
void DCS::dump() const
2999
wvlog << "Dumping DCS:" << endl;
3000
wvlog << toString().c_str() << endl;
3001
wvlog << "\nDumping DCS done." << endl;
3004
std::string DCS::toString() const
3006
std::string s( "DCS:" );
3008
s += uint2string( fdct );
3010
s += uint2string( lines );
3012
s += uint2string( unused1 );
3017
bool operator==(const DCS &lhs, const DCS &rhs) {
3019
return lhs.fdct==rhs.fdct &&
3020
lhs.lines==rhs.lines &&
3021
lhs.unused1==rhs.unused1;
3024
bool operator!=(const DCS &lhs, const DCS &rhs) {
3029
// DO implementation
3035
DO::DO(OLEStreamReader *stream, bool preservePos) {
3037
read(stream, preservePos);
3040
bool DO::read(OLEStreamReader *stream, bool preservePos) {
3047
fc=stream->readU32();
3048
dok=stream->readU16();
3049
cb=stream->readU16();
3050
bx=stream->readU8();
3051
by=stream->readU8();
3052
dhgt=stream->readU16();
3053
shifterU16=stream->readU16();
3054
fAnchorLock=shifterU16;
3057
rgdp=stream->readU8();
3064
bool DO::write(OLEStreamWriter *stream, bool preservePos) const {
3076
stream->write(dhgt);
3077
shifterU16=fAnchorLock;
3078
shifterU16|=unused8 << 1;
3079
stream->write(shifterU16);
3080
stream->write(rgdp);
3099
bool operator==(const DO &lhs, const DO &rhs) {
3101
return lhs.fc==rhs.fc &&
3106
lhs.dhgt==rhs.dhgt &&
3107
lhs.fAnchorLock==rhs.fAnchorLock &&
3108
lhs.unused8==rhs.unused8 &&
3112
bool operator!=(const DO &lhs, const DO &rhs) {
3117
// DOP implementation
3123
DOP::DOP(OLEStreamReader *stream, bool preservePos) {
3125
read(stream, preservePos);
3128
bool DOP::read(OLEStreamReader *stream, bool preservePos) {
3136
shifterU16=stream->readU16();
3137
fFacingPages=shifterU16;
3139
fWidowControl=shifterU16;
3141
fPMHMainDoc=shifterU16;
3143
grfSuppression=shifterU16;
3147
unused0_7=shifterU16;
3149
grpfIhdt=shifterU16;
3150
shifterU16=stream->readU16();
3154
shifterU8=stream->readU8();
3155
fOutlineDirtySave=shifterU8;
3157
unused4_1=shifterU8;
3158
shifterU8=stream->readU8();
3159
fOnlyMacPics=shifterU8;
3161
fOnlyWinPics=shifterU8;
3163
fLabelDoc=shifterU8;
3165
fHyphCapitals=shifterU8;
3167
fAutoHyphen=shifterU8;
3169
fFormNoFields=shifterU8;
3171
fLinkStyles=shifterU8;
3173
fRevMarking=shifterU8;
3174
shifterU8=stream->readU8();
3177
fExactCWords=shifterU8;
3179
fPagHidden=shifterU8;
3181
fPagResults=shifterU8;
3185
fMirrorMargins=shifterU8;
3187
fReadOnlyRecommended=shifterU8;
3189
fDfltTrueType=shifterU8;
3190
shifterU8=stream->readU8();
3191
fPagSuppressTopSpacing=shifterU8;
3193
fProtEnabled=shifterU8;
3195
fDispFormFldSel=shifterU8;
3201
fWriteReservation=shifterU8;
3205
fEmbedFonts=shifterU8;
3206
shifterU16=stream->readU16();
3207
copts_fNoTabForInd=shifterU16;
3209
copts_fNoSpaceRaiseLower=shifterU16;
3211
copts_fSuppressSpbfAfterPageBreak=shifterU16;
3213
copts_fWrapTrailSpaces=shifterU16;
3215
copts_fMapPrintTextColor=shifterU16;
3217
copts_fNoColumnBalance=shifterU16;
3219
copts_fConvMailMergeEsc=shifterU16;
3221
copts_fSupressTopSpacing=shifterU16;
3223
copts_fOrigWordTableRules=shifterU16;
3225
copts_fTransparentMetafiles=shifterU16;
3227
copts_fShowBreaksInFrames=shifterU16;
3229
copts_fSwapBordersFacingPgs=shifterU16;
3231
unused8_12=shifterU16;
3232
dxaTab=stream->readU16();
3233
wSpare=stream->readU16();
3234
dxaHotZ=stream->readU16();
3235
cConsecHypLim=stream->readU16();
3236
wSpare2=stream->readU16();
3237
dttmCreated.read(stream, false);
3238
dttmRevised.read(stream, false);
3239
dttmLastPrint.read(stream, false);
3240
nRevision=stream->readU16();
3241
tmEdited=stream->readU32();
3242
cWords=stream->readU32();
3243
cCh=stream->readU32();
3244
cPg=stream->readU16();
3245
cParas=stream->readU32();
3246
shifterU16=stream->readU16();
3250
shifterU16=stream->readU16();
3253
nfcFtnRef=shifterU16;
3255
nfcEdnRef=shifterU16;
3257
fPrintFormData=shifterU16;
3259
fSaveFormData=shifterU16;
3261
fShadeFormData=shifterU16;
3263
unused54_13=shifterU16;
3265
fWCFtnEdn=shifterU16;
3266
cLines=stream->readU32();
3267
cWordsFtnEnd=stream->readU32();
3268
cChFtnEdn=stream->readU32();
3269
cPgFtnEdn=stream->readU16();
3270
cParasFtnEdn=stream->readU32();
3271
cLinesFtnEdn=stream->readU32();
3272
lKeyProtDoc=stream->readU32();
3273
shifterU16=stream->readU16();
3274
wvkSaved=shifterU16;
3276
wScaleSaved=shifterU16;
3280
unused82_14=shifterU16;
3287
bool DOP::write(OLEStreamWriter *stream, bool preservePos) const {
3295
shifterU16=fFacingPages;
3296
shifterU16|=fWidowControl << 1;
3297
shifterU16|=fPMHMainDoc << 2;
3298
shifterU16|=grfSuppression << 3;
3299
shifterU16|=fpc << 5;
3300
shifterU16|=unused0_7 << 7;
3301
shifterU16|=grpfIhdt << 8;
3302
stream->write(shifterU16);
3304
shifterU16|=nFtn << 2;
3305
stream->write(shifterU16);
3306
shifterU8=fOutlineDirtySave;
3307
shifterU8|=unused4_1 << 1;
3308
stream->write(shifterU8);
3309
shifterU8=fOnlyMacPics;
3310
shifterU8|=fOnlyWinPics << 1;
3311
shifterU8|=fLabelDoc << 2;
3312
shifterU8|=fHyphCapitals << 3;
3313
shifterU8|=fAutoHyphen << 4;
3314
shifterU8|=fFormNoFields << 5;
3315
shifterU8|=fLinkStyles << 6;
3316
shifterU8|=fRevMarking << 7;
3317
stream->write(shifterU8);
3319
shifterU8|=fExactCWords << 1;
3320
shifterU8|=fPagHidden << 2;
3321
shifterU8|=fPagResults << 3;
3322
shifterU8|=fLockAtn << 4;
3323
shifterU8|=fMirrorMargins << 5;
3324
shifterU8|=fReadOnlyRecommended << 6;
3325
shifterU8|=fDfltTrueType << 7;
3326
stream->write(shifterU8);
3327
shifterU8=fPagSuppressTopSpacing;
3328
shifterU8|=fProtEnabled << 1;
3329
shifterU8|=fDispFormFldSel << 2;
3330
shifterU8|=fRMView << 3;
3331
shifterU8|=fRMPrint << 4;
3332
shifterU8|=fWriteReservation << 5;
3333
shifterU8|=fLockRev << 6;
3334
shifterU8|=fEmbedFonts << 7;
3335
stream->write(shifterU8);
3336
shifterU16=copts_fNoTabForInd;
3337
shifterU16|=copts_fNoSpaceRaiseLower << 1;
3338
shifterU16|=copts_fSuppressSpbfAfterPageBreak << 2;
3339
shifterU16|=copts_fWrapTrailSpaces << 3;
3340
shifterU16|=copts_fMapPrintTextColor << 4;
3341
shifterU16|=copts_fNoColumnBalance << 5;
3342
shifterU16|=copts_fConvMailMergeEsc << 6;
3343
shifterU16|=copts_fSupressTopSpacing << 7;
3344
shifterU16|=copts_fOrigWordTableRules << 8;
3345
shifterU16|=copts_fTransparentMetafiles << 9;
3346
shifterU16|=copts_fShowBreaksInFrames << 10;
3347
shifterU16|=copts_fSwapBordersFacingPgs << 11;
3348
shifterU16|=unused8_12 << 12;
3349
stream->write(shifterU16);
3350
stream->write(dxaTab);
3351
stream->write(wSpare);
3352
stream->write(dxaHotZ);
3353
stream->write(cConsecHypLim);
3354
stream->write(wSpare2);
3355
dttmCreated.write(stream, false);
3356
dttmRevised.write(stream, false);
3357
dttmLastPrint.write(stream, false);
3358
stream->write(nRevision);
3359
stream->write(tmEdited);
3360
stream->write(cWords);
3363
stream->write(cParas);
3365
shifterU16|=nEdn << 2;
3366
stream->write(shifterU16);
3368
shifterU16|=nfcFtnRef << 2;
3369
shifterU16|=nfcEdnRef << 6;
3370
shifterU16|=fPrintFormData << 10;
3371
shifterU16|=fSaveFormData << 11;
3372
shifterU16|=fShadeFormData << 12;
3373
shifterU16|=unused54_13 << 13;
3374
shifterU16|=fWCFtnEdn << 15;
3375
stream->write(shifterU16);
3376
stream->write(cLines);
3377
stream->write(cWordsFtnEnd);
3378
stream->write(cChFtnEdn);
3379
stream->write(cPgFtnEdn);
3380
stream->write(cParasFtnEdn);
3381
stream->write(cLinesFtnEdn);
3382
stream->write(lKeyProtDoc);
3383
shifterU16=wvkSaved;
3384
shifterU16|=wScaleSaved << 3;
3385
shifterU16|=zkSaved << 12;
3386
shifterU16|=unused82_14 << 14;
3387
stream->write(shifterU16);
3404
fOutlineDirtySave=0;
3420
fReadOnlyRecommended=0;
3422
fPagSuppressTopSpacing=0;
3427
fWriteReservation=0;
3430
copts_fNoTabForInd=0;
3431
copts_fNoSpaceRaiseLower=0;
3432
copts_fSuppressSpbfAfterPageBreak=0;
3433
copts_fWrapTrailSpaces=0;
3434
copts_fMapPrintTextColor=0;
3435
copts_fNoColumnBalance=0;
3436
copts_fConvMailMergeEsc=0;
3437
copts_fSupressTopSpacing=0;
3438
copts_fOrigWordTableRules=0;
3439
copts_fTransparentMetafiles=0;
3440
copts_fShowBreaksInFrames=0;
3441
copts_fSwapBordersFacingPgs=0;
3448
dttmCreated.clear();
3449
dttmRevised.clear();
3450
dttmLastPrint.clear();
3480
bool operator==(const DOP &lhs, const DOP &rhs) {
3482
return lhs.fFacingPages==rhs.fFacingPages &&
3483
lhs.fWidowControl==rhs.fWidowControl &&
3484
lhs.fPMHMainDoc==rhs.fPMHMainDoc &&
3485
lhs.grfSuppression==rhs.grfSuppression &&
3487
lhs.unused0_7==rhs.unused0_7 &&
3488
lhs.grpfIhdt==rhs.grpfIhdt &&
3489
lhs.rncFtn==rhs.rncFtn &&
3490
lhs.nFtn==rhs.nFtn &&
3491
lhs.fOutlineDirtySave==rhs.fOutlineDirtySave &&
3492
lhs.unused4_1==rhs.unused4_1 &&
3493
lhs.fOnlyMacPics==rhs.fOnlyMacPics &&
3494
lhs.fOnlyWinPics==rhs.fOnlyWinPics &&
3495
lhs.fLabelDoc==rhs.fLabelDoc &&
3496
lhs.fHyphCapitals==rhs.fHyphCapitals &&
3497
lhs.fAutoHyphen==rhs.fAutoHyphen &&
3498
lhs.fFormNoFields==rhs.fFormNoFields &&
3499
lhs.fLinkStyles==rhs.fLinkStyles &&
3500
lhs.fRevMarking==rhs.fRevMarking &&
3501
lhs.fBackup==rhs.fBackup &&
3502
lhs.fExactCWords==rhs.fExactCWords &&
3503
lhs.fPagHidden==rhs.fPagHidden &&
3504
lhs.fPagResults==rhs.fPagResults &&
3505
lhs.fLockAtn==rhs.fLockAtn &&
3506
lhs.fMirrorMargins==rhs.fMirrorMargins &&
3507
lhs.fReadOnlyRecommended==rhs.fReadOnlyRecommended &&
3508
lhs.fDfltTrueType==rhs.fDfltTrueType &&
3509
lhs.fPagSuppressTopSpacing==rhs.fPagSuppressTopSpacing &&
3510
lhs.fProtEnabled==rhs.fProtEnabled &&
3511
lhs.fDispFormFldSel==rhs.fDispFormFldSel &&
3512
lhs.fRMView==rhs.fRMView &&
3513
lhs.fRMPrint==rhs.fRMPrint &&
3514
lhs.fWriteReservation==rhs.fWriteReservation &&
3515
lhs.fLockRev==rhs.fLockRev &&
3516
lhs.fEmbedFonts==rhs.fEmbedFonts &&
3517
lhs.copts_fNoTabForInd==rhs.copts_fNoTabForInd &&
3518
lhs.copts_fNoSpaceRaiseLower==rhs.copts_fNoSpaceRaiseLower &&
3519
lhs.copts_fSuppressSpbfAfterPageBreak==rhs.copts_fSuppressSpbfAfterPageBreak &&
3520
lhs.copts_fWrapTrailSpaces==rhs.copts_fWrapTrailSpaces &&
3521
lhs.copts_fMapPrintTextColor==rhs.copts_fMapPrintTextColor &&
3522
lhs.copts_fNoColumnBalance==rhs.copts_fNoColumnBalance &&
3523
lhs.copts_fConvMailMergeEsc==rhs.copts_fConvMailMergeEsc &&
3524
lhs.copts_fSupressTopSpacing==rhs.copts_fSupressTopSpacing &&
3525
lhs.copts_fOrigWordTableRules==rhs.copts_fOrigWordTableRules &&
3526
lhs.copts_fTransparentMetafiles==rhs.copts_fTransparentMetafiles &&
3527
lhs.copts_fShowBreaksInFrames==rhs.copts_fShowBreaksInFrames &&
3528
lhs.copts_fSwapBordersFacingPgs==rhs.copts_fSwapBordersFacingPgs &&
3529
lhs.unused8_12==rhs.unused8_12 &&
3530
lhs.dxaTab==rhs.dxaTab &&
3531
lhs.wSpare==rhs.wSpare &&
3532
lhs.dxaHotZ==rhs.dxaHotZ &&
3533
lhs.cConsecHypLim==rhs.cConsecHypLim &&
3534
lhs.wSpare2==rhs.wSpare2 &&
3535
lhs.dttmCreated==rhs.dttmCreated &&
3536
lhs.dttmRevised==rhs.dttmRevised &&
3537
lhs.dttmLastPrint==rhs.dttmLastPrint &&
3538
lhs.nRevision==rhs.nRevision &&
3539
lhs.tmEdited==rhs.tmEdited &&
3540
lhs.cWords==rhs.cWords &&
3543
lhs.cParas==rhs.cParas &&
3544
lhs.rncEdn==rhs.rncEdn &&
3545
lhs.nEdn==rhs.nEdn &&
3547
lhs.nfcFtnRef==rhs.nfcFtnRef &&
3548
lhs.nfcEdnRef==rhs.nfcEdnRef &&
3549
lhs.fPrintFormData==rhs.fPrintFormData &&
3550
lhs.fSaveFormData==rhs.fSaveFormData &&
3551
lhs.fShadeFormData==rhs.fShadeFormData &&
3552
lhs.unused54_13==rhs.unused54_13 &&
3553
lhs.fWCFtnEdn==rhs.fWCFtnEdn &&
3554
lhs.cLines==rhs.cLines &&
3555
lhs.cWordsFtnEnd==rhs.cWordsFtnEnd &&
3556
lhs.cChFtnEdn==rhs.cChFtnEdn &&
3557
lhs.cPgFtnEdn==rhs.cPgFtnEdn &&
3558
lhs.cParasFtnEdn==rhs.cParasFtnEdn &&
3559
lhs.cLinesFtnEdn==rhs.cLinesFtnEdn &&
3560
lhs.lKeyProtDoc==rhs.lKeyProtDoc &&
3561
lhs.wvkSaved==rhs.wvkSaved &&
3562
lhs.wScaleSaved==rhs.wScaleSaved &&
3563
lhs.zkSaved==rhs.zkSaved &&
3564
lhs.unused82_14==rhs.unused82_14;
3567
bool operator!=(const DOP &lhs, const DOP &rhs) {
3572
// DPARC implementation
3578
DPARC::DPARC(OLEStreamReader *stream, bool preservePos) {
3580
read(stream, preservePos);
3583
bool DPARC::read(OLEStreamReader *stream, bool preservePos) {
3590
dphead.read(stream, false);
3591
lnpc=stream->readU32();
3592
lnpw=stream->readU16();
3593
lnps=stream->readU16();
3594
dlpcFg=stream->readU32();
3595
dlpcBg=stream->readU32();
3596
flpp=stream->readU16();
3597
shdwpi=stream->readU16();
3598
xaOffset=stream->readU16();
3599
yaOffset=stream->readU16();
3600
shifterU16=stream->readU16();
3610
bool DPARC::write(OLEStreamWriter *stream, bool preservePos) const {
3617
dphead.write(stream, false);
3618
stream->write(lnpc);
3619
stream->write(lnpw);
3620
stream->write(lnps);
3621
stream->write(dlpcFg);
3622
stream->write(dlpcBg);
3623
stream->write(flpp);
3624
stream->write(shdwpi);
3625
stream->write(xaOffset);
3626
stream->write(yaOffset);
3628
shifterU16|=fUp << 8;
3629
stream->write(shifterU16);
3636
void DPARC::clear() {
3651
bool operator==(const DPARC &lhs, const DPARC &rhs) {
3653
return lhs.dphead==rhs.dphead &&
3654
lhs.lnpc==rhs.lnpc &&
3655
lhs.lnpw==rhs.lnpw &&
3656
lhs.lnps==rhs.lnps &&
3657
lhs.dlpcFg==rhs.dlpcFg &&
3658
lhs.dlpcBg==rhs.dlpcBg &&
3659
lhs.flpp==rhs.flpp &&
3660
lhs.shdwpi==rhs.shdwpi &&
3661
lhs.xaOffset==rhs.xaOffset &&
3662
lhs.yaOffset==rhs.yaOffset &&
3663
lhs.fLeft==rhs.fLeft &&
3667
bool operator!=(const DPARC &lhs, const DPARC &rhs) {
3672
// DPCALLOUT implementation
3674
DPCALLOUT::DPCALLOUT() {
3678
DPCALLOUT::DPCALLOUT(OLEStreamReader *stream, bool preservePos) {
3680
read(stream, preservePos);
3683
bool DPCALLOUT::read(OLEStreamReader *stream, bool preservePos) {
3688
dphead.read(stream, false);
3689
unused12=stream->readU16();
3690
dzaOffset=stream->readU16();
3691
dzaDescent=stream->readU16();
3692
dzaLength=stream->readU16();
3693
dptxbx.read(stream, false);
3694
dpPolyLine.read(stream, false);
3701
bool DPCALLOUT::write(OLEStreamWriter *stream, bool preservePos) const {
3706
dphead.write(stream, false);
3707
stream->write(unused12);
3708
stream->write(dzaOffset);
3709
stream->write(dzaDescent);
3710
stream->write(dzaLength);
3711
dptxbx.write(stream, false);
3712
dpPolyLine.write(stream, false);
3719
void DPCALLOUT::clear() {
3729
bool operator==(const DPCALLOUT &lhs, const DPCALLOUT &rhs) {
3731
return lhs.dphead==rhs.dphead &&
3732
lhs.unused12==rhs.unused12 &&
3733
lhs.dzaOffset==rhs.dzaOffset &&
3734
lhs.dzaDescent==rhs.dzaDescent &&
3735
lhs.dzaLength==rhs.dzaLength &&
3736
lhs.dptxbx==rhs.dptxbx &&
3737
lhs.dpPolyLine==rhs.dpPolyLine;
3740
bool operator!=(const DPCALLOUT &lhs, const DPCALLOUT &rhs) {
3745
// DPELLIPSE implementation
3747
DPELLIPSE::DPELLIPSE() {
3751
DPELLIPSE::DPELLIPSE(OLEStreamReader *stream, bool preservePos) {
3753
read(stream, preservePos);
3756
bool DPELLIPSE::read(OLEStreamReader *stream, bool preservePos) {
3761
dphead.read(stream, false);
3762
lnpc=stream->readU32();
3763
lnpw=stream->readU16();
3764
lnps=stream->readU16();
3765
dlpcFg=stream->readU32();
3766
dlpcBg=stream->readU32();
3767
flpp=stream->readU16();
3768
shdwpi=stream->readU16();
3769
xaOffset=stream->readU16();
3770
yaOffset=stream->readU16();
3777
bool DPELLIPSE::write(OLEStreamWriter *stream, bool preservePos) const {
3782
dphead.write(stream, false);
3783
stream->write(lnpc);
3784
stream->write(lnpw);
3785
stream->write(lnps);
3786
stream->write(dlpcFg);
3787
stream->write(dlpcBg);
3788
stream->write(flpp);
3789
stream->write(shdwpi);
3790
stream->write(xaOffset);
3791
stream->write(yaOffset);
3798
void DPELLIPSE::clear() {
3811
bool operator==(const DPELLIPSE &lhs, const DPELLIPSE &rhs) {
3813
return lhs.dphead==rhs.dphead &&
3814
lhs.lnpc==rhs.lnpc &&
3815
lhs.lnpw==rhs.lnpw &&
3816
lhs.lnps==rhs.lnps &&
3817
lhs.dlpcFg==rhs.dlpcFg &&
3818
lhs.dlpcBg==rhs.dlpcBg &&
3819
lhs.flpp==rhs.flpp &&
3820
lhs.shdwpi==rhs.shdwpi &&
3821
lhs.xaOffset==rhs.xaOffset &&
3822
lhs.yaOffset==rhs.yaOffset;
3825
bool operator!=(const DPELLIPSE &lhs, const DPELLIPSE &rhs) {
3830
// DPLINE implementation
3836
DPLINE::DPLINE(OLEStreamReader *stream, bool preservePos) {
3838
read(stream, preservePos);
3841
bool DPLINE::read(OLEStreamReader *stream, bool preservePos) {
3848
dphead.read(stream, false);
3849
xaStart=stream->readU16();
3850
yaStart=stream->readU16();
3851
xaEnd=stream->readU16();
3852
yaEnd=stream->readU16();
3853
lnpc=stream->readU32();
3854
lnpw=stream->readU16();
3855
lnps=stream->readU16();
3856
shifterU16=stream->readU16();
3857
eppsStart=shifterU16;
3859
eppwStart=shifterU16;
3861
epplStart=shifterU16;
3863
unused24_6=shifterU16;
3864
shifterU16=stream->readU16();
3871
unused26_6=shifterU16;
3872
shdwpi=stream->readU16();
3873
xaOffset=stream->readU16();
3874
yaOffset=stream->readU16();
3881
bool DPLINE::write(OLEStreamWriter *stream, bool preservePos) const {
3888
dphead.write(stream, false);
3889
stream->write(xaStart);
3890
stream->write(yaStart);
3891
stream->write(xaEnd);
3892
stream->write(yaEnd);
3893
stream->write(lnpc);
3894
stream->write(lnpw);
3895
stream->write(lnps);
3896
shifterU16=eppsStart;
3897
shifterU16|=eppwStart << 2;
3898
shifterU16|=epplStart << 4;
3899
shifterU16|=unused24_6 << 6;
3900
stream->write(shifterU16);
3902
shifterU16|=eppwEnd << 2;
3903
shifterU16|=epplEnd << 4;
3904
shifterU16|=unused26_6 << 6;
3905
stream->write(shifterU16);
3906
stream->write(shdwpi);
3907
stream->write(xaOffset);
3908
stream->write(yaOffset);
3915
void DPLINE::clear() {
3937
bool operator==(const DPLINE &lhs, const DPLINE &rhs) {
3939
return lhs.dphead==rhs.dphead &&
3940
lhs.xaStart==rhs.xaStart &&
3941
lhs.yaStart==rhs.yaStart &&
3942
lhs.xaEnd==rhs.xaEnd &&
3943
lhs.yaEnd==rhs.yaEnd &&
3944
lhs.lnpc==rhs.lnpc &&
3945
lhs.lnpw==rhs.lnpw &&
3946
lhs.lnps==rhs.lnps &&
3947
lhs.eppsStart==rhs.eppsStart &&
3948
lhs.eppwStart==rhs.eppwStart &&
3949
lhs.epplStart==rhs.epplStart &&
3950
lhs.unused24_6==rhs.unused24_6 &&
3951
lhs.eppsEnd==rhs.eppsEnd &&
3952
lhs.eppwEnd==rhs.eppwEnd &&
3953
lhs.epplEnd==rhs.epplEnd &&
3954
lhs.unused26_6==rhs.unused26_6 &&
3955
lhs.shdwpi==rhs.shdwpi &&
3956
lhs.xaOffset==rhs.xaOffset &&
3957
lhs.yaOffset==rhs.yaOffset;
3960
bool operator!=(const DPLINE &lhs, const DPLINE &rhs) {
3965
// DPRECT implementation
3971
DPRECT::DPRECT(OLEStreamReader *stream, bool preservePos) {
3973
read(stream, preservePos);
3976
bool DPRECT::read(OLEStreamReader *stream, bool preservePos) {
3983
dphead.read(stream, false);
3984
lnpc=stream->readU32();
3985
lnpw=stream->readU16();
3986
lnps=stream->readU16();
3987
dlpcFg=stream->readU32();
3988
dlpcBg=stream->readU32();
3989
flpp=stream->readU16();
3990
shdwpi=stream->readU16();
3991
xaOffset=stream->readU16();
3992
yaOffset=stream->readU16();
3993
shifterU16=stream->readU16();
3994
fRoundCorners=shifterU16;
4003
bool DPRECT::write(OLEStreamWriter *stream, bool preservePos) const {
4010
dphead.write(stream, false);
4011
stream->write(lnpc);
4012
stream->write(lnpw);
4013
stream->write(lnps);
4014
stream->write(dlpcFg);
4015
stream->write(dlpcBg);
4016
stream->write(flpp);
4017
stream->write(shdwpi);
4018
stream->write(xaOffset);
4019
stream->write(yaOffset);
4020
shifterU16=fRoundCorners;
4021
shifterU16|=zaShape << 1;
4022
stream->write(shifterU16);
4029
void DPRECT::clear() {
4044
bool operator==(const DPRECT &lhs, const DPRECT &rhs) {
4046
return lhs.dphead==rhs.dphead &&
4047
lhs.lnpc==rhs.lnpc &&
4048
lhs.lnpw==rhs.lnpw &&
4049
lhs.lnps==rhs.lnps &&
4050
lhs.dlpcFg==rhs.dlpcFg &&
4051
lhs.dlpcBg==rhs.dlpcBg &&
4052
lhs.flpp==rhs.flpp &&
4053
lhs.shdwpi==rhs.shdwpi &&
4054
lhs.xaOffset==rhs.xaOffset &&
4055
lhs.yaOffset==rhs.yaOffset &&
4056
lhs.fRoundCorners==rhs.fRoundCorners &&
4057
lhs.zaShape==rhs.zaShape;
4060
bool operator!=(const DPRECT &lhs, const DPRECT &rhs) {
4065
// DPSAMPLE implementation
4067
DPSAMPLE::DPSAMPLE() {
4071
DPSAMPLE::DPSAMPLE(OLEStreamReader *stream, bool preservePos) {
4073
read(stream, preservePos);
4076
bool DPSAMPLE::read(OLEStreamReader *stream, bool preservePos) {
4083
dphead.read(stream, false);
4084
lnpc=stream->readU32();
4085
lnpw=stream->readU16();
4086
lnps=stream->readU16();
4087
dlpcFg=stream->readU32();
4088
dlpcBg=stream->readU32();
4089
flpp=stream->readU16();
4090
shifterU16=stream->readU16();
4091
eppsStart=shifterU16;
4093
eppwStart=shifterU16;
4095
epplStart=shifterU16;
4097
unused30_6=shifterU16;
4098
shifterU16=stream->readU16();
4105
unused32_6=shifterU16;
4106
shdwpi=stream->readU16();
4107
xaOffset=stream->readU16();
4108
yaOffset=stream->readU16();
4109
unused40=stream->readU16();
4110
dzaOffset=stream->readU16();
4111
dzaDescent=stream->readU16();
4112
dzaLength=stream->readU16();
4113
shifterU16=stream->readU16();
4114
fRoundCorners=shifterU16;
4117
dzaInternalMargin=stream->readU16();
4124
bool DPSAMPLE::write(OLEStreamWriter *stream, bool preservePos) const {
4131
dphead.write(stream, false);
4132
stream->write(lnpc);
4133
stream->write(lnpw);
4134
stream->write(lnps);
4135
stream->write(dlpcFg);
4136
stream->write(dlpcBg);
4137
stream->write(flpp);
4138
shifterU16=eppsStart;
4139
shifterU16|=eppwStart << 2;
4140
shifterU16|=epplStart << 4;
4141
shifterU16|=unused30_6 << 6;
4142
stream->write(shifterU16);
4144
shifterU16|=eppwEnd << 2;
4145
shifterU16|=epplEnd << 4;
4146
shifterU16|=unused32_6 << 6;
4147
stream->write(shifterU16);
4148
stream->write(shdwpi);
4149
stream->write(xaOffset);
4150
stream->write(yaOffset);
4151
stream->write(unused40);
4152
stream->write(dzaOffset);
4153
stream->write(dzaDescent);
4154
stream->write(dzaLength);
4155
shifterU16=fRoundCorners;
4156
shifterU16|=zaShape << 1;
4157
stream->write(shifterU16);
4158
stream->write(dzaInternalMargin);
4165
void DPSAMPLE::clear() {
4190
dzaInternalMargin=0;
4193
bool operator==(const DPSAMPLE &lhs, const DPSAMPLE &rhs) {
4195
return lhs.dphead==rhs.dphead &&
4196
lhs.lnpc==rhs.lnpc &&
4197
lhs.lnpw==rhs.lnpw &&
4198
lhs.lnps==rhs.lnps &&
4199
lhs.dlpcFg==rhs.dlpcFg &&
4200
lhs.dlpcBg==rhs.dlpcBg &&
4201
lhs.flpp==rhs.flpp &&
4202
lhs.eppsStart==rhs.eppsStart &&
4203
lhs.eppwStart==rhs.eppwStart &&
4204
lhs.epplStart==rhs.epplStart &&
4205
lhs.unused30_6==rhs.unused30_6 &&
4206
lhs.eppsEnd==rhs.eppsEnd &&
4207
lhs.eppwEnd==rhs.eppwEnd &&
4208
lhs.epplEnd==rhs.epplEnd &&
4209
lhs.unused32_6==rhs.unused32_6 &&
4210
lhs.shdwpi==rhs.shdwpi &&
4211
lhs.xaOffset==rhs.xaOffset &&
4212
lhs.yaOffset==rhs.yaOffset &&
4213
lhs.unused40==rhs.unused40 &&
4214
lhs.dzaOffset==rhs.dzaOffset &&
4215
lhs.dzaDescent==rhs.dzaDescent &&
4216
lhs.dzaLength==rhs.dzaLength &&
4217
lhs.fRoundCorners==rhs.fRoundCorners &&
4218
lhs.zaShape==rhs.zaShape &&
4219
lhs.dzaInternalMargin==rhs.dzaInternalMargin;
4222
bool operator!=(const DPSAMPLE &lhs, const DPSAMPLE &rhs) {
4227
// FDOA implementation
4233
FDOA::FDOA(OLEStreamReader *stream, bool preservePos) {
4235
read(stream, preservePos);
4238
bool FDOA::read(OLEStreamReader *stream, bool preservePos) {
4243
fc=stream->readU32();
4244
ctxbx=stream->readU16();
4251
bool FDOA::write(OLEStreamWriter *stream, bool preservePos) const {
4257
stream->write(ctxbx);
4264
void FDOA::clear() {
4269
bool operator==(const FDOA &lhs, const FDOA &rhs) {
4271
return lhs.fc==rhs.fc &&
4272
lhs.ctxbx==rhs.ctxbx;
4275
bool operator!=(const FDOA &lhs, const FDOA &rhs) {
4280
// FIB implementation
4286
FIB::FIB(OLEStreamReader *stream, bool preservePos) {
4288
read(stream, preservePos);
4291
bool FIB::read(OLEStreamReader *stream, bool preservePos) {
4298
wIdent=stream->readU16();
4299
nFib=stream->readU16();
4300
nProduct=stream->readU16();
4301
lid=stream->readU16();
4302
pnNext=stream->readU16();
4303
shifterU16=stream->readU16();
4308
fComplex=shifterU16;
4312
cQuickSaves=shifterU16;
4314
fEncrypted=shifterU16;
4316
unused10_9=shifterU16;
4318
fReadOnlyRecommended=shifterU16;
4320
fWriteReservation=shifterU16;
4322
fExtChar=shifterU16;
4324
unused10_13=shifterU16;
4325
nFibBack=stream->readU16();
4326
lKey=stream->readU32();
4327
envr=stream->readU8();
4328
unused19=stream->readU8();
4329
chse=stream->readU16();
4330
chseTables=stream->readU16();
4331
fcMin=stream->readU32();
4332
fcMac=stream->readU32();
4333
cbMac=stream->readU32();
4334
fcSpare0=stream->readU32();
4335
fcSpare1=stream->readU32();
4336
fcSpare2=stream->readU32();
4337
fcSpare3=stream->readU32();
4338
ccpText=stream->readU32();
4339
ccpFtn=stream->readU32();
4340
ccpHdd=stream->readU32();
4341
ccpMcr=stream->readU32();
4342
ccpAtn=stream->readU32();
4343
ccpEdn=stream->readU32();
4344
ccpTxbx=stream->readU32();
4345
ccpHdrTxbx=stream->readU32();
4346
ccpSpare2=stream->readU32();
4347
fcStshfOrig=stream->readU32();
4348
lcbStshfOrig=stream->readU32();
4349
fcStshf=stream->readU32();
4350
lcbStshf=stream->readU32();
4351
fcPlcffndRef=stream->readU32();
4352
lcbPlcffndRef=stream->readU32();
4353
fcPlcffndTxt=stream->readU32();
4354
lcbPlcffndTxt=stream->readU32();
4355
fcPlcfandRef=stream->readU32();
4356
lcbPlcfandRef=stream->readU32();
4357
fcPlcfandTxt=stream->readU32();
4358
lcbPlcfandTxt=stream->readU32();
4359
fcPlcfsed=stream->readU32();
4360
lcbPlcfsed=stream->readU32();
4361
fcPlcfpad=stream->readU32();
4362
lcbPlcfpad=stream->readU32();
4363
fcPlcfphe=stream->readU32();
4364
lcbPlcfphe=stream->readU32();
4365
fcSttbfglsy=stream->readU32();
4366
lcbSttbfglsy=stream->readU32();
4367
fcPlcfglsy=stream->readU32();
4368
lcbPlcfglsy=stream->readU32();
4369
fcPlcfhdd=stream->readU32();
4370
lcbPlcfhdd=stream->readU32();
4371
fcPlcfbteChpx=stream->readU32();
4372
lcbPlcfbteChpx=stream->readU32();
4373
fcPlcfbtePapx=stream->readU32();
4374
lcbPlcfbtePapx=stream->readU32();
4375
fcPlcfsea=stream->readU32();
4376
lcbPlcfsea=stream->readU32();
4377
fcSttbfffn=stream->readU32();
4378
lcbSttbfffn=stream->readU32();
4379
fcPlcffldMom=stream->readU32();
4380
lcbPlcffldMom=stream->readU32();
4381
fcPlcffldHdr=stream->readU32();
4382
lcbPlcffldHdr=stream->readU32();
4383
fcPlcffldFtn=stream->readU32();
4384
lcbPlcffldFtn=stream->readU32();
4385
fcPlcffldAtn=stream->readU32();
4386
lcbPlcffldAtn=stream->readU32();
4387
fcPlcffldMcr=stream->readU32();
4388
lcbPlcffldMcr=stream->readU32();
4389
fcSttbfbkmk=stream->readU32();
4390
lcbSttbfbkmk=stream->readU32();
4391
fcPlcfbkf=stream->readU32();
4392
lcbPlcfbkf=stream->readU32();
4393
fcPlcfbkl=stream->readU32();
4394
lcbPlcfbkl=stream->readU32();
4395
fcCmds=stream->readU32();
4396
lcbCmds=stream->readU32();
4397
fcPlcmcr=stream->readU32();
4398
lcbPlcmcr=stream->readU32();
4399
fcSttbfmcr=stream->readU32();
4400
lcbSttbfmcr=stream->readU32();
4401
fcPrDrvr=stream->readU32();
4402
lcbPrDrvr=stream->readU32();
4403
fcPrEnvPort=stream->readU32();
4404
lcbPrEnvPort=stream->readU32();
4405
fcPrEnvLand=stream->readU32();
4406
lcbPrEnvLand=stream->readU32();
4407
fcWss=stream->readU32();
4408
lcbWss=stream->readU32();
4409
fcDop=stream->readU32();
4410
lcbDop=stream->readU32();
4411
fcSttbfAssoc=stream->readU32();
4412
lcbSttbfAssoc=stream->readU32();
4413
fcClx=stream->readU32();
4414
lcbClx=stream->readU32();
4415
fcPlcfpgdFtn=stream->readU32();
4416
lcbPlcfpgdFtn=stream->readU32();
4417
fcAutosaveSource=stream->readU32();
4418
lcbAutosaveSource=stream->readU32();
4419
fcGrpStAtnOwners=stream->readU32();
4420
lcbGrpStAtnOwners=stream->readU32();
4421
fcSttbfAtnbkmk=stream->readU32();
4422
lcbSttbfAtnbkmk=stream->readU32();
4423
wSpare4Fib=stream->readU16();
4424
pnChpFirst=stream->readU16();
4425
pnPapFirst=stream->readU16();
4426
cpnBteChp=stream->readU16();
4427
cpnBtePap=stream->readU16();
4428
fcPlcfdoaMom=stream->readU32();
4429
lcbPlcfdoaMom=stream->readU32();
4430
fcPlcfdoaHdr=stream->readU32();
4431
lcbPlcfdoaHdr=stream->readU32();
4432
fcUnused1=stream->readU32();
4433
lcbUnused1=stream->readU32();
4434
fcUnused2=stream->readU32();
4435
lcbUnused2=stream->readU32();
4436
fcPlcfAtnbkf=stream->readU32();
4437
lcbPlcfAtnbkf=stream->readU32();
4438
fcPlcfAtnbkl=stream->readU32();
4439
lcbPlcfAtnbkl=stream->readU32();
4440
fcPms=stream->readU32();
4441
lcbPms=stream->readU32();
4442
fcFormFldSttbf=stream->readU32();
4443
lcbFormFldSttbf=stream->readU32();
4444
fcPlcfendRef=stream->readU32();
4445
lcbPlcfendRef=stream->readU32();
4446
fcPlcfendTxt=stream->readU32();
4447
lcbPlcfendTxt=stream->readU32();
4448
fcPlcffldEdn=stream->readU32();
4449
lcbPlcffldEdn=stream->readU32();
4450
fcPlcfpgdEdn=stream->readU32();
4451
lcbPlcfpgdEdn=stream->readU32();
4452
fcUnused3=stream->readU32();
4453
lcbUnused3=stream->readU32();
4454
fcSttbfRMark=stream->readU32();
4455
lcbSttbfRMark=stream->readU32();
4456
fcSttbfCaption=stream->readU32();
4457
lcbSttbfCaption=stream->readU32();
4458
fcSttbfAutoCaption=stream->readU32();
4459
lcbSttbfAutoCaption=stream->readU32();
4460
fcPlcfwkb=stream->readU32();
4461
lcbPlcfwkb=stream->readU32();
4462
fcUnused4=stream->readU32();
4463
lcbUnused4=stream->readU32();
4464
fcPlcftxbxTxt=stream->readU32();
4465
lcbPlcftxbxTxt=stream->readU32();
4466
fcPlcffldTxbx=stream->readU32();
4467
lcbPlcffldTxbx=stream->readU32();
4468
fcPlcfHdrtxbxTxt=stream->readU32();
4469
lcbPlcfHdrtxbxTxt=stream->readU32();
4470
fcPlcffldHdrTxbx=stream->readU32();
4471
lcbPlcffldHdrTxbx=stream->readU32();
4472
fcStwUser=stream->readU32();
4473
lcbStwUser=stream->readU32();
4474
fcSttbttmbd=stream->readU32();
4475
lcbSttbttmbd=stream->readU32();
4476
fcUnused=stream->readU32();
4477
lcbUnused=stream->readU32();
4478
fcPgdMother=stream->readU32();
4479
lcbPgdMother=stream->readU32();
4480
fcBkdMother=stream->readU32();
4481
lcbBkdMother=stream->readU32();
4482
fcPgdFtn=stream->readU32();
4483
lcbPgdFtn=stream->readU32();
4484
fcBkdFtn=stream->readU32();
4485
lcbBkdFtn=stream->readU32();
4486
fcPgdEdn=stream->readU32();
4487
lcbPgdEdn=stream->readU32();
4488
fcBkdEdn=stream->readU32();
4489
lcbBkdEdn=stream->readU32();
4490
fcSttbfIntlFld=stream->readU32();
4491
lcbSttbfIntlFld=stream->readU32();
4492
fcRouteSlip=stream->readU32();
4493
lcbRouteSlip=stream->readU32();
4494
fcSttbSavedBy=stream->readU32();
4495
lcbSttbSavedBy=stream->readU32();
4496
fcSttbFnm=stream->readU32();
4497
lcbSttbFnm=stream->readU32();
4504
bool FIB::write(OLEStreamWriter *stream, bool preservePos) const {
4511
stream->write(wIdent);
4512
stream->write(nFib);
4513
stream->write(nProduct);
4515
stream->write(pnNext);
4517
shifterU16|=fGlsy << 1;
4518
shifterU16|=fComplex << 2;
4519
shifterU16|=fHasPic << 3;
4520
shifterU16|=cQuickSaves << 4;
4521
shifterU16|=fEncrypted << 8;
4522
shifterU16|=unused10_9 << 9;
4523
shifterU16|=fReadOnlyRecommended << 10;
4524
shifterU16|=fWriteReservation << 11;
4525
shifterU16|=fExtChar << 12;
4526
shifterU16|=unused10_13 << 13;
4527
stream->write(shifterU16);
4528
stream->write(nFibBack);
4529
stream->write(lKey);
4530
stream->write(envr);
4531
stream->write(unused19);
4532
stream->write(chse);
4533
stream->write(chseTables);
4534
stream->write(fcMin);
4535
stream->write(fcMac);
4536
stream->write(cbMac);
4537
stream->write(fcSpare0);
4538
stream->write(fcSpare1);
4539
stream->write(fcSpare2);
4540
stream->write(fcSpare3);
4541
stream->write(ccpText);
4542
stream->write(ccpFtn);
4543
stream->write(ccpHdd);
4544
stream->write(ccpMcr);
4545
stream->write(ccpAtn);
4546
stream->write(ccpEdn);
4547
stream->write(ccpTxbx);
4548
stream->write(ccpHdrTxbx);
4549
stream->write(ccpSpare2);
4550
stream->write(fcStshfOrig);
4551
stream->write(lcbStshfOrig);
4552
stream->write(fcStshf);
4553
stream->write(lcbStshf);
4554
stream->write(fcPlcffndRef);
4555
stream->write(lcbPlcffndRef);
4556
stream->write(fcPlcffndTxt);
4557
stream->write(lcbPlcffndTxt);
4558
stream->write(fcPlcfandRef);
4559
stream->write(lcbPlcfandRef);
4560
stream->write(fcPlcfandTxt);
4561
stream->write(lcbPlcfandTxt);
4562
stream->write(fcPlcfsed);
4563
stream->write(lcbPlcfsed);
4564
stream->write(fcPlcfpad);
4565
stream->write(lcbPlcfpad);
4566
stream->write(fcPlcfphe);
4567
stream->write(lcbPlcfphe);
4568
stream->write(fcSttbfglsy);
4569
stream->write(lcbSttbfglsy);
4570
stream->write(fcPlcfglsy);
4571
stream->write(lcbPlcfglsy);
4572
stream->write(fcPlcfhdd);
4573
stream->write(lcbPlcfhdd);
4574
stream->write(fcPlcfbteChpx);
4575
stream->write(lcbPlcfbteChpx);
4576
stream->write(fcPlcfbtePapx);
4577
stream->write(lcbPlcfbtePapx);
4578
stream->write(fcPlcfsea);
4579
stream->write(lcbPlcfsea);
4580
stream->write(fcSttbfffn);
4581
stream->write(lcbSttbfffn);
4582
stream->write(fcPlcffldMom);
4583
stream->write(lcbPlcffldMom);
4584
stream->write(fcPlcffldHdr);
4585
stream->write(lcbPlcffldHdr);
4586
stream->write(fcPlcffldFtn);
4587
stream->write(lcbPlcffldFtn);
4588
stream->write(fcPlcffldAtn);
4589
stream->write(lcbPlcffldAtn);
4590
stream->write(fcPlcffldMcr);
4591
stream->write(lcbPlcffldMcr);
4592
stream->write(fcSttbfbkmk);
4593
stream->write(lcbSttbfbkmk);
4594
stream->write(fcPlcfbkf);
4595
stream->write(lcbPlcfbkf);
4596
stream->write(fcPlcfbkl);
4597
stream->write(lcbPlcfbkl);
4598
stream->write(fcCmds);
4599
stream->write(lcbCmds);
4600
stream->write(fcPlcmcr);
4601
stream->write(lcbPlcmcr);
4602
stream->write(fcSttbfmcr);
4603
stream->write(lcbSttbfmcr);
4604
stream->write(fcPrDrvr);
4605
stream->write(lcbPrDrvr);
4606
stream->write(fcPrEnvPort);
4607
stream->write(lcbPrEnvPort);
4608
stream->write(fcPrEnvLand);
4609
stream->write(lcbPrEnvLand);
4610
stream->write(fcWss);
4611
stream->write(lcbWss);
4612
stream->write(fcDop);
4613
stream->write(lcbDop);
4614
stream->write(fcSttbfAssoc);
4615
stream->write(lcbSttbfAssoc);
4616
stream->write(fcClx);
4617
stream->write(lcbClx);
4618
stream->write(fcPlcfpgdFtn);
4619
stream->write(lcbPlcfpgdFtn);
4620
stream->write(fcAutosaveSource);
4621
stream->write(lcbAutosaveSource);
4622
stream->write(fcGrpStAtnOwners);
4623
stream->write(lcbGrpStAtnOwners);
4624
stream->write(fcSttbfAtnbkmk);
4625
stream->write(lcbSttbfAtnbkmk);
4626
stream->write(wSpare4Fib);
4627
stream->write(pnChpFirst);
4628
stream->write(pnPapFirst);
4629
stream->write(cpnBteChp);
4630
stream->write(cpnBtePap);
4631
stream->write(fcPlcfdoaMom);
4632
stream->write(lcbPlcfdoaMom);
4633
stream->write(fcPlcfdoaHdr);
4634
stream->write(lcbPlcfdoaHdr);
4635
stream->write(fcUnused1);
4636
stream->write(lcbUnused1);
4637
stream->write(fcUnused2);
4638
stream->write(lcbUnused2);
4639
stream->write(fcPlcfAtnbkf);
4640
stream->write(lcbPlcfAtnbkf);
4641
stream->write(fcPlcfAtnbkl);
4642
stream->write(lcbPlcfAtnbkl);
4643
stream->write(fcPms);
4644
stream->write(lcbPms);
4645
stream->write(fcFormFldSttbf);
4646
stream->write(lcbFormFldSttbf);
4647
stream->write(fcPlcfendRef);
4648
stream->write(lcbPlcfendRef);
4649
stream->write(fcPlcfendTxt);
4650
stream->write(lcbPlcfendTxt);
4651
stream->write(fcPlcffldEdn);
4652
stream->write(lcbPlcffldEdn);
4653
stream->write(fcPlcfpgdEdn);
4654
stream->write(lcbPlcfpgdEdn);
4655
stream->write(fcUnused3);
4656
stream->write(lcbUnused3);
4657
stream->write(fcSttbfRMark);
4658
stream->write(lcbSttbfRMark);
4659
stream->write(fcSttbfCaption);
4660
stream->write(lcbSttbfCaption);
4661
stream->write(fcSttbfAutoCaption);
4662
stream->write(lcbSttbfAutoCaption);
4663
stream->write(fcPlcfwkb);
4664
stream->write(lcbPlcfwkb);
4665
stream->write(fcUnused4);
4666
stream->write(lcbUnused4);
4667
stream->write(fcPlcftxbxTxt);
4668
stream->write(lcbPlcftxbxTxt);
4669
stream->write(fcPlcffldTxbx);
4670
stream->write(lcbPlcffldTxbx);
4671
stream->write(fcPlcfHdrtxbxTxt);
4672
stream->write(lcbPlcfHdrtxbxTxt);
4673
stream->write(fcPlcffldHdrTxbx);
4674
stream->write(lcbPlcffldHdrTxbx);
4675
stream->write(fcStwUser);
4676
stream->write(lcbStwUser);
4677
stream->write(fcSttbttmbd);
4678
stream->write(lcbSttbttmbd);
4679
stream->write(fcUnused);
4680
stream->write(lcbUnused);
4681
stream->write(fcPgdMother);
4682
stream->write(lcbPgdMother);
4683
stream->write(fcBkdMother);
4684
stream->write(lcbBkdMother);
4685
stream->write(fcPgdFtn);
4686
stream->write(lcbPgdFtn);
4687
stream->write(fcBkdFtn);
4688
stream->write(lcbBkdFtn);
4689
stream->write(fcPgdEdn);
4690
stream->write(lcbPgdEdn);
4691
stream->write(fcBkdEdn);
4692
stream->write(lcbBkdEdn);
4693
stream->write(fcSttbfIntlFld);
4694
stream->write(lcbSttbfIntlFld);
4695
stream->write(fcRouteSlip);
4696
stream->write(lcbRouteSlip);
4697
stream->write(fcSttbSavedBy);
4698
stream->write(lcbSttbSavedBy);
4699
stream->write(fcSttbFnm);
4700
stream->write(lcbSttbFnm);
4720
fReadOnlyRecommended=0;
4721
fWriteReservation=0;
4817
lcbAutosaveSource=0;
4819
lcbGrpStAtnOwners=0;
4857
fcSttbfAutoCaption=0;
4858
lcbSttbfAutoCaption=0;
4868
lcbPlcfHdrtxbxTxt=0;
4870
lcbPlcffldHdrTxbx=0;
4899
bool operator==(const FIB &lhs, const FIB &rhs) {
4901
return lhs.wIdent==rhs.wIdent &&
4902
lhs.nFib==rhs.nFib &&
4903
lhs.nProduct==rhs.nProduct &&
4905
lhs.pnNext==rhs.pnNext &&
4906
lhs.fDot==rhs.fDot &&
4907
lhs.fGlsy==rhs.fGlsy &&
4908
lhs.fComplex==rhs.fComplex &&
4909
lhs.fHasPic==rhs.fHasPic &&
4910
lhs.cQuickSaves==rhs.cQuickSaves &&
4911
lhs.fEncrypted==rhs.fEncrypted &&
4912
lhs.unused10_9==rhs.unused10_9 &&
4913
lhs.fReadOnlyRecommended==rhs.fReadOnlyRecommended &&
4914
lhs.fWriteReservation==rhs.fWriteReservation &&
4915
lhs.fExtChar==rhs.fExtChar &&
4916
lhs.unused10_13==rhs.unused10_13 &&
4917
lhs.nFibBack==rhs.nFibBack &&
4918
lhs.lKey==rhs.lKey &&
4919
lhs.envr==rhs.envr &&
4920
lhs.unused19==rhs.unused19 &&
4921
lhs.chse==rhs.chse &&
4922
lhs.chseTables==rhs.chseTables &&
4923
lhs.fcMin==rhs.fcMin &&
4924
lhs.fcMac==rhs.fcMac &&
4925
lhs.cbMac==rhs.cbMac &&
4926
lhs.fcSpare0==rhs.fcSpare0 &&
4927
lhs.fcSpare1==rhs.fcSpare1 &&
4928
lhs.fcSpare2==rhs.fcSpare2 &&
4929
lhs.fcSpare3==rhs.fcSpare3 &&
4930
lhs.ccpText==rhs.ccpText &&
4931
lhs.ccpFtn==rhs.ccpFtn &&
4932
lhs.ccpHdd==rhs.ccpHdd &&
4933
lhs.ccpMcr==rhs.ccpMcr &&
4934
lhs.ccpAtn==rhs.ccpAtn &&
4935
lhs.ccpEdn==rhs.ccpEdn &&
4936
lhs.ccpTxbx==rhs.ccpTxbx &&
4937
lhs.ccpHdrTxbx==rhs.ccpHdrTxbx &&
4938
lhs.ccpSpare2==rhs.ccpSpare2 &&
4939
lhs.fcStshfOrig==rhs.fcStshfOrig &&
4940
lhs.lcbStshfOrig==rhs.lcbStshfOrig &&
4941
lhs.fcStshf==rhs.fcStshf &&
4942
lhs.lcbStshf==rhs.lcbStshf &&
4943
lhs.fcPlcffndRef==rhs.fcPlcffndRef &&
4944
lhs.lcbPlcffndRef==rhs.lcbPlcffndRef &&
4945
lhs.fcPlcffndTxt==rhs.fcPlcffndTxt &&
4946
lhs.lcbPlcffndTxt==rhs.lcbPlcffndTxt &&
4947
lhs.fcPlcfandRef==rhs.fcPlcfandRef &&
4948
lhs.lcbPlcfandRef==rhs.lcbPlcfandRef &&
4949
lhs.fcPlcfandTxt==rhs.fcPlcfandTxt &&
4950
lhs.lcbPlcfandTxt==rhs.lcbPlcfandTxt &&
4951
lhs.fcPlcfsed==rhs.fcPlcfsed &&
4952
lhs.lcbPlcfsed==rhs.lcbPlcfsed &&
4953
lhs.fcPlcfpad==rhs.fcPlcfpad &&
4954
lhs.lcbPlcfpad==rhs.lcbPlcfpad &&
4955
lhs.fcPlcfphe==rhs.fcPlcfphe &&
4956
lhs.lcbPlcfphe==rhs.lcbPlcfphe &&
4957
lhs.fcSttbfglsy==rhs.fcSttbfglsy &&
4958
lhs.lcbSttbfglsy==rhs.lcbSttbfglsy &&
4959
lhs.fcPlcfglsy==rhs.fcPlcfglsy &&
4960
lhs.lcbPlcfglsy==rhs.lcbPlcfglsy &&
4961
lhs.fcPlcfhdd==rhs.fcPlcfhdd &&
4962
lhs.lcbPlcfhdd==rhs.lcbPlcfhdd &&
4963
lhs.fcPlcfbteChpx==rhs.fcPlcfbteChpx &&
4964
lhs.lcbPlcfbteChpx==rhs.lcbPlcfbteChpx &&
4965
lhs.fcPlcfbtePapx==rhs.fcPlcfbtePapx &&
4966
lhs.lcbPlcfbtePapx==rhs.lcbPlcfbtePapx &&
4967
lhs.fcPlcfsea==rhs.fcPlcfsea &&
4968
lhs.lcbPlcfsea==rhs.lcbPlcfsea &&
4969
lhs.fcSttbfffn==rhs.fcSttbfffn &&
4970
lhs.lcbSttbfffn==rhs.lcbSttbfffn &&
4971
lhs.fcPlcffldMom==rhs.fcPlcffldMom &&
4972
lhs.lcbPlcffldMom==rhs.lcbPlcffldMom &&
4973
lhs.fcPlcffldHdr==rhs.fcPlcffldHdr &&
4974
lhs.lcbPlcffldHdr==rhs.lcbPlcffldHdr &&
4975
lhs.fcPlcffldFtn==rhs.fcPlcffldFtn &&
4976
lhs.lcbPlcffldFtn==rhs.lcbPlcffldFtn &&
4977
lhs.fcPlcffldAtn==rhs.fcPlcffldAtn &&
4978
lhs.lcbPlcffldAtn==rhs.lcbPlcffldAtn &&
4979
lhs.fcPlcffldMcr==rhs.fcPlcffldMcr &&
4980
lhs.lcbPlcffldMcr==rhs.lcbPlcffldMcr &&
4981
lhs.fcSttbfbkmk==rhs.fcSttbfbkmk &&
4982
lhs.lcbSttbfbkmk==rhs.lcbSttbfbkmk &&
4983
lhs.fcPlcfbkf==rhs.fcPlcfbkf &&
4984
lhs.lcbPlcfbkf==rhs.lcbPlcfbkf &&
4985
lhs.fcPlcfbkl==rhs.fcPlcfbkl &&
4986
lhs.lcbPlcfbkl==rhs.lcbPlcfbkl &&
4987
lhs.fcCmds==rhs.fcCmds &&
4988
lhs.lcbCmds==rhs.lcbCmds &&
4989
lhs.fcPlcmcr==rhs.fcPlcmcr &&
4990
lhs.lcbPlcmcr==rhs.lcbPlcmcr &&
4991
lhs.fcSttbfmcr==rhs.fcSttbfmcr &&
4992
lhs.lcbSttbfmcr==rhs.lcbSttbfmcr &&
4993
lhs.fcPrDrvr==rhs.fcPrDrvr &&
4994
lhs.lcbPrDrvr==rhs.lcbPrDrvr &&
4995
lhs.fcPrEnvPort==rhs.fcPrEnvPort &&
4996
lhs.lcbPrEnvPort==rhs.lcbPrEnvPort &&
4997
lhs.fcPrEnvLand==rhs.fcPrEnvLand &&
4998
lhs.lcbPrEnvLand==rhs.lcbPrEnvLand &&
4999
lhs.fcWss==rhs.fcWss &&
5000
lhs.lcbWss==rhs.lcbWss &&
5001
lhs.fcDop==rhs.fcDop &&
5002
lhs.lcbDop==rhs.lcbDop &&
5003
lhs.fcSttbfAssoc==rhs.fcSttbfAssoc &&
5004
lhs.lcbSttbfAssoc==rhs.lcbSttbfAssoc &&
5005
lhs.fcClx==rhs.fcClx &&
5006
lhs.lcbClx==rhs.lcbClx &&
5007
lhs.fcPlcfpgdFtn==rhs.fcPlcfpgdFtn &&
5008
lhs.lcbPlcfpgdFtn==rhs.lcbPlcfpgdFtn &&
5009
lhs.fcAutosaveSource==rhs.fcAutosaveSource &&
5010
lhs.lcbAutosaveSource==rhs.lcbAutosaveSource &&
5011
lhs.fcGrpStAtnOwners==rhs.fcGrpStAtnOwners &&
5012
lhs.lcbGrpStAtnOwners==rhs.lcbGrpStAtnOwners &&
5013
lhs.fcSttbfAtnbkmk==rhs.fcSttbfAtnbkmk &&
5014
lhs.lcbSttbfAtnbkmk==rhs.lcbSttbfAtnbkmk &&
5015
lhs.wSpare4Fib==rhs.wSpare4Fib &&
5016
lhs.pnChpFirst==rhs.pnChpFirst &&
5017
lhs.pnPapFirst==rhs.pnPapFirst &&
5018
lhs.cpnBteChp==rhs.cpnBteChp &&
5019
lhs.cpnBtePap==rhs.cpnBtePap &&
5020
lhs.fcPlcfdoaMom==rhs.fcPlcfdoaMom &&
5021
lhs.lcbPlcfdoaMom==rhs.lcbPlcfdoaMom &&
5022
lhs.fcPlcfdoaHdr==rhs.fcPlcfdoaHdr &&
5023
lhs.lcbPlcfdoaHdr==rhs.lcbPlcfdoaHdr &&
5024
lhs.fcUnused1==rhs.fcUnused1 &&
5025
lhs.lcbUnused1==rhs.lcbUnused1 &&
5026
lhs.fcUnused2==rhs.fcUnused2 &&
5027
lhs.lcbUnused2==rhs.lcbUnused2 &&
5028
lhs.fcPlcfAtnbkf==rhs.fcPlcfAtnbkf &&
5029
lhs.lcbPlcfAtnbkf==rhs.lcbPlcfAtnbkf &&
5030
lhs.fcPlcfAtnbkl==rhs.fcPlcfAtnbkl &&
5031
lhs.lcbPlcfAtnbkl==rhs.lcbPlcfAtnbkl &&
5032
lhs.fcPms==rhs.fcPms &&
5033
lhs.lcbPms==rhs.lcbPms &&
5034
lhs.fcFormFldSttbf==rhs.fcFormFldSttbf &&
5035
lhs.lcbFormFldSttbf==rhs.lcbFormFldSttbf &&
5036
lhs.fcPlcfendRef==rhs.fcPlcfendRef &&
5037
lhs.lcbPlcfendRef==rhs.lcbPlcfendRef &&
5038
lhs.fcPlcfendTxt==rhs.fcPlcfendTxt &&
5039
lhs.lcbPlcfendTxt==rhs.lcbPlcfendTxt &&
5040
lhs.fcPlcffldEdn==rhs.fcPlcffldEdn &&
5041
lhs.lcbPlcffldEdn==rhs.lcbPlcffldEdn &&
5042
lhs.fcPlcfpgdEdn==rhs.fcPlcfpgdEdn &&
5043
lhs.lcbPlcfpgdEdn==rhs.lcbPlcfpgdEdn &&
5044
lhs.fcUnused3==rhs.fcUnused3 &&
5045
lhs.lcbUnused3==rhs.lcbUnused3 &&
5046
lhs.fcSttbfRMark==rhs.fcSttbfRMark &&
5047
lhs.lcbSttbfRMark==rhs.lcbSttbfRMark &&
5048
lhs.fcSttbfCaption==rhs.fcSttbfCaption &&
5049
lhs.lcbSttbfCaption==rhs.lcbSttbfCaption &&
5050
lhs.fcSttbfAutoCaption==rhs.fcSttbfAutoCaption &&
5051
lhs.lcbSttbfAutoCaption==rhs.lcbSttbfAutoCaption &&
5052
lhs.fcPlcfwkb==rhs.fcPlcfwkb &&
5053
lhs.lcbPlcfwkb==rhs.lcbPlcfwkb &&
5054
lhs.fcUnused4==rhs.fcUnused4 &&
5055
lhs.lcbUnused4==rhs.lcbUnused4 &&
5056
lhs.fcPlcftxbxTxt==rhs.fcPlcftxbxTxt &&
5057
lhs.lcbPlcftxbxTxt==rhs.lcbPlcftxbxTxt &&
5058
lhs.fcPlcffldTxbx==rhs.fcPlcffldTxbx &&
5059
lhs.lcbPlcffldTxbx==rhs.lcbPlcffldTxbx &&
5060
lhs.fcPlcfHdrtxbxTxt==rhs.fcPlcfHdrtxbxTxt &&
5061
lhs.lcbPlcfHdrtxbxTxt==rhs.lcbPlcfHdrtxbxTxt &&
5062
lhs.fcPlcffldHdrTxbx==rhs.fcPlcffldHdrTxbx &&
5063
lhs.lcbPlcffldHdrTxbx==rhs.lcbPlcffldHdrTxbx &&
5064
lhs.fcStwUser==rhs.fcStwUser &&
5065
lhs.lcbStwUser==rhs.lcbStwUser &&
5066
lhs.fcSttbttmbd==rhs.fcSttbttmbd &&
5067
lhs.lcbSttbttmbd==rhs.lcbSttbttmbd &&
5068
lhs.fcUnused==rhs.fcUnused &&
5069
lhs.lcbUnused==rhs.lcbUnused &&
5070
lhs.fcPgdMother==rhs.fcPgdMother &&
5071
lhs.lcbPgdMother==rhs.lcbPgdMother &&
5072
lhs.fcBkdMother==rhs.fcBkdMother &&
5073
lhs.lcbBkdMother==rhs.lcbBkdMother &&
5074
lhs.fcPgdFtn==rhs.fcPgdFtn &&
5075
lhs.lcbPgdFtn==rhs.lcbPgdFtn &&
5076
lhs.fcBkdFtn==rhs.fcBkdFtn &&
5077
lhs.lcbBkdFtn==rhs.lcbBkdFtn &&
5078
lhs.fcPgdEdn==rhs.fcPgdEdn &&
5079
lhs.lcbPgdEdn==rhs.lcbPgdEdn &&
5080
lhs.fcBkdEdn==rhs.fcBkdEdn &&
5081
lhs.lcbBkdEdn==rhs.lcbBkdEdn &&
5082
lhs.fcSttbfIntlFld==rhs.fcSttbfIntlFld &&
5083
lhs.lcbSttbfIntlFld==rhs.lcbSttbfIntlFld &&
5084
lhs.fcRouteSlip==rhs.fcRouteSlip &&
5085
lhs.lcbRouteSlip==rhs.lcbRouteSlip &&
5086
lhs.fcSttbSavedBy==rhs.fcSttbSavedBy &&
5087
lhs.lcbSttbSavedBy==rhs.lcbSttbSavedBy &&
5088
lhs.fcSttbFnm==rhs.fcSttbFnm &&
5089
lhs.lcbSttbFnm==rhs.lcbSttbFnm;
5092
bool operator!=(const FIB &lhs, const FIB &rhs) {
5097
// LSPD implementation
5103
LSPD::LSPD(OLEStreamReader *stream, bool preservePos) {
5105
read(stream, preservePos);
5108
bool LSPD::read(OLEStreamReader *stream, bool preservePos) {
5113
dyaLine=stream->readU16();
5114
fMultLinespace=stream->readU16();
5121
bool LSPD::write(OLEStreamWriter *stream, bool preservePos) const {
5126
stream->write(dyaLine);
5127
stream->write(fMultLinespace);
5134
void LSPD::clear() {
5139
void LSPD::dump() const
5141
wvlog << "Dumping LSPD:" << endl;
5142
wvlog << toString().c_str() << endl;
5143
wvlog << "\nDumping LSPD done." << endl;
5146
std::string LSPD::toString() const
5148
std::string s( "LSPD:" );
5150
s += uint2string( dyaLine );
5151
s += "\nfMultLinespace=";
5152
s += uint2string( fMultLinespace );
5153
s += "\nLSPD Done.";
5157
bool operator==(const LSPD &lhs, const LSPD &rhs) {
5159
return lhs.dyaLine==rhs.dyaLine &&
5160
lhs.fMultLinespace==rhs.fMultLinespace;
5163
bool operator!=(const LSPD &lhs, const LSPD &rhs) {
5168
// METAFILEPICT implementation
5170
METAFILEPICT::METAFILEPICT() {
5174
METAFILEPICT::METAFILEPICT(OLEStreamReader *stream, bool preservePos) {
5176
read(stream, preservePos);
5179
bool METAFILEPICT::read(OLEStreamReader *stream, bool preservePos) {
5184
mm=stream->readU16();
5185
xExt=stream->readU16();
5186
yExt=stream->readU16();
5187
hMF=stream->readU16();
5194
bool METAFILEPICT::write(OLEStreamWriter *stream, bool preservePos) const {
5200
stream->write(xExt);
5201
stream->write(yExt);
5209
void METAFILEPICT::clear() {
5216
void METAFILEPICT::dump() const
5218
wvlog << "Dumping METAFILEPICT:" << endl;
5219
wvlog << toString().c_str() << endl;
5220
wvlog << "\nDumping METAFILEPICT done." << endl;
5223
std::string METAFILEPICT::toString() const
5225
std::string s( "METAFILEPICT:" );
5227
s += uint2string( mm );
5229
s += uint2string( xExt );
5231
s += uint2string( yExt );
5233
s += uint2string( hMF );
5234
s += "\nMETAFILEPICT Done.";
5238
bool operator==(const METAFILEPICT &lhs, const METAFILEPICT &rhs) {
5240
return lhs.mm==rhs.mm &&
5241
lhs.xExt==rhs.xExt &&
5242
lhs.yExt==rhs.yExt &&
5246
bool operator!=(const METAFILEPICT &lhs, const METAFILEPICT &rhs) {
5251
// OBJHEADER implementation
5253
OBJHEADER::OBJHEADER() {
5257
OBJHEADER::OBJHEADER(OLEStreamReader *stream, bool preservePos) {
5259
read(stream, preservePos);
5262
bool OBJHEADER::read(OLEStreamReader *stream, bool preservePos) {
5267
lcb=stream->readU32();
5268
cbHeader=stream->readU16();
5269
icf=stream->readU16();
5276
bool OBJHEADER::write(OLEStreamWriter *stream, bool preservePos) const {
5282
stream->write(cbHeader);
5290
void OBJHEADER::clear() {
5296
bool operator==(const OBJHEADER &lhs, const OBJHEADER &rhs) {
5298
return lhs.lcb==rhs.lcb &&
5299
lhs.cbHeader==rhs.cbHeader &&
5303
bool operator!=(const OBJHEADER &lhs, const OBJHEADER &rhs) {
5308
// OLST implementation
5310
const unsigned int OLST::sizeOf = 212;
5316
OLST::OLST(OLEStreamReader *stream, bool preservePos) {
5318
read(stream, preservePos);
5321
OLST::OLST(const U8 *ptr) {
5326
bool OLST::read(OLEStreamReader *stream, bool preservePos) {
5331
for(int _i=0; _i<(9); ++_i)
5332
rganlv[_i].read(stream, false);
5333
fRestartHdr=stream->readU8();
5334
fSpareOlst2=stream->readU8();
5335
fSpareOlst3=stream->readU8();
5336
fSpareOlst4=stream->readU8();
5337
for(int _i=0; _i<(64); ++_i)
5338
rgch[_i]=stream->readU8();
5345
void OLST::readPtr(const U8 *ptr) {
5347
for(int _i=0; _i<(9); ++_i) {
5348
rganlv[_i].readPtr(ptr);
5351
fRestartHdr=readU8(ptr);
5353
fSpareOlst2=readU8(ptr);
5355
fSpareOlst3=readU8(ptr);
5357
fSpareOlst4=readU8(ptr);
5359
for(int _i=0; _i<(64); ++_i) {
5360
rgch[_i]=readU8(ptr);
5365
bool OLST::write(OLEStreamWriter *stream, bool preservePos) const {
5370
for(int _i=0; _i<(9); ++_i)
5371
rganlv[_i].write(stream, false);
5372
stream->write(fRestartHdr);
5373
stream->write(fSpareOlst2);
5374
stream->write(fSpareOlst3);
5375
stream->write(fSpareOlst4);
5376
for(int _i=0; _i<(64); ++_i)
5377
stream->write(rgch[_i]);
5384
void OLST::clear() {
5385
for(int _i=0; _i<(9); ++_i)
5391
for(int _i=0; _i<(64); ++_i)
5395
void OLST::dump() const
5397
wvlog << "Dumping OLST:" << endl;
5398
wvlog << toString().c_str() << endl;
5399
wvlog << "\nDumping OLST done." << endl;
5402
std::string OLST::toString() const
5404
std::string s( "OLST:" );
5405
for(int _i=0; _i<(9); ++_i) {
5406
s += "\nrganlv[" + int2string( _i ) + "]=";
5407
s += "\n{" + rganlv[_i].toString() + "}\n";
5409
s += "\nfRestartHdr=";
5410
s += uint2string( fRestartHdr );
5411
s += "\nfSpareOlst2=";
5412
s += uint2string( fSpareOlst2 );
5413
s += "\nfSpareOlst3=";
5414
s += uint2string( fSpareOlst3 );
5415
s += "\nfSpareOlst4=";
5416
s += uint2string( fSpareOlst4 );
5417
for(int _i=0; _i<(64); ++_i) {
5418
s += "\nrgch[" + int2string( _i ) + "]=";
5419
s += uint2string( rgch[_i] );
5421
s += "\nOLST Done.";
5425
bool operator==(const OLST &lhs, const OLST &rhs) {
5427
for(int _i=0; _i<(9); ++_i) {
5428
if(lhs.rganlv[_i]!=rhs.rganlv[_i])
5432
for(int _i=0; _i<(64); ++_i) {
5433
if(lhs.rgch[_i]!=rhs.rgch[_i])
5437
return lhs.fRestartHdr==rhs.fRestartHdr &&
5438
lhs.fSpareOlst2==rhs.fSpareOlst2 &&
5439
lhs.fSpareOlst3==rhs.fSpareOlst3 &&
5440
lhs.fSpareOlst4==rhs.fSpareOlst4;
5443
bool operator!=(const OLST &lhs, const OLST &rhs) {
5448
// PAP implementation
5450
PAP::PAP() : Shared() {
5454
PAP::PAP(OLEStreamReader *stream, bool preservePos) : Shared() {
5456
read(stream, preservePos);
5459
PAP::PAP(const PAP &rhs) : Shared() {
5463
fKeepFollow=rhs.fKeepFollow;
5464
fPageBreakBefore=rhs.fPageBreakBefore;
5465
fBrLnAbove=rhs.fBrLnAbove;
5466
fBrLnBelow=rhs.fBrLnBelow;
5467
fUnused=rhs.fUnused;
5472
unused9=rhs.unused9;
5473
nLvlAnm=rhs.nLvlAnm;
5475
fSideBySide=rhs.fSideBySide;
5476
dxaRight=rhs.dxaRight;
5477
dxaLeft=rhs.dxaLeft;
5478
dxaLeft1=rhs.dxaLeft1;
5480
dyaBefore=rhs.dyaBefore;
5481
dyaAfter=rhs.dyaAfter;
5483
fAutoHyph=rhs.fAutoHyph;
5484
fWidowControl=rhs.fWidowControl;
5485
fInTable=rhs.fInTable;
5490
dxaWidth=rhs.dxaWidth;
5492
brcLeft=rhs.brcLeft;
5493
brcBottom=rhs.brcBottom;
5494
brcRight=rhs.brcRight;
5495
brcBetween=rhs.brcBetween;
5497
dxaFromText=rhs.dxaFromText;
5498
dyaFromText=rhs.dyaFromText;
5500
fLocked=rhs.fLocked;
5501
dyaHeight=rhs.dyaHeight;
5502
fMinHeight=rhs.fMinHeight;
5506
itbdMac=rhs.itbdMac;
5507
rgdxaTab=new U16[itbdMac];
5508
memcpy(rgdxaTab, rhs.rgdxaTab, sizeof(U16)*(itbdMac));
5509
rgtbd=new U8[itbdMac];
5510
memcpy(rgtbd, rhs.rgtbd, sizeof(U8)*(itbdMac));
5518
PAP &PAP::operator=(const PAP &rhs) {
5520
// Check for assignment to self
5527
fKeepFollow=rhs.fKeepFollow;
5528
fPageBreakBefore=rhs.fPageBreakBefore;
5529
fBrLnAbove=rhs.fBrLnAbove;
5530
fBrLnBelow=rhs.fBrLnBelow;
5531
fUnused=rhs.fUnused;
5536
unused9=rhs.unused9;
5537
nLvlAnm=rhs.nLvlAnm;
5539
fSideBySide=rhs.fSideBySide;
5540
dxaRight=rhs.dxaRight;
5541
dxaLeft=rhs.dxaLeft;
5542
dxaLeft1=rhs.dxaLeft1;
5544
dyaBefore=rhs.dyaBefore;
5545
dyaAfter=rhs.dyaAfter;
5547
fAutoHyph=rhs.fAutoHyph;
5548
fWidowControl=rhs.fWidowControl;
5549
fInTable=rhs.fInTable;
5554
dxaWidth=rhs.dxaWidth;
5556
brcLeft=rhs.brcLeft;
5557
brcBottom=rhs.brcBottom;
5558
brcRight=rhs.brcRight;
5559
brcBetween=rhs.brcBetween;
5561
dxaFromText=rhs.dxaFromText;
5562
dyaFromText=rhs.dyaFromText;
5564
fLocked=rhs.fLocked;
5565
dyaHeight=rhs.dyaHeight;
5566
fMinHeight=rhs.fMinHeight;
5570
itbdMac=rhs.itbdMac;
5572
rgdxaTab=new U16[itbdMac];
5573
memcpy(rgdxaTab, rhs.rgdxaTab, sizeof(U16)*(itbdMac));
5575
rgtbd=new U8[itbdMac];
5576
memcpy(rgtbd, rhs.rgtbd, sizeof(U8)*(itbdMac));
5581
bool PAP::read(OLEStreamReader *stream, bool preservePos) {
5589
istd=stream->readU16();
5590
jc=stream->readU8();
5591
fKeep=stream->readU8();
5592
fKeepFollow=stream->readU8();
5593
fPageBreakBefore=stream->readU8();
5594
shifterU8=stream->readU8();
5595
fBrLnAbove=shifterU8;
5597
fBrLnBelow=shifterU8;
5604
brcp=stream->readU8();
5605
brcl=stream->readU8();
5606
unused9=stream->readU8();
5607
nLvlAnm=stream->readU8();
5608
fNoLnn=stream->readU8();
5609
fSideBySide=stream->readU8();
5610
dxaRight=stream->readS16();
5611
dxaLeft=stream->readS16();
5612
dxaLeft1=stream->readS16();
5613
lspd.read(stream, false);
5614
dyaBefore=stream->readU16();
5615
dyaAfter=stream->readU16();
5616
phe.read(stream, false);
5617
fAutoHyph=stream->readU8();
5618
fWidowControl=stream->readU8();
5619
fInTable=stream->readU8();
5620
fTtp=stream->readU8();
5621
ptap=stream->readU16();
5622
dxaAbs=stream->readS16();
5623
dyaAbs=stream->readS16();
5624
dxaWidth=stream->readU16();
5625
brcTop.read(stream, false);
5626
brcLeft.read(stream, false);
5627
brcBottom.read(stream, false);
5628
brcRight.read(stream, false);
5629
brcBetween.read(stream, false);
5630
brcBar.read(stream, false);
5631
dxaFromText=stream->readU16();
5632
dyaFromText=stream->readU16();
5633
wr=stream->readU8();
5634
fLocked=stream->readU8();
5635
shifterU16=stream->readU16();
5636
dyaHeight=shifterU16;
5638
fMinHeight=shifterU16;
5639
shd.read(stream, false);
5640
dcs.read(stream, false);
5641
anld.read(stream, false);
5642
itbdMac=stream->readU16();
5643
rgdxaTab=new U16[itbdMac];
5644
for(int _i=0; _i<(itbdMac); ++_i)
5645
rgdxaTab[_i]=stream->readU16();
5646
rgtbd=new U8[itbdMac];
5647
for(int _i=0; _i<(itbdMac); ++_i)
5648
rgtbd[_i]=stream->readU8();
5655
bool PAP::write(OLEStreamWriter *stream, bool preservePos) const {
5663
stream->write(istd);
5665
stream->write(fKeep);
5666
stream->write(fKeepFollow);
5667
stream->write(fPageBreakBefore);
5668
shifterU8=fBrLnAbove;
5669
shifterU8|=fBrLnBelow << 1;
5670
shifterU8|=fUnused << 2;
5671
shifterU8|=pcVert << 4;
5672
shifterU8|=pcHorz << 6;
5673
stream->write(shifterU8);
5674
stream->write(brcp);
5675
stream->write(brcl);
5676
stream->write(unused9);
5677
stream->write(nLvlAnm);
5678
stream->write(fNoLnn);
5679
stream->write(fSideBySide);
5680
stream->write(dxaRight);
5681
stream->write(dxaLeft);
5682
stream->write(dxaLeft1);
5683
lspd.write(stream, false);
5684
stream->write(dyaBefore);
5685
stream->write(dyaAfter);
5686
phe.write(stream, false);
5687
stream->write(fAutoHyph);
5688
stream->write(fWidowControl);
5689
stream->write(fInTable);
5690
stream->write(fTtp);
5691
stream->write(ptap);
5692
stream->write(dxaAbs);
5693
stream->write(dyaAbs);
5694
stream->write(dxaWidth);
5695
brcTop.write(stream, false);
5696
brcLeft.write(stream, false);
5697
brcBottom.write(stream, false);
5698
brcRight.write(stream, false);
5699
brcBetween.write(stream, false);
5700
brcBar.write(stream, false);
5701
stream->write(dxaFromText);
5702
stream->write(dyaFromText);
5704
stream->write(fLocked);
5705
shifterU16=dyaHeight;
5706
shifterU16|=fMinHeight << 15;
5707
stream->write(shifterU16);
5708
shd.write(stream, false);
5709
dcs.write(stream, false);
5710
anld.write(stream, false);
5711
stream->write(itbdMac);
5712
for(int _i=0; _i<(itbdMac); ++_i)
5713
stream->write(rgdxaTab[_i]);
5714
for(int _i=0; _i<(itbdMac); ++_i)
5715
stream->write(rgtbd[_i]);
5728
void PAP::dump() const
5730
wvlog << "Dumping PAP:" << endl;
5731
wvlog << toString().c_str() << endl;
5732
wvlog << "\nDumping PAP done." << endl;
5735
std::string PAP::toString() const
5737
std::string s( "PAP:" );
5739
s += uint2string( istd );
5741
s += uint2string( jc );
5743
s += uint2string( fKeep );
5744
s += "\nfKeepFollow=";
5745
s += uint2string( fKeepFollow );
5746
s += "\nfPageBreakBefore=";
5747
s += uint2string( fPageBreakBefore );
5748
s += "\nfBrLnAbove=";
5749
s += uint2string( fBrLnAbove );
5750
s += "\nfBrLnBelow=";
5751
s += uint2string( fBrLnBelow );
5753
s += uint2string( fUnused );
5755
s += uint2string( pcVert );
5757
s += uint2string( pcHorz );
5759
s += uint2string( brcp );
5761
s += uint2string( brcl );
5763
s += uint2string( unused9 );
5765
s += uint2string( nLvlAnm );
5767
s += uint2string( fNoLnn );
5768
s += "\nfSideBySide=";
5769
s += uint2string( fSideBySide );
5771
s += int2string( dxaRight );
5773
s += int2string( dxaLeft );
5775
s += int2string( dxaLeft1 );
5777
s += "\n{" + lspd.toString() + "}\n";
5778
s += "\ndyaBefore=";
5779
s += uint2string( dyaBefore );
5781
s += uint2string( dyaAfter );
5783
s += "\n{" + phe.toString() + "}\n";
5784
s += "\nfAutoHyph=";
5785
s += uint2string( fAutoHyph );
5786
s += "\nfWidowControl=";
5787
s += uint2string( fWidowControl );
5789
s += uint2string( fInTable );
5791
s += uint2string( fTtp );
5793
s += uint2string( ptap );
5795
s += int2string( dxaAbs );
5797
s += int2string( dyaAbs );
5799
s += uint2string( dxaWidth );
5801
s += "\n{" + brcTop.toString() + "}\n";
5803
s += "\n{" + brcLeft.toString() + "}\n";
5804
s += "\nbrcBottom=";
5805
s += "\n{" + brcBottom.toString() + "}\n";
5807
s += "\n{" + brcRight.toString() + "}\n";
5808
s += "\nbrcBetween=";
5809
s += "\n{" + brcBetween.toString() + "}\n";
5811
s += "\n{" + brcBar.toString() + "}\n";
5812
s += "\ndxaFromText=";
5813
s += uint2string( dxaFromText );
5814
s += "\ndyaFromText=";
5815
s += uint2string( dyaFromText );
5817
s += uint2string( wr );
5819
s += uint2string( fLocked );
5820
s += "\ndyaHeight=";
5821
s += uint2string( dyaHeight );
5822
s += "\nfMinHeight=";
5823
s += uint2string( fMinHeight );
5825
s += "\n{" + shd.toString() + "}\n";
5827
s += "\n{" + dcs.toString() + "}\n";
5829
s += "\n{" + anld.toString() + "}\n";
5831
s += uint2string( itbdMac );
5832
for(int _i=0; _i<(itbdMac); ++_i) {
5833
s += "\nrgdxaTab[" + int2string( _i ) + "]=";
5834
s += uint2string( rgdxaTab[_i] );
5836
for(int _i=0; _i<(itbdMac); ++_i) {
5837
s += "\nrgtbd[" + int2string( _i ) + "]=";
5838
s += uint2string( rgtbd[_i] );
5844
void PAP::clearInternal() {
5896
bool operator==(const PAP &lhs, const PAP &rhs) {
5898
if((lhs.itbdMac)!=(rhs.itbdMac))
5900
for(int _i=0; _i<(lhs.itbdMac); ++_i) {
5901
if(lhs.rgdxaTab[_i]!=rhs.rgdxaTab[_i])
5905
if((lhs.itbdMac)!=(rhs.itbdMac))
5907
for(int _i=0; _i<(lhs.itbdMac); ++_i) {
5908
if(lhs.rgtbd[_i]!=rhs.rgtbd[_i])
5912
return lhs.istd==rhs.istd &&
5914
lhs.fKeep==rhs.fKeep &&
5915
lhs.fKeepFollow==rhs.fKeepFollow &&
5916
lhs.fPageBreakBefore==rhs.fPageBreakBefore &&
5917
lhs.fBrLnAbove==rhs.fBrLnAbove &&
5918
lhs.fBrLnBelow==rhs.fBrLnBelow &&
5919
lhs.fUnused==rhs.fUnused &&
5920
lhs.pcVert==rhs.pcVert &&
5921
lhs.pcHorz==rhs.pcHorz &&
5922
lhs.brcp==rhs.brcp &&
5923
lhs.brcl==rhs.brcl &&
5924
lhs.unused9==rhs.unused9 &&
5925
lhs.nLvlAnm==rhs.nLvlAnm &&
5926
lhs.fNoLnn==rhs.fNoLnn &&
5927
lhs.fSideBySide==rhs.fSideBySide &&
5928
lhs.dxaRight==rhs.dxaRight &&
5929
lhs.dxaLeft==rhs.dxaLeft &&
5930
lhs.dxaLeft1==rhs.dxaLeft1 &&
5931
lhs.lspd==rhs.lspd &&
5932
lhs.dyaBefore==rhs.dyaBefore &&
5933
lhs.dyaAfter==rhs.dyaAfter &&
5935
lhs.fAutoHyph==rhs.fAutoHyph &&
5936
lhs.fWidowControl==rhs.fWidowControl &&
5937
lhs.fInTable==rhs.fInTable &&
5938
lhs.fTtp==rhs.fTtp &&
5939
lhs.ptap==rhs.ptap &&
5940
lhs.dxaAbs==rhs.dxaAbs &&
5941
lhs.dyaAbs==rhs.dyaAbs &&
5942
lhs.dxaWidth==rhs.dxaWidth &&
5943
lhs.brcTop==rhs.brcTop &&
5944
lhs.brcLeft==rhs.brcLeft &&
5945
lhs.brcBottom==rhs.brcBottom &&
5946
lhs.brcRight==rhs.brcRight &&
5947
lhs.brcBetween==rhs.brcBetween &&
5948
lhs.brcBar==rhs.brcBar &&
5949
lhs.dxaFromText==rhs.dxaFromText &&
5950
lhs.dyaFromText==rhs.dyaFromText &&
5952
lhs.fLocked==rhs.fLocked &&
5953
lhs.dyaHeight==rhs.dyaHeight &&
5954
lhs.fMinHeight==rhs.fMinHeight &&
5957
lhs.anld==rhs.anld &&
5958
lhs.itbdMac==rhs.itbdMac;
5961
bool operator!=(const PAP &lhs, const PAP &rhs) {
5966
// PCD implementation
5968
const unsigned int PCD::sizeOf = 8;
5974
PCD::PCD(OLEStreamReader *stream, bool preservePos) {
5976
read(stream, preservePos);
5979
PCD::PCD(const U8 *ptr) {
5984
bool PCD::read(OLEStreamReader *stream, bool preservePos) {
5991
shifterU16=stream->readU16();
5992
fNoParaLast=shifterU16;
5994
fPaphNil=shifterU16;
5998
unused0_3=shifterU16;
6001
fc=stream->readU32();
6002
prm.read(stream, false);
6009
void PCD::readPtr(const U8 *ptr) {
6013
shifterU16=readU16(ptr);
6015
fNoParaLast=shifterU16;
6017
fPaphNil=shifterU16;
6021
unused0_3=shifterU16;
6030
bool PCD::write(OLEStreamWriter *stream, bool preservePos) const {
6037
shifterU16=fNoParaLast;
6038
shifterU16|=fPaphNil << 1;
6039
shifterU16|=fCopied << 2;
6040
shifterU16|=unused0_3 << 3;
6041
shifterU16|=fn << 8;
6042
stream->write(shifterU16);
6044
prm.write(stream, false);
6061
bool operator==(const PCD &lhs, const PCD &rhs) {
6063
return lhs.fNoParaLast==rhs.fNoParaLast &&
6064
lhs.fPaphNil==rhs.fPaphNil &&
6065
lhs.fCopied==rhs.fCopied &&
6066
lhs.unused0_3==rhs.unused0_3 &&
6072
bool operator!=(const PCD &lhs, const PCD &rhs) {
6077
// PGD implementation
6083
PGD::PGD(OLEStreamReader *stream, bool preservePos) {
6085
read(stream, preservePos);
6088
bool PGD::read(OLEStreamReader *stream, bool preservePos) {
6095
shifterU16=stream->readU16();
6096
unused0_0=shifterU16;
6100
unused0_7=shifterU16;
6101
shifterU16=stream->readU16();
6102
fContinue=shifterU16;
6108
fPgnRestart=shifterU16;
6110
fEmptyPage=shifterU16;
6114
fColOnly=shifterU16;
6116
fTableBreaks=shifterU16;
6120
fColumnBreaks=shifterU16;
6122
fTableHeader=shifterU16;
6124
fNewPage=shifterU16;
6127
lnn=stream->readU16();
6128
pgn=stream->readU16();
6135
bool PGD::write(OLEStreamWriter *stream, bool preservePos) const {
6142
shifterU16=unused0_0;
6143
shifterU16|=fGhost << 5;
6144
shifterU16|=unused0_7 << 7;
6145
stream->write(shifterU16);
6146
shifterU16=fContinue;
6147
shifterU16|=fUnk << 1;
6148
shifterU16|=fRight << 2;
6149
shifterU16|=fPgnRestart << 3;
6150
shifterU16|=fEmptyPage << 4;
6151
shifterU16|=fAllFtn << 5;
6152
shifterU16|=fColOnly << 6;
6153
shifterU16|=fTableBreaks << 7;
6154
shifterU16|=fMarked << 8;
6155
shifterU16|=fColumnBreaks << 9;
6156
shifterU16|=fTableHeader << 10;
6157
shifterU16|=fNewPage << 11;
6158
shifterU16|=bkc << 12;
6159
stream->write(shifterU16);
6189
bool operator==(const PGD &lhs, const PGD &rhs) {
6191
return lhs.unused0_0==rhs.unused0_0 &&
6192
lhs.fGhost==rhs.fGhost &&
6193
lhs.unused0_7==rhs.unused0_7 &&
6194
lhs.fContinue==rhs.fContinue &&
6195
lhs.fUnk==rhs.fUnk &&
6196
lhs.fRight==rhs.fRight &&
6197
lhs.fPgnRestart==rhs.fPgnRestart &&
6198
lhs.fEmptyPage==rhs.fEmptyPage &&
6199
lhs.fAllFtn==rhs.fAllFtn &&
6200
lhs.fColOnly==rhs.fColOnly &&
6201
lhs.fTableBreaks==rhs.fTableBreaks &&
6202
lhs.fMarked==rhs.fMarked &&
6203
lhs.fColumnBreaks==rhs.fColumnBreaks &&
6204
lhs.fTableHeader==rhs.fTableHeader &&
6205
lhs.fNewPage==rhs.fNewPage &&
6211
bool operator!=(const PGD &lhs, const PGD &rhs) {
6216
// PICF implementation
6218
PICF::PICF() : Shared() {
6222
PICF::PICF(OLEStreamReader *stream, bool preservePos) : Shared() {
6224
read(stream, preservePos);
6227
bool PICF::read(OLEStreamReader *stream, bool preservePos) {
6234
lcb=stream->readU32();
6235
cbHeader=stream->readU16();
6236
mfp.read(stream, false);
6237
for(int _i=0; _i<(14); ++_i)
6238
bm_rcWinMF[_i]=stream->readU8();
6239
dxaGoal=stream->readU16();
6240
dyaGoal=stream->readU16();
6241
mx=stream->readU16();
6242
my=stream->readU16();
6243
dxaCropLeft=stream->readU16();
6244
dyaCropTop=stream->readU16();
6245
dxaCropRight=stream->readU16();
6246
dyaCropBottom=stream->readU16();
6247
shifterU16=stream->readU16();
6250
fFrameEmpty=shifterU16;
6254
fDrawHatch=shifterU16;
6259
brcTop.read(stream, false);
6260
brcLeft.read(stream, false);
6261
brcBottom.read(stream, false);
6262
brcRight.read(stream, false);
6263
dxaOrigin=stream->readU16();
6264
dyaOrigin=stream->readU16();
6271
bool PICF::write(OLEStreamWriter *stream, bool preservePos) const {
6279
stream->write(cbHeader);
6280
mfp.write(stream, false);
6281
for(int _i=0; _i<(14); ++_i)
6282
stream->write(bm_rcWinMF[_i]);
6283
stream->write(dxaGoal);
6284
stream->write(dyaGoal);
6287
stream->write(dxaCropLeft);
6288
stream->write(dyaCropTop);
6289
stream->write(dxaCropRight);
6290
stream->write(dyaCropBottom);
6292
shifterU16|=fFrameEmpty << 4;
6293
shifterU16|=fBitmap << 5;
6294
shifterU16|=fDrawHatch << 6;
6295
shifterU16|=fError << 7;
6296
shifterU16|=bpp << 8;
6297
stream->write(shifterU16);
6298
brcTop.write(stream, false);
6299
brcLeft.write(stream, false);
6300
brcBottom.write(stream, false);
6301
brcRight.write(stream, false);
6302
stream->write(dxaOrigin);
6303
stream->write(dyaOrigin);
6310
void PICF::clear() {
6314
for(int _i=0; _i<(14); ++_i)
6338
void PICF::dump() const
6340
wvlog << "Dumping PICF:" << endl;
6341
wvlog << toString().c_str() << endl;
6342
wvlog << "\nDumping PICF done." << endl;
6345
std::string PICF::toString() const
6347
std::string s( "PICF:" );
6349
s += uint2string( lcb );
6351
s += uint2string( cbHeader );
6353
s += "\n{" + mfp.toString() + "}\n";
6354
for(int _i=0; _i<(14); ++_i) {
6355
s += "\nbm_rcWinMF[" + int2string( _i ) + "]=";
6356
s += uint2string( bm_rcWinMF[_i] );
6359
s += uint2string( dxaGoal );
6361
s += uint2string( dyaGoal );
6363
s += uint2string( mx );
6365
s += uint2string( my );
6366
s += "\ndxaCropLeft=";
6367
s += uint2string( dxaCropLeft );
6368
s += "\ndyaCropTop=";
6369
s += uint2string( dyaCropTop );
6370
s += "\ndxaCropRight=";
6371
s += uint2string( dxaCropRight );
6372
s += "\ndyaCropBottom=";
6373
s += uint2string( dyaCropBottom );
6375
s += uint2string( brcl );
6376
s += "\nfFrameEmpty=";
6377
s += uint2string( fFrameEmpty );
6379
s += uint2string( fBitmap );
6380
s += "\nfDrawHatch=";
6381
s += uint2string( fDrawHatch );
6383
s += uint2string( fError );
6385
s += uint2string( bpp );
6387
s += "\n{" + brcTop.toString() + "}\n";
6389
s += "\n{" + brcLeft.toString() + "}\n";
6390
s += "\nbrcBottom=";
6391
s += "\n{" + brcBottom.toString() + "}\n";
6393
s += "\n{" + brcRight.toString() + "}\n";
6394
s += "\ndxaOrigin=";
6395
s += uint2string( dxaOrigin );
6396
s += "\ndyaOrigin=";
6397
s += uint2string( dyaOrigin );
6398
s += "\nPICF Done.";
6402
bool operator==(const PICF &lhs, const PICF &rhs) {
6404
for(int _i=0; _i<(14); ++_i) {
6405
if(lhs.bm_rcWinMF[_i]!=rhs.bm_rcWinMF[_i])
6409
return lhs.lcb==rhs.lcb &&
6410
lhs.cbHeader==rhs.cbHeader &&
6412
lhs.dxaGoal==rhs.dxaGoal &&
6413
lhs.dyaGoal==rhs.dyaGoal &&
6416
lhs.dxaCropLeft==rhs.dxaCropLeft &&
6417
lhs.dyaCropTop==rhs.dyaCropTop &&
6418
lhs.dxaCropRight==rhs.dxaCropRight &&
6419
lhs.dyaCropBottom==rhs.dyaCropBottom &&
6420
lhs.brcl==rhs.brcl &&
6421
lhs.fFrameEmpty==rhs.fFrameEmpty &&
6422
lhs.fBitmap==rhs.fBitmap &&
6423
lhs.fDrawHatch==rhs.fDrawHatch &&
6424
lhs.fError==rhs.fError &&
6426
lhs.brcTop==rhs.brcTop &&
6427
lhs.brcLeft==rhs.brcLeft &&
6428
lhs.brcBottom==rhs.brcBottom &&
6429
lhs.brcRight==rhs.brcRight &&
6430
lhs.dxaOrigin==rhs.dxaOrigin &&
6431
lhs.dyaOrigin==rhs.dyaOrigin;
6434
bool operator!=(const PICF &lhs, const PICF &rhs) {
6439
// SED implementation
6441
const unsigned int SED::sizeOf = 12;
6447
SED::SED(OLEStreamReader *stream, bool preservePos) {
6449
read(stream, preservePos);
6452
bool SED::read(OLEStreamReader *stream, bool preservePos) {
6459
shifterU16=stream->readU16();
6465
fcSepx=stream->readU32();
6466
fnMpr=stream->readU16();
6467
fcMpr=stream->readU32();
6474
bool SED::write(OLEStreamWriter *stream, bool preservePos) const {
6482
shifterU16|=fUnk << 1;
6483
shifterU16|=fn << 2;
6484
stream->write(shifterU16);
6485
stream->write(fcSepx);
6486
stream->write(fnMpr);
6487
stream->write(fcMpr);
6503
bool operator==(const SED &lhs, const SED &rhs) {
6505
return lhs.fSwap==rhs.fSwap &&
6506
lhs.fUnk==rhs.fUnk &&
6508
lhs.fcSepx==rhs.fcSepx &&
6509
lhs.fnMpr==rhs.fnMpr &&
6510
lhs.fcMpr==rhs.fcMpr;
6513
bool operator!=(const SED &lhs, const SED &rhs) {
6518
// SEP implementation
6520
SEP::SEP() : Shared() {
6524
SEP::SEP(OLEStreamReader *stream, bool preservePos) : Shared() {
6526
read(stream, preservePos);
6529
bool SEP::read(OLEStreamReader *stream, bool preservePos) {
6534
bkc=stream->readU8();
6535
fTitlePage=stream->readU8();
6536
ccolM1=stream->readU16();
6537
dxaColumns=stream->readU16();
6538
fAutoPgn=stream->readU8();
6539
nfcPgn=stream->readU8();
6540
pgnStart=stream->readU16();
6541
fUnlocked=stream->readU8();
6542
cnsPgn=stream->readU8();
6543
fPgnRestart=stream->readU8();
6544
fEndNote=stream->readU8();
6545
lnc=stream->readU8();
6546
grpfIhdt=stream->readU8();
6547
nLnnMod=stream->readU16();
6548
dxaLnn=stream->readU16();
6549
dyaHdrTop=stream->readU16();
6550
dyaHdrBottom=stream->readU16();
6551
dxaPgn=stream->readU16();
6552
dyaPgn=stream->readU16();
6553
fLBetween=stream->readU8();
6554
vjc=stream->readU8();
6555
lnnMin=stream->readU16();
6556
dmOrientPage=stream->readU8();
6557
iHeadingPgn=stream->readU8();
6558
xaPage=stream->readU16();
6559
yaPage=stream->readU16();
6560
dxaLeft=stream->readU16();
6561
dxaRight=stream->readU16();
6562
dyaTop=stream->readU16();
6563
dyaBottom=stream->readU16();
6564
dzaGutter=stream->readU16();
6565
dmBinFirst=stream->readU16();
6566
dmBinOther=stream->readU16();
6567
dmPaperReq=stream->readU16();
6568
fEvenlySpaced=stream->readU8();
6569
unused55=stream->readU8();
6570
dxaColumnWidth=stream->readU16();
6571
for(int _i=0; _i<(89); ++_i)
6572
rgdxaColumnWidthSpacing[_i]=stream->readU16();
6573
olstAnm.read(stream, false);
6580
bool SEP::write(OLEStreamWriter *stream, bool preservePos) const {
6586
stream->write(fTitlePage);
6587
stream->write(ccolM1);
6588
stream->write(dxaColumns);
6589
stream->write(fAutoPgn);
6590
stream->write(nfcPgn);
6591
stream->write(pgnStart);
6592
stream->write(fUnlocked);
6593
stream->write(cnsPgn);
6594
stream->write(fPgnRestart);
6595
stream->write(fEndNote);
6597
stream->write(grpfIhdt);
6598
stream->write(nLnnMod);
6599
stream->write(dxaLnn);
6600
stream->write(dyaHdrTop);
6601
stream->write(dyaHdrBottom);
6602
stream->write(dxaPgn);
6603
stream->write(dyaPgn);
6604
stream->write(fLBetween);
6606
stream->write(lnnMin);
6607
stream->write(dmOrientPage);
6608
stream->write(iHeadingPgn);
6609
stream->write(xaPage);
6610
stream->write(yaPage);
6611
stream->write(dxaLeft);
6612
stream->write(dxaRight);
6613
stream->write(dyaTop);
6614
stream->write(dyaBottom);
6615
stream->write(dzaGutter);
6616
stream->write(dmBinFirst);
6617
stream->write(dmBinOther);
6618
stream->write(dmPaperReq);
6619
stream->write(fEvenlySpaced);
6620
stream->write(unused55);
6621
stream->write(dxaColumnWidth);
6622
for(int _i=0; _i<(89); ++_i)
6623
stream->write(rgdxaColumnWidthSpacing[_i]);
6624
olstAnm.write(stream, false);
6669
for(int _i=0; _i<(89); ++_i)
6670
rgdxaColumnWidthSpacing[_i]=0;
6674
void SEP::dump() const
6676
wvlog << "Dumping SEP:" << endl;
6677
wvlog << toString().c_str() << endl;
6678
wvlog << "\nDumping SEP done." << endl;
6681
std::string SEP::toString() const
6683
std::string s( "SEP:" );
6685
s += uint2string( bkc );
6686
s += "\nfTitlePage=";
6687
s += uint2string( fTitlePage );
6689
s += uint2string( ccolM1 );
6690
s += "\ndxaColumns=";
6691
s += uint2string( dxaColumns );
6693
s += uint2string( fAutoPgn );
6695
s += uint2string( nfcPgn );
6697
s += uint2string( pgnStart );
6698
s += "\nfUnlocked=";
6699
s += uint2string( fUnlocked );
6701
s += uint2string( cnsPgn );
6702
s += "\nfPgnRestart=";
6703
s += uint2string( fPgnRestart );
6705
s += uint2string( fEndNote );
6707
s += uint2string( lnc );
6709
s += uint2string( grpfIhdt );
6711
s += uint2string( nLnnMod );
6713
s += uint2string( dxaLnn );
6714
s += "\ndyaHdrTop=";
6715
s += uint2string( dyaHdrTop );
6716
s += "\ndyaHdrBottom=";
6717
s += uint2string( dyaHdrBottom );
6719
s += uint2string( dxaPgn );
6721
s += uint2string( dyaPgn );
6722
s += "\nfLBetween=";
6723
s += uint2string( fLBetween );
6725
s += uint2string( vjc );
6727
s += uint2string( lnnMin );
6728
s += "\ndmOrientPage=";
6729
s += uint2string( dmOrientPage );
6730
s += "\niHeadingPgn=";
6731
s += uint2string( iHeadingPgn );
6733
s += uint2string( xaPage );
6735
s += uint2string( yaPage );
6737
s += uint2string( dxaLeft );
6739
s += uint2string( dxaRight );
6741
s += uint2string( dyaTop );
6742
s += "\ndyaBottom=";
6743
s += uint2string( dyaBottom );
6744
s += "\ndzaGutter=";
6745
s += uint2string( dzaGutter );
6746
s += "\ndmBinFirst=";
6747
s += uint2string( dmBinFirst );
6748
s += "\ndmBinOther=";
6749
s += uint2string( dmBinOther );
6750
s += "\ndmPaperReq=";
6751
s += uint2string( dmPaperReq );
6752
s += "\nfEvenlySpaced=";
6753
s += uint2string( fEvenlySpaced );
6755
s += uint2string( unused55 );
6756
s += "\ndxaColumnWidth=";
6757
s += uint2string( dxaColumnWidth );
6758
for(int _i=0; _i<(89); ++_i) {
6759
s += "\nrgdxaColumnWidthSpacing[" + int2string( _i ) + "]=";
6760
s += uint2string( rgdxaColumnWidthSpacing[_i] );
6763
s += "\n{" + olstAnm.toString() + "}\n";
6768
bool operator==(const SEP &lhs, const SEP &rhs) {
6770
for(int _i=0; _i<(89); ++_i) {
6771
if(lhs.rgdxaColumnWidthSpacing[_i]!=rhs.rgdxaColumnWidthSpacing[_i])
6775
return lhs.bkc==rhs.bkc &&
6776
lhs.fTitlePage==rhs.fTitlePage &&
6777
lhs.ccolM1==rhs.ccolM1 &&
6778
lhs.dxaColumns==rhs.dxaColumns &&
6779
lhs.fAutoPgn==rhs.fAutoPgn &&
6780
lhs.nfcPgn==rhs.nfcPgn &&
6781
lhs.pgnStart==rhs.pgnStart &&
6782
lhs.fUnlocked==rhs.fUnlocked &&
6783
lhs.cnsPgn==rhs.cnsPgn &&
6784
lhs.fPgnRestart==rhs.fPgnRestart &&
6785
lhs.fEndNote==rhs.fEndNote &&
6787
lhs.grpfIhdt==rhs.grpfIhdt &&
6788
lhs.nLnnMod==rhs.nLnnMod &&
6789
lhs.dxaLnn==rhs.dxaLnn &&
6790
lhs.dyaHdrTop==rhs.dyaHdrTop &&
6791
lhs.dyaHdrBottom==rhs.dyaHdrBottom &&
6792
lhs.dxaPgn==rhs.dxaPgn &&
6793
lhs.dyaPgn==rhs.dyaPgn &&
6794
lhs.fLBetween==rhs.fLBetween &&
6796
lhs.lnnMin==rhs.lnnMin &&
6797
lhs.dmOrientPage==rhs.dmOrientPage &&
6798
lhs.iHeadingPgn==rhs.iHeadingPgn &&
6799
lhs.xaPage==rhs.xaPage &&
6800
lhs.yaPage==rhs.yaPage &&
6801
lhs.dxaLeft==rhs.dxaLeft &&
6802
lhs.dxaRight==rhs.dxaRight &&
6803
lhs.dyaTop==rhs.dyaTop &&
6804
lhs.dyaBottom==rhs.dyaBottom &&
6805
lhs.dzaGutter==rhs.dzaGutter &&
6806
lhs.dmBinFirst==rhs.dmBinFirst &&
6807
lhs.dmBinOther==rhs.dmBinOther &&
6808
lhs.dmPaperReq==rhs.dmPaperReq &&
6809
lhs.fEvenlySpaced==rhs.fEvenlySpaced &&
6810
lhs.unused55==rhs.unused55 &&
6811
lhs.dxaColumnWidth==rhs.dxaColumnWidth &&
6812
lhs.olstAnm==rhs.olstAnm;
6815
bool operator!=(const SEP &lhs, const SEP &rhs) {
6820
// SEPX implementation
6826
SEPX::SEPX(OLEStreamReader *stream, bool preservePos) {
6828
read(stream, preservePos);
6831
SEPX::SEPX(const SEPX &rhs) {
6840
SEPX &SEPX::operator=(const SEPX &rhs) {
6842
// Check for assignment to self
6852
bool SEPX::read(OLEStreamReader *stream, bool preservePos) {
6857
cb=stream->readU8();
6858
// Attention: I don't know how to read grpprl - U8[]
6860
#warning "Couldn't generate reading code for SEPX::grpprl"
6868
bool SEPX::write(OLEStreamWriter *stream, bool preservePos) const {
6874
// Attention: I don't know how to write grpprl - U8[]
6876
#warning "Couldn't generate writing code for SEPX::grpprl"
6884
void SEPX::clear() {
6889
void SEPX::clearInternal() {
6894
bool operator==(const SEPX &lhs, const SEPX &rhs) {
6895
// Attention: I don't know how to compare grpprl - U8[]
6897
#warning "Can't compare SEPX::grpprl items"
6900
return lhs.cb==rhs.cb;
6903
bool operator!=(const SEPX &lhs, const SEPX &rhs) {
6908
// STSHI implementation
6910
const unsigned int STSHI::sizeOf = 14;
6916
STSHI::STSHI(OLEStreamReader *stream, bool preservePos) {
6918
read(stream, preservePos);
6921
bool STSHI::read(OLEStreamReader *stream, bool preservePos) {
6928
cstd=stream->readU16();
6929
cbSTDBaseInFile=stream->readU16();
6930
shifterU16=stream->readU16();
6931
fStdStylenamesWritten=shifterU16;
6933
unused4_2=shifterU16;
6934
stiMaxWhenSaved=stream->readU16();
6935
istdMaxFixedWhenSaved=stream->readU16();
6936
nVerBuiltInNamesWhenSaved=stream->readU16();
6937
ftcStandardChpStsh=stream->readU16();
6944
bool STSHI::write(OLEStreamWriter *stream, bool preservePos) const {
6951
stream->write(cstd);
6952
stream->write(cbSTDBaseInFile);
6953
shifterU16=fStdStylenamesWritten;
6954
shifterU16|=unused4_2 << 1;
6955
stream->write(shifterU16);
6956
stream->write(stiMaxWhenSaved);
6957
stream->write(istdMaxFixedWhenSaved);
6958
stream->write(nVerBuiltInNamesWhenSaved);
6959
stream->write(ftcStandardChpStsh);
6966
void STSHI::clear() {
6969
fStdStylenamesWritten=0;
6972
istdMaxFixedWhenSaved=0;
6973
nVerBuiltInNamesWhenSaved=0;
6974
ftcStandardChpStsh=0;
6977
bool operator==(const STSHI &lhs, const STSHI &rhs) {
6979
return lhs.cstd==rhs.cstd &&
6980
lhs.cbSTDBaseInFile==rhs.cbSTDBaseInFile &&
6981
lhs.fStdStylenamesWritten==rhs.fStdStylenamesWritten &&
6982
lhs.unused4_2==rhs.unused4_2 &&
6983
lhs.stiMaxWhenSaved==rhs.stiMaxWhenSaved &&
6984
lhs.istdMaxFixedWhenSaved==rhs.istdMaxFixedWhenSaved &&
6985
lhs.nVerBuiltInNamesWhenSaved==rhs.nVerBuiltInNamesWhenSaved &&
6986
lhs.ftcStandardChpStsh==rhs.ftcStandardChpStsh;
6989
bool operator!=(const STSHI &lhs, const STSHI &rhs) {
6995
} // namespace Word95
6997
} // namespace wvWare