Author: alg
Date: Wed Jul 25 09:28:44 2012
New Revision: 1365501
URL: http://svn.apache.org/viewvc?rev=1365501&view=rev
Log:
#120334# Added support for multiple CSS styles per graphic primitive in SVG
Modified:
incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgnode.hxx
incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgcirclenode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgellipsenode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svggnode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgimagenode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svglinenode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgmarkernode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgnode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgpathnode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgpatternnode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgpolynode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgrectnode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgstyleattributes.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgtextnode.cxx
incubator/ooo/trunk/main/svgio/source/svgreader/svgusenode.cxx
Modified: incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgnode.hxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgnode.hxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgnode.hxx (original)
+++ incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgnode.hxx Wed Jul 25
09:28:44 2012
@@ -50,6 +50,7 @@ namespace svgio
namespace svgreader
{
typedef ::std::vector< SvgNode* > SvgNodeVector;
+ typedef ::std::vector< const SvgStyleAttributes* >
SvgStyleAttributeVector;
enum XmlSpace
{
@@ -79,6 +80,13 @@ namespace svgio
/// XmlSpace value
XmlSpace maXmlSpace;
+ /// CSS styles
+ SvgStyleAttributeVector maCssStyleVector;
+
+ protected:
+ /// helper to evtl. link to css style
+ const SvgStyleAttributes* checkForCssStyle(const rtl::OUString&
rClassStr, const SvgStyleAttributes& rOriginal) const;
+
public:
SvgNode(
SVGToken aType,
Modified:
incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx
(original)
+++ incubator/ooo/trunk/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx
Wed Jul 25 09:28:44 2012
@@ -139,12 +139,18 @@ namespace svgio
TextAnchor_end
};
+ enum FillRule
+ {
+ FillRule_notset,
+ FillRule_nonzero,
+ FillRule_evenodd
+ };
+
class SvgStyleAttributes
{
private:
SvgNode& mrOwner;
const SvgStyleAttributes* mpCssStyleParent;
-
SvgPaint maFill;
SvgPaint maStroke;
SvgPaint maStopColor;
@@ -187,18 +193,19 @@ namespace svgio
rtl::OUString maMarkerEndXLink;
const SvgMarkerNode* mpMarkerEndXLink;
+ /// fill rule
+ FillRule maFillRule;
+
+ // ClipRule setting (only valid wne mbIsClipPathContent == true,
default is FillRule_nonzero)
+ FillRule maClipRule;
+
/// bitfield
- bool maFillRule : 1; // true: NonZero,
false: EvenOdd
- bool maFillRuleSet : 1;
// defines if this attributes are part of a ClipPath. If yes,
// rough geometry will be created on decomposition by patching
// vaules for fill, stroke, strokeWidth and others
bool mbIsClipPathContent : 1;
- // ClipRule setting (only valid wne mbIsClipPathContent == true)
- bool mbClipRule : 1; // true ==
nonzero(default), false == evenodd
-
/// internal helpers
void add_fillGradient(
const basegfx::B2DPolyPolygon& rPath,
@@ -256,8 +263,9 @@ namespace svgio
const drawinglayer::primitive2d::Primitive2DSequence& rSource,
const basegfx::B2DHomMatrix* pTransform) const;
- /// helper to evtl. link to css style
- void checkForCssStyle(const rtl::OUString& rClassStr) const;
+ /// helper to set mpCssStyleParent temporarily for CSS style
hierarchies
+ void setCssStyleParent(const SvgStyleAttributes* pNew) {
mpCssStyleParent = pNew; }
+ const SvgStyleAttributes* getCssStyleParent() const { return
mpCssStyleParent; }
/// scan helpers
void readStyle(const rtl::OUString& rCandidate);
@@ -307,8 +315,8 @@ namespace svgio
void setFillOpacity(const SvgNumber& rFillOpacity = SvgNumber()) {
maFillOpacity = rFillOpacity; }
/// fill rule content
- bool getFillRule() const;
- void setFillRule(const bool* pFillRule = 0);
+ const FillRule getFillRule() const;
+ void setFillRule(const FillRule aFillRule = FillRule_notset) {
maFillRule = aFillRule; }
/// fill StrokeDasharray content
const SvgNumberVector& getStrokeDasharray() const;
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgcirclenode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgcirclenode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgcirclenode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgcirclenode.cxx Wed Jul
25 09:28:44 2012
@@ -52,9 +52,8 @@ namespace svgio
const SvgStyleAttributes* SvgCircleNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("circle"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgCircleNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgellipsenode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgellipsenode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgellipsenode.cxx
(original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgellipsenode.cxx Wed Jul
25 09:28:44 2012
@@ -53,9 +53,8 @@ namespace svgio
const SvgStyleAttributes* SvgEllipseNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("ellipse"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgEllipseNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svggnode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svggnode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svggnode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svggnode.cxx Wed Jul 25
09:28:44 2012
@@ -51,9 +51,8 @@ namespace svgio
const SvgStyleAttributes* SvgGNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("g"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgGNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgimagenode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgimagenode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgimagenode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgimagenode.cxx Wed Jul 25
09:28:44 2012
@@ -70,9 +70,8 @@ namespace svgio
const SvgStyleAttributes* SvgImageNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("image"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgImageNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svglinenode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svglinenode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svglinenode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svglinenode.cxx Wed Jul 25
09:28:44 2012
@@ -53,9 +53,8 @@ namespace svgio
const SvgStyleAttributes* SvgLineNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("line"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgLineNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgmarkernode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgmarkernode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgmarkernode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgmarkernode.cxx Wed Jul
25 09:28:44 2012
@@ -56,9 +56,8 @@ namespace svgio
const SvgStyleAttributes* SvgMarkerNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("marker"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgMarkerNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgnode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgnode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgnode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgnode.cxx Wed Jul 25
09:28:44 2012
@@ -41,6 +41,96 @@ namespace svgio
return 0;
}
+ const SvgStyleAttributes* SvgNode::checkForCssStyle(const
rtl::OUString& rClassStr, const SvgStyleAttributes& rOriginal) const
+ {
+ const SvgDocument& rDocument = getDocument();
+
+ if(rDocument.hasSvgStyleAttributesById())
+ {
+ if(getClass())
+ {
+ // find all referenced CSS styles, a list of entries is
allowed
+ const rtl::OUString* pClassList = getClass();
+ const sal_Int32 nLen(pClassList->getLength());
+ sal_Int32 nPos(0);
+ const SvgStyleAttributes* pNew = 0;
+
+ skip_char(*pClassList, sal_Unicode(' '), nPos, nLen);
+
+ while(nPos < nLen)
+ {
+ rtl::OUStringBuffer aTokenValue;
+
+ copyToLimiter(*pClassList, sal_Unicode(' '), nPos,
aTokenValue, nLen);
+ skip_char(*pClassList, sal_Unicode(' '), nPos, nLen);
+
+ rtl::OUString aId(rtl::OUString::createFromAscii("."));
+ const rtl::OUString
aOUTokenValue(aTokenValue.makeStringAndClear());
+
+ // look for CSS style common to token
+ aId = aId + aOUTokenValue;
+ pNew = rDocument.findSvgStyleAttributesById(aId);
+
+ if(!pNew && rClassStr.getLength())
+ {
+ // look for CSS style common to class.token
+ aId = rClassStr + aId;
+
+ pNew = rDocument.findSvgStyleAttributesById(aId);
+ }
+
+ if(pNew)
+ {
+ const_cast< SvgNode*
>(this)->maCssStyleVector.push_back(pNew);
+ }
+ }
+ }
+
+ if(maCssStyleVector.empty() && getId())
+ {
+ // if none found, search for CSS style equal to Id
+ const SvgStyleAttributes* pNew =
rDocument.findSvgStyleAttributesById(*getId());
+
+ if(pNew)
+ {
+ const_cast< SvgNode*
>(this)->maCssStyleVector.push_back(pNew);
+ }
+ }
+
+ if(maCssStyleVector.empty() && rClassStr.getLength())
+ {
+ // if none found, search for CSS style equal to class type
+ const SvgStyleAttributes* pNew =
rDocument.findSvgStyleAttributesById(rClassStr);
+
+ if(pNew)
+ {
+ const_cast< SvgNode*
>(this)->maCssStyleVector.push_back(pNew);
+ }
+ }
+ }
+
+ if(maCssStyleVector.empty())
+ {
+ return &rOriginal;
+ }
+ else
+ {
+ // set CssStyleParent at maCssStyleVector members to hang them
in front of
+ // the existing style
+ SvgStyleAttributes* pCurrent = const_cast< SvgStyleAttributes*
>(&rOriginal);
+
+ for(sal_uInt32 a(0); a < maCssStyleVector.size(); a++)
+ {
+ SvgStyleAttributes* pCandidate = const_cast<
SvgStyleAttributes* >(maCssStyleVector[maCssStyleVector.size() - a - 1]);
+
+ pCandidate->setCssStyleParent(pCurrent);
+ pCurrent = pCandidate;
+ }
+
+ return pCurrent;
+ }
+ }
+
SvgNode::SvgNode(
SVGToken aType,
SvgDocument& rDocument,
@@ -52,7 +142,8 @@ namespace svgio
maChildren(),
mpId(0),
mpClass(0),
- maXmlSpace(XmlSpace_notset)
+ maXmlSpace(XmlSpace_notset),
+ maCssStyleVector()
{
OSL_ENSURE(SVGTokenUnknown != maType, "SvgNode with unknown type
created (!)");
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgpathnode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgpathnode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgpathnode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgpathnode.cxx Wed Jul 25
09:28:44 2012
@@ -51,9 +51,8 @@ namespace svgio
const SvgStyleAttributes* SvgPathNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("path"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgPathNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgpatternnode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgpatternnode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgpatternnode.cxx
(original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgpatternnode.cxx Wed Jul
25 09:28:44 2012
@@ -70,9 +70,8 @@ namespace svgio
const SvgStyleAttributes* SvgPatternNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("pattern"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgPatternNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgpolynode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgpolynode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgpolynode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgpolynode.cxx Wed Jul 25
09:28:44 2012
@@ -54,9 +54,8 @@ namespace svgio
{
static rtl::OUString
aClassStrA(rtl::OUString::createFromAscii("polygon"));
static rtl::OUString
aClassStrB(rtl::OUString::createFromAscii("polyline"));
- maSvgStyleAttributes.checkForCssStyle(mbIsPolyline? aClassStrB :
aClassStrA);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(mbIsPolyline? aClassStrB : aClassStrA,
maSvgStyleAttributes);
}
void SvgPolyNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgrectnode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgrectnode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgrectnode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgrectnode.cxx Wed Jul 25
09:28:44 2012
@@ -55,9 +55,8 @@ namespace svgio
const SvgStyleAttributes* SvgRectNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("rect"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgRectNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgstyleattributes.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgstyleattributes.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgstyleattributes.cxx
(original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgstyleattributes.cxx Wed
Jul 25 09:28:44 2012
@@ -212,56 +212,14 @@ namespace svgio
}
}
- void SvgStyleAttributes::checkForCssStyle(const rtl::OUString&
rClassStr) const
- {
- if(!mpCssStyleParent)
- {
- const SvgDocument& rDocument = mrOwner.getDocument();
- const SvgStyleAttributes* pNew = 0;
-
- if(rDocument.hasSvgStyleAttributesById())
- {
- if(mrOwner.getClass())
- {
- rtl::OUString aId(rtl::OUString::createFromAscii("."));
- aId = aId + *mrOwner.getClass();
- pNew = rDocument.findSvgStyleAttributesById(aId);
-
- if(!pNew && rClassStr.getLength())
- {
- aId = rClassStr + aId;
-
- pNew = rDocument.findSvgStyleAttributesById(aId);
- }
- }
-
- if(!pNew && mrOwner.getId())
- {
- pNew =
rDocument.findSvgStyleAttributesById(*mrOwner.getId());
- }
-
- if(!pNew && rClassStr.getLength())
- {
- pNew = rDocument.findSvgStyleAttributesById(rClassStr);
- }
-
- if(pNew)
- {
- // found css style, set as parent
- const_cast< SvgStyleAttributes*
>(this)->mpCssStyleParent = pNew;
- }
- }
- }
- }
-
const SvgStyleAttributes* SvgStyleAttributes::getParentStyle() const
{
- if(mpCssStyleParent)
+ if(getCssStyleParent())
{
- return mpCssStyleParent;
+ return getCssStyleParent();
}
- if(mrOwner.getParent())
+ if(mrOwner.getParent())
{
return mrOwner.getParent()->getSvgStyleAttributes();
}
@@ -1068,8 +1026,8 @@ namespace svgio
{
basegfx::B2DPolyPolygon aPath(rPath);
const bool bNeedToCheckClipRule(SVGTokenPath ==
mrOwner.getType() || SVGTokenPolygon == mrOwner.getType());
- const bool bClipPathIsNonzero(!bIsLine && bNeedToCheckClipRule
&& mbIsClipPathContent && mbClipRule);
- const bool bFillRuleIsNonzero(!bIsLine && bNeedToCheckClipRule
&& !mbIsClipPathContent && getFillRule());
+ const bool bClipPathIsNonzero(!bIsLine && bNeedToCheckClipRule
&& mbIsClipPathContent && FillRule_nonzero == maClipRule);
+ const bool bFillRuleIsNonzero(!bIsLine && bNeedToCheckClipRule
&& !mbIsClipPathContent && FillRule_nonzero == getFillRule());
if(bClipPathIsNonzero || bFillRuleIsNonzero)
{
@@ -1203,10 +1161,9 @@ namespace svgio
mpMarkerMidXLink(0),
maMarkerEndXLink(),
mpMarkerEndXLink(0),
- maFillRule(true),
- maFillRuleSet(false),
- mbIsClipPathContent(SVGTokenClipPathNode == mrOwner.getType()),
- mbClipRule(true)
+ maFillRule(FillRule_notset),
+ maClipRule(FillRule_nonzero),
+ mbIsClipPathContent(SVGTokenClipPathNode == mrOwner.getType())
{
if(!mbIsClipPathContent)
{
@@ -1273,13 +1230,11 @@ namespace svgio
{
if(aContent.match(commonStrings::aStrNonzero))
{
- maFillRule = true;
- maFillRuleSet = true;
+ maFillRule = FillRule_nonzero;
}
else if(aContent.match(commonStrings::aStrEvenOdd))
{
- maFillRule = false;
- maFillRuleSet = true;
+ maFillRule = FillRule_evenodd;
}
}
break;
@@ -1790,11 +1745,11 @@ namespace svgio
{
if(aContent.match(commonStrings::aStrNonzero))
{
- mbClipRule = true;
+ maClipRule = FillRule_nonzero;
}
else if(aContent.match(commonStrings::aStrEvenOdd))
{
- mbClipRule = false;
+ maClipRule = FillRule_evenodd;
}
}
break;
@@ -2048,9 +2003,9 @@ namespace svgio
return SvgNumber(1.0);
}
- bool SvgStyleAttributes::getFillRule() const
+ const FillRule SvgStyleAttributes::getFillRule() const
{
- if(maFillRuleSet)
+ if(FillRule_notset != maFillRule)
{
return maFillRule;
}
@@ -2063,20 +2018,7 @@ namespace svgio
}
// default is NonZero
- return true;
- }
-
- void SvgStyleAttributes::setFillRule(const bool* pFillRule)
- {
- if(pFillRule)
- {
- maFillRuleSet = true;
- maFillRule = *pFillRule;
- }
- else
- {
- maFillRuleSet = false;
- }
+ return FillRule_nonzero;
}
const SvgNumberVector& SvgStyleAttributes::getStrokeDasharray() const
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgtextnode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgtextnode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgtextnode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgtextnode.cxx Wed Jul 25
09:28:44 2012
@@ -55,9 +55,8 @@ namespace svgio
const SvgStyleAttributes* SvgTextNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("text"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgTextNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)
Modified: incubator/ooo/trunk/main/svgio/source/svgreader/svgusenode.cxx
URL:
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/svgio/source/svgreader/svgusenode.cxx?rev=1365501&r1=1365500&r2=1365501&view=diff
==============================================================================
--- incubator/ooo/trunk/main/svgio/source/svgreader/svgusenode.cxx (original)
+++ incubator/ooo/trunk/main/svgio/source/svgreader/svgusenode.cxx Wed Jul 25
09:28:44 2012
@@ -54,9 +54,8 @@ namespace svgio
const SvgStyleAttributes* SvgUseNode::getSvgStyleAttributes() const
{
static rtl::OUString
aClassStr(rtl::OUString::createFromAscii("use"));
- maSvgStyleAttributes.checkForCssStyle(aClassStr);
- return &maSvgStyleAttributes;
+ return checkForCssStyle(aClassStr, maSvgStyleAttributes);
}
void SvgUseNode::parseAttribute(const rtl::OUString& rTokenName,
SVGToken aSVGToken, const rtl::OUString& aContent)