From 359f43f8e76c3bd85c3daf35b5a6d925a4c8c64f Mon Sep 17 00:00:00 2001 From: Xisco Fauli Date: Sat, 30 Jan 2016 01:50:07 +0100 Subject: tdf#79163: SVGIO: Fix problem with opacity attribute Opacity attribute didn't work because it was always set to 1.0 Change-Id: I3a2029ef23acf9d8c0f346e04341db33c6802b8e Reviewed-on: https://gerrit.libreoffice.org/21911 Tested-by: Jenkins Reviewed-by: Armin Le Grand --- svgio/inc/svgio/svgreader/svgstyleattributes.hxx | 2 +- svgio/source/svgreader/svgstyleattributes.cxx | 28 +++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/svgio/inc/svgio/svgreader/svgstyleattributes.hxx b/svgio/inc/svgio/svgreader/svgstyleattributes.hxx index 02cf55dd0252..9d589d1aad6e 100644 --- a/svgio/inc/svgio/svgreader/svgstyleattributes.hxx +++ b/svgio/inc/svgio/svgreader/svgstyleattributes.hxx @@ -425,7 +425,7 @@ namespace svgio const basegfx::BColor* getCurrentColor() const; /// Opacity content - SvgNumber getOpacity() const { return maOpacity; } + SvgNumber getOpacity() const; void setOpacity(const SvgNumber& rOpacity = SvgNumber()) { maOpacity = rOpacity; } /// Visibility diff --git a/svgio/source/svgreader/svgstyleattributes.cxx b/svgio/source/svgreader/svgstyleattributes.cxx index 3e3fa0091378..e733396b3dcd 100644 --- a/svgio/source/svgreader/svgstyleattributes.cxx +++ b/svgio/source/svgreader/svgstyleattributes.cxx @@ -1056,7 +1056,7 @@ namespace svgio return; } - const double fOpacity(getOpacity().getNumber()); + const double fOpacity(getOpacity().solve(mrOwner)); if(basegfx::fTools::equalZero(fOpacity)) { @@ -1113,7 +1113,7 @@ namespace svgio { if(!rSource.empty()) { - const double fOpacity(getOpacity().getNumber()); + const double fOpacity(getOpacity().solve(mrOwner)); if(basegfx::fTools::equalZero(fOpacity)) { @@ -1210,7 +1210,7 @@ namespace svgio maTextDecoration(TextDecoration_notset), maTextAnchor(TextAnchor_notset), maColor(), - maOpacity(1.0), + maOpacity(), maVisibility(Visibility_visible), maTitle(), maDesc(), @@ -2163,6 +2163,28 @@ namespace svgio return SvgNumber(1.0); } + SvgNumber SvgStyleAttributes::getOpacity() const + { + if(mbIsClipPathContent) + { + return SvgNumber(1.0); + } + else if(maOpacity.isSet()) + { + return maOpacity; + } + + const SvgStyleAttributes* pSvgStyleAttributes = getParentStyle(); + + if(pSvgStyleAttributes) + { + return pSvgStyleAttributes->getOpacity(); + } + + // default is 1 + return SvgNumber(1.0); + } + FillRule SvgStyleAttributes::getFillRule() const { if(FillRule_notset != maFillRule) -- cgit