writerperfect/prj/build.lst | 6 writerperfect/prj/d.lst | 5 writerperfect/source/filter/DocumentCollector.cxx | 931 ---------------- writerperfect/source/filter/DocumentCollector.hxx | 201 --- writerperfect/source/filter/DocumentElement.cxx | 102 - writerperfect/source/filter/DocumentElement.hxx | 99 - writerperfect/source/filter/DocumentHandler.cxx | 83 - writerperfect/source/filter/DocumentHandler.hxx | 51 writerperfect/source/filter/FilterInternal.hxx | 31 writerperfect/source/filter/FontStyle.cxx | 50 writerperfect/source/filter/FontStyle.hxx | 52 writerperfect/source/filter/ListStyle.cxx | 161 -- writerperfect/source/filter/ListStyle.hxx | 101 - writerperfect/source/filter/PageSpan.cxx | 173 -- writerperfect/source/filter/PageSpan.hxx | 65 - writerperfect/source/filter/SectionStyle.cxx | 86 - writerperfect/source/filter/SectionStyle.hxx | 52 writerperfect/source/filter/Style.hxx | 63 - writerperfect/source/filter/TableStyle.cxx | 163 -- writerperfect/source/filter/TableStyle.hxx | 80 - writerperfect/source/filter/TextRunStyle.cxx | 162 -- writerperfect/source/filter/TextRunStyle.hxx | 69 - writerperfect/source/filter/WriterProperties.hxx | 36 writerperfect/source/filter/makefile.mk | 54 writerperfect/source/stream/WPXSvStream.cxx | 174 -- writerperfect/source/stream/WPXSvStream.h | 47 writerperfect/source/stream/makefile.mk | 45 writerperfect/source/wpdimp/WordPerfectCollector.cxx | 53 writerperfect/source/wpdimp/WordPerfectCollector.hxx | 41 writerperfect/source/wpdimp/WordPerfectImportFilter.cxx | 293 ----- writerperfect/source/wpdimp/WordPerfectImportFilter.hxx | 115 - writerperfect/source/wpdimp/makefile.mk | 48 writerperfect/source/wpdimp/wpft_genericfilter.cxx | 76 - writerperfect/util/makefile.mk | 80 - writerperfect/util/wpft.component | 31 35 files changed, 3879 deletions(-)
New commits: commit ac4268fcf6e92d5c13667bb89802defaf9346e5f Author: Andrea Pescetti <pesce...@apache.org> Date: Sat Dec 27 22:34:24 2014 +0000 #i118919# Remove main/writerperfect (currently unused). diff --git a/writerperfect/prj/build.lst b/writerperfect/prj/build.lst deleted file mode 100644 index 95fa539dd..0000000 --- a/writerperfect/prj/build.lst +++ /dev/null @@ -1,6 +0,0 @@ -wp writerperfect : sot comphelper xmloff LIBXSLT:libxslt NULL -wp writerperfect usr1 - all wp_mkout NULL -wp writerperfect\source\stream nmake - all wp_stream NULL -wp writerperfect\source\filter nmake - all wp_filter NULL -wp writerperfect\source\wpdimp nmake - all wp_wpdimp NULL -wp writerperfect\util nmake - all wp_util wp_wpdimp wp_filter wp_stream NULL diff --git a/writerperfect/prj/d.lst b/writerperfect/prj/d.lst deleted file mode 100644 index 971d1ce..0000000 --- a/writerperfect/prj/d.lst +++ /dev/null @@ -1,5 +0,0 @@ -..\%__SRC%\lib\libwpft*.so %_DEST%\lib%_EXT% -..\%__SRC%\bin\wpft*.dll %_DEST%\bin%_EXT% -..\%__SRC%\bin\wpftgo.dll %_DEST%\bin%_EXT%\wpftgo.dll -..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib -..\%__SRC%\misc\wpft.component %_DEST%\xml%_EXT%\wpft.component diff --git a/writerperfect/source/filter/DocumentCollector.cxx b/writerperfect/source/filter/DocumentCollector.cxx deleted file mode 100644 index e258d22..0000000 --- a/writerperfect/source/filter/DocumentCollector.cxx +++ /dev/null @@ -1,931 +0,0 @@ -/* DocumentCollector: Collects sections and runs of text from a - * file (and styles to go along with them) and writes them - * to a Writer target document - * - * Copyright (C) 2002-2004 William Lachance (william.lacha...@sympatico.ca) - * Copyright (C) 2003-2004 Net Integration Technologies (http://www.net-itech.com) - * Copyright (C) 2004 Fridrich Strba (fridrich.st...@bluewin.ch) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ - -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif -#include <string.h> // for strcmp - -#include "DocumentCollector.hxx" -#include "DocumentElement.hxx" -#include "TextRunStyle.hxx" -#include "FontStyle.hxx" -#include "ListStyle.hxx" -#include "PageSpan.hxx" -#include "SectionStyle.hxx" -#include "TableStyle.hxx" -#include "FilterInternal.hxx" -#include "WriterProperties.hxx" - -_WriterDocumentState::_WriterDocumentState() : - mbFirstElement(true), - mbInFakeSection(false), - mbListElementOpenedAtCurrentLevel(false), - mbTableCellOpened(false), - mbHeaderRow(false), - mbInNote(false) -{ -} - -DocumentCollector::DocumentCollector(WPXInputStream *pInput, DocumentHandler *pHandler) : - mpInput(pInput), - mpHandler(pHandler), - mbUsed(false), - mfSectionSpaceAfter(0.0f), - miNumListStyles(0), - mpCurrentContentElements(&mBodyElements), - mpCurrentPageSpan(NULL), - miNumPageStyles(0), - mpCurrentListStyle(NULL), - miCurrentListLevel(0), - miLastListLevel(0), - miLastListNumber(0), - mbListContinueNumbering(false), - mbListElementOpened(false), - mbListElementParagraphOpened(false) -{ -} - -DocumentCollector::~DocumentCollector() -{ -} - -bool DocumentCollector::filter() -{ - // The contract for DocumentCollector is that it will only be used once after it is - // instantiated - if (mbUsed) - return false; - - mbUsed = true; - - // parse & write - // WLACH_REFACTORING: Remove these args.. - if (!parseSourceDocument(*mpInput)) - return false; - if (!_writeTargetDocument(mpHandler)) - return false; - - // clean up the mess we made - WRITER_DEBUG_MSG(("WriterWordPerfect: Cleaning up our mess..\n")); - - WRITER_DEBUG_MSG(("Destroying the body elements\n")); - for (std::vector<DocumentElement *>::iterator iterBody = mBodyElements.begin(); iterBody != mBodyElements.end(); iterBody++) { - delete((*iterBody)); - (*iterBody) = NULL; - } - - WRITER_DEBUG_MSG(("Destroying the styles elements\n")); - for (std::vector<DocumentElement *>::iterator iterStyles = mStylesElements.begin(); iterStyles != mStylesElements.end(); iterStyles++) { - delete (*iterStyles); - (*iterStyles) = NULL; // we may pass over the same element again (in the case of headers/footers spanning multiple pages) - // so make sure we don't do a double del - } - - WRITER_DEBUG_MSG(("Destroying the rest of the styles elements\n")); - for (std::map<WPXString, ParagraphStyle *, ltstr>::iterator iterTextStyle = mTextStyleHash.begin(); iterTextStyle != mTextStyleHash.end(); iterTextStyle++) { - delete iterTextStyle->second; - } - for (std::map<WPXString, SpanStyle *, ltstr>::iterator iterSpanStyle = mSpanStyleHash.begin(); iterSpanStyle != mSpanStyleHash.end(); iterSpanStyle++) { - delete iterSpanStyle->second; - } - - for (std::map<WPXString, FontStyle *, ltstr>::iterator iterFont = mFontHash.begin(); iterFont != mFontHash.end(); iterFont++) { - delete iterFont->second; - } - - for (std::vector<ListStyle *>::iterator iterListStyles = mListStyles.begin(); iterListStyles != mListStyles.end(); iterListStyles++) { - delete (*iterListStyles); - } - for (std::vector<SectionStyle *>::iterator iterSectionStyles = mSectionStyles.begin(); iterSectionStyles != mSectionStyles.end(); iterSectionStyles++) { - delete (*iterSectionStyles); - } - for (std::vector<TableStyle *>::iterator iterTableStyles = mTableStyles.begin(); iterTableStyles != mTableStyles.end(); iterTableStyles++) { - delete (*iterTableStyles); - } - - for (std::vector<PageSpan *>::iterator iterPageSpans = mPageSpans.begin(); iterPageSpans != mPageSpans.end(); iterPageSpans++) { - delete (*iterPageSpans); - } - - return true; -} - -void DocumentCollector::_writeDefaultStyles(DocumentHandler *pHandler) -{ - TagOpenElement stylesOpenElement("office:styles"); - stylesOpenElement.write(pHandler); - - TagOpenElement defaultParagraphStyleOpenElement("style:default-style"); - defaultParagraphStyleOpenElement.addAttribute("style:family", "paragraph"); - defaultParagraphStyleOpenElement.write(pHandler); - - TagOpenElement defaultParagraphStylePropertiesOpenElement("style:properties"); - defaultParagraphStylePropertiesOpenElement.addAttribute("style:family", "paragraph"); - defaultParagraphStylePropertiesOpenElement.addAttribute("style:tab-stop-distance", "0.5inch"); - defaultParagraphStylePropertiesOpenElement.write(pHandler); - TagCloseElement defaultParagraphStylePropertiesCloseElement("style:properties"); - defaultParagraphStylePropertiesCloseElement.write(pHandler); - - TagCloseElement defaultParagraphStyleCloseElement("style:default-style"); - defaultParagraphStyleCloseElement.write(pHandler); - - TagOpenElement standardStyleOpenElement("style:style"); - standardStyleOpenElement.addAttribute("style:name", "Standard"); - standardStyleOpenElement.addAttribute("style:family", "paragraph"); - standardStyleOpenElement.addAttribute("style:class", "text"); - standardStyleOpenElement.write(pHandler); - TagCloseElement standardStyleCloseElement("style:style"); - standardStyleCloseElement.write(pHandler); - - TagOpenElement textBodyStyleOpenElement("style:style"); - textBodyStyleOpenElement.addAttribute("style:name", "Text Body"); - textBodyStyleOpenElement.addAttribute("style:family", "paragraph"); - textBodyStyleOpenElement.addAttribute("style:parent-style-name", "Standard"); - textBodyStyleOpenElement.addAttribute("style:class", "text"); - textBodyStyleOpenElement.write(pHandler); - TagCloseElement textBodyStyleCloseElement("style:style"); - textBodyStyleCloseElement.write(pHandler); - - TagOpenElement tableContentsStyleOpenElement("style:style"); - tableContentsStyleOpenElement.addAttribute("style:name", "Table Contents"); - tableContentsStyleOpenElement.addAttribute("style:family", "paragraph"); - tableContentsStyleOpenElement.addAttribute("style:parent-style-name", "Text Body"); - tableContentsStyleOpenElement.addAttribute("style:class", "extra"); - tableContentsStyleOpenElement.write(pHandler); - TagCloseElement tableContentsStyleCloseElement("style:style"); - tableContentsStyleCloseElement.write(pHandler); - - TagOpenElement tableHeadingStyleOpenElement("style:style"); - tableHeadingStyleOpenElement.addAttribute("style:name", "Table Heading"); - tableHeadingStyleOpenElement.addAttribute("style:family", "paragraph"); - tableHeadingStyleOpenElement.addAttribute("style:parent-style-name", "Table Contents"); - tableHeadingStyleOpenElement.addAttribute("style:class", "extra"); - tableHeadingStyleOpenElement.write(pHandler); - TagCloseElement tableHeadingStyleCloseElement("style:style"); - tableHeadingStyleCloseElement.write(pHandler); - - TagCloseElement stylesCloseElement("office:styles"); - stylesCloseElement.write(pHandler); - -} - -void DocumentCollector::_writeMasterPages(DocumentHandler *pHandler) -{ - WPXPropertyList xBlankAttrList; - - pHandler->startElement("office:master-styles", xBlankAttrList); - int pageNumber = 1; - for (unsigned int i=0; i<mPageSpans.size(); i++) - { - bool bLastPage; - (i == (mPageSpans.size() - 1)) ? bLastPage = true : bLastPage = false; - mPageSpans[i]->writeMasterPages(pageNumber, i, bLastPage, pHandler); - pageNumber += mPageSpans[i]->getSpan(); - } - pHandler->endElement("office:master-styles"); -} - -void DocumentCollector::_writePageMasters(DocumentHandler *pHandler) -{ - for (unsigned int i=0; i<mPageSpans.size(); i++) - { - mPageSpans[i]->writePageMaster(i, pHandler); - } -} - -bool DocumentCollector::_writeTargetDocument(DocumentHandler *pHandler) -{ - WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Printing out the header stuff..\n")); - WPXPropertyList xBlankAttrList; - - WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Start Document\n")); - mpHandler->startDocument(); - - WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: preamble\n")); - WPXPropertyList docContentPropList; - docContentPropList.insert("xmlns:office", "http://openoffice.org/2000/office"); - docContentPropList.insert("xmlns:style", "http://openoffice.org/2000/style"); - docContentPropList.insert("xmlns:text", "http://openoffice.org/2000/text"); - docContentPropList.insert("xmlns:table", "http://openoffice.org/2000/table"); - docContentPropList.insert("xmlns:draw", "http://openoffice.org/2000/draw"); - docContentPropList.insert("xmlns:fo", "http://www.w3.org/1999/XSL/Format"); - docContentPropList.insert("xmlns:xlink", "http://www.w3.org/1999/xlink"); - docContentPropList.insert("xmlns:number", "http://openoffice.org/2000/datastyle"); - docContentPropList.insert("xmlns:svg", "http://www.w3.org/2000/svg"); - docContentPropList.insert("xmlns:chart", "http://openoffice.org/2000/chart"); - docContentPropList.insert("xmlns:dr3d", "http://openoffice.org/2000/dr3d"); - docContentPropList.insert("xmlns:math", "http://www.w3.org/1998/Math/MathML"); - docContentPropList.insert("xmlns:form", "http://openoffice.org/2000/form"); - docContentPropList.insert("xmlns:script", "http://openoffice.org/2000/script"); - docContentPropList.insert("office:class", "text"); - docContentPropList.insert("office:version", "1.0"); - mpHandler->startElement("office:document-content", docContentPropList); - - // write out the font styles - mpHandler->startElement("office:font-decls", xBlankAttrList); - for (std::map<WPXString, FontStyle *, ltstr>::iterator iterFont = mFontHash.begin(); iterFont != mFontHash.end(); iterFont++) { - iterFont->second->write(mpHandler); - } - TagOpenElement symbolFontOpen("style:font-decl"); - symbolFontOpen.addAttribute("style:name", "StarSymbol"); - symbolFontOpen.addAttribute("fo:font-family", "StarSymbol"); - symbolFontOpen.addAttribute("style:font-charset", "x-symbol"); - symbolFontOpen.write(mpHandler); - mpHandler->endElement("style:font-decl"); - - mpHandler->endElement("office:font-decls"); - - - WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Writing out the styles..\n")); - - // write default styles - _writeDefaultStyles(mpHandler); - - mpHandler->startElement("office:automatic-styles", xBlankAttrList); - - for (std::map<WPXString, ParagraphStyle *, ltstr>::iterator iterTextStyle = mTextStyleHash.begin(); - iterTextStyle != mTextStyleHash.end(); iterTextStyle++) - { - // writing out the paragraph styles - if (strcmp((iterTextStyle->second)->getName().cstr(), "Standard")) - { - // don't write standard paragraph "no styles" style - (iterTextStyle->second)->write(pHandler); - } - } - - // span styles.. - for (std::map<WPXString, SpanStyle *, ltstr>::iterator iterSpanStyle = mSpanStyleHash.begin(); - iterSpanStyle != mSpanStyleHash.end(); iterSpanStyle++) - { - (iterSpanStyle->second)->write(pHandler); - } - - // writing out the sections styles - for (std::vector<SectionStyle *>::iterator iterSectionStyles = mSectionStyles.begin(); iterSectionStyles != mSectionStyles.end(); iterSectionStyles++) { - (*iterSectionStyles)->write(pHandler); - } - - // writing out the lists styles - for (std::vector<ListStyle *>::iterator iterListStyles = mListStyles.begin(); iterListStyles != mListStyles.end(); iterListStyles++) { - (*iterListStyles)->write(pHandler); - } - - // writing out the table styles - for (std::vector<TableStyle *>::iterator iterTableStyles = mTableStyles.begin(); iterTableStyles != mTableStyles.end(); iterTableStyles++) { - (*iterTableStyles)->write(pHandler); - } - - // writing out the page masters - _writePageMasters(pHandler); - - - pHandler->endElement("office:automatic-styles"); - - _writeMasterPages(pHandler); - - WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Writing out the document..\n")); - // writing out the document - pHandler->startElement("office:body", xBlankAttrList); - - for (std::vector<DocumentElement *>::iterator iterBodyElements = mBodyElements.begin(); iterBodyElements != mBodyElements.end(); iterBodyElements++) { - (*iterBodyElements)->write(pHandler); - } - WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Finished writing all doc els..\n")); - - pHandler->endElement("office:body"); - pHandler->endElement("office:document-content"); - - pHandler->endDocument(); - - return true; -} - - -WPXString propListToStyleKey(const WPXPropertyList & xPropList) -{ - WPXString sKey; - WPXPropertyList::Iter i(xPropList); - for (i.rewind(); i.next(); ) - { - WPXString sProp; - sProp.sprintf("[%s:%s]", i.key(), i()->getStr().cstr()); - sKey.append(sProp); - } - - return sKey; -} - -WPXString getParagraphStyleKey(const WPXPropertyList & xPropList, const WPXPropertyListVector & xTabStops) -{ - WPXString sKey = propListToStyleKey(xPropList); - - WPXString sTabStops; - sTabStops.sprintf("[num-tab-stops:%i]", xTabStops.count()); - WPXPropertyListVector::Iter i(xTabStops); - for (i.rewind(); i.next();) - { - sTabStops.append(propListToStyleKey(i())); - } - sKey.append(sTabStops); - - return sKey; -} - -// _allocateFontName: add a (potentially mapped) font style to the hash if it's not already there, do nothing otherwise -void DocumentCollector::_allocateFontName(const WPXString & sFontName) -{ - if (mFontHash.find(sFontName) == mFontHash.end()) - { - FontStyle *pFontStyle = new FontStyle(sFontName.cstr(), sFontName.cstr()); - mFontHash[sFontName] = pFontStyle; - } -} - -void DocumentCollector::openPageSpan(const WPXPropertyList &propList) -{ - PageSpan *pPageSpan = new PageSpan(propList); - mPageSpans.push_back(pPageSpan); - mpCurrentPageSpan = pPageSpan; -} - -void DocumentCollector::openHeader(const WPXPropertyList &propList) -{ - std::vector<DocumentElement *> * pHeaderFooterContentElements = new std::vector<DocumentElement *>; - - if (propList["libwpd:occurence"]->getStr() == "even") - mpCurrentPageSpan->setHeaderLeftContent(pHeaderFooterContentElements); - else - mpCurrentPageSpan->setHeaderContent(pHeaderFooterContentElements); - - mpCurrentContentElements = pHeaderFooterContentElements; -} - -void DocumentCollector::closeHeader() -{ - mpCurrentContentElements = &mBodyElements; -} - -void DocumentCollector::openFooter(const WPXPropertyList &propList) -{ - std::vector<DocumentElement *> * pHeaderFooterContentElements = new std::vector<DocumentElement *>; - - if (propList["libwpd:occurence"]->getStr() == "even") - mpCurrentPageSpan->setFooterLeftContent(pHeaderFooterContentElements); - else - mpCurrentPageSpan->setFooterContent(pHeaderFooterContentElements); - - mpCurrentContentElements = pHeaderFooterContentElements; -} - -void DocumentCollector::closeFooter() -{ - mpCurrentContentElements = &mBodyElements; -} - -void DocumentCollector::openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns) -{ - int iNumColumns = columns.count(); - float fSectionMarginLeft = 0.0f; - float fSectionMarginRight = 0.0f; - if (propList["fo:margin-left"]) - fSectionMarginLeft = propList["fo:margin-left"]->getFloat(); - if (propList["fo:margin-right"]) - fSectionMarginRight = propList["fo:margin-right"]->getFloat(); - - if (iNumColumns > 1 || fSectionMarginLeft != 0 || fSectionMarginRight != 0) - { - mfSectionSpaceAfter = propList["fo:margin-bottom"]->getFloat(); - WPXString sSectionName; - sSectionName.sprintf("Section%i", mSectionStyles.size()); - - SectionStyle *pSectionStyle = new SectionStyle(propList, columns, sSectionName.cstr()); - mSectionStyles.push_back(pSectionStyle); - - TagOpenElement *pSectionOpenElement = new TagOpenElement("text:section"); - pSectionOpenElement->addAttribute("text:style-name", pSectionStyle->getName()); - pSectionOpenElement->addAttribute("text:name", pSectionStyle->getName()); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pSectionOpenElement)); - } - else - mWriterDocumentState.mbInFakeSection = true; -} - -void DocumentCollector::closeSection() -{ - if (!mWriterDocumentState.mbInFakeSection) - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:section"))); - else - mWriterDocumentState.mbInFakeSection = false; - - // open as many paragraphs as needed to simulate section space after - // WLACH_REFACTORING: disable this for now.. - #if 0 - for (float f=0.0f; f<mfSectionSpaceAfter; f+=1.0f) { - vector<WPXTabStop> dummyTabStops; - openParagraph(WPX_PARAGRAPH_JUSTIFICATION_LEFT, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, dummyTabStops, false, false); - closeParagraph(); - } - #endif - mfSectionSpaceAfter = 0.0f; -} - -void DocumentCollector::openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops) -{ - // FIXMENOW: What happens if we open a footnote inside a table? do we then inherit the footnote's style - // from "Table Contents" - - WPXPropertyList *pPersistPropList = new WPXPropertyList(propList); - ParagraphStyle *pStyle = NULL; - - if (mWriterDocumentState.mbFirstElement && mpCurrentContentElements == &mBodyElements) - { - // we don't have to go through the fuss of determining if the paragraph style is - // unique in this case, because if we are the first document element, then we - // are singular. Neither do we have to determine what our parent style is-- we can't - // be inside a table in this case (the table would be the first document element - //in that case) - pPersistPropList->insert("style:parent-style-name", "Standard"); - WPXString sName; - sName.sprintf("FS"); - - WPXString sParagraphHashKey("P|FS"); - pPersistPropList->insert("style:master-page-name", "Page Style 1"); - pStyle = new ParagraphStyle(pPersistPropList, tabStops, sName); - mTextStyleHash[sParagraphHashKey] = pStyle; - mWriterDocumentState.mbFirstElement = false; - } - else - { - if (mWriterDocumentState.mbTableCellOpened) - { - if (mWriterDocumentState.mbHeaderRow) - pPersistPropList->insert("style:parent-style-name", "Table Heading"); - else - pPersistPropList->insert("style:parent-style-name", "Table Contents"); - } - else - pPersistPropList->insert("style:parent-style-name", "Standard"); - - WPXString sKey = getParagraphStyleKey(*pPersistPropList, tabStops); - - if (mTextStyleHash.find(sKey) == mTextStyleHash.end()) { - WPXString sName; - sName.sprintf("S%i", mTextStyleHash.size()); - - pStyle = new ParagraphStyle(pPersistPropList, tabStops, sName); - - mTextStyleHash[sKey] = pStyle; - } - else - { - pStyle = mTextStyleHash[sKey]; - delete pPersistPropList; - } - } - // create a document element corresponding to the paragraph, and append it to our list of document elements - TagOpenElement *pParagraphOpenElement = new TagOpenElement("text:p"); - pParagraphOpenElement->addAttribute("text:style-name", pStyle->getName()); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pParagraphOpenElement)); -} - -void DocumentCollector::closeParagraph() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:p"))); -} - -void DocumentCollector::openSpan(const WPXPropertyList &propList) -{ - if (propList["style:font-name"]) - _allocateFontName(propList["style:font-name"]->getStr()); - WPXString sSpanHashKey = propListToStyleKey(propList); - WRITER_DEBUG_MSG(("WriterWordPerfect: Span Hash Key: %s\n", sSpanHashKey.cstr())); - - // Get the style - WPXString sName; - if (mSpanStyleHash.find(sSpanHashKey) == mSpanStyleHash.end()) - { - // allocate a new paragraph style - sName.sprintf("Span%i", mSpanStyleHash.size()); - SpanStyle *pStyle = new SpanStyle(sName.cstr(), propList); - - mSpanStyleHash[sSpanHashKey] = pStyle; - } - else - { - sName.sprintf("%s", mSpanStyleHash.find(sSpanHashKey)->second->getName().cstr()); - } - - // create a document element corresponding to the paragraph, and append it to our list of document elements - TagOpenElement *pSpanOpenElement = new TagOpenElement("text:span"); - pSpanOpenElement->addAttribute("text:style-name", sName.cstr()); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pSpanOpenElement)); -} - -void DocumentCollector::closeSpan() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:span"))); -} - -void DocumentCollector::defineOrderedListLevel(const WPXPropertyList &propList) -{ - int id = 0; - if (propList["libwpd:id"]) - id = propList["libwpd:id"]->getInt(); - - OrderedListStyle *pOrderedListStyle = NULL; - if (mpCurrentListStyle && mpCurrentListStyle->getListID() == id) - pOrderedListStyle = static_cast<OrderedListStyle *>(mpCurrentListStyle); // FIXME: using a dynamic cast here causes oo to crash?! - - // this rather appalling conditional makes sure we only start a new list (rather than continue an old - // one) if: (1) we have no prior list OR (2) the prior list is actually definitively different - // from the list that is just being defined (listIDs differ) OR (3) we can tell that the user actually - // is starting a new list at level 1 (and only level 1) - if (pOrderedListStyle == NULL || pOrderedListStyle->getListID() != id || - (propList["libwpd:level"] && propList["libwpd:level"]->getInt()==1 && - (propList["text:start-value"] && (unsigned int)(propList["text:start-value"]->getInt()) != (miLastListNumber+1)))) - { - WRITER_DEBUG_MSG(("Attempting to create a new ordered list style (listid: %i)\n", id)); - WPXString sName; - sName.sprintf("OL%i", miNumListStyles); - miNumListStyles++; - pOrderedListStyle = new OrderedListStyle(sName.cstr(), propList["libwpd:id"]->getInt()); - mListStyles.push_back(static_cast<ListStyle *>(pOrderedListStyle)); - mpCurrentListStyle = static_cast<ListStyle *>(pOrderedListStyle); - mbListContinueNumbering = false; - miLastListNumber = 0; - } - else - mbListContinueNumbering = true; - - // Iterate through ALL list styles with the same WordPerfect list id and define a level if it is not already defined - // This solves certain problems with lists that start and finish without reaching certain levels and then begin again - // and reach those levels. See gradguide0405_PC.wpd in the regression suite - for (std::vector<ListStyle *>::iterator iterOrderedListStyles = mListStyles.begin(); iterOrderedListStyles != mListStyles.end(); iterOrderedListStyles++) - { - if ((* iterOrderedListStyles)->getListID() == propList["libwpd:id"]->getInt()) - (* iterOrderedListStyles)->updateListLevel((propList["libwpd:level"]->getInt() - 1), propList); - } -} - -void DocumentCollector::defineUnorderedListLevel(const WPXPropertyList &propList) -{ - int id = 0; - if (propList["libwpd:id"]) - id = propList["libwpd:id"]->getInt(); - - UnorderedListStyle *pUnorderedListStyle = NULL; - if (mpCurrentListStyle && mpCurrentListStyle->getListID() == id) - pUnorderedListStyle = static_cast<UnorderedListStyle *>(mpCurrentListStyle); // FIXME: using a dynamic cast here causes oo to crash?! - - if (pUnorderedListStyle == NULL) { - WRITER_DEBUG_MSG(("Attempting to create a new unordered list style (listid: %i)\n", id)); - WPXString sName; - sName.sprintf("UL%i", miNumListStyles); - pUnorderedListStyle = new UnorderedListStyle(sName.cstr(), id); - mListStyles.push_back(static_cast<ListStyle *>(pUnorderedListStyle)); - mpCurrentListStyle = static_cast<ListStyle *>(pUnorderedListStyle); - } - - // See comment in DocumentCollector::defineOrderedListLevel - for (std::vector<ListStyle *>::iterator iterUnorderedListStyles = mListStyles.begin(); iterUnorderedListStyles != mListStyles.end(); iterUnorderedListStyles++) - { - if ((* iterUnorderedListStyles)->getListID() == propList["libwpd:id"]->getInt()) - (* iterUnorderedListStyles)->updateListLevel((propList["libwpd:level"]->getInt() - 1), propList); - } -} - -void DocumentCollector::openOrderedListLevel(const WPXPropertyList & /* propList */) -{ - miCurrentListLevel++; - TagOpenElement *pListLevelOpenElement = new TagOpenElement("text:ordered-list"); - _openListLevel(pListLevelOpenElement); - - if (mbListContinueNumbering) { - pListLevelOpenElement->addAttribute("text:continue-numbering", "true"); - } - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pListLevelOpenElement)); -} - -void DocumentCollector::openUnorderedListLevel(const WPXPropertyList & /* propList */) -{ - miCurrentListLevel++; - TagOpenElement *pListLevelOpenElement = new TagOpenElement("text:unordered-list"); - _openListLevel(pListLevelOpenElement); - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pListLevelOpenElement)); -} - -void DocumentCollector::_openListLevel(TagOpenElement *pListLevelOpenElement) -{ - if (!mbListElementOpened && miCurrentListLevel > 1) - { - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:list-item"))); - } - else if (mbListElementParagraphOpened) - { - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:p"))); - mbListElementParagraphOpened = false; - } - - if (miCurrentListLevel==1) { - pListLevelOpenElement->addAttribute("text:style-name", mpCurrentListStyle->getName()); - } - - mbListElementOpened = false; -} - -void DocumentCollector::closeOrderedListLevel() -{ - _closeListLevel("ordered-list"); -} - -void DocumentCollector::closeUnorderedListLevel() -{ - _closeListLevel("unordered-list"); -} - -void DocumentCollector::_closeListLevel(const char *szListType) -{ - if (mbListElementOpened) - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:list-item"))); - - miCurrentListLevel--; - - WPXString sCloseElement; - sCloseElement.sprintf("text:%s", szListType); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement(sCloseElement.cstr()))); - - if (miCurrentListLevel > 0) - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:list-item"))); - mbListElementOpened = false; -} - -void DocumentCollector::openListElement(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops) -{ - miLastListLevel = miCurrentListLevel; - if (miCurrentListLevel == 1) - miLastListNumber++; - - if (mbListElementOpened) - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:list-item"))); - - ParagraphStyle *pStyle = NULL; - - WPXPropertyList *pPersistPropList = new WPXPropertyList(propList); - pPersistPropList->insert("style:list-style-name", mpCurrentListStyle->getName()); - pPersistPropList->insert("style:parent-style-name", "Standard"); - - WPXString sKey = getParagraphStyleKey(*pPersistPropList, tabStops); - - if (mTextStyleHash.find(sKey) == mTextStyleHash.end()) - { - WPXString sName; - sName.sprintf("S%i", mTextStyleHash.size()); - - pStyle = new ParagraphStyle(pPersistPropList, tabStops, sName); - - mTextStyleHash[sKey] = pStyle; - } - else - { - pStyle = mTextStyleHash[sKey]; - delete pPersistPropList; - } - - TagOpenElement *pOpenListElement = new TagOpenElement("text:list-item"); - TagOpenElement *pOpenListElementParagraph = new TagOpenElement("text:p"); - - pOpenListElementParagraph->addAttribute("text:style-name", pStyle->getName()); - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenListElement)); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenListElementParagraph)); - - mbListElementOpened = true; - mbListElementParagraphOpened = true; - mbListContinueNumbering = false; -} - -void DocumentCollector::closeListElement() -{ - // this code is kind of tricky, because we don't actually close the list element (because this list element - // could contain another list level in OOo's implementation of lists). that is done in the closeListLevel - // code (or when we open another list element) - - if (mbListElementParagraphOpened) - { - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:p"))); - mbListElementParagraphOpened = false; - } -} - -void DocumentCollector::openFootnote(const WPXPropertyList &propList) -{ - TagOpenElement *pOpenFootNote = new TagOpenElement("text:footnote"); - if (propList["libwpd:number"]) - { - WPXString tmpString("ftn"); - tmpString.append(propList["libwpd:number"]->getStr()); - pOpenFootNote->addAttribute("text:id", tmpString); - } - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenFootNote)); - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:footnote-citation"))); - if (propList["libwpd:number"]) - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new CharDataElement(propList["libwpd:number"]->getStr().cstr()))); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:footnote-citation"))); - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:footnote-body"))); - - mWriterDocumentState.mbInNote = true; -} - -void DocumentCollector::closeFootnote() -{ - mWriterDocumentState.mbInNote = false; - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:footnote-body"))); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:footnote"))); -} - -void DocumentCollector::openEndnote(const WPXPropertyList &propList) -{ - TagOpenElement *pOpenEndNote = new TagOpenElement("text:endnote"); - if (propList["libwpd:number"]) - { - WPXString tmpString("edn"); - tmpString.append(propList["libwpd:number"]->getStr()); - pOpenEndNote->addAttribute("text:id", tmpString); - } - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenEndNote)); - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:endnote-citation"))); - if (propList["libwpd:number"]) - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new CharDataElement(propList["libwpd:number"]->getStr().cstr()))); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:endnote-citation"))); - - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:endnote-body"))); - -} -void DocumentCollector::closeEndnote() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:endnote-body"))); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:endnote"))); -} - -void DocumentCollector::openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns) -{ - WPXString sTableName; - sTableName.sprintf("Table%i", mTableStyles.size()); - - // FIXME: we base the table style off of the page's margin left, ignoring (potential) wordperfect margin - // state which is transmitted inside the page. could this lead to unacceptable behaviour? - // WLACH_REFACTORING: characterize this behaviour, probably should nip it at the bud within libwpd - TableStyle *pTableStyle = new TableStyle(propList, columns, sTableName.cstr()); - - if (mWriterDocumentState.mbFirstElement && mpCurrentContentElements == &mBodyElements) - { - WPXString sMasterPageName("Page Style 1"); - pTableStyle->setMasterPageName(sMasterPageName); - mWriterDocumentState.mbFirstElement = false; - } - - mTableStyles.push_back(pTableStyle); - - mpCurrentTableStyle = pTableStyle; - - TagOpenElement *pTableOpenElement = new TagOpenElement("table:table"); - - pTableOpenElement->addAttribute("table:name", sTableName.cstr()); - pTableOpenElement->addAttribute("table:style-name", sTableName.cstr()); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pTableOpenElement)); - - for (int i=0; i<pTableStyle->getNumColumns(); i++) - { - TagOpenElement *pTableColumnOpenElement = new TagOpenElement("table:table-column"); - WPXString sColumnStyleName; - sColumnStyleName.sprintf("%s.Column%i", sTableName.cstr(), (i+1)); - pTableColumnOpenElement->addAttribute("table:style-name", sColumnStyleName.cstr()); - mpCurrentContentElements->push_back(pTableColumnOpenElement); - - TagCloseElement *pTableColumnCloseElement = new TagCloseElement("table:table-column"); - mpCurrentContentElements->push_back(pTableColumnCloseElement); - } -} - -void DocumentCollector::openTableRow(const WPXPropertyList &propList) -{ - if (propList["libwpd:is-header-row"] && (propList["libwpd:is-header-row"]->getInt())) - { - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("table:table-header-rows"))); - mWriterDocumentState.mbHeaderRow = true; - } - - WPXString sTableRowStyleName; - sTableRowStyleName.sprintf("%s.Row%i", mpCurrentTableStyle->getName().cstr(), mpCurrentTableStyle->getNumTableRowStyles()); - TableRowStyle *pTableRowStyle = new TableRowStyle(propList, sTableRowStyleName.cstr()); - mpCurrentTableStyle->addTableRowStyle(pTableRowStyle); - - TagOpenElement *pTableRowOpenElement = new TagOpenElement("table:table-row"); - pTableRowOpenElement->addAttribute("table:style-name", sTableRowStyleName); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pTableRowOpenElement)); -} - -void DocumentCollector::closeTableRow() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table-row"))); - if (mWriterDocumentState.mbHeaderRow) - { - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table-header-rows"))); - mWriterDocumentState.mbHeaderRow = false; - } -} - -void DocumentCollector::openTableCell(const WPXPropertyList &propList) -{ - WPXString sTableCellStyleName; - sTableCellStyleName.sprintf( "%s.Cell%i", mpCurrentTableStyle->getName().cstr(), mpCurrentTableStyle->getNumTableCellStyles()); - TableCellStyle *pTableCellStyle = new TableCellStyle(propList, sTableCellStyleName.cstr()); - mpCurrentTableStyle->addTableCellStyle(pTableCellStyle); - - TagOpenElement *pTableCellOpenElement = new TagOpenElement("table:table-cell"); - pTableCellOpenElement->addAttribute("table:style-name", sTableCellStyleName); - if (propList["table:number-columns-spanned"]) - pTableCellOpenElement->addAttribute("table:number-columns-spanned", - propList["table:number-columns-spanned"]->getStr().cstr()); - if (propList["table:number-rows-spanned"]) - pTableCellOpenElement->addAttribute("table:number-rows-spanned", - propList["table:number-rows-spanned"]->getStr().cstr()); - pTableCellOpenElement->addAttribute("table:value-type", "string"); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pTableCellOpenElement)); - - mWriterDocumentState.mbTableCellOpened = true; -} - -void DocumentCollector::closeTableCell() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table-cell"))); - mWriterDocumentState.mbTableCellOpened = false; -} - -void DocumentCollector::insertCoveredTableCell(const WPXPropertyList & /* propList */) -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("table:covered-table-cell"))); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:covered-table-cell"))); -} - -void DocumentCollector::closeTable() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table"))); -} - -void DocumentCollector::insertTab() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:tab-stop"))); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:tab-stop"))); -} - -void DocumentCollector::insertLineBreak() -{ - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:line-break"))); - mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:line-break"))); -} - -void DocumentCollector::insertText(const WPXString &text) -{ - DocumentElement *pText = new TextElement(text); - mpCurrentContentElements->push_back(pText); -} diff --git a/writerperfect/source/filter/DocumentCollector.hxx b/writerperfect/source/filter/DocumentCollector.hxx deleted file mode 100644 index 18ebcdb..0000000 --- a/writerperfect/source/filter/DocumentCollector.hxx +++ /dev/null @@ -1,201 +0,0 @@ -/* DocumentCollector: Collects sections and runs of text from a - * file (and styles to go along with them) and writes them - * to a target file - * - * Copyright (C) 2002-2004 William Lachance (william.lacha...@sympatico.ca) - * Copyright (C) 2003-2004 Net Integration Technologies (http://www.net-itech.com) - * Copyright (C) 2004 Fridrich Strba (fridrich.st...@bluewin.ch) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ - -#ifndef _DOCUMENTCOLLECTOR_HXX -#define _DOCUMENTCOLLECTOR_HXX -#include "SectionStyle.hxx" - -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif -#include <vector> -#include <map> -#include <stack> -#include <string.h> - -class DocumentElement; -class DocumentHandler; -class TagOpenElement; -class FontStyle; -class ListStyle; - -class ParagraphStyle; -class SpanStyle; -class TableStyle; -class PageSpan; - -// the state we use for writing the final document -typedef struct _WriterDocumentState WriterDocumentState; -struct _WriterDocumentState -{ - _WriterDocumentState(); - - bool mbFirstElement; - bool mbInFakeSection; - bool mbListElementOpenedAtCurrentLevel; - bool mbTableCellOpened; - bool mbHeaderRow; - bool mbInNote; -}; - -enum WriterListType { unordered, ordered }; - -struct ltstr -{ - bool operator()(const WPXString & s1, const WPXString & s2) const - { - return strcmp(s1.cstr(), s2.cstr()) < 0; - } -}; - -class DocumentCollector : public WPXHLListenerImpl -{ -public: - DocumentCollector(WPXInputStream *pInput, DocumentHandler *pHandler); - virtual ~DocumentCollector(); - bool filter(); - - virtual void setDocumentMetaData(const WPXPropertyList & /* propList */) {} - virtual void startDocument() {} - virtual void endDocument() {} - - virtual void openPageSpan(const WPXPropertyList &propList); - virtual void closePageSpan() {} - - virtual void openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns); - virtual void closeSection(); - - virtual void openHeader(const WPXPropertyList &propList); - virtual void closeHeader(); - virtual void openFooter(const WPXPropertyList &propList); - virtual void closeFooter(); - - virtual void openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops); - virtual void closeParagraph(); - - virtual void openSpan(const WPXPropertyList &propList); - virtual void closeSpan(); - - - virtual void insertTab(); - virtual void insertText(const WPXString &text); - virtual void insertLineBreak(); - - virtual void defineOrderedListLevel(const WPXPropertyList &propList); - virtual void defineUnorderedListLevel(const WPXPropertyList &propList); - virtual void openOrderedListLevel(const WPXPropertyList &propList); - virtual void openUnorderedListLevel(const WPXPropertyList &propList); - virtual void closeOrderedListLevel(); - virtual void closeUnorderedListLevel(); - virtual void openListElement(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops); - virtual void closeListElement(); - - virtual void openFootnote(const WPXPropertyList &propList); - virtual void closeFootnote(); - virtual void openEndnote(const WPXPropertyList &propList); - virtual void closeEndnote(); - - virtual void openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns); - virtual void openTableRow(const WPXPropertyList &propList); - virtual void closeTableRow(); - virtual void openTableCell(const WPXPropertyList &propList); - virtual void closeTableCell(); - virtual void insertCoveredTableCell(const WPXPropertyList &propList); - virtual void closeTable(); - virtual bool parseSourceDocument(WPXInputStream &input) = 0; - -protected: - void _resetDocumentState(); - bool _writeTargetDocument(DocumentHandler *pHandler); - void _writeDefaultStyles(DocumentHandler *pHandler); - void _writeMasterPages(DocumentHandler *pHandler); - void _writePageMasters(DocumentHandler *pHandler); - void _allocateFontName(const WPXString &); - -private: - void _openListLevel(TagOpenElement *pListLevelOpenElement); - void _closeListLevel(const char *szListType); - - WPXInputStream *mpInput; - DocumentHandler *mpHandler; - bool mbUsed; // whether or not it has been before (you can only use me once!) - - WriterDocumentState mWriterDocumentState; - - // paragraph styles - std::map<WPXString, ParagraphStyle *, ltstr> mTextStyleHash; - - // span styles - std::map<WPXString, SpanStyle *, ltstr> mSpanStyleHash; - - // font styles - std::map<WPXString, FontStyle *, ltstr> mFontHash; - - // section styles - std::vector<SectionStyle *> mSectionStyles; - float mfSectionSpaceAfter; - - // table styles - std::vector<TableStyle *> mTableStyles; - - // list styles - unsigned int miNumListStyles; - - // style elements - std::vector<DocumentElement *> mStylesElements; - // content elements - std::vector<DocumentElement *> mBodyElements; - // the current set of elements that we're writing to - std::vector<DocumentElement *> * mpCurrentContentElements; - - // page state - std::vector<PageSpan *> mPageSpans; - PageSpan *mpCurrentPageSpan; - int miNumPageStyles; - - // list styles / state - ListStyle *mpCurrentListStyle; - unsigned int miCurrentListLevel; - unsigned int miLastListLevel; - unsigned int miLastListNumber; - std::vector<ListStyle *> mListStyles; - bool mbListContinueNumbering; - bool mbListElementOpened; - bool mbListElementParagraphOpened; - - // table state - TableStyle *mpCurrentTableStyle; -}; - -#endif diff --git a/writerperfect/source/filter/DocumentElement.cxx b/writerperfect/source/filter/DocumentElement.cxx deleted file mode 100644 index 38caf57..0000000 --- a/writerperfect/source/filter/DocumentElement.cxx +++ /dev/null @@ -1,102 +0,0 @@ -/* DocumentElement: The items we are collecting to be put into the Writer - * document: paragraph and spans of text, as well as section breaks. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ - -#include "DocumentElement.hxx" -#include "FilterInternal.hxx" -#include <string.h> - -#define ASCII_SPACE 0x0020 - -void TagElement::print() const -{ - WRITER_DEBUG_MSG(("%s\n", msTagName.cstr())); -} - -void TagOpenElement::write(DocumentHandler *pHandler) const -{ - pHandler->startElement(getTagName().cstr(), maAttrList); -} - -void TagOpenElement::print() const -{ - TagElement::print(); -} - -void TagOpenElement::addAttribute(const char *szAttributeName, const WPXString &sAttributeValue) -{ - maAttrList.insert(szAttributeName, sAttributeValue); -} - -void TagCloseElement::write(DocumentHandler *pHandler) const -{ - WRITER_DEBUG_MSG(("TagCloseElement: write (%s)\n", getTagName().cstr())); - - pHandler->endElement(getTagName().cstr()); -} - -void CharDataElement::write(DocumentHandler *pHandler) const -{ - WRITER_DEBUG_MSG(("TextElement: write\n")); - pHandler->characters(msData); -} - -TextElement::TextElement(const WPXString & sTextBuf) : - msTextBuf(sTextBuf, false) -{ -} - -// write: writes a text run, appropriately converting spaces to <text:s> -// elements -void TextElement::write(DocumentHandler *pHandler) const -{ - WPXPropertyList xBlankAttrList; - - WPXString sTemp; - - int iNumConsecutiveSpaces = 0; - WPXString::Iter i(msTextBuf); - for (i.rewind(); i.next();) - { - if (*(i()) == ASCII_SPACE) - iNumConsecutiveSpaces++; - else - iNumConsecutiveSpaces = 0; - - if (iNumConsecutiveSpaces > 1) { - if (sTemp.len() > 0) { - pHandler->characters(sTemp); - sTemp.clear(); - } - pHandler->startElement("text:s", xBlankAttrList); - pHandler->endElement("text:s"); - } - else { - sTemp.append(i()); - } - } - pHandler->characters(sTemp); -} diff --git a/writerperfect/source/filter/DocumentElement.hxx b/writerperfect/source/filter/DocumentElement.hxx deleted file mode 100644 index bcfabd8..0000000 --- a/writerperfect/source/filter/DocumentElement.hxx +++ /dev/null @@ -1,99 +0,0 @@ -/* DocumentElement: The items we are collecting to be put into the Writer - * document: paragraph and spans of text, as well as section breaks. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ - -#ifndef _DOCUMENTELEMENT_H -#define _DOCUMENTELEMENT_H -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#include <libwpd/WPXProperty.h> -#include <libwpd/WPXString.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif -#include <vector> - -#include "DocumentHandler.hxx" - -class DocumentElement -{ -public: - virtual ~DocumentElement() {} - virtual void write(DocumentHandler *pHandler) const = 0; - virtual void print() const {} -}; - -class TagElement : public DocumentElement -{ -public: - TagElement(const char *szTagName) : msTagName(szTagName) {} - const WPXString & getTagName() const { return msTagName; } - virtual void print() const; -private: - WPXString msTagName; -}; - -class TagOpenElement : public TagElement -{ -public: - TagOpenElement(const char *szTagName) : TagElement(szTagName) {} - ~TagOpenElement() {} - void addAttribute(const char *szAttributeName, const WPXString &sAttributeValue); - virtual void write(DocumentHandler *pHandler) const; - virtual void print () const; -private: - WPXPropertyList maAttrList; -}; - -class TagCloseElement : public TagElement -{ -public: - TagCloseElement(const char *szTagName) : TagElement(szTagName) {} - virtual void write(DocumentHandler *pHandler) const; -}; - -class CharDataElement : public DocumentElement -{ -public: - CharDataElement(const char *sData) : DocumentElement(), msData(sData) {} - virtual void write(DocumentHandler *pHandler) const; -private: - WPXString msData; -}; - -class TextElement : public DocumentElement -{ -public: - TextElement(const WPXString & sTextBuf); - virtual void write(DocumentHandler *pHandler) const; - -private: - WPXString msTextBuf; -}; - -#endif diff --git a/writerperfect/source/filter/DocumentHandler.cxx b/writerperfect/source/filter/DocumentHandler.cxx deleted file mode 100644 index 5877b8a..0000000 --- a/writerperfect/source/filter/DocumentHandler.cxx +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2004 William Lachance (william.lacha...@sympatico.ca) - * Copyright (C) 2004 Net Integration Technologies (http://www.net-itech.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ -#include "DocumentHandler.hxx" -#include "FilterInternal.hxx" - -#include <string.h> -#include <com/sun/star/xml/sax/XDocumentHandler.hpp> -#include <com/sun/star/xml/sax/XAttributeList.hpp> - -#ifndef _ATTRLIST_HPP_ -#include <xmloff/attrlist.hxx> -#endif - -using namespace ::rtl; -using rtl::OUString; - -using com::sun::star::xml::sax::XAttributeList; - -DocumentHandler::DocumentHandler(Reference < XDocumentHandler > &xHandler) : - mxHandler(xHandler) -{ -} - -void DocumentHandler::startDocument() -{ - WRITER_DEBUG_MSG(("DocumentHandler::startDocument")); - mxHandler->startDocument(); -} - -void DocumentHandler::endDocument() -{ - WRITER_DEBUG_MSG(("DocumentHandler::endDocument")); - mxHandler->endDocument(); -} - -void DocumentHandler::startElement(const char *psName, const WPXPropertyList &xPropList) -{ - WRITER_DEBUG_MSG(("DocumentHandler::startElement")); - SvXMLAttributeList *pAttrList = new SvXMLAttributeList(); - Reference < XAttributeList > xAttrList(pAttrList); - WPXPropertyList::Iter i(xPropList); - for (i.rewind(); i.next(); ) - { - // filter out libwpd elements - if (strlen(i.key()) > 6 && strncmp(i.key(), "libwpd", 6) != 0) - pAttrList->AddAttribute(OUString::createFromAscii(i.key()), - OUString::createFromAscii(i()->getStr().cstr())); - } - - mxHandler->startElement(OUString::createFromAscii(psName), xAttrList); -} - -void DocumentHandler::endElement(const char *psName) -{ - WRITER_DEBUG_MSG(("DocumentHandler::endElement")); - mxHandler->endElement(OUString::createFromAscii(psName)); -} - -void DocumentHandler::characters(const WPXString &sCharacters) -{ - WRITER_DEBUG_MSG(("DocumentHandler::characters")); - OUString sCharU16(sCharacters.cstr(), strlen(sCharacters.cstr()), RTL_TEXTENCODING_UTF8); - mxHandler->characters(sCharU16); -} diff --git a/writerperfect/source/filter/DocumentHandler.hxx b/writerperfect/source/filter/DocumentHandler.hxx deleted file mode 100644 index 86c2d21..0000000 --- a/writerperfect/source/filter/DocumentHandler.hxx +++ /dev/null @@ -1,51 +0,0 @@ -/************************************************************** - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - *************************************************************/ -#ifndef _OODOCUMENTHANDLER_HXX_ -#define _OODOCUMENTHANDLER_HXX_ - -#include <com/sun/star/xml/sax/XDocumentHandler.hpp> - -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif - -using com::sun::star::uno::Reference; -using com::sun::star::xml::sax::XDocumentHandler; - -class DocumentHandler -{ -public: - DocumentHandler(Reference < XDocumentHandler > &xHandler); - void startDocument(); - void endDocument(); - void startElement(const char *psName, const WPXPropertyList &xPropList); - void endElement(const char *psName); - void characters(const WPXString &sCharacters); - -private: - Reference < XDocumentHandler > mxHandler; -}; - -#endif // _OODOCUMENTHANDLER_HXX_ diff --git a/writerperfect/source/filter/FilterInternal.hxx b/writerperfect/source/filter/FilterInternal.hxx deleted file mode 100644 index adc993c..0000000 --- a/writerperfect/source/filter/FilterInternal.hxx +++ /dev/null @@ -1,31 +0,0 @@ -/* FilterInternal: Debugging information - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ -#include <stdio.h> -#ifdef DEBUG -#define WRITER_DEBUG_MSG(M) printf M -#else -#define WRITER_DEBUG_MSG(M) -#endif - -const float fDefaultSideMargin = 1.0f; // inches -const float fDefaultPageWidth = 8.5f; // inches (OOo required default: we will handle this later) -const float fDefaultPageHeight = 11.0f; // inches diff --git a/writerperfect/source/filter/FontStyle.cxx b/writerperfect/source/filter/FontStyle.cxx deleted file mode 100644 index de7cc47..0000000 --- a/writerperfect/source/filter/FontStyle.cxx +++ /dev/null @@ -1,50 +0,0 @@ -/* FontStyle: Stores (and writes) font-based information that is needed at - * the head of an OO document. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#include "FontStyle.hxx" -#include "WriterProperties.hxx" -#include "DocumentElement.hxx" - -FontStyle::FontStyle(const char *psName, const char *psFontFamily) : Style(psName), - msFontFamily(psFontFamily), - msFontPitch(IMP_DEFAULT_FONT_PITCH) -{ -} - -FontStyle::~FontStyle() -{ -} - -void FontStyle::write(DocumentHandler *pHandler) const -{ - TagOpenElement styleOpen("style:font-decl"); - styleOpen.addAttribute("style:name", getName()); - styleOpen.addAttribute("fo:font-family", msFontFamily); - styleOpen.addAttribute("style:font-pitch", msFontPitch); - styleOpen.write(pHandler); - TagCloseElement styleClose("style:font-decl"); - styleClose.write(pHandler); -} diff --git a/writerperfect/source/filter/FontStyle.hxx b/writerperfect/source/filter/FontStyle.hxx deleted file mode 100644 index be44cf1..0000000 --- a/writerperfect/source/filter/FontStyle.hxx +++ /dev/null @@ -1,52 +0,0 @@ -/* FontStyle: Stores (and writes) font-based information that is needed at - * the head of an OO document. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#ifndef _FONTSTYLE_H -#define _FONTSTYLE_H -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif - -#include "Style.hxx" -#include "WriterProperties.hxx" - -class FontStyle : public Style -{ -public: - FontStyle(const char *psName, const char *psFontFamily); - ~FontStyle(); - virtual void write(DocumentHandler *pHandler) const; - const WPXString &getFontFamily() const { return msFontFamily; } - -private: - WPXString msFontFamily; - WPXString msFontPitch; -}; -#endif diff --git a/writerperfect/source/filter/ListStyle.cxx b/writerperfect/source/filter/ListStyle.cxx deleted file mode 100644 index b320022..0000000 --- a/writerperfect/source/filter/ListStyle.cxx +++ /dev/null @@ -1,161 +0,0 @@ -/* ListStyle: Stores (and writes) list-based information that is - * needed at the head of an OO document. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#include "FilterInternal.hxx" -#include "ListStyle.hxx" -#include "DocumentElement.hxx" - -OrderedListLevelStyle::OrderedListLevelStyle(const WPXPropertyList &xPropList) : - mPropList(xPropList) -{ -} - -void OrderedListStyle::updateListLevel(const int iLevel, const WPXPropertyList &xPropList) -{ - if (iLevel < 0) - return; - if (!isListLevelDefined(iLevel)) - setListLevel(iLevel, new OrderedListLevelStyle(xPropList)); -} - -void OrderedListLevelStyle::write(DocumentHandler *pHandler, int iLevel) const -{ - WPXString sLevel; - sLevel.sprintf("%i", (iLevel+1)); - - TagOpenElement listLevelStyleOpen("text:list-level-style-number"); - listLevelStyleOpen.addAttribute("text:level", sLevel); - listLevelStyleOpen.addAttribute("text:style-name", "Numbering Symbols"); - if (mPropList["style:num-prefix"]) - listLevelStyleOpen.addAttribute("style:num-prefix", mPropList["style:num-prefix"]->getStr()); - if (mPropList["style:num-suffix"]) - listLevelStyleOpen.addAttribute("style:num-suffix", mPropList["style:num-suffix"]->getStr()); - if (mPropList["style:num-format"]) - listLevelStyleOpen.addAttribute("style:num-format", mPropList["style:num-format"]->getStr()); - if (mPropList["text:start-value"]) - listLevelStyleOpen.addAttribute("text:start-value", mPropList["text:start-value"]->getStr()); - listLevelStyleOpen.write(pHandler); - - TagOpenElement stylePropertiesOpen("style:properties"); - if (mPropList["text:space-before"]) - stylePropertiesOpen.addAttribute("text:space-before", mPropList["text:space-before"]->getStr()); - if (mPropList["text:min-label-width"]) - stylePropertiesOpen.addAttribute("text:min-label-width", mPropList["text:min-label-width"]->getStr()); - if (mPropList["text:min-label-distance"]) - stylePropertiesOpen.addAttribute("text:min-label-distance", mPropList["text:min-label-distance"]->getStr()); - stylePropertiesOpen.write(pHandler); - - pHandler->endElement("style:properties"); - pHandler->endElement("text:list-level-style-number"); -} - -UnorderedListLevelStyle::UnorderedListLevelStyle(const WPXPropertyList &xPropList) - : mPropList(xPropList) -{ -} - -void UnorderedListStyle::updateListLevel(const int iLevel, const WPXPropertyList &xPropList) -{ - if (iLevel < 0) - return; - if (!isListLevelDefined(iLevel)) - setListLevel(iLevel, new UnorderedListLevelStyle(xPropList)); -} - -void UnorderedListLevelStyle::write(DocumentHandler *pHandler, int iLevel) const -{ - WPXString sLevel; - sLevel.sprintf("%i", (iLevel+1)); - TagOpenElement listLevelStyleOpen("text:list-level-style-bullet"); - listLevelStyleOpen.addAttribute("text:level", sLevel); - listLevelStyleOpen.addAttribute("text:style-name", "Bullet Symbols"); - listLevelStyleOpen.addAttribute("style:num-suffice", "."); - if (mPropList["text:bullet-char"]) - listLevelStyleOpen.addAttribute("text:bullet-char", mPropList["text:bullet-char"]->getStr()); - listLevelStyleOpen.write(pHandler); - - TagOpenElement stylePropertiesOpen("style:properties"); - if (mPropList["text:space-before"]) - stylePropertiesOpen.addAttribute("text:space-before", mPropList["text:space-before"]->getStr()); - if (mPropList["text:min-label-width"]) - stylePropertiesOpen.addAttribute("text:min-label-width", mPropList["text:min-label-width"]->getStr()); - if (mPropList["text:min-label-distance"]) - stylePropertiesOpen.addAttribute("text:min-label-distance", mPropList["text:min-label-distance"]->getStr()); - stylePropertiesOpen.addAttribute("style:font-name", "OpenSymbol"); - stylePropertiesOpen.write(pHandler); - - pHandler->endElement("style:properties"); - pHandler->endElement("text:list-level-style-bullet"); -} - -ListStyle::ListStyle(const char *psName, const int iListID) : - Style(psName), - miListID(iListID) -{ - for (int i=0; i<WP6_NUM_LIST_LEVELS; i++) - mppListLevels[i] = NULL; - -} - -ListStyle::~ListStyle() -{ - for (int i=0; i<WP6_NUM_LIST_LEVELS; i++) { - if (mppListLevels[i]) - delete(mppListLevels[i]); - } - -} - -bool ListStyle::isListLevelDefined(int iLevel) const -{ - if (mppListLevels[iLevel] == NULL) - return false; - - return true; -} - -void ListStyle::setListLevel(int iLevel, ListLevelStyle *iListLevelStyle) -{ - // can't uncomment this next line without adding some extra logic. - // figure out which is best: use the initial message, or constantly - // update? - if (mppListLevels[iLevel] == NULL) - mppListLevels[iLevel] = iListLevelStyle; -} - -void ListStyle::write(DocumentHandler *pHandler) const -{ - TagOpenElement listStyleOpenElement("text:list-style"); - listStyleOpenElement.addAttribute("style:name", getName()); - listStyleOpenElement.write(pHandler); - - for (int i=0; i<WP6_NUM_LIST_LEVELS; i++) { - if (mppListLevels[i] != NULL) - mppListLevels[i]->write(pHandler, i); - } - - pHandler->endElement("text:list-style"); -} diff --git a/writerperfect/source/filter/ListStyle.hxx b/writerperfect/source/filter/ListStyle.hxx deleted file mode 100644 index b2ebb07..0000000 --- a/writerperfect/source/filter/ListStyle.hxx +++ /dev/null @@ -1,101 +0,0 @@ -/* ListStyle: Stores (and writes) list-based information that is - * needed at the head of an OO document. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#ifndef _LISTSTYLE_H -#define _LISTSTYLE_H -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif - -#define WP6_NUM_LIST_LEVELS 8 // see WP6FileStructure.h (we shouldn't need to reference this) - -#include "Style.hxx" -#include "WriterProperties.hxx" - -class DocumentElement; - -class ListLevelStyle -{ -public: - virtual ~ListLevelStyle() {}; - virtual void write(DocumentHandler *pHandler, int iLevel) const = 0; -}; - -class OrderedListLevelStyle : public ListLevelStyle -{ -public: - OrderedListLevelStyle(const WPXPropertyList &xPropList); - void write(DocumentHandler *pHandler, int iLevel) const; -private: - WPXPropertyList mPropList; -}; - -class UnorderedListLevelStyle : public ListLevelStyle -{ -public: - UnorderedListLevelStyle(const WPXPropertyList &xPropList); - void write(DocumentHandler *pHandler, int iLevel) const; -private: - WPXPropertyList mPropList; -}; - -class ListStyle : public Style -{ -public: - ListStyle(const char *psName, const int iListID); - virtual ~ListStyle(); - virtual void updateListLevel(const int iLevel, const WPXPropertyList &xPropList) = 0; - virtual void write(DocumentHandler *pHandler) const; - int getListID() const { return miListID; } - bool isListLevelDefined(int iLevel) const; - -protected: - void setListLevel(int iLevel, ListLevelStyle *iListLevelStyle); - -private: - ListLevelStyle *mppListLevels[WP6_NUM_LIST_LEVELS]; - int miNumListLevels; - const int miListID; -}; - -class OrderedListStyle : public ListStyle -{ -public: - OrderedListStyle(const char *psName, const int iListID) : ListStyle(psName, iListID) {} - void updateListLevel(const int iLevel, const WPXPropertyList &xPropList); -}; - -class UnorderedListStyle : public ListStyle -{ -public: - UnorderedListStyle(const char *psName, const int iListID) : ListStyle(psName, iListID) {} - void updateListLevel(const int iLevel, const WPXPropertyList &xPropList); -}; -#endif diff --git a/writerperfect/source/filter/PageSpan.cxx b/writerperfect/source/filter/PageSpan.cxx deleted file mode 100644 index 4ac5797..0000000 --- a/writerperfect/source/filter/PageSpan.cxx +++ /dev/null @@ -1,173 +0,0 @@ -/* SectionStyle: Stores (and writes) section-based information (e.g.: a column - * break needs a new section) that is needed at the head of an OO document and - * is referenced throughout the entire document - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#include "FilterInternal.hxx" -#include "PageSpan.hxx" -#include "DocumentElement.hxx" - -PageSpan::PageSpan(const WPXPropertyList &xPropList) : - mxPropList(xPropList), - mpHeaderContent(NULL), - mpFooterContent(NULL), - mpHeaderLeftContent(NULL), - mpFooterLeftContent(NULL) -{ -} - -PageSpan::~PageSpan() -{ - typedef std::vector<DocumentElement *>::iterator DEVIter; - - if (mpHeaderContent) - { - for (DEVIter iterHeaderContent = mpHeaderContent->begin(); - iterHeaderContent != mpHeaderContent->end(); - iterHeaderContent++) - delete(*iterHeaderContent); - delete mpHeaderContent; - } - - if (mpHeaderLeftContent) - { - for (DEVIter iterHeaderLeftContent = mpHeaderLeftContent->begin(); - iterHeaderLeftContent != mpHeaderLeftContent->end(); - iterHeaderLeftContent++) - delete(*iterHeaderLeftContent); - delete mpHeaderLeftContent; - } - - if (mpFooterContent) - { - for (DEVIter iterFooterContent = mpFooterContent->begin(); - iterFooterContent != mpFooterContent->end(); - iterFooterContent++) - delete(*iterFooterContent); - delete mpFooterContent; - } - - if (mpFooterLeftContent) - { - for (DEVIter iterFooterLeftContent = mpFooterLeftContent->begin(); - iterFooterLeftContent != mpFooterLeftContent->end(); - iterFooterLeftContent++) - delete(*iterFooterLeftContent); - delete mpFooterLeftContent; - } -} - -int PageSpan::getSpan() const -{ - if (mxPropList["libwpd:num-pages"]) - return mxPropList["libwpd:num-pages"]->getInt(); - - return 0; // should never happen -} - -void PageSpan::writePageMaster(const int iNum, DocumentHandler *pHandler) const -{ - WPXPropertyList propList; - - WPXString sPageMasterName; - sPageMasterName.sprintf("PM%i", iNum /* +2 */); - propList.insert("style:name", sPageMasterName); - - pHandler->startElement("style:page-master", propList); - - WPXPropertyList tempPropList = mxPropList; - if (!tempPropList["style:writing-mode"]) - tempPropList.insert("style:writing-mode", WPXString("lr-tb")); - if (!tempPropList["style:footnote-max-height"]) - tempPropList.insert("style:footnote-max-height", WPXString("0inch")); - pHandler->startElement("style:properties", tempPropList); - - WPXPropertyList footnoteSepPropList; - footnoteSepPropList.insert("style:width", WPXString("0.0071inch")); - footnoteSepPropList.insert("style:distance-before-sep", WPXString("0.0398inch")); - footnoteSepPropList.insert("style:distance-after-sep", WPXString("0.0398inch")); - footnoteSepPropList.insert("style:adjustment", WPXString("left")); - footnoteSepPropList.insert("style:rel-width", WPXString("25%")); - footnoteSepPropList.insert("style:color", WPXString("#000000")); - pHandler->startElement("style:footnote-sep", footnoteSepPropList); - - pHandler->endElement("style:footnote-sep"); - pHandler->endElement("style:properties"); - pHandler->endElement("style:page-master"); -} - -void PageSpan::writeMasterPages(const int iStartingNum, const int iPageMasterNum, const bool bLastPageSpan, - DocumentHandler *pHandler) const -{ - int iSpan = 0; - (bLastPageSpan) ? iSpan = 1 : iSpan = getSpan(); - - for (int i=iStartingNum; i<(iStartingNum+iSpan); i++) - { - TagOpenElement masterPageOpen("style:master-page"); - WPXString sMasterPageName; - sMasterPageName.sprintf("Page Style %i", i); - WPXString sPageMasterName; - sPageMasterName.sprintf("PM%i", iPageMasterNum /* +2 */); - WPXPropertyList propList; - propList.insert("style:name", sMasterPageName); - propList.insert("style:page-master-name", sPageMasterName); - if (!bLastPageSpan) - { - WPXString sNextMasterPageName; - sNextMasterPageName.sprintf("Page Style %i", (i+1)); - propList.insert("style:next-style-name", sNextMasterPageName); - } - pHandler->startElement("style:master-page", propList); - - if (mpHeaderContent) - _writeHeaderFooter("style:header", *mpHeaderContent, pHandler); - if (mpHeaderLeftContent) - _writeHeaderFooter("style:header-left", *mpHeaderLeftContent, pHandler); - if (mpFooterContent) - _writeHeaderFooter("style:footer", *mpFooterContent, pHandler); - if (mpFooterLeftContent) - _writeHeaderFooter("style:footer-left", *mpFooterLeftContent, pHandler); - - pHandler->endElement("style:master-page"); - } - -} - -void PageSpan::_writeHeaderFooter(const char *headerFooterTagName, - const std::vector<DocumentElement *> & headerFooterContent, - DocumentHandler *pHandler) const -{ - TagOpenElement headerFooterOpen(headerFooterTagName); - headerFooterOpen.write(pHandler); - for (std::vector<DocumentElement *>::const_iterator iter = headerFooterContent.begin(); - iter != headerFooterContent.end(); - iter++) { - (*iter)->write(pHandler); - } - TagCloseElement headerFooterClose(headerFooterTagName); - headerFooterClose.write(pHandler); -} - diff --git a/writerperfect/source/filter/PageSpan.hxx b/writerperfect/source/filter/PageSpan.hxx deleted file mode 100644 index 7edbfae..0000000 --- a/writerperfect/source/filter/PageSpan.hxx +++ /dev/null @@ -1,65 +0,0 @@ -/* PageSpan: Stores (and writes) page-based information (e.g.: margins, - * headers/footers) - * - * Copyright (C) 2002-2004 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#ifndef _PAGESPAN_H -#define _PAGESPAN_H -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif -#include <vector> - -class DocumentElement; -class DocumentHandler; - -class PageSpan -{ -public: - PageSpan(const WPXPropertyList &xPropList); - virtual ~PageSpan(); - void writePageMaster(const int iNum, DocumentHandler *pHandler) const; - void writeMasterPages(const int iStartingNum, const int iPageMasterNum, const bool bLastPageSpan, DocumentHandler *pHandler) const; - int getSpan() const; - - const std::vector<DocumentElement *> * getHeaderContent() const { return mpHeaderContent; } - void setHeaderContent(std::vector<DocumentElement *> * pHeaderContent) { mpHeaderContent = pHeaderContent; } - void setFooterContent(std::vector<DocumentElement *> * pFooterContent) { mpFooterContent = pFooterContent; } - void setHeaderLeftContent(std::vector<DocumentElement *> * pHeaderContent) { mpHeaderLeftContent = pHeaderContent; } - void setFooterLeftContent(std::vector<DocumentElement *> * pFooterContent) { mpFooterLeftContent = pFooterContent; } -protected: - void _writeHeaderFooter(const char *headerFooterTagName, const std::vector<DocumentElement *> & headerFooterContent, - DocumentHandler *pHandler) const; -private: - WPXPropertyList mxPropList; - std::vector<DocumentElement *> * mpHeaderContent; - std::vector<DocumentElement *> * mpFooterContent; - std::vector<DocumentElement *> * mpHeaderLeftContent; - std::vector<DocumentElement *> * mpFooterLeftContent; -}; -#endif diff --git a/writerperfect/source/filter/SectionStyle.cxx b/writerperfect/source/filter/SectionStyle.cxx deleted file mode 100644 index 51dd9fc..0000000 --- a/writerperfect/source/filter/SectionStyle.cxx +++ /dev/null @@ -1,86 +0,0 @@ -/* SectionStyle: Stores (and writes) section-based information (e.g.: a column - * break needs a new section) that is needed at the head of an OO document and - * is referenced throughout the entire document - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * Copyright (c) 2004 Fridrich Strba (fridrich.st...@bluewin.ch) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#include "FilterInternal.hxx" -#include "SectionStyle.hxx" -#include "DocumentElement.hxx" -#include <math.h> - -#ifdef _MSC_VER -double rint(double x); -#endif /* _WIN32 */ - -SectionStyle::SectionStyle(const WPXPropertyList &xPropList, - const WPXPropertyListVector &xColumns, - const char *psName) : - Style(psName), - mPropList(xPropList), - mColumns(xColumns) -{ -} - -void SectionStyle::write(DocumentHandler *pHandler) const -{ - TagOpenElement styleOpen("style:style"); - styleOpen.addAttribute("style:name", getName()); - styleOpen.addAttribute("style:family", "section"); - styleOpen.write(pHandler); - - // if the number of columns is <= 1, we will never come here. This is only an additional check - // style properties - pHandler->startElement("style:properties", mPropList); - - // column properties - WPXPropertyList columnProps; - - if (mColumns.count() > 1) - { - columnProps.insert("fo:column-count", (int)mColumns.count()); - pHandler->startElement("style:columns", columnProps); - - WPXPropertyListVector::Iter i(mColumns); - for (i.rewind(); i.next();) - { - pHandler->startElement("style:column", i()); - pHandler->endElement("style:column"); - } - } - else - { - columnProps.insert("fo:column-count", 0); - columnProps.insert("fo:column-gap", 0.0f); - pHandler->startElement("style:columns", columnProps); - } - - pHandler->endElement("style:columns"); - - - pHandler->endElement("style:properties"); - - pHandler->endElement("style:style"); -} diff --git a/writerperfect/source/filter/SectionStyle.hxx b/writerperfect/source/filter/SectionStyle.hxx deleted file mode 100644 index 2e91482..0000000 --- a/writerperfect/source/filter/SectionStyle.hxx +++ /dev/null @@ -1,52 +0,0 @@ -/* SectionStyle: Stores (and writes) section-based information (e.g.: a column - * change needs a new section) that is needed at the head of an OO document. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#ifndef _SECTIONSTYLE_H -#define _SECTIONSTYLE_H -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#include <libwpd/WPXPropertyListVector.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif - -#include "Style.hxx" -#include "WriterProperties.hxx" - - -class SectionStyle : public Style -{ -public: - SectionStyle(const WPXPropertyList &xPropList, const WPXPropertyListVector &xColumns, const char *psName); - virtual void write(DocumentHandler *pHandler) const; - -private: - WPXPropertyList mPropList; - WPXPropertyListVector mColumns; -}; -#endif diff --git a/writerperfect/source/filter/Style.hxx b/writerperfect/source/filter/Style.hxx deleted file mode 100644 index f7e2233..0000000 --- a/writerperfect/source/filter/Style.hxx +++ /dev/null @@ -1,63 +0,0 @@ -/* Style: A base class from which all other styles are inherited, includes - * a name. - * - * Copyright (C) 2002-2003 William Lachance (william.lacha...@sympatico.ca) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ - -#ifndef _STYLE_H -#define _STYLE_H -#if defined _MSC_VER -#pragma warning( push, 1 ) -#endif -#include <libwpd/libwpd.h> -#if defined _MSC_VER -#pragma warning( pop ) -#endif -#include "DocumentElement.hxx" - -class TopLevelElementStyle -{ -public: - TopLevelElementStyle() : mpsMasterPageName(NULL) { } - virtual ~TopLevelElementStyle() { if (mpsMasterPageName) delete mpsMasterPageName; } - void setMasterPageName(WPXString &sMasterPageName) { mpsMasterPageName = new WPXString(sMasterPageName); } - const WPXString * getMasterPageName() const { return mpsMasterPageName; } - -private: - WPXString *mpsMasterPageName; -}; - -class Style -{ - public: - Style(const WPXString &psName) : msName(psName) {} - virtual ~Style() {} - - virtual void write(DocumentHandler * /* pHandler */) const {}; - const WPXString &getName() const { return msName; } - - private: - WPXString msName; -}; -#endif diff --git a/writerperfect/source/filter/TableStyle.cxx b/writerperfect/source/filter/TableStyle.cxx deleted file mode 100644 index 8d12427b..0000000 --- a/writerperfect/source/filter/TableStyle.cxx +++ /dev/null @@ -1,163 +0,0 @@ -/* TableStyle: Stores (and writes) table-based information that is - * needed at the head of an OO document. - * - * Copyright (C) 2002-2004 William Lachance (william.lacha...@sympatico.ca) - * Copyright (C) 2004 Net Integration Technologies, Inc. (http://www.net-itech.com) - * Copyright (C) 2004 Fridrich Strba (fridrich.st...@bluewin.ch) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For further information visit http://libwpd.sourceforge.net - * - */ - -/* "This product is not manufactured, approved, or supported by - * Corel Corporation or Corel Corporation Limited." - */ -#include <math.h> -#include <string.h> -#include "FilterInternal.hxx" -#include "TableStyle.hxx" -#include "DocumentElement.hxx" - -#ifdef _MSC_VER -#include <minmax.h> -#endif - -TableCellStyle::TableCellStyle(const WPXPropertyList &xPropList, const char *psName) : - Style(psName), - mPropList(xPropList) -{ -} - -void TableCellStyle::write(DocumentHandler *pHandler) const -{ - TagOpenElement styleOpen("style:style"); - styleOpen.addAttribute("style:name", getName()); - styleOpen.addAttribute("style:family", "table-cell"); - styleOpen.write(pHandler); - - // WLACH_REFACTORING: Only temporary.. a much better solution is to - // generalize this sort of thing into the "Style" superclass - WPXPropertyList stylePropList; - WPXPropertyList::Iter i(mPropList); - for (i.rewind(); i.next();) - { - if (strlen(i.key()) > 2 && strncmp(i.key(), "fo", 2) == 0) - stylePropList.insert(i.key(), i()->clone()); - } - stylePropList.insert("fo:padding", "0.0382inch"); - pHandler->startElement("style:properties", stylePropList); - pHandler->endElement("style:properties"); - - pHandler->endElement("style:style"); -} - -TableRowStyle::TableRowStyle(const WPXPropertyList &propList, const char *psName) : - Style(psName), - mPropList(propList) -{ -} - -void TableRowStyle::write(DocumentHandler *pHandler) const -{ - TagOpenElement styleOpen("style:style"); - styleOpen.addAttribute("style:name", getName()); - styleOpen.addAttribute("style:family", "table-row"); - styleOpen.write(pHandler); - - TagOpenElement stylePropertiesOpen("style:properties"); - if (mPropList["style:min-row-height"]) - stylePropertiesOpen.addAttribute("style:min-row-height", mPropList["style:min-row-height"]->getStr()); - else if (mPropList["style:row-height"]) - stylePropertiesOpen.addAttribute("style:row-height", mPropList["style:row-height"]->getStr()); - stylePropertiesOpen.write(pHandler); - pHandler->endElement("style:properties"); - - pHandler->endElement("style:style"); -} - - -TableStyle::TableStyle(const WPXPropertyList &xPropList, const WPXPropertyListVector &columns, const char *psName) : - Style(psName), - mPropList(xPropList), - mColumns(columns) -{ -} - -TableStyle::~TableStyle() -{ - typedef std::vector<TableCellStyle *>::iterator TCSVIter; - typedef std::vector<TableRowStyle *>::iterator TRSVIter; - for (TCSVIter iterTableCellStyles = mTableCellStyles.begin() ; iterTableCellStyles != mTableCellStyles.end(); iterTableCellStyles++) - delete(*iterTableCellStyles); - for (TRSVIter iterTableRowStyles = mTableRowStyles.begin() ; iterTableRowStyles != mTableRowStyles.end(); iterTableRowStyles++) - delete(*iterTableRowStyles); - -} - -void TableStyle::write(DocumentHandler *pHandler) const -{ - TagOpenElement styleOpen("style:style"); - styleOpen.addAttribute("style:name", getName()); - styleOpen.addAttribute("style:family", "table"); - if (getMasterPageName()) - styleOpen.addAttribute("style:master-page-name", getMasterPageName()->cstr()); - styleOpen.write(pHandler); - - TagOpenElement stylePropertiesOpen("style:properties"); - if (mPropList["table:align"]) - stylePropertiesOpen.addAttribute("table:align", mPropList["table:align"]->getStr()); - if (mPropList["fo:margin-left"]) - stylePropertiesOpen.addAttribute("fo:margin-left", mPropList["fo:margin-left"]->getStr()); - if (mPropList["fo:margin-right"]) - stylePropertiesOpen.addAttribute("fo:margin-right", mPropList["fo:margin-right"]->getStr()); - if (mPropList["style:width"]) - stylePropertiesOpen.addAttribute("style:width", mPropList["style:width"]->getStr()); - if (mPropList["fo:break-before"]) - stylePropertiesOpen.addAttribute("fo:break-before", mPropList["fo:break-before"]->getStr()); - stylePropertiesOpen.write(pHandler); - - pHandler->endElement("style:properties"); - - pHandler->endElement("style:style"); - - int i=1; - WPXPropertyListVector::Iter j(mColumns); - for (j.rewind(); j.next();) - { - TagOpenElement styleNestedOpen("style:style"); - WPXString sColumnName; - sColumnName.sprintf("%s.Column%i", getName().cstr(), i); - styleNestedOpen.addAttribute("style:name", sColumnName); - styleNestedOpen.addAttribute("style:family", "table-column"); - styleNestedOpen.write(pHandler); - - pHandler->startElement("style:properties", j()); - pHandler->endElement("style:properties"); - - pHandler->endElement("style:style"); - - i++; - } - - typedef std::vector<TableRowStyle *>::const_iterator TRSVIter; - for (TRSVIter iterTableRow = mTableRowStyles.begin() ; iterTableRow != mTableRowStyles.end(); iterTableRow++) - (*iterTableRow)->write(pHandler); - - typedef std::vector<TableCellStyle *>::const_iterator TCSVIter; - for (TCSVIter iterTableCell = mTableCellStyles.begin() ; iterTableCell != mTableCellStyles.end(); iterTableCell++) - (*iterTableCell)->write(pHandler); -} diff --git a/writerperfect/source/filter/TableStyle.hxx b/writerperfect/source/filter/TableStyle.hxx ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits