writerperfect/source/filter/InternalHandler.hxx | 3 writerperfect/source/filter/ListStyle.cxx | 9 +- writerperfect/source/filter/OdgGenerator.cxx | 85 ++++++++++++++++++++---- writerperfect/source/filter/PageSpan.cxx | 11 +-- writerperfect/source/filter/Style.hxx | 8 -- 5 files changed, 84 insertions(+), 32 deletions(-)
New commits: commit 494c6b5524dad78f2eeb48a3b979a11bc8413984 Author: Fridrich Å trba <fridrich.st...@bluewin.ch> Date: Tue Oct 25 23:16:32 2011 +0200 Realy not need to make this one depend on boost diff --git a/writerperfect/source/filter/InternalHandler.hxx b/writerperfect/source/filter/InternalHandler.hxx index a7b58f9..bb756be 100644 --- a/writerperfect/source/filter/InternalHandler.hxx +++ b/writerperfect/source/filter/InternalHandler.hxx @@ -29,9 +29,8 @@ #include <libwpd/WPXString.h> #include "DocumentElement.hxx" #include "OdfDocumentHandler.hxx" -#include <boost/noncopyable.hpp> -class InternalHandler : public OdfDocumentHandler, private boost::noncopyable +class InternalHandler : public OdfDocumentHandler { public: InternalHandler(std::vector<DocumentElement *> *elements); diff --git a/writerperfect/source/filter/ListStyle.cxx b/writerperfect/source/filter/ListStyle.cxx index 9b705f5..0b56cef 100644 --- a/writerperfect/source/filter/ListStyle.cxx +++ b/writerperfect/source/filter/ListStyle.cxx @@ -136,11 +136,10 @@ void UnorderedListLevelStyle::write(OdfDocumentHandler *pHandler, int iLevel) co ListStyle::ListStyle(const char *psName, const int iListID) : Style(psName), - miNumListLevels(0), miListID(iListID) { for (int i=0; i<WP6_NUM_LIST_LEVELS; ++i) - mppListLevels[i] = NULL; + mppListLevels[i] = 0; } @@ -156,7 +155,7 @@ ListStyle::~ListStyle() bool ListStyle::isListLevelDefined(int iLevel) const { - if (mppListLevels[iLevel] == NULL) + if (!mppListLevels[iLevel]) return false; return true; @@ -167,7 +166,7 @@ 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) + if (!mppListLevels[iLevel]) mppListLevels[iLevel] = iListLevelStyle; } @@ -179,7 +178,7 @@ void ListStyle::write(OdfDocumentHandler *pHandler) const for (int i=0; i<WP6_NUM_LIST_LEVELS; ++i) { - if (mppListLevels[i] != NULL) + if (mppListLevels[i]) mppListLevels[i]->write(pHandler, i); } diff --git a/writerperfect/source/filter/PageSpan.cxx b/writerperfect/source/filter/PageSpan.cxx index 54161a5..cb7da97 100644 --- a/writerperfect/source/filter/PageSpan.cxx +++ b/writerperfect/source/filter/PageSpan.cxx @@ -26,19 +26,16 @@ /* "This product is not manufactured, approved, or supported by * Corel Corporation or Corel Corporation Limited." */ - -#include <stdlib.h> - #include "FilterInternal.hxx" #include "PageSpan.hxx" #include "DocumentElement.hxx" PageSpan::PageSpan(const WPXPropertyList &xPropList) : mxPropList(xPropList), - mpHeaderContent(NULL), - mpFooterContent(NULL), - mpHeaderLeftContent(NULL), - mpFooterLeftContent(NULL) + mpHeaderContent(0), + mpFooterContent(0), + mpHeaderLeftContent(0), + mpFooterLeftContent(0) { } diff --git a/writerperfect/source/filter/Style.hxx b/writerperfect/source/filter/Style.hxx index 6126e26..2dd41a4 100644 --- a/writerperfect/source/filter/Style.hxx +++ b/writerperfect/source/filter/Style.hxx @@ -28,16 +28,14 @@ #ifndef _STYLE_H #define _STYLE_H -#include <cstdlib> #include <libwpd/libwpd.h> #include "libwriterperfect_filter.hxx" #include "DocumentElement.hxx" -#include <boost/noncopyable.hpp> -class TopLevelElementStyle : private boost::noncopyable +class TopLevelElementStyle { public: - TopLevelElementStyle() : mpsMasterPageName(NULL) { } + TopLevelElementStyle() : mpsMasterPageName(0) {} virtual ~TopLevelElementStyle() { if (mpsMasterPageName) delete mpsMasterPageName; @@ -73,7 +71,7 @@ private: WPXString msName; }; -class StyleManager : private boost::noncopyable +class StyleManager { public: StyleManager() {} commit 04eecf30557e54080d128ed8cd69889ef8eaa3c7 Author: Tibby Lickle <tibbylic...@gmail.com> Date: Tue Oct 25 23:04:44 2011 +0200 Added line marker support Signed-off-by: Fridrich Å trba <fridrich.st...@bluewin.ch> diff --git a/writerperfect/source/filter/OdgGenerator.cxx b/writerperfect/source/filter/OdgGenerator.cxx index 68f77c1..2d2beea 100644 --- a/writerperfect/source/filter/OdgGenerator.cxx +++ b/writerperfect/source/filter/OdgGenerator.cxx @@ -218,11 +218,7 @@ static WPXString doubleToString(const double value) { WPXString tempString; tempString.sprintf("%.4f", value); -#ifndef __ANDROID__ std::string decimalPoint(localeconv()->decimal_point); -#else - std::string decimalPoint("."); -#endif if ((decimalPoint.size() == 0) || (decimalPoint == ".")) return tempString; std::string stringValue(tempString.cstr()); @@ -249,6 +245,7 @@ public: // graphics styles std::vector<DocumentElement *> mGraphicsStrokeDashStyles; std::vector<DocumentElement *> mGraphicsGradientStyles; + std::vector<DocumentElement *> mGraphicsMarkerStyles; std::vector<DocumentElement *> mGraphicsAutomaticStyles; // page styles @@ -268,7 +265,10 @@ public: ::WPXPropertyList mxStyle; ::WPXPropertyListVector mxGradient; + ::WPXPropertyListVector mxMarker; int miGradientIndex; + int miStartMarkerIndex; + int miEndMarkerIndex; int miDashIndex; int miGraphicsStyleIndex; int miPageIndex; @@ -293,9 +293,11 @@ OdgGeneratorPrivate::OdgGeneratorPrivate(OdfDocumentHandler *pHandler, const Odf mSpanManager(), mFontManager(), mpHandler(pHandler), - mxStyle(), - mxGradient(), + mxStyle(), mxGradient(), + mxMarker(), miGradientIndex(1), + miStartMarkerIndex(1), + miEndMarkerIndex(1), miDashIndex(1), miGraphicsStyleIndex(1), miPageIndex(1), @@ -316,7 +318,7 @@ OdgGeneratorPrivate::~OdgGeneratorPrivate() for (std::vector<DocumentElement *>::iterator iterBody = mBodyElements.begin(); iterBody != mBodyElements.end(); ++iterBody) { delete (*iterBody); - (*iterBody) = NULL; + (*iterBody) = 0; } for (std::vector<DocumentElement *>::iterator iterGraphicsAutomaticStyles = mGraphicsAutomaticStyles.begin(); @@ -337,6 +339,12 @@ OdgGeneratorPrivate::~OdgGeneratorPrivate() delete((*iterGraphicsGradientStyles)); } + for (std::vector<DocumentElement *>::iterator iterGraphicsMarkerStyles = mGraphicsMarkerStyles.begin(); + iterGraphicsMarkerStyles != mGraphicsMarkerStyles.end(); ++iterGraphicsMarkerStyles) + { + delete((*iterGraphicsMarkerStyles)); + } + for (std::vector<DocumentElement *>::iterator iterPageAutomaticStyles = mPageAutomaticStyles.begin(); iterPageAutomaticStyles != mPageAutomaticStyles.end(); ++iterPageAutomaticStyles) { @@ -442,6 +450,11 @@ OdgGenerator::~OdgGenerator() (*iterGraphicsGradientStyles)->write(mpImpl->mpHandler); } + for (std::vector<DocumentElement *>::const_iterator iterGraphicsMarkerStyles = mpImpl->mGraphicsMarkerStyles.begin(); + iterGraphicsMarkerStyles != mpImpl->mGraphicsMarkerStyles.end(); ++iterGraphicsMarkerStyles) + { + (*iterGraphicsMarkerStyles)->write(mpImpl->mpHandler); + } mpImpl->mpHandler->endElement("office:styles"); } @@ -990,6 +1003,31 @@ void OdgGeneratorPrivate::_writeGraphicsStyle() mGraphicsStrokeDashStyles.push_back(new TagCloseElement("draw:stroke-dash")); } + if (mxStyle["draw:marker-start-path"]) + { + WPXString sValue; + TagOpenElement *pDrawMarkerElement = new TagOpenElement("draw:marker"); + sValue.sprintf("StartMarker_%i", miStartMarkerIndex); + pDrawMarkerElement->addAttribute("draw:name", sValue); + if (mxStyle["draw:marker-start-viewbox"]) + pDrawMarkerElement->addAttribute("svg:viewBox", mxStyle["draw:marker-start-viewbox"]->getStr()); + pDrawMarkerElement->addAttribute("svg:d", mxStyle["draw:marker-start-path"]->getStr()); + mGraphicsMarkerStyles.push_back(pDrawMarkerElement); + mGraphicsMarkerStyles.push_back(new TagCloseElement("draw:marker")); + } + if(mxStyle["draw:marker-end-path"]) + { + WPXString sValue; + TagOpenElement *pDrawMarkerElement = new TagOpenElement("draw:marker"); + sValue.sprintf("EndMarker_%i", miEndMarkerIndex); + pDrawMarkerElement->addAttribute("draw:name", sValue); + if (mxStyle["draw:marker-end-viewbox"]) + pDrawMarkerElement->addAttribute("svg:viewBox", mxStyle["draw:marker-end-viewbox"]->getStr()); + pDrawMarkerElement->addAttribute("svg:d", mxStyle["draw:marker-end-path"]->getStr()); + mGraphicsMarkerStyles.push_back(pDrawMarkerElement); + mGraphicsMarkerStyles.push_back(new TagCloseElement("draw:marker")); + } + if(mxStyle["draw:fill"] && mxStyle["draw:fill"]->getStr() == "gradient") { bUseOpacityGradient = true; @@ -1086,7 +1124,8 @@ void OdgGeneratorPrivate::_writeGraphicsStyle() // Work around a mess in LibreOffice where both opacities of 100% are interpreted as complete transparency // Nevertheless, when one is different, immediately, they are interpreted correctly - if (!(mxStyle["libwpg:start-opacity"] && mxStyle["libwpg:end-opacity"]) || (mxStyle["libwpg:start-opacity"]->getDouble() == 1.0 && mxStyle["libwpg:end-opacity"]->getDouble() == 1.0)) + if (!(mxStyle["libwpg:start-opacity"] && mxStyle["libwpg:end-opacity"]) + || (mxStyle["libwpg:start-opacity"]->getDouble() == 1.0 && mxStyle["libwpg:end-opacity"]->getDouble() == 1.0)) { delete pDrawOpacityElement; bUseOpacityGradient = false; @@ -1215,6 +1254,26 @@ void OdgGeneratorPrivate::_writeGraphicsStyle() } } + + if(mxStyle["draw:marker-start-path"]) + { + sValue.sprintf("StartMarker_%i", miStartMarkerIndex++); + pStyleGraphicsPropertiesElement->addAttribute("draw:marker-start", sValue); + if (mxStyle["draw:marker-start-width"]) + pStyleGraphicsPropertiesElement->addAttribute("draw:marker-start-width", mxStyle["draw:marker-start-width"]->getStr()); + else + pStyleGraphicsPropertiesElement->addAttribute("draw:marker-start-width", "0.118in"); + } + if (mxStyle["draw:marker-end-path"]) + { + sValue.sprintf("EndMarker_%i", miEndMarkerIndex++); + pStyleGraphicsPropertiesElement->addAttribute("draw:marker-end", sValue); + if (mxStyle["draw:marker-end-width"]) + pStyleGraphicsPropertiesElement->addAttribute("draw:marker-end-width", mxStyle["draw:marker-end-width"]->getStr()); + else + pStyleGraphicsPropertiesElement->addAttribute("draw:marker-end-width", "0.118in"); + } + mGraphicsAutomaticStyles.push_back(pStyleGraphicsPropertiesElement); mGraphicsAutomaticStyles.push_back(new TagCloseElement("style:graphic-properties")); @@ -1222,7 +1281,7 @@ void OdgGeneratorPrivate::_writeGraphicsStyle() miGraphicsStyleIndex++; } -void OdgGenerator::startEmbeddedGraphics(WPXPropertyList const &) +void OdgGenerator::startEmbeddedGraphics(const WPXPropertyList &) { } @@ -1230,7 +1289,7 @@ void OdgGenerator::endEmbeddedGraphics() { } -void OdgGenerator::startTextObject(WPXPropertyList const &propList, WPXPropertyListVector const &) +void OdgGenerator::startTextObject(const WPXPropertyList &propList, const WPXPropertyListVector &) { TagOpenElement *pDrawFrameOpenElement = new TagOpenElement("draw:frame"); TagOpenElement *pStyleStyleOpenElement = new TagOpenElement("style:style"); @@ -1350,7 +1409,7 @@ void OdgGenerator::endTextObject() } } -void OdgGenerator::startTextLine(WPXPropertyList const &propList) +void OdgGenerator::startTextLine(const WPXPropertyList &propList) { WPXPropertyList finalPropList(propList); finalPropList.insert("style:parent-style-name", "Standard"); @@ -1368,7 +1427,7 @@ void OdgGenerator::endTextLine() mpImpl->mBodyElements.push_back(new TagCloseElement("text:p")); } -void OdgGenerator::startTextSpan(WPXPropertyList const &propList) +void OdgGenerator::startTextSpan(const WPXPropertyList &propList) { if (propList["style:font-name"]) mpImpl->mFontManager.findOrAdd(propList["style:font-name"]->getStr().cstr()); @@ -1385,7 +1444,7 @@ void OdgGenerator::endTextSpan() mpImpl->mBodyElements.push_back(new TagCloseElement("text:span")); } -void OdgGenerator::insertText(WPXString const &text) +void OdgGenerator::insertText(const WPXString &text) { DocumentElement *pText = new TextElement(text); mpImpl->mBodyElements.push_back(pText);
_______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits