[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: libexport fixes
From: Zack Rusin <zack () kde ! org>
Date: 2003-07-05 22:17:00
[Download RAW message or body]
Hi guys,
to make it short this is a patch adding:
1) Full FRAME element support to FrameAnchor. Some people have been
saying that they're missing it so now they have it.
2) Since #1 correlates with this one - fixing parsing of tables. Before
libexport depended on the fact that before any cells are present in the
dtd there's a Frameset element with the name == grpMgr. Now a manager
is created when the first cell is seen.
I have also a fix for all the filters, switching them to the
FrameAnchor.FrameData element and I tested it with HtmlFilter which now
kind of exports tables (exports but the inline tables are inserted in
wrong locations (always at the end of the document) ), but that's a
problem in the filter itself.
Comments?
Zack
["libexport.diff" (text/x-diff)]
? Attributes.cpp
? Attributes.h
Index: KWEFKWordLeader.cc
===================================================================
RCS file: /home/kde/koffice/filters/kword/libexport/KWEFKWordLeader.cc,v
retrieving revision 1.39
diff -u -3 -p -b -B -r1.39 KWEFKWordLeader.cc
--- KWEFKWordLeader.cc 4 Jan 2003 10:08:37 -0000 1.39
+++ KWEFKWordLeader.cc 5 Jul 2003 22:12:02 -0000
@@ -77,6 +77,19 @@ static FrameAnchor *findAnchor ( const K
return NULL;
}
+static ParaData createTableMgr( const QString& grpMgr )
+{
+ ParaData pData;
+ LayoutData lData;
+ FormatData fData;
+ fData.id = 6;
+ fData.frameAnchor.key = KoPictureKey( grpMgr );
+ fData.frameAnchor.type = 6;
+ lData.formatData = fData;
+ pData.layout = lData;
+ pData.formattingList << fData;
+ return pData;
+}
static void ProcessParagraphTag ( QDomNode myNode,
void *tagData,
@@ -138,16 +151,76 @@ static void ProcessFrameTag ( QDomNode m
{
FrameAnchor* frameAnchor= (FrameAnchor*) tagData;
+ int lRed, lBlue, lGreen;
+ int rRed, rBlue, rGreen;
+ int tRed, tBlue, tGreen;
+ int bRed, bBlue, bGreen;
+ int bkRed, bkBlue, bkGreen;
+
QValueList<AttrProcessing> attrProcessingList;
attrProcessingList
- << AttrProcessing ( "runaround", NULL, NULL )
- << AttrProcessing ( "top", "double", &frameAnchor->top )
- << AttrProcessing ( "bottom", "double", &frameAnchor->bottom )
- << AttrProcessing ( "left", "double", &frameAnchor->left )
- << AttrProcessing ( "right", "double", &frameAnchor->right )
+ << AttrProcessing ( "right", "double", \
&frameAnchor->frame.right ) + << AttrProcessing ( "left", \
"double", &frameAnchor->frame.left ) + << AttrProcessing ( "top", \
"double", &frameAnchor->frame.top ) + << AttrProcessing ( \
"bottom", "double", &frameAnchor->frame.bottom ) +
+ << AttrProcessing ( "min-height", "double", \
&frameAnchor->frame.minHeight ) +
+ << AttrProcessing ( "runaround", "int", \
&frameAnchor->frame.runaround ) + << AttrProcessing ( \
"runaroundSide", "QString", &frameAnchor->frame.runaroundSide ) + \
<< AttrProcessing ( "runaroundGap", "double", \
&frameAnchor->frame.runaroundGap ) +
+ << AttrProcessing ( "autoCreateNewFrame", "int", \
&frameAnchor->frame.autoCreateNewFrame ) + << AttrProcessing ( \
"newFrameBehavior", "int", &frameAnchor->frame.newFrameBehavior ) +
+ << AttrProcessing ( "copy", "int", &frameAnchor->frame.copy \
) + << AttrProcessing ( "sheetSide", "int", \
&frameAnchor->frame.sheetSide ) +
+ << AttrProcessing ( "lWidth", "double", \
&frameAnchor->frame.lWidth ) + << AttrProcessing ( "rWidth", \
"double", &frameAnchor->frame.rWidth ) + << AttrProcessing ( \
"tWidth", "double", &frameAnchor->frame.tWidth ) + << \
AttrProcessing ( "bWidth", "double", &frameAnchor->frame.bWidth ) +
+ << AttrProcessing ( "lRed", "int", &lRed )
+ << AttrProcessing ( "lGreen", "int", &lGreen )
+ << AttrProcessing ( "lBlue", "int", &lBlue )
+
+ << AttrProcessing ( "rRed", "int", &rRed )
+ << AttrProcessing ( "rGreen", "int", &rGreen )
+ << AttrProcessing ( "rBlue", "int", &rBlue )
+
+ << AttrProcessing ( "tRed", "int", &tRed )
+ << AttrProcessing ( "tGreen", "int", &tGreen )
+ << AttrProcessing ( "tBlue", "int", &tBlue )
+
+ << AttrProcessing ( "bRed", "int", &bRed )
+ << AttrProcessing ( "bGreen", "int", &bGreen )
+ << AttrProcessing ( "bBlue", "int", &bBlue )
+
+ << AttrProcessing ( "lStyle", "int", \
&frameAnchor->frame.lStyle ) + << AttrProcessing ( "rStyle", \
"int", &frameAnchor->frame.rStyle ) + << AttrProcessing ( "tStyle", \
"int", &frameAnchor->frame.tStyle ) + << AttrProcessing ( "bStyle", \
"int", &frameAnchor->frame.bStyle ) +
+ << AttrProcessing ( "bkRed", "int", &bkRed )
+ << AttrProcessing ( "bkGreen", "int", &bkGreen )
+ << AttrProcessing ( "bkBlue", "int", &bkBlue )
+
+ << AttrProcessing ( "bkStyle", "int", \
&frameAnchor->frame.bkStyle ) +
+ << AttrProcessing ( "bleftpt", "double", \
&frameAnchor->frame.bleftpt ) + << AttrProcessing ( "brightpt", \
"double", &frameAnchor->frame.brightpt ) + << AttrProcessing ( \
"btoppt", "double", &frameAnchor->frame.btoppt ) + << \
AttrProcessing ( "bbottompt", "double", &frameAnchor->frame.bbottompt ) \
; ProcessAttributes (myNode, attrProcessingList);
+ frameAnchor->frame.lColor = QColor( lRed, lGreen, lBlue );
+ frameAnchor->frame.rColor = QColor( rRed, rGreen, rBlue );
+ frameAnchor->frame.tColor = QColor( tRed, tGreen, tBlue );
+ frameAnchor->frame.bColor = QColor( bRed, bGreen, bBlue );
+ frameAnchor->frame.bkColor = QColor( bkRed, bkGreen, bkBlue );
+
AllowNoSubtags (myNode, leader);
}
@@ -196,7 +269,7 @@ static void ProcessFramesetTag ( QDomNod
<< AttrProcessing ( "col", "int", (void \
*) &col )
<< AttrProcessing ( "rows", "int", (void \
*) &rows )
<< AttrProcessing ( "cols", "int", (void \
*) &cols )
- << AttrProcessing ( "protectSize","", NULL \
) + << AttrProcessing ( "protectSize", "", \
NULL ) ;
ProcessAttributes (myNode, attrProcessingList);
@@ -291,13 +364,14 @@ static void ProcessFramesetTag ( QDomNod
{
#if 0
kdDebug (30508) << "DEBUG - FRAMESET: table " << \
name << " col, row = "
- << col << ", " << row << endl;
+ << col << ", " << row << ", Mgr = \
"<< grpMgr << endl; #endif
-
FrameAnchor *frameAnchor = findAnchor (grpMgr, \
*paraList); + if ( !frameAnchor ) {
+ *paraList << createTableMgr( grpMgr );
+ frameAnchor = \
¶List->last().formattingList.first().frameAnchor; + \
}
- if ( frameAnchor )
- {
frameAnchor->type = 6;
QValueList<ParaData> cellParaList;
@@ -311,11 +384,6 @@ static void ProcessFramesetTag ( QDomNod
}
else
{
- kdWarning (30508) << "ProcessFramesetTag (): \
Couldn't find anchor " << name << endl;
- }
- }
- else
- {
kdWarning (30508) << "Unexpected value for one of, \
or all FRAMESET attribute cols, rows: "
<< cols << ", " << rows << "!" << \
endl; AllowNoSubtags (myNode, leader);
@@ -390,7 +457,10 @@ static void ProcessFramesetsTag ( QDomNo
static void ProcessStyleTag (QDomNode myNode, void *, KWEFKWordLeader \
*leader ) {
- AllowNoAttributes (myNode);
+ QValueList<AttrProcessing> attrProcessingList;
+ attrProcessingList
+ << AttrProcessing ( "outline", "", NULL );
+ ProcessAttributes (myNode, attrProcessingList);
LayoutData layout;
@@ -453,10 +523,16 @@ static void ProcessPaperTag (QDomNode my
<< AttrProcessing ( "orientation", "int", \
(void *) &orientation )
<< AttrProcessing ( "columns", "", \
NULL )
<< AttrProcessing ( "columnspacing", "", \
NULL ) + << AttrProcessing ( \
"pages", "", NULL )
<< AttrProcessing ( "hType", "int", \
(void*) &hType )
<< AttrProcessing ( "fType", "int", \
(void*) &fType )
<< AttrProcessing ( "spHeadBody", "", \
NULL )
- << AttrProcessing ( "spFootBody", "", \
NULL ); + << AttrProcessing ( \
"spFootBody", "", NULL ) + \
<< AttrProcessing ( "spFootNoteBody", "", NULL \
) + << AttrProcessing ( "slFootNotePosition", "", \
NULL ) + << AttrProcessing ( \
"slFootNoteLength", "", NULL ) + \
<< AttrProcessing ( "slFootNoteWidth", "", NULL \
) + << AttrProcessing ( "slFootNoteType", "", \
NULL ); ProcessAttributes (myNode, attrProcessingList);
leader->setHeaderType( hType );
@@ -492,7 +568,16 @@ static void ProcessVariableSettingsTag (
(void *) &vs.displaycomment )
<< AttrProcessing ( "displayfieldcode",
"bool",
- (void *) &vs.displayfieldcode \
); + (void *) \
&vs.displayfieldcode ) + << AttrProcessing ( \
"lastPrintingDate", + "",
+ NULL )
+ << AttrProcessing ( "creationDate",
+ "",
+ NULL )
+ << AttrProcessing ( "modificationDate",
+ "",
+ NULL );
ProcessAttributes (myNode, attrProcessingList);
leader->doVariableSettings (vs);
@@ -607,12 +692,21 @@ static void ProcessFootnoteFramesetTag (
{
QString frameName;
int frameType = -1, frameInfo = -1;
+ bool visible = false;
QValueList<AttrProcessing> attrProcessingList;
attrProcessingList
<< AttrProcessing ( "name", "QString", (void *) &frameName \
) << AttrProcessing ( "frameType", "int", (void *) &frameType )
<< AttrProcessing ( "frameInfo", "int", (void *) &frameInfo )
+ << AttrProcessing ( "removable", "", NULL \
) + << AttrProcessing ( "visible", "bool", (void *) &visible \
) + << AttrProcessing ( "grpMgr", "QString", NULL )
+ << AttrProcessing ( "row", "int", NULL )
+ << AttrProcessing ( "col", "int", NULL )
+ << AttrProcessing ( "rows", "int", NULL )
+ << AttrProcessing ( "cols", "int", NULL )
+ << AttrProcessing ( "protectSize", "", NULL )
;
ProcessAttributes (myNode, attrProcessingList);
@@ -645,11 +739,13 @@ static void ProcessFootnoteFramesetsTag
//kdDebug (30508) << "Entering ProcessDocTag" << endl;
QValueList<AttrProcessing> attrProcessingList;
- attrProcessingList << AttrProcessing ( "editor", "", NULL )
- << AttrProcessing ( "mime", "", NULL )
- << AttrProcessing ( "syntaxVersion", "", NULL );
- ProcessAttributes (myNode, attrProcessingList);
+ attrProcessingList << AttrProcessing ( "xmlns", "QString", 0 \
) + << AttrProcessing ( "editor", "QString", 0 \
) + << AttrProcessing ( "mime", "QString", 0 \
) + << AttrProcessing ( "syntaxVersion", "int", 0 \
); +
+ ProcessAttributes( myNode, attrProcessingList );
// TODO: verify syntax version and perhaps mime
leader->doOpenHead();
Index: KWEFStructures.h
===================================================================
RCS file: /home/kde/koffice/filters/kword/libexport/KWEFStructures.h,v
retrieving revision 1.43
diff -u -3 -p -b -B -r1.43 KWEFStructures.h
--- KWEFStructures.h 30 Jun 2003 22:13:04 -0000 1.43
+++ KWEFStructures.h 5 Jul 2003 22:12:02 -0000
@@ -151,21 +151,53 @@ class Picture
QString koStoreName; // Picture store name: filename within kwd \
archive };
+/**
+ * For FRAME Tag.
+ * Look at kword.dtd for a complete description
+ * of individuals class members
+ */
+class FrameData
+{
+public:
+ double right;
+ double left;
+ double top;
+ double bottom;
+ double minHeight;
+ int runaround;
+ QString runaroundSide;
+ double runaroundGap;
+ int autoCreateNewFrame;
+ int newFrameBehavior;
+ int copy;
+ int sheetSide;
+
+ double lWidth, rWidth, tWidth, bWidth;
+
+ QColor lColor;
+ QColor rColor;
+ QColor tColor;
+ QColor bColor;
+
+ int lStyle, rStyle, tStyle, bStyle;
+
+ QColor bkColor;
+ int bkStyle;
+ double bleftpt, brightpt, btoppt, bbottompt;
+};
+//This is basically FRAMESET tag
class FrameAnchor
{
public:
FrameAnchor ():
- type(-1), top( 0.0 ), bottom( 0.0 ), left( 0.0 ), right( 0.0 ) {}
+ type(-1) {}
FrameAnchor ( const KoPictureKey& n ) : key (n), type (-1) {}
KoPictureKey key; // KoPictureKey
int type;
- double top; // Frame top
- double bottom; // frame bottom
- double left; // frame left
- double right; // frame right
+ FrameData frame;
Picture picture;
Table table;
Index: ProcessDocument.cc
===================================================================
RCS file: /home/kde/koffice/filters/kword/libexport/ProcessDocument.cc,v
retrieving revision 1.44
diff -u -3 -p -b -B -r1.44 ProcessDocument.cc
--- ProcessDocument.cc 30 Jun 2003 22:13:04 -0000 1.44
+++ ProcessDocument.cc 5 Jul 2003 22:12:03 -0000
@@ -442,11 +442,16 @@ static void AppendTagProcessingFormatOne
<< TagProcessing ( "ITALIC", ProcessBoolIntValueTag, \
&formatData.text.italic )
<< TagProcessing ( "UNDERLINE", ProcessUnderlineTag, \
&formatData.text )
<< TagProcessing ( "STRIKEOUT", ProcessStrikeoutTag, \
&formatData.text )
- << TagProcessing ( "CHARSET", NULL, \
NULL )
<< TagProcessing ( "VERTALIGN", ProcessIntValueTag, \
&formatData.text.verticalAlignment )
- << TagProcessing ( "TEXTBACKGROUNDCOLOR", ProcessColorAttrTag, \
&formatData.text.bgColor ) + << TagProcessing ( "SHADOW", \
NULL, NULL \
)
<< TagProcessing ( "FONTATTRIBUTE", ProcessStringValueTag, \
&formatData.text.fontAttribute )
<< TagProcessing ( "LANGUAGE", NULL, \
NULL ) + << TagProcessing ( "ANCHOR", \
NULL, NULL ) + << \
TagProcessing ( "IMAGE", NULL, NULL \
) + << TagProcessing ( "PICTURE", NULL, \
NULL ) + << TagProcessing ( \
"VARIABLE", NULL, NULL \
) + << TagProcessing ( "TEXTBACKGROUNDCOLOR", ProcessColorAttrTag, \
&formatData.text.bgColor ) + << TagProcessing ( \
"OFFSETFROMBASELINE", NULL, NULL \
) ;
}
@@ -461,7 +466,10 @@ static void SubProcessFormatOneTag(QDomN
// It can happen in a child of <STYLE>, just put secure values
formatPos=0;
formatLen=0;
- kdDebug (30508) << "Missing formatting! Style?" << endl;
+ kdDebug (30508) << "Missing formatting! Style? "
+ << myNode.nodeName()
+ << " = " << myNode.nodeValue()
+ << endl;
}
FormatData formatData(1, formatPos, formatLen);
@@ -596,6 +604,8 @@ static void ProcessCounterTag ( QDomNode
attrProcessingList << AttrProcessing ( "bulletfont", "QString", \
(void *) &counter->customFont );
attrProcessingList << AttrProcessing ( "customdef", "", \
(void *) NULL );
attrProcessingList << AttrProcessing ( "text", "QString", \
(void *) &counter->text ); + attrProcessingList << \
AttrProcessing ( "display-levels", "", NULL \
); + attrProcessingList << AttrProcessing ( "align", "", \
NULL ); ProcessAttributes (myNode, \
attrProcessingList);
AllowNoSubtags (myNode, leader);
Index: TagProcessing.cc
===================================================================
RCS file: /home/kde/koffice/filters/kword/libexport/TagProcessing.cc,v
retrieving revision 1.12
diff -u -3 -p -b -B -r1.12 TagProcessing.cc
--- TagProcessing.cc 30 Jun 2003 22:13:04 -0000 1.12
+++ TagProcessing.cc 5 Jul 2003 22:12:03 -0000
@@ -129,7 +129,7 @@ void ProcessAttributes ( QDomNode
//kdDebug(30508) << "Starting ProcessAttributes for node: " << \
myNode.nodeName() << endl;
QDomNamedNodeMap myAttribs ( myNode.attributes () );
-
+ //kdDebug(30508) << "Attributes = " << myAttribs.length () <<endl;
for ( uint i = 0; i < myAttribs.length (); i++ )
{
QDomAttr myAttrib ( myAttribs.item (i).toAttr () );
@@ -144,6 +144,7 @@ void ProcessAttributes ( QDomNode
attrProcessingIt != attrProcessingList.end ();
attrProcessingIt++ )
{
+ //kdDebug(30508) << "NAME: " << myAttrib.name () << " == " \
<< (*attrProcessingIt).name <<endl; if ( myAttrib.name () == \
(*attrProcessingIt).name ) {
found = true;
_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic