From d45ddb6d03846b0c576eeee062342962aa131bc0 Mon Sep 17 00:00:00 2001 From: Armin Weiss Date: Fri, 27 Jul 2007 08:04:00 +0000 Subject: #i39532# --- .../processor2d/vclmetafileprocessor2d.hxx | 120 +++++++++++++++++++++ .../processor2d/vclpixelprocessor2d.hxx | 74 +++++++++++++ .../drawinglayer/processor2d/vclprocessor2d.hxx | 64 ++--------- 3 files changed, 201 insertions(+), 57 deletions(-) create mode 100644 drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx create mode 100644 drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx (limited to 'drawinglayer/inc/drawinglayer/processor2d') diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx new file mode 100644 index 000000000000..bc66696beee1 --- /dev/null +++ b/drawinglayer/inc/drawinglayer/processor2d/vclmetafileprocessor2d.hxx @@ -0,0 +1,120 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vclmetafileprocessor2d.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: aw $ $Date: 2007-07-27 09:03:17 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLMETAFILEPROCESSOR2D_HXX +#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLMETAFILEPROCESSOR2D_HXX + +#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPROCESSOR2D_HXX +#include +#endif + +////////////////////////////////////////////////////////////////////////////// +// predefines +class GDIMetaFile; +class Rectangle; +class Gradient; +class SvtGraphicFill; +class SvtGraphicStroke; + +namespace drawinglayer { namespace attribute { + class FillGradientAttribute; + class StrokeAttribute; + class StrokeArrowAttribute; +}} + +namespace basegfx { + class BColor; +} + +////////////////////////////////////////////////////////////////////////////// + +namespace drawinglayer +{ + namespace processor2d + { + class VclMetafileProcessor2D : public VclProcessor2D + { + private: + // local helper(s) + Rectangle impDumpToMetaFile(const primitive2d::Primitive2DSequence& rContent, GDIMetaFile& o_rContentMetafile); + void impConvertFillGradientAttributeToVCLGradient(Gradient& o_rVCLGradient, const attribute::FillGradientAttribute& rFiGrAtt); + void impStartSvtGraphicFill(SvtGraphicFill* pSvtGraphicFill); + void impEndSvtGraphicFill(SvtGraphicFill* pSvtGraphicFill); + SvtGraphicStroke* impTryToCreateSvtGraphicStroke( + const basegfx::B2DPolygon& rB2DPolygon, + const basegfx::BColor* pColor, + const attribute::StrokeAttribute* pStrokeAttribute, + const attribute::StrokeArrowAttribute* pStart, + const attribute::StrokeArrowAttribute* pEnd); + void impStartSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke); + void impEndSvtGraphicStroke(SvtGraphicStroke* pSvtGraphicStroke); + + // the current clipping PolyPolygon from MaskPrimitive2D + basegfx::B2DPolyPolygon maClipPolyPolygon; + + // the target MetaFile + GDIMetaFile& mrMetaFile; + + // do not allow embedding SvtGraphicFills into each other, + // use a counter to prevent that + sal_uInt32 mnSvtGraphicFillCount; + + // same for SvtGraphicStroke + sal_uInt32 mnSvtGraphicStrokeCount; + + // hold the last unified transparence value to have ot handy + // on SvtGraphicStroke creation + double mfCurrentUnifiedTransparence; + + protected: + // the local processor for BasePrinitive2D-Implementation based primitives, + // called from the common process()-implementation + virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate); + + public: + // constructor/destructor + VclMetafileProcessor2D( + const geometry::ViewInformation2D& rViewInformation, + OutputDevice& rOutDev); + virtual ~VclMetafileProcessor2D(); + }; + } // end of namespace processor2d +} // end of namespace drawinglayer + +////////////////////////////////////////////////////////////////////////////// + +#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLMETAFILEPROCESSOR2D_HXX + +// eof diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx new file mode 100644 index 000000000000..b6c289656905 --- /dev/null +++ b/drawinglayer/inc/drawinglayer/processor2d/vclpixelprocessor2d.hxx @@ -0,0 +1,74 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: vclpixelprocessor2d.hxx,v $ + * + * $Revision: 1.1 $ + * + * last change: $Author: aw $ $Date: 2007-07-27 09:03:17 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPIXELPROCESSOR2D_HXX +#define INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPIXELPROCESSOR2D_HXX + +#ifndef INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPROCESSOR2D_HXX +#include +#endif + +////////////////////////////////////////////////////////////////////////////// +// predefines + +////////////////////////////////////////////////////////////////////////////// + +namespace drawinglayer +{ + namespace processor2d + { + class VclPixelProcessor2D : public VclProcessor2D + { + private: + protected: + // the local processor for BasePrinitive2D-Implementation based primitives, + // called from the common process()-implementation + virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate); + + public: + // constructor/destructor + VclPixelProcessor2D( + const geometry::ViewInformation2D& rViewInformation, + OutputDevice& rOutDev); + virtual ~VclPixelProcessor2D(); + }; + } // end of namespace processor2d +} // end of namespace drawinglayer + +////////////////////////////////////////////////////////////////////////////// + +#endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPIXELPROCESSOR2D_HXX + +// eof diff --git a/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx b/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx index 27824ee88722..e1355140e37b 100644 --- a/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx +++ b/drawinglayer/inc/drawinglayer/processor2d/vclprocessor2d.hxx @@ -4,9 +4,9 @@ * * $RCSfile: vclprocessor2d.hxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: aw $ $Date: 2007-07-10 11:28:08 $ + * last change: $Author: aw $ $Date: 2007-07-27 09:03:17 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -56,10 +56,6 @@ // predefines class OutputDevice; -namespace basegfx { - class BColor; -} - namespace drawinglayer { namespace primitive2d { class TextSimplePortionPrimitive2D; class PolygonHairlinePrimitive2D; @@ -72,6 +68,7 @@ namespace drawinglayer { namespace primitive2d { class AlphaPrimitive2D; class TransformPrimitive2D; class MarkerArrayPrimitive2D; + class PointArrayPrimitive2D; class ModifiedColorPrimitive2D; }} @@ -94,7 +91,8 @@ namespace drawinglayer basegfx::B2DHomMatrix maCurrentTransformation; ////////////////////////////////////////////////////////////////////////////// - // rendering support + // common VCL rendering support + void RenderTextSimpleOrDecoratedPortionPrimitive2D(const primitive2d::TextSimplePortionPrimitive2D& rTextCandidate); void RenderPolygonHairlinePrimitive2D(const primitive2d::PolygonHairlinePrimitive2D& rPolygonCandidate); void RenderBitmapPrimitive2D(const primitive2d::BitmapPrimitive2D& rBitmapCandidate); @@ -102,11 +100,12 @@ namespace drawinglayer void RenderPolyPolygonGradientPrimitive2D(const primitive2d::PolyPolygonGradientPrimitive2D& rPolygonCandidate); void RenderPolyPolygonColorPrimitive2D(const primitive2d::PolyPolygonColorPrimitive2D& rPolygonCandidate); void RenderMetafilePrimitive2D(const primitive2d::MetafilePrimitive2D& rPolygonCandidate); - void RenderMaskPrimitive2D(const primitive2d::MaskPrimitive2D& rMaskCandidate); + void RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive2D& rMaskCandidate); void RenderModifiedColorPrimitive2D(const primitive2d::ModifiedColorPrimitive2D& rModifiedCandidate); void RenderAlphaPrimitive2D(const primitive2d::AlphaPrimitive2D& rTransCandidate); void RenderTransformPrimitive2D(const primitive2d::TransformPrimitive2D& rTransformCandidate); void RenderMarkerArrayPrimitive2D(const primitive2d::MarkerArrayPrimitive2D& rMarkerArrayCandidate); + void RenderPointArrayPrimitive2D(const primitive2d::PointArrayPrimitive2D& rPointArrayCandidate); // as tooling, the process() implementation takes over API handling and calls this // virtual render method when the primitive implementation is BasePrimitive2D-based. @@ -130,55 +129,6 @@ namespace drawinglayer ////////////////////////////////////////////////////////////////////////////// -namespace drawinglayer -{ - namespace processor2d - { - class VclMetafileProcessor2D : public VclProcessor2D - { - protected: - // the local processor for BasePrinitive2D-Implementation based primitives, - // called from the common process()-implementation - virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate); - - public: - // constructor/destructor - VclMetafileProcessor2D( - const geometry::ViewInformation2D& rViewInformation, - OutputDevice& rOutDev); - virtual ~VclMetafileProcessor2D(); - }; - } // end of namespace processor2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// - -namespace drawinglayer -{ - namespace processor2d - { - class VclPixelProcessor2D : public VclProcessor2D - { - protected: - // the local processor for BasePrinitive2D-Implementation based primitives, - // called from the common process()-implementation - virtual void processBasePrimitive2D(const primitive2d::BasePrimitive2D& rCandidate); - - public: - // constructor/destructor - VclPixelProcessor2D( - const geometry::ViewInformation2D& rViewInformation, - OutputDevice& rOutDev); - virtual ~VclPixelProcessor2D(); - - // overloaded here to reset the MapMode at the target OutDev - virtual void process(const primitive2d::Primitive2DSequence& rSource); - }; - } // end of namespace processor2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// - #endif // INCLUDED_DRAWINGLAYER_PROCESSOR2D_VCLPROCESSOR2D_HXX // eof -- cgit v1.2.3