PATCH: WP alignment fixed

From: j.m.maurer (j.m.maurer@student.utwente.nl)
Date: Wed Feb 20 2002 - 16:25:43 GMT

  • Next message: Nikolaj Brandt Jensen: "Re: Release 0.99.2 tagged."

    Hi all,

    With this patch, the WordPerfect importer should handle text aligment
    much better. Look for an example to the trivial 2-lined attached wp
    document...

    Marc

    Index: abi/src/wp/impexp/xp/ie_imp_WordPerfect.cpp
    ===================================================================
    RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_imp_WordPerfect.cpp,v
    retrieving revision 1.14
    diff -u -r1.14 ie_imp_WordPerfect.cpp
    --- abi/src/wp/impexp/xp/ie_imp_WordPerfect.cpp 7 Feb 2002 18:15:17 -0000 1.14
    +++ abi/src/wp/impexp/xp/ie_imp_WordPerfect.cpp 20 Feb 2002 11:21:59 -0000
    @@ -265,8 +265,8 @@
     IE_Imp_WordPerfect::IE_Imp_WordPerfect(PD_Document * pDocument)
       : IE_Imp (pDocument)
     {
    - m_firstParagraph = true;
        m_undoOn = false;
    + m_paragraphChanged = true;
     
        m_wordPerfectDispatchBytes.addItem(new WordPerfectByteTag(WP_TOP_SOFT_EOL, &IE_Imp_WordPerfect::_insertSpace));
        m_wordPerfectDispatchBytes.addItem(new WordPerfectByteTag(WP_TOP_SOFT_SPACE, &IE_Imp_WordPerfect::_insertSpace));
    @@ -612,9 +612,7 @@
                    }
               }
          }
    -
    -
    -
    +
        UT_DEBUGMSG(("WordPerfect: File Pointer at %i equals or exceeds document length of %i\n", (int)ftell(m_importFile), (int)m_documentEnd));
        
        X_CheckWordPerfectError(_flushText());
    @@ -651,9 +649,9 @@
        // (TODO: eliminate a prev space if it's just before this)
        UT_DEBUGMSG(("WordPerfect: Handling a hard EOL \n"));
        if(!m_undoOn)
    - {
    + {
             X_CheckWordPerfectError(_flushText());
    - X_CheckWordPerfectError(_appendCurrentParagraphProperties());
    + _appendCurrentParagraphProperties();
          }
        
        return UT_OK;
    @@ -759,7 +757,6 @@
        UT_uint16 nonDeletableInfoSize;
     
        X_CheckWordPerfectError(_handleVariableGroupHeader(startPosition, subGroup, size, flags));
    -
        X_CheckFileReadElementError(fread(&nonDeletableInfoSize, sizeof(UT_uint16), 1, m_importFile));
     
        // dispatch to subgroup to handle the rest of the relevant properties within the
    @@ -770,7 +767,8 @@
             X_CheckWordPerfectError(_handleParagraphGroupJustification());
             break;
          }
    -
    + m_paragraphChanged = true;
    +
        X_CheckWordPerfectError(_skipGroup(startPosition, size));
        
        return UT_OK;
    @@ -794,7 +792,7 @@
     }
     
     // handles a tab group
    -// (TODO: not implemented, just skips over it)
    +// (TODO: partially implemented, only basic tab import is done)
     UT_Error IE_Imp_WordPerfect::_handleTabGroup()
     {
        UT_DEBUGMSG(("WordPerfect: Handling a tab group\n"));
    @@ -802,7 +800,6 @@
        long startPosition = ftell(m_importFile);
        unsigned char tabDefinition;
        UT_uint16 size;
    - unsigned char flags;
        
        X_CheckFileReadElementError(fread(&tabDefinition, sizeof(unsigned char), 1, m_importFile));
        X_CheckFileReadElementError(fread(&size, sizeof(UT_uint16), 1, m_importFile)); // I have no idea WHAT this var. does. but it's there.
    @@ -1351,17 +1348,17 @@
     {
        UT_DEBUGMSG(("WordPerfect: Flushing Text\n"));
                
    - // if this is the first time we're calling this, then we must append the current paragraph properties
    - // so we will have a structure to insert into
    - if(m_firstParagraph)
    + // append the current paragraph properties if they are changed; m_paragraphChanged is initialized with true, so the first time
    + // we will have a structure to insert into
    + if(m_paragraphChanged)
          {
             _appendCurrentParagraphProperties();
    - m_firstParagraph = false;
          }
        
        if(m_textBuf.getLength() > 0)
          X_CheckDocumentError(getDoc()->appendSpan(m_textBuf.getPointer(0), m_textBuf.getLength()));
        m_textBuf.truncate(0);
    + UT_DEBUGMSG(("WordPerfect: Text flushed\n"));
          
        
        return UT_OK;
    @@ -1447,6 +1444,7 @@
        propsArray[0] = pProps;
        propsArray[1] = propBuffer;
        propsArray[2] = NULL;
    + m_paragraphChanged = false;
        
        X_CheckDocumentError(getDoc()->appendStrux(PTX_Block, propsArray));
        
    Index: abi/src/wp/impexp/xp/ie_imp_WordPerfect.h
    ===================================================================
    RCS file: /cvsroot/abi/src/wp/impexp/xp/ie_imp_WordPerfect.h,v
    retrieving revision 1.7
    diff -u -r1.7 ie_imp_WordPerfect.h
    --- abi/src/wp/impexp/xp/ie_imp_WordPerfect.h 13 Jan 2002 17:13:42 -0000 1.7
    +++ abi/src/wp/impexp/xp/ie_imp_WordPerfect.h 20 Feb 2002 11:22:00 -0000
    @@ -276,7 +276,7 @@
        UT_uint32 m_documentPointer;
        UT_uint16 m_indexPointer;
        bool m_undoOn;
    - bool m_firstParagraph;
    + bool m_paragraphChanged;
        UT_Mbtowc m_Mbtowc;
        UT_GrowBuf m_textBuf;
        UT_Vector m_fontDescriptorList;





    This archive was generated by hypermail 2.1.4 : Wed Feb 20 2002 - 11:30:52 GMT