From: Fridrich S. <str...@us...> - 2005-08-10 10:21:39
|
Update of /cvsroot/libwpd/libwpd2/src/lib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31484/src/lib Modified Files: Tag: fs_refactoring1 WP3HLListener.h WP42HLListener.h WP5HLListener.h WP6HLContentListener.cpp WP6HLContentListener.h WP6HLStylesListener.h WP6TabGroup.cpp WPXHLListener.cpp WPXHLListener.h Log Message: Getting the list margins right + fixing an error in our reverse-engineering of information in "deletable" part of the WP6 Tab Group. Index: WP6HLContentListener.h =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP6HLContentListener.h,v retrieving revision 1.44.2.4 retrieving revision 1.44.2.5 diff -C2 -d -r1.44.2.4 -r1.44.2.5 *** WP6HLContentListener.h 8 Aug 2005 15:45:34 -0000 1.44.2.4 --- WP6HLContentListener.h 10 Aug 2005 10:21:19 -0000 1.44.2.5 *************** *** 83,86 **** --- 83,87 ---- int m_numListExtraTabs; + bool m_isListReference; WPXTableList m_tableList; *************** *** 195,199 **** void _handleListChange(const uint16_t outlineHash); ! void _flushList(const uint8_t listLevel); private: --- 196,200 ---- void _handleListChange(const uint16_t outlineHash); ! void _changeList(); private: Index: WP3HLListener.h =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP3HLListener.h,v retrieving revision 1.15.2.2 retrieving revision 1.15.2.3 diff -C2 -d -r1.15.2.2 -r1.15.2.3 *** WP3HLListener.h 2 Aug 2005 19:59:35 -0000 1.15.2.2 --- WP3HLListener.h 10 Aug 2005 10:21:19 -0000 1.15.2.3 *************** *** 79,83 **** private: void _flushText(); ! void _flushList(const uint8_t listLevel) {}; WPXString m_textBuffer; --- 79,83 ---- private: void _flushText(); ! void _changeList() {}; WPXString m_textBuffer; Index: WP42HLListener.h =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP42HLListener.h,v retrieving revision 1.34.2.2 retrieving revision 1.34.2.3 diff -C2 -d -r1.34.2.2 -r1.34.2.3 *** WP42HLListener.h 2 Aug 2005 19:59:35 -0000 1.34.2.2 --- WP42HLListener.h 10 Aug 2005 10:21:19 -0000 1.34.2.3 *************** *** 72,76 **** private: void _flushText(); ! void _flushList(const uint8_t listLevel) {}; WPXString m_textBuffer; --- 72,76 ---- private: void _flushText(); ! void _changeList() {}; WPXString m_textBuffer; Index: WP5HLListener.h =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP5HLListener.h,v retrieving revision 1.35.2.2 retrieving revision 1.35.2.3 diff -C2 -d -r1.35.2.2 -r1.35.2.3 *** WP5HLListener.h 2 Aug 2005 19:59:35 -0000 1.35.2.2 --- WP5HLListener.h 10 Aug 2005 10:21:19 -0000 1.35.2.3 *************** *** 79,83 **** private: void _flushText(); ! void _flushList(const uint8_t listLevel) {}; WPXString m_textBuffer; --- 79,83 ---- private: void _flushText(); ! void _changeList() {}; WPXString m_textBuffer; Index: WPXHLListener.cpp =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WPXHLListener.cpp,v retrieving revision 1.61.2.8 retrieving revision 1.61.2.9 diff -C2 -d -r1.61.2.8 -r1.61.2.9 *** WPXHLListener.cpp 8 Aug 2005 15:45:36 -0000 1.61.2.8 --- WPXHLListener.cpp 10 Aug 2005 10:21:19 -0000 1.61.2.9 *************** *** 77,81 **** m_numColumns(1), m_isTextColumnWithoutParagraph(false), - m_isList(false), m_pageFormLength(11.0f), --- 77,80 ---- *************** *** 97,102 **** m_rightMarginByTabs(0.0f), ! m_listReferenceOffsetFromText(0.0f), ! m_listReferenceLeftOffset(0.0f), m_paragraphTextIndent(0.0f), --- 96,100 ---- m_rightMarginByTabs(0.0f), ! m_listReferencePosition(0.0f), m_paragraphTextIndent(0.0f), *************** *** 197,201 **** if (m_ps->m_isListElementOpened) _closeListElement(); ! _flushList(0); m_listenerImpl->closeSection(); --- 195,199 ---- if (m_ps->m_isListElementOpened) _closeListElement(); ! _changeList(); m_listenerImpl->closeSection(); *************** *** 209,212 **** --- 207,213 ---- void WPXHLListener::_openPageSpan() { + if (m_ps->m_isPageSpanOpened) + return; + if (!m_ps->m_isDocumentStarted) startDocument(); *************** *** 309,312 **** --- 310,315 ---- + m_ps->m_rightMarginByTabs; + m_ps->m_paragraphTextIndent = m_ps->m_textIndentByParagraphIndentChange + m_ps->m_textIndentByTabs; + m_ps->m_numPagesRemainingInSpan = (currentPage->getPageSpan() - 1); m_ps->m_nextPageSpanIndice++; *************** *** 376,383 **** m_ps->m_paragraphTextIndent = m_ps->m_textIndentByParagraphIndentChange; m_ps->m_textIndentByTabs = 0.0f; - m_ps->m_listReferenceOffsetFromText = 0.0f; m_ps->m_isCellWithoutParagraph = false; m_ps->m_isTextColumnWithoutParagraph = false; m_ps->m_tempParagraphJustification = 0; } --- 379,386 ---- m_ps->m_paragraphTextIndent = m_ps->m_textIndentByParagraphIndentChange; m_ps->m_textIndentByTabs = 0.0f; m_ps->m_isCellWithoutParagraph = false; m_ps->m_isTextColumnWithoutParagraph = false; m_ps->m_tempParagraphJustification = 0; + m_ps->m_listReferencePosition = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; } *************** *** 421,425 **** if (isListElement) { ! propList.insert("fo:margin-left", (m_ps->m_listReferenceLeftOffset - m_ps->m_paragraphTextIndent)); propList.insert("fo:text-indent", m_ps->m_paragraphTextIndent); } --- 424,428 ---- if (isListElement) { ! propList.insert("fo:margin-left", (m_ps->m_listReferencePosition - m_ps->m_paragraphTextIndent)); propList.insert("fo:text-indent", m_ps->m_paragraphTextIndent); } *************** *** 427,431 **** { propList.insert("fo:margin-left", m_ps->m_paragraphMarginLeft); ! propList.insert("fo:text-indent", m_ps->m_paragraphTextIndent - m_ps->m_listReferenceOffsetFromText); } propList.insert("fo:margin-right", m_ps->m_paragraphMarginRight); --- 430,434 ---- { propList.insert("fo:margin-left", m_ps->m_paragraphMarginLeft); ! propList.insert("fo:text-indent", m_ps->m_listReferencePosition - m_ps->m_paragraphMarginLeft); } propList.insert("fo:margin-right", m_ps->m_paragraphMarginRight); *************** *** 542,546 **** if (!m_ps->m_isParagraphOpened && !m_ps->m_isListElementOpened) ! _flushList(m_ps->m_currentListLevel); if (m_ps->m_currentListLevel == 0) _openParagraph(); --- 545,549 ---- if (!m_ps->m_isParagraphOpened && !m_ps->m_isListElementOpened) ! _changeList(); if (m_ps->m_currentListLevel == 0) _openParagraph(); *************** *** 719,723 **** _closeParagraph(); _closeListElement(); ! _flushList(0); // handle case where a section attributes changed in the middle of the table --- 722,726 ---- _closeParagraph(); _closeListElement(); ! _changeList(); // handle case where a section attributes changed in the middle of the table *************** *** 853,857 **** _closeParagraph(); _closeListElement(); ! _flushList(0); m_ps->m_cellAttributeBits = 0x00000000; --- 856,860 ---- _closeParagraph(); _closeListElement(); ! _changeList(); m_ps->m_cellAttributeBits = 0x00000000; Index: WP6HLStylesListener.h =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP6HLStylesListener.h,v retrieving revision 1.38.2.2 retrieving revision 1.38.2.3 diff -C2 -d -r1.38.2.2 -r1.38.2.3 *** WP6HLStylesListener.h 2 Aug 2005 19:59:36 -0000 1.38.2.2 --- WP6HLStylesListener.h 10 Aug 2005 10:21:19 -0000 1.38.2.3 *************** *** 103,107 **** virtual void _openParagraph() {} virtual void _openPageSpan() { /* FIXME: REMOVE ME WHEN IMPLEMENTED IN WPXHLListener */ }; ! virtual void _flushList(const uint8_t listLevel) {} private: --- 103,107 ---- virtual void _openParagraph() {} virtual void _openPageSpan() { /* FIXME: REMOVE ME WHEN IMPLEMENTED IN WPXHLListener */ }; ! virtual void _changeList() {} private: Index: WPXHLListener.h =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WPXHLListener.h,v retrieving revision 1.61.2.5 retrieving revision 1.61.2.6 diff -C2 -d -r1.61.2.5 -r1.61.2.6 *** WPXHLListener.h 8 Aug 2005 15:45:37 -0000 1.61.2.5 --- WPXHLListener.h 10 Aug 2005 10:21:19 -0000 1.61.2.6 *************** *** 102,106 **** bool m_wasHeaderRow; bool m_isCellWithoutParagraph; - bool m_isList; uint32_t m_cellAttributeBits; uint8_t m_paragraphJustificationBeforeTable; --- 102,105 ---- *************** *** 131,137 **** float m_rightMarginByTabs; // only part of the margin that is reset at the end of a paragraph ! float m_listReferenceOffsetFromText; // distance between the list number/bullet and the beginning of the text ! // at first line ! float m_listReferenceLeftOffset; // position from the page left margin of the list number/bullet float m_paragraphTextIndent; // resulting first line indent that is one of the paragraph properties --- 130,134 ---- float m_rightMarginByTabs; // only part of the margin that is reset at the end of a paragraph ! float m_listReferencePosition; // position from the page left margin of the list number/bullet float m_paragraphTextIndent; // resulting first line indent that is one of the paragraph properties *************** *** 181,185 **** virtual void _handleSubDocument(uint16_t textPID, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice) = 0; virtual void _flushText() = 0; ! virtual void _flushList(const uint8_t listLevel) = 0; void _openSection(); --- 178,182 ---- virtual void _handleSubDocument(uint16_t textPID, const bool isHeaderFooter, WPXTableList tableList, int nextTableIndice) = 0; virtual void _flushText() = 0; ! virtual void _changeList() = 0; void _openSection(); Index: WP6HLContentListener.cpp =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP6HLContentListener.cpp,v retrieving revision 1.78.2.11 retrieving revision 1.78.2.12 diff -C2 -d -r1.78.2.11 -r1.78.2.12 *** WP6HLContentListener.cpp 8 Aug 2005 15:45:33 -0000 1.78.2.11 --- WP6HLContentListener.cpp 10 Aug 2005 10:21:19 -0000 1.78.2.12 *************** *** 223,226 **** --- 223,227 ---- m_numListExtraTabs(0), + m_isListReference(false), m_tableList(tableList), *************** *** 331,340 **** if (!m_ps->m_isSpanOpened) _openSpan(); ! m_ps->m_isList = false; appendUCS4(m_parseState->m_bodyText, (uint32_t)character); } else if (m_parseState->m_styleStateSequence.getCurrentState() == BEGIN_BEFORE_NUMBERING) { ! m_ps->m_isList = true; appendUCS4(m_parseState->m_textBeforeNumber, (uint32_t)character); } --- 332,341 ---- if (!m_ps->m_isSpanOpened) _openSpan(); ! m_parseState->m_isListReference = false; appendUCS4(m_parseState->m_bodyText, (uint32_t)character); } else if (m_parseState->m_styleStateSequence.getCurrentState() == BEGIN_BEFORE_NUMBERING) { ! m_parseState->m_isListReference = true; appendUCS4(m_parseState->m_textBeforeNumber, (uint32_t)character); } *************** *** 343,347 **** // left delimeter (or the bullet if there is no display referencing) appendUCS4(m_parseState->m_textBeforeDisplayReference, (uint32_t)character); ! m_ps->m_isList = true; } else if (m_parseState->m_styleStateSequence.getCurrentState() == DISPLAY_REFERENCING) --- 344,348 ---- // left delimeter (or the bullet if there is no display referencing) appendUCS4(m_parseState->m_textBeforeDisplayReference, (uint32_t)character); ! m_parseState->m_isListReference = true; } else if (m_parseState->m_styleStateSequence.getCurrentState() == DISPLAY_REFERENCING) *************** *** 349,353 **** // the actual paragraph number (in varying forms) appendUCS4(m_parseState->m_numberText, (uint32_t)character); ! m_ps->m_isList = true; } else if (m_parseState->m_styleStateSequence.getCurrentState() == BEGIN_NUMBERING_AFTER_DISPLAY_REFERENCING) --- 350,354 ---- // the actual paragraph number (in varying forms) appendUCS4(m_parseState->m_numberText, (uint32_t)character); ! m_parseState->m_isListReference = true; } else if (m_parseState->m_styleStateSequence.getCurrentState() == BEGIN_NUMBERING_AFTER_DISPLAY_REFERENCING) *************** *** 355,364 **** // right delimeter (if there was a display no. ref. group) appendUCS4(m_parseState->m_textAfterDisplayReference, (uint32_t)character); ! m_ps->m_isList = true; } else if (m_parseState->m_styleStateSequence.getCurrentState() == BEGIN_AFTER_NUMBERING) { appendUCS4(m_parseState->m_textAfterNumber, (uint32_t)character); ! m_ps->m_isList = true; } } --- 356,365 ---- // right delimeter (if there was a display no. ref. group) appendUCS4(m_parseState->m_textAfterDisplayReference, (uint32_t)character); ! m_parseState->m_isListReference = true; } else if (m_parseState->m_styleStateSequence.getCurrentState() == BEGIN_AFTER_NUMBERING) { appendUCS4(m_parseState->m_textAfterNumber, (uint32_t)character); ! m_parseState->m_isListReference = true; } } *************** *** 430,433 **** --- 431,439 ---- case WP6_TAB_GROUP_LEFT_TAB: // converted as first line indent + #if 0 + case WP6_TAB_GROUP_RIGHT_TAB: + case WP6_TAB_GROUP_CENTER_TAB: + case WP6_TAB_GROUP_DECIMAL_TAB: + #endif if (tabPosition >= (float)((double)0xFFFE/(double)WPX_NUM_WPUS_PER_INCH)) // fall-back solution if we are not able to read the tabPosition *************** *** 436,440 **** m_ps->m_textIndentByTabs = tabPosition - m_ps->m_paragraphMarginLeft - m_ps->m_pageMarginLeft - m_ps->m_textIndentByParagraphIndentChange; ! if (m_ps->m_isList) m_parseState->m_numListExtraTabs++; break; --- 442,446 ---- m_ps->m_textIndentByTabs = tabPosition - m_ps->m_paragraphMarginLeft - m_ps->m_pageMarginLeft - m_ps->m_textIndentByParagraphIndentChange; ! if (m_parseState->m_isListReference) m_parseState->m_numListExtraTabs++; break; *************** *** 447,452 **** m_ps->m_textIndentByTabs = tabPosition - m_ps->m_paragraphMarginLeft - m_ps->m_pageMarginLeft - m_ps->m_textIndentByParagraphIndentChange; ! if (m_ps->m_isList) ! m_ps->m_listReferenceOffsetFromText -= m_ps->m_textIndentByTabs; break; --- 453,458 ---- m_ps->m_textIndentByTabs = tabPosition - m_ps->m_paragraphMarginLeft - m_ps->m_pageMarginLeft - m_ps->m_textIndentByParagraphIndentChange; ! if (m_parseState->m_isListReference) ! m_parseState->m_numListExtraTabs--; break; *************** *** 458,462 **** m_ps->m_leftMarginByTabs = tabPosition - m_ps->m_pageMarginLeft - m_ps->m_leftMarginByPageMarginChange - m_ps->m_leftMarginByParagraphMarginChange; ! if (m_ps->m_isList) m_parseState->m_numListExtraTabs++; if (m_ps->m_paragraphTextIndent != 0.0f) --- 464,468 ---- m_ps->m_leftMarginByTabs = tabPosition - m_ps->m_pageMarginLeft - m_ps->m_leftMarginByPageMarginChange - m_ps->m_leftMarginByParagraphMarginChange; ! if (m_parseState->m_isListReference) m_parseState->m_numListExtraTabs++; if (m_ps->m_paragraphTextIndent != 0.0f) *************** *** 471,475 **** m_ps->m_leftMarginByTabs = tabPosition - m_ps->m_pageMarginLeft - m_ps->m_leftMarginByPageMarginChange - m_ps->m_leftMarginByParagraphMarginChange; ! if (m_ps->m_isList) m_parseState->m_numListExtraTabs++; // L/R Indent is symetrical from the effective paragraph margins and position indicates only --- 477,481 ---- m_ps->m_leftMarginByTabs = tabPosition - m_ps->m_pageMarginLeft - m_ps->m_leftMarginByPageMarginChange - m_ps->m_leftMarginByParagraphMarginChange; ! if (m_parseState->m_isListReference) m_parseState->m_numListExtraTabs++; // L/R Indent is symetrical from the effective paragraph margins and position indicates only *************** *** 490,496 **** + m_ps->m_rightMarginByParagraphMarginChange + m_ps->m_rightMarginByTabs; ! if (!m_ps->m_isList) ! m_ps->m_listReferenceLeftOffset = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; ! m_ps->m_listReferenceOffsetFromText = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent - m_ps->m_listReferenceLeftOffset; } --- 496,501 ---- + m_ps->m_rightMarginByParagraphMarginChange + m_ps->m_rightMarginByTabs; ! if (!m_parseState->m_isListReference) ! m_ps->m_listReferencePosition = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; } *************** *** 498,502 **** (m_parseState->m_styleStateSequence.getCurrentState() == NORMAL)) { ! m_ps->m_isList = false; if (!m_ps->m_isSpanOpened) --- 503,507 ---- (m_parseState->m_styleStateSequence.getCurrentState() == NORMAL)) { ! m_parseState->m_isListReference = false; if (!m_ps->m_isSpanOpened) *************** *** 538,542 **** m_parseState->m_styleStateSequence.getCurrentState() == NORMAL) { ! m_ps->m_isList = false; if (!m_ps->m_isSpanOpened) --- 543,547 ---- m_parseState->m_styleStateSequence.getCurrentState() == NORMAL) { ! m_parseState->m_isListReference = false; if (!m_ps->m_isSpanOpened) *************** *** 730,736 **** } ! if (!m_ps->m_isList) ! m_ps->m_listReferenceLeftOffset = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; ! m_ps->m_listReferenceOffsetFromText = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent - m_ps->m_listReferenceLeftOffset; } } --- 735,740 ---- } ! if (!m_parseState->m_isListReference) ! m_ps->m_listReferencePosition = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; } } *************** *** 763,769 **** } ! if (!m_ps->m_isList) ! m_ps->m_listReferenceLeftOffset = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; ! m_ps->m_listReferenceOffsetFromText = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent - m_ps->m_listReferenceLeftOffset; } } --- 767,772 ---- } ! if (!m_parseState->m_isListReference) ! m_ps->m_listReferencePosition = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; } } *************** *** 780,783 **** --- 783,789 ---- m_ps->m_paragraphTextIndent = m_ps->m_textIndentByParagraphIndentChange + m_ps->m_textIndentByTabs; + + if (!m_parseState->m_isListReference) + m_ps->m_listReferencePosition = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; } } *************** *** 1062,1066 **** if (m_ps->m_isListElementOpened) _closeListElement(); ! _flushList(0); // flush the list exterior // close the document nice and tight --- 1068,1074 ---- if (m_ps->m_isListElementOpened) _closeListElement(); ! ! m_ps->m_currentListLevel = 0; ! _changeList(); // flush the list exterior // close the document nice and tight *************** *** 1213,1218 **** if (m_ps->m_isListElementOpened) _closeListElement(); ! _flushList(0); _closeSection(); // restore our old parsing state --- 1221,1231 ---- if (m_ps->m_isListElementOpened) _closeListElement(); ! ! m_ps->m_currentListLevel = 0; ! _changeList(); ! ! #if 0 _closeSection(); + #endif // restore our old parsing state *************** *** 1289,1295 **** ! m_ps->m_isList = false; ! m_ps->m_listReferenceLeftOffset = m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent; ! m_ps->m_listReferenceOffsetFromText = 0; } --- 1302,1306 ---- ! m_parseState->m_isListReference = false; } *************** *** 1334,1338 **** propList.insert("style:num-suffix", m_parseState->m_textAfterDisplayReference); propList.insert("text:start-value", number); ! propList.insert("text:min-label-width", (m_ps->m_listReferenceOffsetFromText)); m_listenerImpl->defineOrderedListLevel(propList); --- 1345,1350 ---- propList.insert("style:num-suffix", m_parseState->m_textAfterDisplayReference); propList.insert("text:start-value", number); ! propList.insert("text:min-label-width", m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent - m_ps->m_listReferencePosition); ! propList.insert("text:space-before", 0.0f); m_listenerImpl->defineOrderedListLevel(propList); *************** *** 1341,1345 **** { propList.insert("text:bullet-char", m_parseState->m_textBeforeDisplayReference); ! propList.insert("text:min-label-width", (m_ps->m_listReferenceOffsetFromText)); m_listenerImpl->defineUnorderedListLevel(propList); --- 1353,1358 ---- { propList.insert("text:bullet-char", m_parseState->m_textBeforeDisplayReference); ! propList.insert("text:min-label-width", m_ps->m_paragraphMarginLeft + m_ps->m_paragraphTextIndent - m_ps->m_listReferencePosition); ! propList.insert("text:space-before", 0.0f); m_listenerImpl->defineUnorderedListLevel(propList); *************** *** 1400,1404 **** } ! void WP6HLContentListener::_flushList(const uint8_t listLevel) { if (m_ps->m_isParagraphOpened) --- 1413,1417 ---- } ! void WP6HLContentListener::_changeList() { if (m_ps->m_isParagraphOpened) *************** *** 1406,1410 **** if (m_ps->m_isListElementOpened) _closeListElement(); - m_ps->m_currentListLevel = listLevel; _handleListChange(m_parseState->m_currentOutlineHash); } --- 1419,1422 ---- Index: WP6TabGroup.cpp =================================================================== RCS file: /cvsroot/libwpd/libwpd2/src/lib/WP6TabGroup.cpp,v retrieving revision 1.17 retrieving revision 1.17.2.1 diff -C2 -d -r1.17 -r1.17.2.1 *** WP6TabGroup.cpp 11 Aug 2004 09:43:37 -0000 1.17 --- WP6TabGroup.cpp 10 Aug 2005 10:21:19 -0000 1.17.2.1 *************** *** 2,6 **** * Copyright (C) 2002 William Lachance (wil...@sy...) * Copyright (C) 2002 Marc Maurer (j.m...@st...) ! * Copyright (C) 2004 Fridrich Strba (fri...@bl...) * * This library is free software; you can redistribute it and/or --- 2,6 ---- * Copyright (C) 2002 William Lachance (wil...@sy...) * Copyright (C) 2002 Marc Maurer (j.m...@st...) ! * Copyright (C) 2004-2005 Fridrich Strba (fri...@bl...) * * This library is free software; you can redistribute it and/or *************** *** 45,49 **** m_ignoreFunction = true; } ! if ((getSize() >= 12) & (getSize() <= 18)) // Minimum size of the function if the position information is present { input->seek((getSize() - 12), WPX_SEEK_CUR); --- 45,61 ---- m_ignoreFunction = true; } ! ! /* What follows is a result of reverse-engineering of undocumented information contained in the functions of the ! * Tab Group. It is result of adjustment by trials and errors and can be wrong in certain cases */ ! ! if ((getSubGroup() & 0xC0) == 0x00) ! /* Left aligned tabs contain the position of the tab as a word (uint16_t) in WPUs ! * from left edge of the paper just after the size of "non-deletable" */ ! { ! tempPosition = readU16(input); ! } ! else if ((getSize() >= 12) & (getSize() <= 18)) // Minimum size of the function if the position information is present ! /* This case might be fully included in the previous condition, but I am not sure; ! * so leaving it in for the while */ { input->seek((getSize() - 12), WPX_SEEK_CUR); |