Return-Path: X-Original-To: apmail-incubator-ooo-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-ooo-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 68B2F7E6D for ; Thu, 15 Dec 2011 18:04:05 +0000 (UTC) Received: (qmail 97299 invoked by uid 500); 15 Dec 2011 18:04:04 -0000 Delivered-To: apmail-incubator-ooo-commits-archive@incubator.apache.org Received: (qmail 97243 invoked by uid 500); 15 Dec 2011 18:04:04 -0000 Mailing-List: contact ooo-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ooo-dev@incubator.apache.org Delivered-To: mailing list ooo-commits@incubator.apache.org Received: (qmail 97225 invoked by uid 99); 15 Dec 2011 18:04:03 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Dec 2011 18:04:03 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 15 Dec 2011 18:03:55 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id C1BC623888FD; Thu, 15 Dec 2011 18:03:31 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: svn commit: r1214899 [1/2] - in /incubator/ooo/branches/alg/svgreplacement/main/svgio: inc/svgio/svgreader/ source/svgreader/ source/svguno/ Date: Thu, 15 Dec 2011 18:03:29 -0000 To: ooo-commits@incubator.apache.org From: alg@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111215180331.C1BC623888FD@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: alg Date: Thu Dec 15 18:03:28 2011 New Revision: 1214899 URL: http://svn.apache.org/viewvc?rev=1214899&view=rev Log: svg: unified primitive usage to sequence of primitives to make memory handling more safe; relayouted applying object transformations to fix some problems; added support for clipping of inplace Svg elements; added support for clipping outmost Svg element; added support for transformation of image element Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcharacternode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcirclenode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgclippathnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgellipsenode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svggnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgimagenode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svglinenode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgmasknode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpathnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpolynode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgrectnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextpathnode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgusenode.hxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcharacternode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcirclenode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgclippathnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgellipsenode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svggnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgimagenode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svglinenode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmarkernode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmasknode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpathnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpatternnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpolynode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgrectnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgstyleattributes.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgsvgnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgtextnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgtextpathnode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgusenode.cxx incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svguno/xsvgparser.cxx Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcharacternode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcharacternode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcharacternode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcharacternode.hxx Thu Dec 15 18:03:28 2011 @@ -154,7 +154,7 @@ namespace svgio SvgTextPosition& rSvgTextPosition, const SvgStyleAttributes& rSvgStyleAttributes) const; void decomposeTextWithStyle( - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, SvgTextPosition& rSvgTextPosition, const SvgStyleAttributes& rSvgStyleAttributes) const; @@ -166,7 +166,7 @@ namespace svgio virtual ~SvgCharacterNode(); virtual const SvgStyleAttributes* getSvgStyleAttributes() const; - virtual void decomposeText(drawinglayer::primitive2d::Primitive2DVector& rTarget, SvgTextPosition& rSvgTextPosition) const; + virtual void decomposeText(drawinglayer::primitive2d::Primitive2DSequence& rTarget, SvgTextPosition& rSvgTextPosition) const; void whiteSpaceHandling(); void addGap(); void concatenate(const rtl::OUString& rText); Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcirclenode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcirclenode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcirclenode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgcirclenode.hxx Thu Dec 15 18:03:28 2011 @@ -52,7 +52,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// Cx content, set if found in current context const SvgNumber& getCx() const { return maCx; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgclippathnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgclippathnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgclippathnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgclippathnode.hxx Thu Dec 15 18:03:28 2011 @@ -50,10 +50,10 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// apply contained clipPath to given geometry - void apply(drawinglayer::primitive2d::Primitive2DVector& rTarget) const; + void apply(drawinglayer::primitive2d::Primitive2DSequence& rTarget) const; /// clipPathUnits content SvgUnits getClipPathUnits() const { return maClipPathUnits; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgellipsenode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgellipsenode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgellipsenode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgellipsenode.hxx Thu Dec 15 18:03:28 2011 @@ -53,7 +53,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// Cx content, set if found in current context const SvgNumber& getCx() const { return maCx; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svggnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svggnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svggnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svggnode.hxx Thu Dec 15 18:03:28 2011 @@ -50,7 +50,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// transform content const basegfx::B2DHomMatrix* getTransform() const { return mpaTransform; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgimagenode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgimagenode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgimagenode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgimagenode.hxx Thu Dec 15 18:03:28 2011 @@ -60,7 +60,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// SvgAspectRatio content const SvgAspectRatio& getSvgAspectRatio() const { return maSvgAspectRatio; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svglinenode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svglinenode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svglinenode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svglinenode.hxx Thu Dec 15 18:03:28 2011 @@ -53,7 +53,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// X1 content, set if found in current context const SvgNumber& getX1() const { return maX1; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgmasknode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgmasknode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgmasknode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgmasknode.hxx Thu Dec 15 18:03:28 2011 @@ -55,10 +55,10 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// apply contained clipPath to given geometry - void apply(drawinglayer::primitive2d::Primitive2DVector& rTarget) const; + void apply(drawinglayer::primitive2d::Primitive2DSequence& rTarget) const; /// x content, set if found in current context const SvgNumber& getX() const { return maX; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgnode.hxx Thu Dec 15 18:03:28 2011 @@ -89,7 +89,7 @@ namespace svgio void parseAttributes(const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttribs); virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// basic data read access const SVGToken getType() const { return maType; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpathnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpathnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpathnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpathnode.hxx Thu Dec 15 18:03:28 2011 @@ -51,7 +51,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// path content, set if found in current context const basegfx::B2DPolyPolygon* getPath() const { return mpPolyPolygon; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpolynode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpolynode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpolynode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgpolynode.hxx Thu Dec 15 18:03:28 2011 @@ -55,7 +55,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// type read access bool isPolyline() const { return mbIsPolyline; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgrectnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgrectnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgrectnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgrectnode.hxx Thu Dec 15 18:03:28 2011 @@ -55,7 +55,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// x content, set if found in current context const SvgNumber& getX() const { return maX; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgstyleattributes.hxx Thu Dec 15 18:03:28 2011 @@ -200,26 +200,26 @@ namespace svgio /// internal helpers void add_fillGradient( const basegfx::B2DPolyPolygon& rPath, - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, const SvgGradientNode& rFillGradient, const basegfx::B2DRange& rGeoRange) const; void add_fillPatternTransform( const basegfx::B2DPolyPolygon& rPath, - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, const SvgPatternNode& rFillGradient, const basegfx::B2DRange& rGeoRange) const; void add_fillPattern( const basegfx::B2DPolyPolygon& rPath, - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, const SvgPatternNode& rFillGradient, const basegfx::B2DRange& rGeoRange) const; void add_fill( const basegfx::B2DPolyPolygon& rPath, - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, const basegfx::B2DRange& rGeoRange) const; void add_stroke( const basegfx::B2DPolyPolygon& rPath, - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, const basegfx::B2DRange& rGeoRange) const; bool prepare_singleMarker( drawinglayer::primitive2d::Primitive2DSequence& rMarkerPrimitives, @@ -227,7 +227,7 @@ namespace svgio basegfx::B2DRange& rClipRange, const SvgMarkerNode& rMarker) const; void add_singleMarker( - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, const drawinglayer::primitive2d::Primitive2DSequence& rMarkerPrimitives, const basegfx::B2DHomMatrix& rMarkerTransform, const basegfx::B2DRange& rClipRange, @@ -236,7 +236,7 @@ namespace svgio const sal_uInt32 nIndex) const; void add_markers( const basegfx::B2DPolyPolygon& rPath, - drawinglayer::primitive2d::Primitive2DVector& rTarget) const; + drawinglayer::primitive2d::Primitive2DSequence& rTarget) const; public: /// local attribute scanner @@ -244,19 +244,19 @@ namespace svgio /// helper which does the necessary with a given path void add_text( - drawinglayer::primitive2d::Primitive2DVector& rTarget, - drawinglayer::primitive2d::Primitive2DVector& rSource) const; + drawinglayer::primitive2d::Primitive2DSequence& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rSource) const; void add_path( const basegfx::B2DPolyPolygon& rPath, - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget) const; + void add_postProcess( + drawinglayer::primitive2d::Primitive2DSequence& rTarget, + 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 postprocess created primitives - void decomposePostProcess(drawinglayer::primitive2d::Primitive2DVector& rTarget) const; - /// scan helpers void readStyle(const rtl::OUString& rCandidate); const SvgStyleAttributes* getParentStyle() const; Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx Thu Dec 15 18:03:28 2011 @@ -54,7 +54,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// InfoProvider support for % values virtual const basegfx::B2DRange* getCurrentViewPort() const; Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextnode.hxx Thu Dec 15 18:03:28 2011 @@ -44,8 +44,14 @@ namespace svgio SvgTextPositions maSvgTextPositions; /// local helpers - void DecomposeChild(const SvgNode& rCandidate, drawinglayer::primitive2d::Primitive2DVector& rTarget, SvgTextPosition& rSvgTextPosition) const; - void addTextPrimitives(const SvgNode& rCandidate, drawinglayer::primitive2d::Primitive2DVector& rTarget, drawinglayer::primitive2d::Primitive2DVector& rSource) const; + void DecomposeChild( + const SvgNode& rCandidate, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, + SvgTextPosition& rSvgTextPosition) const; + void addTextPrimitives( + const SvgNode& rCandidate, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rSource) const; public: SvgTextNode( @@ -55,7 +61,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// transform content, set if found in current context const basegfx::B2DHomMatrix* getTransform() const { return mpaTransform; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextpathnode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextpathnode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextpathnode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgtextpathnode.hxx Thu Dec 15 18:03:28 2011 @@ -60,7 +60,7 @@ namespace svgio virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); void decomposePathNode( const drawinglayer::primitive2d::Primitive2DSequence& rPathContent, - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, const basegfx::B2DPoint& rTextStart) const; bool isValid() const; Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgusenode.hxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgusenode.hxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgusenode.hxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/inc/svgio/svgreader/svgusenode.hxx Thu Dec 15 18:03:28 2011 @@ -57,7 +57,7 @@ namespace svgio virtual const SvgStyleAttributes* getSvgStyleAttributes() const; virtual void parseAttribute(const rtl::OUString& rTokenName, SVGToken aSVGToken, const rtl::OUString& aContent); - virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const; + virtual void decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const; /// transform content const basegfx::B2DHomMatrix* getTransform() const { return mpaTransform; } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcharacternode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcharacternode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcharacternode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcharacternode.cxx Thu Dec 15 18:03:28 2011 @@ -460,30 +460,31 @@ namespace svgio } void SvgCharacterNode::decomposeTextWithStyle( - drawinglayer::primitive2d::Primitive2DVector& rTarget, + drawinglayer::primitive2d::Primitive2DSequence& rTarget, SvgTextPosition& rSvgTextPosition, const SvgStyleAttributes& rSvgStyleAttributes) const { - drawinglayer::primitive2d::TextSimplePortionPrimitive2D* pNew = createSimpleTextPrimitive( - rSvgTextPosition, rSvgStyleAttributes); + const drawinglayer::primitive2d::Primitive2DReference xRef( + createSimpleTextPrimitive( + rSvgTextPosition, + rSvgStyleAttributes)); - if(pNew) + if(xRef.is()) { if(!rSvgTextPosition.isRotated()) { - rTarget.push_back(pNew); + drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(rTarget, xRef); } else { // need to apply rotations to each character as given - const drawinglayer::primitive2d::Primitive2DReference xRef(pNew); localTextBreakupHelper alocalTextBreakupHelper(xRef, rSvgTextPosition); const drawinglayer::primitive2d::Primitive2DSequence aResult( alocalTextBreakupHelper.getResult(drawinglayer::primitive2d::BreakupUnit_character)); if(aResult.hasElements()) { - rTarget.push_back(new drawinglayer::primitive2d::GroupPrimitive2D(aResult)); + drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aResult); } // also consume for the implied single space @@ -514,7 +515,7 @@ namespace svgio maText += rText; } - void SvgCharacterNode::decomposeText(drawinglayer::primitive2d::Primitive2DVector& rTarget, SvgTextPosition& rSvgTextPosition) const + void SvgCharacterNode::decomposeText(drawinglayer::primitive2d::Primitive2DSequence& rTarget, SvgTextPosition& rSvgTextPosition) const { if(getText().getLength()) { Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcirclenode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcirclenode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcirclenode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgcirclenode.cxx Thu Dec 15 18:03:28 2011 @@ -119,7 +119,7 @@ namespace svgio } } - void SvgCircleNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgCircleNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); @@ -136,7 +136,14 @@ namespace svgio getCy().isSet() ? getCy().solve(*this, ycoordinate) : 0.0), fR)); - pStyle->add_path(basegfx::B2DPolyPolygon(aPath), rTarget, getTransform()); + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; + + pStyle->add_path(basegfx::B2DPolyPolygon(aPath), aNewTarget); + + if(aNewTarget.hasElements()) + { + pStyle->add_postProcess(rTarget, aNewTarget, getTransform()); + } } } } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgclippathnode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgclippathnode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgclippathnode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgclippathnode.cxx Thu Dec 15 18:03:28 2011 @@ -101,53 +101,50 @@ namespace svgio } } - void SvgClipPathNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgClipPathNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { - drawinglayer::primitive2d::Primitive2DVector aNewTarget; + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; // decompose childs SvgNode::decomposeSvgNode(aNewTarget, bReferenced); - if(!aNewTarget.empty()) + if(aNewTarget.hasElements()) { if(getTransform()) { // create embedding group element with transformation - rTarget.push_back( + const drawinglayer::primitive2d::Primitive2DReference xRef( new drawinglayer::primitive2d::TransformPrimitive2D( *getTransform(), - drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aNewTarget))); - aNewTarget.clear(); + aNewTarget)); + + drawinglayer::primitive2d::appendPrimitive2DReferenceToPrimitive2DSequence(rTarget, xRef); } else { // append to current target - rTarget.insert(rTarget.end(), aNewTarget.begin(), aNewTarget.end()); + drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aNewTarget); } } } - void SvgClipPathNode::apply(drawinglayer::primitive2d::Primitive2DVector& rTarget) const + void SvgClipPathNode::apply(drawinglayer::primitive2d::Primitive2DSequence& rContent) const { - if(rTarget.size()) + if(rContent.hasElements()) { - drawinglayer::primitive2d::Primitive2DVector aClipTarget; + drawinglayer::primitive2d::Primitive2DSequence aClipTarget; // get clipPath definition as primitives decomposeSvgNode(aClipTarget, true); - if(aClipTarget.size()) + if(aClipTarget.hasElements()) { - // put content and clip definition to primitive sequence - const drawinglayer::primitive2d::Primitive2DSequence aContent(drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(rTarget)); - drawinglayer::primitive2d::Primitive2DSequence aClip(drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aClipTarget)); - if(objectBoundingBox == getClipPathUnits()) { // clip is object-relative, embed in content transformation const basegfx::B2DRange aContentRange( drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence( - aContent, + rContent, drawinglayer::geometry::ViewInformation2D())); const drawinglayer::primitive2d::Primitive2DReference xTransform( @@ -155,26 +152,27 @@ namespace svgio basegfx::tools::createScaleTranslateB2DHomMatrix( aContentRange.getRange(), aContentRange.getMinimum()), - aClip)); + aClipTarget)); - aClip = drawinglayer::primitive2d::Primitive2DSequence(&xTransform, 1); + aClipTarget = drawinglayer::primitive2d::Primitive2DSequence(&xTransform, 1); } // redefine target. Use TransparencePrimitive2D with created clip // geometry. Using the automatically set mbIsClipPathContent at // SvgStyleAttributes the clip definition is without fill, stroke, // and strokeWidth and forced to black, thus being 100% opaque - rTarget.clear(); - rTarget.push_back( + const drawinglayer::primitive2d::Primitive2DReference xEmbedTransparence( new drawinglayer::primitive2d::TransparencePrimitive2D( - aContent, - aClip)); + rContent, + aClipTarget)); + + rContent = drawinglayer::primitive2d::Primitive2DSequence(&xEmbedTransparence, 1); } else { // An empty clipping path will completely clip away the element that had // the ‘clip-path’ property applied. (Svg spec) - rTarget.clear(); + rContent.realloc(0); } } } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgellipsenode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgellipsenode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgellipsenode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgellipsenode.cxx Thu Dec 15 18:03:28 2011 @@ -133,7 +133,7 @@ namespace svgio } } - void SvgEllipseNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgEllipseNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); @@ -151,7 +151,14 @@ namespace svgio getCy().isSet() ? getCy().solve(*this, ycoordinate) : 0.0), fRx, fRy)); - pStyle->add_path(basegfx::B2DPolyPolygon(aPath), rTarget, getTransform()); + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; + + pStyle->add_path(basegfx::B2DPolyPolygon(aPath), aNewTarget); + + if(aNewTarget.hasElements()) + { + pStyle->add_postProcess(rTarget, aNewTarget, getTransform()); + } } } } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svggnode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svggnode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svggnode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svggnode.cxx Thu Dec 15 18:03:28 2011 @@ -85,7 +85,7 @@ namespace svgio } } - void SvgGNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgGNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); @@ -95,40 +95,14 @@ namespace svgio if(fOpacity > 0.0) { - drawinglayer::primitive2d::Primitive2DVector aNewTarget; + drawinglayer::primitive2d::Primitive2DSequence aContent; // decompose childs - SvgNode::decomposeSvgNode(aNewTarget, bReferenced); + SvgNode::decomposeSvgNode(aContent, bReferenced); - if(!aNewTarget.empty()) + if(aContent.hasElements()) { - // put content to primitive sequence - drawinglayer::primitive2d::Primitive2DSequence aContent(drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aNewTarget)); - - if(basegfx::fTools::less(fOpacity, 1.0)) - { - // embed in UnifiedTransparencePrimitive2D - const drawinglayer::primitive2d::Primitive2DReference xRef( - new drawinglayer::primitive2d::UnifiedTransparencePrimitive2D( - aContent, - 1.0 - fOpacity)); - - aContent = drawinglayer::primitive2d::Primitive2DSequence(&xRef, 1); - } - - if(getTransform()) - { - // create embedding group element with transformation - const drawinglayer::primitive2d::Primitive2DReference xRef( - new drawinglayer::primitive2d::TransformPrimitive2D( - *getTransform(), - aContent)); - - aContent = drawinglayer::primitive2d::Primitive2DSequence(&xRef, 1); - } - - // append to current target - rTarget.push_back(new drawinglayer::primitive2d::GroupPrimitive2D(aContent)); + pStyle->add_postProcess(rTarget, aContent, getTransform()); } } } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgimagenode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgimagenode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgimagenode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgimagenode.cxx Thu Dec 15 18:03:28 2011 @@ -194,7 +194,7 @@ namespace svgio } } - void SvgImageNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgImageNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { // get size range and create path const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); @@ -207,8 +207,7 @@ namespace svgio if(fWidth > 0.0 && fHeight > 0.0) { BitmapEx aBitmapEx; - drawinglayer::primitive2d::Primitive2DVector aNewTarget; - drawinglayer::primitive2d::Primitive2DSequence aEmbedded; + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; // prepare Target and ViewBox for evtl. AspectRatio mappings const double fX(getX().isSet() ? getX().solve(*this, xcoordinate) : 0.0); @@ -232,7 +231,7 @@ namespace svgio String(), aStream)) { - extractFromGraphic(aGraphic, aEmbedded, aViewBox, aBitmapEx); + extractFromGraphic(aGraphic, aNewTarget, aViewBox, aBitmapEx); } } } @@ -251,7 +250,7 @@ namespace svgio aAbsUrl, aStream)) { - extractFromGraphic(aGraphic, aEmbedded, aViewBox, aBitmapEx); + extractFromGraphic(aGraphic, aNewTarget, aViewBox, aBitmapEx); } } } @@ -261,97 +260,86 @@ namespace svgio if(mpXLink) { - drawinglayer::primitive2d::Primitive2DVector aLinkedTarget; + mpXLink->decomposeSvgNode(aNewTarget, true); - mpXLink->decomposeSvgNode(aLinkedTarget, true); - - if(aLinkedTarget.size()) + if(aNewTarget.hasElements()) { - aEmbedded = drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aLinkedTarget); - - if(aEmbedded.hasElements()) - { - const drawinglayer::geometry::ViewInformation2D aViewInformation2D; - - aViewBox = drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence(aEmbedded, aViewInformation2D); - } + aViewBox = drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence( + aNewTarget, + drawinglayer::geometry::ViewInformation2D()); } } } if(!aBitmapEx.IsEmpty()) { - // create content from bitmap - aNewTarget.push_back( - new drawinglayer::primitive2d::BitmapPrimitive2D( - aBitmapEx, - basegfx::B2DHomMatrix())); + // create content from created bitmap + aNewTarget.realloc(1); + aNewTarget[0] = new drawinglayer::primitive2d::BitmapPrimitive2D( + aBitmapEx, + basegfx::B2DHomMatrix()); // fill aViewBox. No size set yet, use unit size aViewBox = basegfx::B2DRange(0.0, 0.0, 1.0, 1.0); } - else if(aEmbedded.hasElements()) - { - // add to aNewTarget as Group - aNewTarget.push_back( - new drawinglayer::primitive2d::GroupPrimitive2D( - aEmbedded)); - } - if(aNewTarget.size()) + if(aNewTarget.hasElements()) { if(aTarget.equal(aViewBox)) { // just add to rTarget - rTarget.insert(rTarget.end(), aNewTarget.begin(), aNewTarget.end()); + drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aNewTarget); } else { // create mapping const SvgAspectRatio& rRatio = getSvgAspectRatio(); - const drawinglayer::primitive2d::Primitive2DSequence aSequence(drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aNewTarget)); if(rRatio.isSet()) { // let mapping be created from SvgAspectRatio - const basegfx::B2DHomMatrix aEmbeddingTransform( - rRatio.createMapping(aTarget, aViewBox)); + const basegfx::B2DHomMatrix aEmbeddingTransform(rRatio.createMapping(aTarget, aViewBox)); - // prepare embedding in transformation - drawinglayer::primitive2d::TransformPrimitive2D* pNew = - new drawinglayer::primitive2d::TransformPrimitive2D( - aEmbeddingTransform, - aSequence); - - if(rRatio.isMeetOrSlice()) + if(!aEmbeddingTransform.isIdentity()) { - // embed in transformation - rTarget.push_back(pNew); + const drawinglayer::primitive2d::Primitive2DReference xRef( + new drawinglayer::primitive2d::TransformPrimitive2D( + aEmbeddingTransform, + aNewTarget)); + + aNewTarget = drawinglayer::primitive2d::Primitive2DSequence(&xRef, 1); } - else - { - // need to embed in MaskPrimitive2D, too - const drawinglayer::primitive2d::Primitive2DReference xRef(pNew); - rTarget.push_back( + if(!rRatio.isMeetOrSlice()) + { + // need to embed in MaskPrimitive2D to ensure clipping + const drawinglayer::primitive2d::Primitive2DReference xMask( new drawinglayer::primitive2d::MaskPrimitive2D( - basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(aTarget)), - drawinglayer::primitive2d::Primitive2DSequence(&xRef, 1))); + basegfx::B2DPolyPolygon( + basegfx::tools::createPolygonFromRect(aTarget)), + aNewTarget)); + + aNewTarget = drawinglayer::primitive2d::Primitive2DSequence(&xMask, 1); } } else { // choose default mapping - const basegfx::B2DHomMatrix aEmbeddingTransform( - rRatio.createLinearMapping( - aTarget, aViewBox)); - - // embed in transformation - rTarget.push_back( - new drawinglayer::primitive2d::TransformPrimitive2D( - aEmbeddingTransform, - aSequence)); + const basegfx::B2DHomMatrix aEmbeddingTransform(rRatio.createLinearMapping(aTarget, aViewBox)); + + if(!aEmbeddingTransform.isIdentity()) + { + const drawinglayer::primitive2d::Primitive2DReference xRef( + new drawinglayer::primitive2d::TransformPrimitive2D( + aEmbeddingTransform, + aNewTarget)); + + aNewTarget = drawinglayer::primitive2d::Primitive2DSequence(&xRef, 1); + } } + + // embed and add to rTarget, take local extra-transform into account + pStyle->add_postProcess(rTarget, aNewTarget, getTransform()); } } } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svglinenode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svglinenode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svglinenode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svglinenode.cxx Thu Dec 15 18:03:28 2011 @@ -127,7 +127,7 @@ namespace svgio } } - void SvgLineNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgLineNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); @@ -147,7 +147,14 @@ namespace svgio aPath.append(X); aPath.append(Y); - pStyle->add_path(basegfx::B2DPolyPolygon(aPath), rTarget, getTransform()); + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; + + pStyle->add_path(basegfx::B2DPolyPolygon(aPath), aNewTarget); + + if(aNewTarget.hasElements()) + { + pStyle->add_postProcess(rTarget, aNewTarget, getTransform()); + } } } } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmarkernode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmarkernode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmarkernode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmarkernode.cxx Thu Dec 15 18:03:28 2011 @@ -187,14 +187,7 @@ namespace svgio { if(!aPrimitives.hasElements()) { - drawinglayer::primitive2d::Primitive2DVector aNewTarget; - - decomposeSvgNode(aNewTarget, true); - - if(aNewTarget.size()) - { - const_cast< SvgMarkerNode* >(this)->aPrimitives = drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aNewTarget); - } + decomposeSvgNode(const_cast< SvgMarkerNode* >(this)->aPrimitives, true); } return aPrimitives; Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmasknode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmasknode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmasknode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgmasknode.cxx Thu Dec 15 18:03:28 2011 @@ -171,51 +171,46 @@ namespace svgio } } - void SvgMaskNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgMaskNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { - drawinglayer::primitive2d::Primitive2DVector aNewTarget; + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; // decompose childs SvgNode::decomposeSvgNode(aNewTarget, bReferenced); - if(!aNewTarget.empty()) + if(aNewTarget.hasElements()) { if(getTransform()) { // create embedding group element with transformation - rTarget.push_back( + const drawinglayer::primitive2d::Primitive2DReference xRef( new drawinglayer::primitive2d::TransformPrimitive2D( *getTransform(), - Primitive2DVectorToPrimitive2DSequence(aNewTarget))); - aNewTarget.clear(); - } - else - { - // append to current target - rTarget.insert(rTarget.end(), aNewTarget.begin(), aNewTarget.end()); + aNewTarget)); + + aNewTarget = drawinglayer::primitive2d::Primitive2DSequence(&xRef, 1); } + + // append to current target + drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aNewTarget); } } - void SvgMaskNode::apply(drawinglayer::primitive2d::Primitive2DVector& rTarget) const + void SvgMaskNode::apply(drawinglayer::primitive2d::Primitive2DSequence& rTarget) const { - if(rTarget.size()) + if(rTarget.hasElements()) { - drawinglayer::primitive2d::Primitive2DVector aMaskTarget; + drawinglayer::primitive2d::Primitive2DSequence aMaskTarget; // get mask definition as primitives decomposeSvgNode(aMaskTarget, true); - if(aMaskTarget.size()) + if(aMaskTarget.hasElements()) { - // put content and clip definition to primitive sequence - const drawinglayer::primitive2d::Primitive2DSequence aContent(drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(rTarget)); - drawinglayer::primitive2d::Primitive2DSequence aMask(drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aMaskTarget)); - // get range of content to be masked const basegfx::B2DRange aContentRange( drawinglayer::primitive2d::getB2DRangeFromPrimitive2DSequence( - aContent, + rTarget, drawinglayer::geometry::ViewInformation2D())); const double fContentWidth(aContentRange.getWidth()); const double fContentHeight(aContentRange.getHeight()); @@ -259,9 +254,9 @@ namespace svgio basegfx::tools::createScaleTranslateB2DHomMatrix( aContentRange.getRange(), aContentRange.getMinimum()), - aMask)); + aMaskTarget)); - aMask = drawinglayer::primitive2d::Primitive2DSequence(&xTransform, 1); + aMaskTarget = drawinglayer::primitive2d::Primitive2DSequence(&xTransform, 1); } // embed content to a ModifiedColorPrimitive2D since the definitions @@ -269,43 +264,48 @@ namespace svgio { const drawinglayer::primitive2d::Primitive2DReference xInverseMask( new drawinglayer::primitive2d::ModifiedColorPrimitive2D( - aMask, + aMaskTarget, basegfx::BColorModifier( basegfx::BColor(0.0, 0.0, 0.0), 0.5, basegfx::BCOLORMODIFYMODE_LUMINANCE_TO_ALPHA))); - aMask = drawinglayer::primitive2d::Primitive2DSequence(&xInverseMask, 1); + aMaskTarget = drawinglayer::primitive2d::Primitive2DSequence(&xInverseMask, 1); } // prepare new content - drawinglayer::primitive2d::BasePrimitive2D* pNewContent = new drawinglayer::primitive2d::TransparencePrimitive2D( - aContent, - aMask); + drawinglayer::primitive2d::Primitive2DReference xNewContent( + new drawinglayer::primitive2d::TransparencePrimitive2D( + rTarget, + aMaskTarget)); // output up to now is defined by aContentRange and mask is oriented // relative to it. It is possible that aOffscreenBufferRange defines // a smaller area. In that case, embed to a mask primitive if(!aOffscreenBufferRange.isInside(aContentRange)) { - const drawinglayer::primitive2d::Primitive2DReference xContent(pNewContent); - - pNewContent = new drawinglayer::primitive2d::MaskPrimitive2D( - basegfx::B2DPolyPolygon(basegfx::tools::createPolygonFromRect(aOffscreenBufferRange)), - drawinglayer::primitive2d::Primitive2DSequence(&xContent, 1)); + xNewContent = new drawinglayer::primitive2d::MaskPrimitive2D( + basegfx::B2DPolyPolygon( + basegfx::tools::createPolygonFromRect( + aOffscreenBufferRange)), + drawinglayer::primitive2d::Primitive2DSequence(&xNewContent, 1)); } // redefine target. Use TransparencePrimitive2D with created mask // geometry - rTarget.clear(); - rTarget.push_back(pNewContent); + rTarget = drawinglayer::primitive2d::Primitive2DSequence(&xNewContent, 1); + } + else + { + // content is geometrically empty + rTarget.realloc(0); } } else { // An empty clipping path will completely clip away the element that had // the ‘clip-path’ property applied. (Svg spec) - rTarget.clear(); + rTarget.realloc(0); } } } Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgnode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgnode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgnode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgnode.cxx Thu Dec 15 18:03:28 2011 @@ -134,7 +134,7 @@ namespace svgio } } - void SvgNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { if(!bReferenced) { @@ -171,22 +171,13 @@ namespace svgio if(pCandidate) { - drawinglayer::primitive2d::Primitive2DVector aNewTarget; + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; pCandidate->decomposeSvgNode(aNewTarget, bReferenced); - if(aNewTarget.size()) + if(aNewTarget.hasElements()) { - const SvgStyleAttributes* pAttributes = pCandidate->getSvgStyleAttributes(); - - if(pAttributes) - { - // check for global attributes which need to be applied, - // e.g. ClipPath or Mask - pAttributes->decomposePostProcess(aNewTarget); - } - - rTarget.insert(rTarget.end(), aNewTarget.begin(), aNewTarget.end()); + drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(rTarget, aNewTarget); } } else Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpathnode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpathnode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpathnode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpathnode.cxx Thu Dec 15 18:03:28 2011 @@ -108,14 +108,21 @@ namespace svgio } } - void SvgPathNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgPathNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { // fill and/or stroke needed, also a path const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); if(pStyle && getPath()) { - pStyle->add_path(*getPath(), rTarget, getTransform()); + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; + + pStyle->add_path(*getPath(), aNewTarget); + + if(aNewTarget.hasElements()) + { + pStyle->add_postProcess(rTarget, aNewTarget, getTransform()); + } } } } // end of namespace svgreader Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpatternnode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpatternnode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpatternnode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpatternnode.cxx Thu Dec 15 18:03:28 2011 @@ -274,14 +274,7 @@ namespace svgio { if(!aPrimitives.hasElements()) { - drawinglayer::primitive2d::Primitive2DVector aNewTarget; - - decomposeSvgNode(aNewTarget, true); - - if(aNewTarget.size()) - { - const_cast< SvgPatternNode* >(this)->aPrimitives = drawinglayer::primitive2d::Primitive2DVectorToPrimitive2DSequence(aNewTarget); - } + decomposeSvgNode(const_cast< SvgPatternNode* >(this)->aPrimitives, true); } if(!aPrimitives.hasElements() && maXLink.getLength()) Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpolynode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpolynode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpolynode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgpolynode.cxx Thu Dec 15 18:03:28 2011 @@ -105,13 +105,20 @@ namespace svgio } } - void SvgPolyNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgPolyNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); if(pStyle && getPolygon()) { - pStyle->add_path(basegfx::B2DPolyPolygon(*getPolygon()), rTarget, getTransform()); + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; + + pStyle->add_path(basegfx::B2DPolyPolygon(*getPolygon()), aNewTarget); + + if(aNewTarget.hasElements()) + { + pStyle->add_postProcess(rTarget, aNewTarget, getTransform()); + } } } } // end of namespace svgreader Modified: incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgrectnode.cxx URL: http://svn.apache.org/viewvc/incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgrectnode.cxx?rev=1214899&r1=1214898&r2=1214899&view=diff ============================================================================== --- incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgrectnode.cxx (original) +++ incubator/ooo/branches/alg/svgreplacement/main/svgio/source/svgreader/svgrectnode.cxx Thu Dec 15 18:03:28 2011 @@ -161,7 +161,7 @@ namespace svgio } } - void SvgRectNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DVector& rTarget, bool bReferenced) const + void SvgRectNode::decomposeSvgNode(drawinglayer::primitive2d::Primitive2DSequence& rTarget, bool bReferenced) const { // get size range and create path const SvgStyleAttributes* pStyle = getSvgStyleAttributes(); @@ -208,7 +208,14 @@ namespace svgio aPath = basegfx::tools::createPolygonFromRect(aRange); } - pStyle->add_path(basegfx::B2DPolyPolygon(aPath), rTarget, getTransform()); + drawinglayer::primitive2d::Primitive2DSequence aNewTarget; + + pStyle->add_path(basegfx::B2DPolyPolygon(aPath), aNewTarget); + + if(aNewTarget.hasElements()) + { + pStyle->add_postProcess(rTarget, aNewTarget, getTransform()); + } } } }