Kaydet (Commit) 501f25e3 authored tarafından Chr. Rossmanith's avatar Chr. Rossmanith Kaydeden (comit) Christina Roßmanith

SVG: handle visibility property

improve import of masking-path-08-b.svg of the W3C svg test suite when using insert->media->image

Change-Id: Ib4d48165f982e394e2171ac82e6cc06911553904
Reviewed-on: https://gerrit.libreoffice.org/12168Reviewed-by: 's avatarChristina Roßmanith <ChrRossmanith@web.de>
Tested-by: 's avatarChristina Roßmanith <ChrRossmanith@web.de>
üst a51aa75d
......@@ -153,6 +153,14 @@ namespace svgio
BaselineShift_Length
};
enum Visibility
{
Visibility_visible,
Visibility_hidden,
Visibility_collapse,
Visibility_inherit
};
class SvgStyleAttributes
{
private:
......@@ -185,6 +193,7 @@ namespace svgio
TextAnchor maTextAnchor;
SvgPaint maColor;
SvgNumber maOpacity;
Visibility maVisibility;
OUString maTitle;
OUString maDesc;
......@@ -401,6 +410,10 @@ namespace svgio
SvgNumber getOpacity() const { return maOpacity; }
void setOpacity(const SvgNumber& rOpacity = SvgNumber()) { maOpacity = rOpacity; }
/// Visibility
Visibility getVisibility() const { return maVisibility; }
void setVisibility(Visibility eVisibility) { maVisibility = eVisibility; }
// Title content
const OUString& getTitle() const { return maTitle; }
void setTitle(const OUString& rNew) { maTitle = rNew; }
......
......@@ -102,6 +102,7 @@ namespace svgio
SVGTokenPatternContentUnits,
SVGTokenPatternTransform,
SVGTokenOpacity,
SVGTokenVisibility,
SVGTokenTitle,
SVGTokenDesc,
......
......@@ -496,6 +496,12 @@ namespace svgio
return;
}
const SvgStyleAttributes* pStyles = getSvgStyleAttributes();
if(pStyles && (Visibility_hidden == pStyles->getVisibility() || Visibility_collapse == pStyles->getVisibility()))
{
return;
}
if(!bReferenced)
{
if(SVGTokenDefs == getType() ||
......@@ -533,6 +539,9 @@ namespace svgio
SvgNode* pCandidate = rChildren[a];
if(pCandidate && Display_none != pCandidate->getDisplay())
{
const SvgStyleAttributes* pChildStyles = pCandidate->getSvgStyleAttributes();
if(pChildStyles && Visibility_hidden != pChildStyles->getVisibility())
{
drawinglayer::primitive2d::Primitive2DSequence aNewTarget;
......@@ -543,7 +552,8 @@ namespace svgio
drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aNewTarget);
}
}
else
}
else if(!pCandidate)
{
OSL_ENSURE(false, "Null-Pointer in child node list (!)");
}
......@@ -551,8 +561,6 @@ namespace svgio
if(rTarget.hasElements())
{
const SvgStyleAttributes* pStyles = getSvgStyleAttributes();
if(pStyles)
{
// check if we have Title or Desc
......
......@@ -1212,6 +1212,7 @@ namespace svgio
maTextAnchor(TextAnchor_notset),
maColor(),
maOpacity(1.0),
maVisibility(Visibility_visible),
maTitle(),
maDesc(),
maClipPathXLink(),
......@@ -1736,6 +1737,29 @@ namespace svgio
}
break;
}
case SVGTokenVisibility:
{
if(!aContent.isEmpty())
{
if(aContent.startsWith("visible"))
{
setVisibility(Visibility_visible);
}
else if(aContent.startsWith("hidden"))
{
setVisibility(Visibility_hidden);
}
else if(aContent.startsWith("collapse"))
{
setVisibility(Visibility_collapse);
}
else if(aContent.startsWith("inherit"))
{
setVisibility(Visibility_inherit);
}
}
break;
}
case SVGTokenTitle:
{
setTitle(aContent);
......
......@@ -91,6 +91,7 @@ namespace svgio
static OUString aSVGStrPatternContentUnits("patternContentUnits");
static OUString aSVGStrPatternTransform("patternTransform");
static OUString aSVGStrOpacity("opacity");
static OUString aSVGStrVisibility("visibility");
static OUString aSVGStrTitle("title");
static OUString aSVGStrDesc("desc");
......@@ -236,6 +237,7 @@ namespace svgio
aSVGTokenMapperList.insert(SVGTokenValueType(aSVGStrPatternContentUnits, SVGTokenPatternContentUnits));
aSVGTokenMapperList.insert(SVGTokenValueType(aSVGStrPatternTransform, SVGTokenPatternTransform));
aSVGTokenMapperList.insert(SVGTokenValueType(aSVGStrOpacity, SVGTokenOpacity));
aSVGTokenMapperList.insert(SVGTokenValueType(aSVGStrVisibility, SVGTokenVisibility));
aSVGTokenMapperList.insert(SVGTokenValueType(aSVGStrTitle, SVGTokenTitle));
aSVGTokenMapperList.insert(SVGTokenValueType(aSVGStrDesc, SVGTokenDesc));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment