From: j.m.maurer (j.m.maurer@student.utwente.nl)
Date: Wed Feb 20 2002 - 16:25:43 GMT
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