diff --git a/ASCOfficeDocFile/DocDocxConverter/AnnotationReferenceDescriptor.h b/ASCOfficeDocFile/DocDocxConverter/AnnotationReferenceDescriptor.h index 264ae502f9..19791b9a64 100644 --- a/ASCOfficeDocFile/DocDocxConverter/AnnotationReferenceDescriptor.h +++ b/ASCOfficeDocFile/DocDocxConverter/AnnotationReferenceDescriptor.h @@ -69,7 +69,7 @@ namespace DocFileFormat { } - virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ); + virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ); private: diff --git a/ASCOfficeDocFile/DocDocxConverter/BookmarkFirst.h b/ASCOfficeDocFile/DocDocxConverter/BookmarkFirst.h index c38574335c..d887746fc0 100644 --- a/ASCOfficeDocFile/DocDocxConverter/BookmarkFirst.h +++ b/ASCOfficeDocFile/DocDocxConverter/BookmarkFirst.h @@ -68,7 +68,7 @@ namespace DocFileFormat { } - virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ) + virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ) { BookmarkFirst *newObject = new BookmarkFirst(); diff --git a/ASCOfficeDocFile/DocDocxConverter/ByteStructure.h b/ASCOfficeDocFile/DocDocxConverter/ByteStructure.h index 703e95a826..39b4604d3d 100644 --- a/ASCOfficeDocFile/DocDocxConverter/ByteStructure.h +++ b/ASCOfficeDocFile/DocDocxConverter/ByteStructure.h @@ -54,7 +54,7 @@ namespace DocFileFormat virtual ~EmptyStructure() {} - virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ) + virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ) { EmptyStructure *newObject = new EmptyStructure(); diff --git a/ASCOfficeDocFile/DocDocxConverter/EndnoteDescriptor.h b/ASCOfficeDocFile/DocDocxConverter/EndnoteDescriptor.h index 33dd14d7f0..0da777c4c1 100644 --- a/ASCOfficeDocFile/DocDocxConverter/EndnoteDescriptor.h +++ b/ASCOfficeDocFile/DocDocxConverter/EndnoteDescriptor.h @@ -61,4 +61,4 @@ namespace DocFileFormat return static_cast( newObject ); } }; -} \ No newline at end of file +} diff --git a/ASCOfficeDocFile/DocDocxConverter/FileInformationBlock.h b/ASCOfficeDocFile/DocDocxConverter/FileInformationBlock.h index 72de1122d2..644ecf4519 100644 --- a/ASCOfficeDocFile/DocDocxConverter/FileInformationBlock.h +++ b/ASCOfficeDocFile/DocDocxConverter/FileInformationBlock.h @@ -529,7 +529,7 @@ namespace DocFileFormat void reset( VirtualStreamReader reader ) { - if (m_FibBase.nFib > 0 && m_FibBase.nFib < Fib1997) + if (m_FibBase.nFib > 0 && m_FibBase.nFib <= Fib1995) { m_RgLw97.cbMac = reader.ReadInt32();//32 /*m_FibWord97.fcSpare0 = */reader.ReadInt32(); @@ -539,8 +539,8 @@ namespace DocFileFormat m_RgLw97.ccpText = reader.ReadInt32(); m_RgLw97.ccpFtn = reader.ReadInt32(); m_RgLw97.ccpHdr = reader.ReadInt32(); - - /*m_FibWord97.ccpMcr = */reader.ReadInt32(); + + /*m_FibWord97.ccpMcr = */reader.ReadInt32(); m_RgLw97.ccpAtn = reader.ReadInt32(); m_RgLw97.ccpEdn = reader.ReadInt32(); m_RgLw97.ccpTxbx = reader.ReadInt32(); @@ -743,7 +743,7 @@ namespace DocFileFormat m_FibWord97.fcSttbFnm = reader.ReadInt32(); m_FibWord97.lcbSttbFnm = reader.ReadInt32(); //676 } - if (m_FibBase.nFib >= Fib1997 || m_FibBase.nFib == 0) + if (m_FibBase.nFib > Fib1995 || m_FibBase.nFib == 0) { reader.ReadBytes(8, false); //68 @@ -1218,7 +1218,7 @@ namespace DocFileFormat if (m_FibBase.nFib > Fib1995) csw = reader.ReadUInt16(); //32 - if (m_FibBase.nFib >= Fib1997 || m_FibBase.nFib == 0) + if (m_FibBase.nFib > Fib1995 || m_FibBase.nFib == 0) { //read the RgW97 diff --git a/ASCOfficeDocFile/DocDocxConverter/FontFamilyName.h b/ASCOfficeDocFile/DocDocxConverter/FontFamilyName.h index 465ac06d7c..db0994ab84 100644 --- a/ASCOfficeDocFile/DocDocxConverter/FontFamilyName.h +++ b/ASCOfficeDocFile/DocDocxConverter/FontFamilyName.h @@ -79,7 +79,7 @@ namespace DocFileFormat public: FontFamilyName(); virtual ~FontFamilyName(); - virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ); + virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ); private: long searchTerminationZero( VirtualStreamReader *reader ); diff --git a/ASCOfficeDocFile/DocDocxConverter/FootnoteDescriptor.h b/ASCOfficeDocFile/DocDocxConverter/FootnoteDescriptor.h index 9a62639985..f57dc64df5 100644 --- a/ASCOfficeDocFile/DocDocxConverter/FootnoteDescriptor.h +++ b/ASCOfficeDocFile/DocDocxConverter/FootnoteDescriptor.h @@ -61,4 +61,4 @@ namespace DocFileFormat return static_cast( newObject ); } }; -} \ No newline at end of file +} diff --git a/ASCOfficeDocFile/DocDocxConverter/ListData.cpp b/ASCOfficeDocFile/DocDocxConverter/ListData.cpp index 1049603fc3..a72b8b2396 100644 --- a/ASCOfficeDocFile/DocDocxConverter/ListData.cpp +++ b/ASCOfficeDocFile/DocDocxConverter/ListData.cpp @@ -148,11 +148,7 @@ namespace DocFileFormat } OutlineListDescriptor::~OutlineListDescriptor() { - for (int i = 0 ; i < 9; i++) - { - if (lvl[i]) delete lvl[i]; - lvl[i] = NULL; - } + } OutlineListDescriptor::OutlineListDescriptor( unsigned char * data, int length ) { @@ -160,10 +156,11 @@ namespace DocFileFormat for (int i = 0 ; i < 9; i++) { - lvl[i] = new NumberingLevelDescriptor(data + pos, length - pos); + lvl[i].Parse(data + pos, length - pos); pos += 16; } - fRestartHdr = FormatUtils::BytesToUChar(data, pos, length); pos += 2; + + fRestartHdr = FormatUtils::BytesToUChar(data, pos, length); pos += 2; fSpareOlst2 = FormatUtils::BytesToUChar(data, pos, length); pos += 2; fSpareOlst3 = FormatUtils::BytesToUChar(data, pos, length); pos += 2; fSpareOlst4 = FormatUtils::BytesToUChar(data, pos, length); pos += 2; @@ -189,7 +186,7 @@ namespace DocFileFormat delete []data; - return static_cast(newObject); + return static_cast(newObject); } } diff --git a/ASCOfficeDocFile/DocDocxConverter/ListData.h b/ASCOfficeDocFile/DocDocxConverter/ListData.h index 14e794ec42..7d672227e4 100644 --- a/ASCOfficeDocFile/DocDocxConverter/ListData.h +++ b/ASCOfficeDocFile/DocDocxConverter/ListData.h @@ -134,7 +134,7 @@ namespace DocFileFormat private: - NumberingLevelDescriptor *lvl[9]; + NumberingLevelDescriptor lvl[9]; unsigned char fRestartHdr; unsigned char fSpareOlst2; @@ -145,11 +145,11 @@ namespace DocFileFormat public: static const int STRUCTURE_SIZE = 212; - virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ); + virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ); virtual ~OutlineListDescriptor(); // Parses the given StreamReader to retrieve a OLST struct OutlineListDescriptor( unsigned char * data, int length ); //cbOLST(count of bytes of OLST) is 212 OutlineListDescriptor() {} }; -} \ No newline at end of file +} diff --git a/ASCOfficeDocFile/DocDocxConverter/ListLevel.cpp b/ASCOfficeDocFile/DocDocxConverter/ListLevel.cpp index 0866cc3bcd..11b1c1048e 100644 --- a/ASCOfficeDocFile/DocDocxConverter/ListLevel.cpp +++ b/ASCOfficeDocFile/DocDocxConverter/ListLevel.cpp @@ -97,52 +97,65 @@ namespace DocFileFormat RELEASEARRAYOBJECTS( bytes ); } } + NumberingLevelDescriptor::NumberingLevelDescriptor() + { + //default set + bEnabled = false; + } NumberingLevelDescriptor::~NumberingLevelDescriptor() { } - NumberingLevelDescriptor::NumberingLevelDescriptor( unsigned char * data, int length ) + NumberingLevelDescriptor::NumberingLevelDescriptor( unsigned char * data, int length ) { - nfc = FormatUtils::BytesToUChar(data, 0, length); - cbTextBefore = FormatUtils::BytesToUChar(data, 1, length); - cbTextAfter = FormatUtils::BytesToUChar(data, 2, length); + bEnabled = false; - int flag = FormatUtils::BytesToUChar(data, 3, length); - - jc = (unsigned char)( flag & 0x03 ); - - fPrev = FormatUtils::BitmaskToBool( flag, 0x04 ); - fHang = FormatUtils::BitmaskToBool( flag, 0x08 ); - - fSetBold = FormatUtils::BitmaskToBool( flag, 0x10 ); - fSetItalic = FormatUtils::BitmaskToBool( flag, 0x20 ); - fSetSmallCaps = FormatUtils::BitmaskToBool( flag, 0x40 ); - fSetCaps = FormatUtils::BitmaskToBool( flag, 0x80 ); - - flag = FormatUtils::BytesToUChar(data, 4, length);; - - fSetStrike = FormatUtils::BitmaskToBool( flag, 0x01 ); - fSetKul = FormatUtils::BitmaskToBool( flag, 0x02 ); - - fPrevSpace = FormatUtils::BitmaskToBool( flag, 0x04 ); - fBold = FormatUtils::BitmaskToBool( flag, 0x08 ); - fItalic = FormatUtils::BitmaskToBool( flag, 0x10 ); - fSmallCaps = FormatUtils::BitmaskToBool( flag, 0x20 ); - fCaps = FormatUtils::BitmaskToBool( flag, 0x40 ); - fStrike = FormatUtils::BitmaskToBool( flag, 0x80 ); - - flag = FormatUtils::BytesToUChar(data, 5, length); - - kul = FormatUtils::BitmaskToBool( flag, 0x07 );//3 bit - ico = FormatUtils::BitmaskToBool( flag, 0xf1 );//5 bit - - ftc = FormatUtils::BytesToInt16 (data, 6, length); - hps = FormatUtils::BytesToUInt16(data, 8, length); - - iStartAt = FormatUtils::BytesToUInt16(data, 10, length); - dxaIndent = FormatUtils::BytesToUInt16(data, 12, length); - dxaSpace = FormatUtils::BytesToUInt16(data, 14, length); + Parse(data, length); } - + + void NumberingLevelDescriptor::Parse(unsigned char * data, int length ) + { + bEnabled = true; + + nfc = FormatUtils::BytesToUChar(data, 0, length); + cbTextBefore = FormatUtils::BytesToUChar(data, 1, length); + cbTextAfter = FormatUtils::BytesToUChar(data, 2, length); + + int flag = FormatUtils::BytesToUChar(data, 3, length); + + jc = (unsigned char)( flag & 0x03 ); + + fPrev = FormatUtils::BitmaskToBool( flag, 0x04 ); + fHang = FormatUtils::BitmaskToBool( flag, 0x08 ); + + fSetBold = FormatUtils::BitmaskToBool( flag, 0x10 ); + fSetItalic = FormatUtils::BitmaskToBool( flag, 0x20 ); + fSetSmallCaps = FormatUtils::BitmaskToBool( flag, 0x40 ); + fSetCaps = FormatUtils::BitmaskToBool( flag, 0x80 ); + + flag = FormatUtils::BytesToUChar(data, 4, length);; + + fSetStrike = FormatUtils::BitmaskToBool( flag, 0x01 ); + fSetKul = FormatUtils::BitmaskToBool( flag, 0x02 ); + + fPrevSpace = FormatUtils::BitmaskToBool( flag, 0x04 ); + fBold = FormatUtils::BitmaskToBool( flag, 0x08 ); + fItalic = FormatUtils::BitmaskToBool( flag, 0x10 ); + fSmallCaps = FormatUtils::BitmaskToBool( flag, 0x20 ); + fCaps = FormatUtils::BitmaskToBool( flag, 0x40 ); + fStrike = FormatUtils::BitmaskToBool( flag, 0x80 ); + + flag = FormatUtils::BytesToUChar(data, 5, length); + + kul = FormatUtils::BitmaskToBool( flag, 0x07 );//3 bit + ico = FormatUtils::BitmaskToBool( flag, 0xf1 );//5 bit + + ftc = FormatUtils::BytesToInt16 (data, 6, length); + hps = FormatUtils::BytesToUInt16(data, 8, length); + + iStartAt = FormatUtils::BytesToUInt16(data, 10, length); + dxaIndent = FormatUtils::BytesToUInt16(data, 12, length); + dxaSpace = FormatUtils::BytesToUInt16(data, 14, length); + } } diff --git a/ASCOfficeDocFile/DocDocxConverter/ListLevel.h b/ASCOfficeDocFile/DocDocxConverter/ListLevel.h index 8431cd324a..b4696455a1 100644 --- a/ASCOfficeDocFile/DocDocxConverter/ListLevel.h +++ b/ASCOfficeDocFile/DocDocxConverter/ListLevel.h @@ -141,8 +141,11 @@ namespace DocFileFormat unsigned short dxaIndent; unsigned short dxaSpace; public: + bool bEnabled; virtual ~NumberingLevelDescriptor(); // Parses the given StreamReader to retrieve a ANLV struct - NumberingLevelDescriptor( unsigned char * data, int length ); //cbANLV is 16 bytes - }; + NumberingLevelDescriptor(); + NumberingLevelDescriptor( unsigned char * data, int length ); //cbANLV is 16 bytes + void Parse( unsigned char * data, int length ); + }; } diff --git a/ASCOfficeDocFile/DocDocxConverter/Plex.h b/ASCOfficeDocFile/DocDocxConverter/Plex.h index 3a35df1d60..f13647e3e3 100644 --- a/ASCOfficeDocFile/DocDocxConverter/Plex.h +++ b/ASCOfficeDocFile/DocDocxConverter/Plex.h @@ -86,7 +86,8 @@ namespace DocFileFormat { for (int i = 0; i < n; ++i) { - Elements.push_back(T().ConstructObject(&reader, structureLength)); + T object; + Elements.push_back(object.ConstructObject(&reader, structureLength)); } } diff --git a/ASCOfficeDocFile/DocDocxConverter/Spa.h b/ASCOfficeDocFile/DocDocxConverter/Spa.h index 135134148d..d5255f3132 100644 --- a/ASCOfficeDocFile/DocDocxConverter/Spa.h +++ b/ASCOfficeDocFile/DocDocxConverter/Spa.h @@ -63,7 +63,7 @@ namespace DocFileFormat virtual ~Spa(); - virtual ByteStructure* ConstructObject(VirtualStreamReader* reader, int length); + virtual ByteStructure* ConstructObject(VirtualStreamReader* reader, int length); inline int GetShapeID() const { return spid; diff --git a/ASCOfficeDocFile/DocDocxConverter/WideString.h b/ASCOfficeDocFile/DocDocxConverter/WideString.h index 75dece4481..56331b46f4 100644 --- a/ASCOfficeDocFile/DocDocxConverter/WideString.h +++ b/ASCOfficeDocFile/DocDocxConverter/WideString.h @@ -51,7 +51,7 @@ namespace DocFileFormat { } - virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ) + virtual ByteStructure* ConstructObject( VirtualStreamReader* reader, int length ) { WideString* newObject = new WideString(); diff --git a/ASCOfficeDocFile/DocDocxConverter/WordDocument.cpp b/ASCOfficeDocFile/DocDocxConverter/WordDocument.cpp index 85fcd4c354..5bc14e2de8 100644 --- a/ASCOfficeDocFile/DocDocxConverter/WordDocument.cpp +++ b/ASCOfficeDocFile/DocDocxConverter/WordDocument.cpp @@ -104,14 +104,14 @@ namespace DocFileFormat if (FIB->m_FibBase.nFib) { - if (FIB->m_FibBase.nFib < Fib1997) + if (FIB->m_FibBase.nFib <= Fib1995) { bOlderVersion = FIB->m_bOlderVersion = true; } } else { - if (FIB->m_FibNew.nFibNew < Fib1997 && FIB->m_FibNew.nFibNew > 0) + if (FIB->m_FibNew.nFibNew <= Fib1995 && FIB->m_FibNew.nFibNew > 0) { bOlderVersion = FIB->m_bOlderVersion = true; } diff --git a/X2tConverter/build/Qt/X2tConverter.pro b/X2tConverter/build/Qt/X2tConverter.pro index 0a3c275196..e012765119 100644 --- a/X2tConverter/build/Qt/X2tConverter.pro +++ b/X2tConverter/build/Qt/X2tConverter.pro @@ -7,7 +7,7 @@ QT -= core QT -= gui -VERSION = 2.0.2.390 +VERSION = 2.0.2.391 DEFINES += INTVER=$$VERSION TEMPLATE = app