From: Fridrich S. <str...@us...> - 2010-06-12 07:36:01
|
Update of /cvsroot/libwpd/libwpd2/src/lib In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv14467/src/lib Modified Files: WP6CharacterGroup.cpp WP6CharacterGroup.h Log Message: better way to parse the font information Index: WP6CharacterGroup.h =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP6CharacterGroup.h,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- WP6CharacterGroup.h 11 Jun 2010 15:24:51 -0000 1.26 +++ WP6CharacterGroup.h 12 Jun 2010 07:35:52 -0000 1.27 @@ -27,6 +27,7 @@ #define WP6CHARACTERGROUP_H #include "WP6VariableLengthGroup.h" +#include "WP6FontDescriptorPacket.h" class WP6CharacterGroup_SetAlignmentCharacterSubGroup: public WP6VariableLengthGroup_SubGroup { @@ -65,6 +66,7 @@ { public: WP6CharacterGroup_FontFaceChangeSubGroup(WPXInputStream *input, WPXEncryption *encryption, uint16_t sizeDeletable); + ~WP6CharacterGroup_FontFaceChangeSubGroup(); void parse(WP6Listener *listener, const uint8_t numPrefixIDs, uint16_t const *prefixIDs) const; private: @@ -72,7 +74,7 @@ uint16_t m_hash; uint16_t m_matchedFontIndex; uint16_t m_matchedFontPointSize; - WPXString m_fontName; + WP6FontDescriptorPacket *m_packet; }; class WP6CharacterGroup_FontSizeChangeSubGroup : public WP6VariableLengthGroup_SubGroup Index: WP6CharacterGroup.cpp =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP6CharacterGroup.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- WP6CharacterGroup.cpp 11 Jun 2010 15:24:51 -0000 1.39 +++ WP6CharacterGroup.cpp 12 Jun 2010 07:35:52 -0000 1.40 @@ -93,7 +93,7 @@ *************************************************************************/ WP6CharacterGroup_FontFaceChangeSubGroup::WP6CharacterGroup_FontFaceChangeSubGroup(WPXInputStream *input, WPXEncryption *encryption, uint16_t sizeDeletable) : - m_oldMatchedPointSize(0), m_hash(0), m_matchedFontIndex(0), m_matchedFontPointSize(0), m_fontName() + m_oldMatchedPointSize(0), m_hash(0), m_matchedFontIndex(0), m_matchedFontPointSize(0), m_packet(0) { m_oldMatchedPointSize = readU16(input, encryption); m_hash = readU16(input, encryption); @@ -103,20 +103,25 @@ if (sizeDeletable > 24) { - input->seek(22, WPX_SEEK_CUR); - uint16_t tmpSizeDeletable = readU16(input, encryption); - WP6FontDescriptorPacket::_readFontName(input, encryption, m_fontName, tmpSizeDeletable); + m_packet = new WP6FontDescriptorPacket(input, encryption, 0, input->tell(), sizeDeletable); - WPD_DEBUG_MSG(("WordPerfect: Character Group Font Face Change subgroup info (font name length: %i, font name: %s)\n", tmpSizeDeletable, m_fontName.cstr())); + WPD_DEBUG_MSG(("WordPerfect: Character Group Font Face Change subgroup info (font name: %s)\n", m_packet->getFontName())); } } +WP6CharacterGroup_FontFaceChangeSubGroup::~WP6CharacterGroup_FontFaceChangeSubGroup() +{ + if (m_packet) + delete m_packet; + m_packet = NULL; +} + void WP6CharacterGroup_FontFaceChangeSubGroup::parse(WP6Listener *listener, const uint8_t /* numPrefixIDs */, uint16_t const *prefixIDs) const { WPD_DEBUG_MSG(("WordPerfect: FontFaceChangeSubGroup parsing\n")); if (!prefixIDs) return; - listener->fontChange(m_matchedFontPointSize, prefixIDs[0], m_fontName); + listener->fontChange(m_matchedFontPointSize, prefixIDs[0], m_packet ? m_packet->getFontName() : WPXString()); } /************************************************************************* |