From koffice-devel Fri Jun 27 09:02:11 2003 From: "Johannes Wilm" Date: Fri, 27 Jun 2003 09:02:11 +0000 To: koffice-devel Subject: Re: kword's libexport X-MARC-Message: https://marc.info/?l=koffice-devel&m=105670586015348 Hi again! I will be gone for a week and I probably will not have internet at all. I do think it is important that the RTF-filter in 1.3 for kword doesn't crash applications loading the RTF and table support is important. I therefor insert my current patch in here. Note it requires changes to libexport which are being worked on by zack. Some of the data retrieval will also have to be reworked when his changes have been commited. If noone has reworked it to work with Zack's changed libexport when I get back I will do that myself, although I guess I might be running late for 1.3 (???) --- ExportFilter.cc 2003-06-27 10:49:19.000000000 +0200 +++ ExportFilter.cc.new 2003-06-26 01:52:03.000000000 +0200 @@ -76,35 +76,78 @@ QValueList::ConstIterator itCell; - int rowCurrent=0; - m_textBody += "\\row"; - m_textBody += m_eol; + int rowCurrent=-1; + QString left; + QString right; + QString bottom; + QString top; + QString width; + QString bleftpt; + QString brightpt; + QString bbottompt; + QString btoppt; + QString lWidth; + QString rWidth; + QString tWidth; + QString bWidth; + QString minDASHheight; + QString m_rowHeader; + QString m_rowBody; +// m_rowHeader += "\\trowd" + m_eol + "\\trgaph36\\trql\\trrh0\\trleft0\\trautofit1\\trbrdrt\\brdrs\\brdrw10 \\trbrdrl\\brdrs\\brdrw10 \\trbrdrb\\brdrs\\brdrw10 \\trbrdrr\\brdrs\\brdrw10" + m_eol; // start new row m_inTable=true; for (itCell=anchor.table.cellList.begin(); itCell!=anchor.table.cellList.end(); itCell++) { - // ### TODO: rowspan, colspan + + QValueList frameList = *(*itCell).frameList; + QValueList::ConstIterator ot; + for (ot=frameList.begin();ot!=frameList.end();ot++) + { + right = QString::number(qRound(PT_TO_TWIP((*ot).frame.right)) - m_paperMarginRight); + left = QString::number(qRound(PT_TO_TWIP((*ot).frame.left)) - m_paperMarginLeft); + top = QString::number(qRound(PT_TO_TWIP((*ot).frame.top)) - m_paperMarginTop); + bottom = QString::number(qRound(PT_TO_TWIP((*ot).frame.bottom)) - m_paperMarginBottom); + width = QString::number(qRound((PT_TO_TWIP((*ot).frame.right) - m_paperMarginRight)-(PT_TO_TWIP((*ot).frame.left) - m_paperMarginLeft))); + brightpt = QString::number(qRound(PT_TO_TWIP((*ot).frame.brightpt))); + bleftpt = QString::number(qRound(PT_TO_TWIP((*ot).frame.bleftpt))); + btoppt = QString::number(qRound(PT_TO_TWIP((*ot).frame.btoppt))); + bbottompt = QString::number(qRound(PT_TO_TWIP((*ot).frame.bbottompt))); + lWidth = QString::number(qRound(PT_TO_TWIP((*ot).frame.lWidth))); + rWidth = QString::number(qRound(PT_TO_TWIP((*ot).frame.rWidth))); + tWidth = QString::number(qRound(PT_TO_TWIP((*ot).frame.tWidth))); + bWidth = QString::number(qRound(PT_TO_TWIP((*ot).frame.bWidth))); + minDASHheight = QString::number(qRound(PT_TO_TWIP((*ot).frame.minDASHheight))); + } + + + // ### TODO: rowspan, colspan if (rowCurrent!=(*itCell).row) { rowCurrent=(*itCell).row; - m_textBody += "\\row"; - m_textBody += m_eol; - } - m_textBody += "\\trowd \\trgaph60 \\trleft-60"; // start new row + if (rowCurrent!=0) + m_textBody += m_rowHeader + m_eol + m_rowBody+ m_eol+ "\\row" + m_eol; //save last row + m_rowBody =""; + m_rowHeader = "\\trowd" + m_eol + "\\trgaph80\\trql\\trrh"+ minDASHheight+"\\trleft"+left+"\\trautofit0" + m_eol; // start new row + } + m_rowHeader += "\\clvertalt"; + if (tWidth != "0") m_rowHeader += "\\clbrdrt\\brdrs\\brdrw" + tWidth; + if (bWidth != "0") m_rowHeader += "\\clbrdrb\\brdrs\\brdrw" + bWidth; + if (lWidth != "0") m_rowHeader += "\\clbrdrl\\brdrs\\brdrw" + lWidth; + if (rWidth != "0") m_rowHeader += "\\clbrdrr\\brdrs\\brdrw" + rWidth; //borders top, bottom, left and right + m_rowHeader += "\\cltxlrtb \\clWidth"+width+"\\clftsWidth3"; //left to right and top to bottom + cell width + m_rowHeader += "\\clpadl"+bleftpt+"\\clpadfl3 \\clpadt"+btoppt+"\\clpadft3 \\clpadb"+bbottompt+"\\clpadfb3 \\clpadr"+brightpt+"\\clpadfr3 "; //cell padding + m_rowHeader += "\\cellx" + right; //right border of cell - QValueList paraList = *(*itCell).paraList; + QValueList paraList = *(*itCell).paraList; QValueList::ConstIterator it; - for (it=paraList.begin();it!=paraList.end();it++) - m_textBody += ProcessParagraphData( (*it).text,(*it).layout,(*it).formattingList) + m_eol; + for (it=paraList.begin();it!=paraList.end();it++) + m_rowBody += ProcessParagraphData( (*it).text,(*it).layout,(*it).formattingList) + m_eol; - m_textBody += "\\cell"; + m_rowBody += "\\cell"; } m_inTable=false; - - m_textBody += "\\row\\par"; // delimit last row - m_textBody += m_eol; - + m_textBody += m_rowHeader + m_eol + m_rowBody+ m_eol+ "\\row\\pard" + m_eol; //write last row return true; } _______________________________________________ koffice-devel mailing list koffice-devel@mail.kde.org http://mail.kde.org/mailman/listinfo/koffice-devel