diff options
Diffstat (limited to 'drawinglayer/inc/drawinglayer/primitive2d/svggradientprimitive2d.hxx')
-rw-r--r-- | drawinglayer/inc/drawinglayer/primitive2d/svggradientprimitive2d.hxx | 413 |
1 files changed, 0 insertions, 413 deletions
diff --git a/drawinglayer/inc/drawinglayer/primitive2d/svggradientprimitive2d.hxx b/drawinglayer/inc/drawinglayer/primitive2d/svggradientprimitive2d.hxx deleted file mode 100644 index 0e7dab93ff14..000000000000 --- a/drawinglayer/inc/drawinglayer/primitive2d/svggradientprimitive2d.hxx +++ /dev/null @@ -1,413 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SVGGRADIENTPRIMITIVE2D_HXX -#define INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SVGGRADIENTPRIMITIVE2D_HXX - -#include <drawinglayer/drawinglayerdllapi.h> -#include <drawinglayer/primitive2d/baseprimitive2d.hxx> -#include <basegfx/color/bcolor.hxx> -#include <basegfx/polygon/b2dpolypolygon.hxx> -#include <basegfx/matrix/b2dhommatrix.hxx> -#include <drawinglayer/primitive2d/primitivetools2d.hxx> -#include <vector> - -////////////////////////////////////////////////////////////////////////////// -// SvgGradientEntry class - -namespace drawinglayer -{ - namespace primitive2d - { - /// a single GradientStop defining a color and opacity at a distance - class SvgGradientEntry - { - private: - double mfOffset; - basegfx::BColor maColor; - double mfOpacity; - - public: - SvgGradientEntry(double fOffset, const basegfx::BColor& rColor = basegfx::BColor(0.0, 0.0, 0.0), double fOpacity = 1.0) - : mfOffset(fOffset), - maColor(rColor), - mfOpacity(fOpacity) - { - } - - double getOffset() const { return mfOffset; } - const basegfx::BColor& getColor() const { return maColor; } - double getOpacity() const { return mfOpacity; } - - bool operator==(const SvgGradientEntry& rCompare) const - { - return (getOffset() == rCompare.getOffset() - && getColor() == getColor() - && getOpacity() == getOpacity()); - } - - bool operator<(const SvgGradientEntry& rCompare) const - { - return getOffset() < rCompare.getOffset(); - } - }; - - typedef ::std::vector< SvgGradientEntry > SvgGradientEntryVector; - - } // end of namespace primitive2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// -// SvgGradientHelper class - -namespace drawinglayer -{ - namespace primitive2d - { - enum SpreadMethod - { - Spread_pad = 0, - Spread_reflect, - Spread_repeat - }; - - /* helper for linear and radial gradient, both get derived from this - to share common definitions and functionality - **/ - class SvgGradientHelper - { - private: - /// geometric definition, the geometry to be filled - basegfx::B2DPolyPolygon maPolyPolygon; - - /// the gradient definition - SvgGradientEntryVector maGradientEntries; - - /// start and/or center point - basegfx::B2DPoint maStart; - - /// how to spread - SpreadMethod maSpreadMethod; - - /// bitfield - bool mbPreconditionsChecked : 1; - bool mbCreatesContent : 1; - bool mbSingleEntry : 1; - bool mbFullyOpaque : 1; - - // true = interpret in unit coordinate system -> object aspect ratio will scale result - // false = interpret in object coordinate system -> object aspect ratio will not scale result - // (related to SVG's gradientUnits (userSpaceOnUse|objectBoundingBox) - bool mbUseUnitCoordinates : 1; - - protected: - /// local helpers - Primitive2DSequence createSingleGradientEntryFill() const; - virtual void createAtom( - Primitive2DVector& rTargetColor, - Primitive2DVector& rTargetOpacity, - const SvgGradientEntry& rFrom, - const SvgGradientEntry& rTo, - sal_Int32 nOffset) const = 0; - double createRun( - Primitive2DVector& rTargetColor, - Primitive2DVector& rTargetOpacity, - double fPos, - double fMax, - const SvgGradientEntryVector& rEntries, - sal_Int32 nOffset) const; - virtual void checkPreconditions(); - Primitive2DSequence createResult( - const Primitive2DVector& rTargetColor, - const Primitive2DVector& rTargetOpacity, - const basegfx::B2DHomMatrix& rUnitGradientToObject, - bool bInvert = false) const; - bool getCreatesContent() const { return mbCreatesContent; } - bool getSingleEntry() const { return mbSingleEntry; } - void setSingleEntry() { mbSingleEntry = true; } - bool getPreconditionsChecked() const { return mbPreconditionsChecked; } - bool getFullyOpaque() const { return mbFullyOpaque; } - - public: - /// constructor - SvgGradientHelper( - const basegfx::B2DPolyPolygon& rPolyPolygon, - const SvgGradientEntryVector& rGradientEntries, - const basegfx::B2DPoint& rStart, - bool bUseUnitCoordinates, - SpreadMethod aSpreadMethod = Spread_pad); - virtual ~SvgGradientHelper() {} - - /// data read access - const basegfx::B2DPolyPolygon& getPolyPolygon() const { return maPolyPolygon; } - const SvgGradientEntryVector& getGradientEntries() const { return maGradientEntries; } - const basegfx::B2DPoint& getStart() const { return maStart; } - bool getUseUnitCoordinates() const { return mbUseUnitCoordinates; } - SpreadMethod getSpreadMethod() const { return maSpreadMethod; } - - /// compare operator - bool equalTo(const SvgGradientHelper& rSvgGradientHelper) const; - }; - } // end of namespace primitive2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// -// SvgLinearGradientPrimitive2D class - -namespace drawinglayer -{ - namespace primitive2d - { - /// the basic linear gradient primitive - class DRAWINGLAYER_DLLPUBLIC SvgLinearGradientPrimitive2D : public BufferedDecompositionPrimitive2D, public SvgGradientHelper - { - private: - /// the end point for linear gradient - basegfx::B2DPoint maEnd; - - protected: - /// local helpers - virtual void createAtom( - Primitive2DVector& rTargetColor, - Primitive2DVector& rTargetOpacity, - const SvgGradientEntry& rFrom, - const SvgGradientEntry& rTo, - sal_Int32 nOffset) const; - virtual void checkPreconditions(); - - /// local decomposition. - virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const; - - public: - /// constructor - SvgLinearGradientPrimitive2D( - const basegfx::B2DPolyPolygon& rPolyPolygon, - const SvgGradientEntryVector& rGradientEntries, - const basegfx::B2DPoint& rStart, - const basegfx::B2DPoint& rEnd, - bool bUseUnitCoordinates, - SpreadMethod aSpreadMethod = Spread_pad); - virtual ~SvgLinearGradientPrimitive2D(); - - /// data read access - const basegfx::B2DPoint& getEnd() const { return maEnd; } - - /// compare operator - virtual bool operator==(const BasePrimitive2D& rPrimitive) const; - - /// get range - virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const; - - /// provide unique ID - DeclPrimitrive2DIDBlock() - }; - } // end of namespace primitive2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// -// SvgRadialGradientPrimitive2D class - -namespace drawinglayer -{ - namespace primitive2d - { - /// the basic radial gradient primitive - class DRAWINGLAYER_DLLPUBLIC SvgRadialGradientPrimitive2D : public BufferedDecompositionPrimitive2D, public SvgGradientHelper - { - private: - /// the geometric definition - double mfRadius; - - /// Focal only used when focal is set at all, see constructors - basegfx::B2DPoint maFocal; - basegfx::B2DVector maFocalVector; - double maFocalLength; - - // internal helper for case Spread_reflect - SvgGradientEntryVector maMirroredGradientEntries; - - /// bitfield - bool mbFocalSet : 1; - - /// local helpers - const SvgGradientEntryVector& getMirroredGradientEntries() const; - void createMirroredGradientEntries(); - - protected: - /// local helpers - virtual void createAtom( - Primitive2DVector& rTargetColor, - Primitive2DVector& rTargetOpacity, - const SvgGradientEntry& rFrom, - const SvgGradientEntry& rTo, - sal_Int32 nOffset) const; - virtual void checkPreconditions(); - - /// local decomposition. - virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const; - - public: - /// constructor - SvgRadialGradientPrimitive2D( - const basegfx::B2DPolyPolygon& rPolyPolygon, - const SvgGradientEntryVector& rGradientEntries, - const basegfx::B2DPoint& rStart, - double fRadius, - bool bUseUnitCoordinates, - SpreadMethod aSpreadMethod = Spread_pad, - const basegfx::B2DPoint* pFocal = 0); - virtual ~SvgRadialGradientPrimitive2D(); - - /// data read access - double getRadius() const { return mfRadius; } - const basegfx::B2DPoint& getFocal() const { return maFocal; } - bool isFocalSet() const { return mbFocalSet; } - - /// compare operator - virtual bool operator==(const BasePrimitive2D& rPrimitive) const; - - /// get range - virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D& rViewInformation) const; - - /// provide unique ID - DeclPrimitrive2DIDBlock() - }; - } // end of namespace primitive2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// -// SvgLinearAtomPrimitive2D class - -namespace drawinglayer -{ - namespace primitive2d - { - /* basic primitive for a single linear GradientRun in unit coordiantes. - It's derived from DiscreteMetricDependentPrimitive2D to allow view-dependent - decompositions allowing reduced color steps - **/ - class DRAWINGLAYER_DLLPUBLIC SvgLinearAtomPrimitive2D : public DiscreteMetricDependentPrimitive2D - { - private: - /// the geometric definition in unit coordiantes - basegfx::BColor maColorA; - basegfx::BColor maColorB; - double mfOffsetA; - double mfOffsetB; - - protected: - - /// local decomposition. - virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const; - - public: - /// constructor - SvgLinearAtomPrimitive2D( - const basegfx::BColor& aColorA, double fOffsetA, - const basegfx::BColor& aColorB, double fOffsetB); - - /// data read access - const basegfx::BColor& getColorA() const { return maColorA; } - const basegfx::BColor& getColorB() const { return maColorB; } - double getOffsetA() const { return mfOffsetA; } - double getOffsetB() const { return mfOffsetB; } - - /// compare operator - virtual bool operator==(const BasePrimitive2D& rPrimitive) const; - - /// provide unique ID - DeclPrimitrive2DIDBlock() - }; - } // end of namespace primitive2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// -// SvgRadialAtomPrimitive2D class - -namespace drawinglayer -{ - namespace primitive2d - { - /* basic primitive for a single radial GradientRun in unit coordiantes. - It's derived from DiscreteMetricDependentPrimitive2D to allow view-dependent - decompositions allowing reduced color steps - **/ - class DRAWINGLAYER_DLLPUBLIC SvgRadialAtomPrimitive2D : public DiscreteMetricDependentPrimitive2D - { - private: - /// the geometric definition in unit coordiantes - basegfx::BColor maColorA; - basegfx::BColor maColorB; - double mfScaleA; - double mfScaleB; - - // helper to hold translation vectors when given (for focal) - struct VectorPair - { - basegfx::B2DVector maTranslateA; - basegfx::B2DVector maTranslateB; - - VectorPair(const basegfx::B2DVector& rTranslateA, const basegfx::B2DVector& rTranslateB) - : maTranslateA(rTranslateA), - maTranslateB(rTranslateB) - { - } - }; - - /// Only used when focal is set - VectorPair* mpTranslate; - - protected: - - /// local decomposition. - virtual Primitive2DSequence create2DDecomposition(const geometry::ViewInformation2D& rViewInformation) const; - - public: - /// constructor - SvgRadialAtomPrimitive2D( - const basegfx::BColor& aColorA, double fScaleA, const basegfx::B2DVector& rTranslateA, - const basegfx::BColor& aColorB, double fScaleB, const basegfx::B2DVector& rTranslateB); - SvgRadialAtomPrimitive2D( - const basegfx::BColor& aColorA, double fScaleA, - const basegfx::BColor& aColorB, double fScaleB); - virtual ~SvgRadialAtomPrimitive2D(); - - /// data read access - const basegfx::BColor& getColorA() const { return maColorA; } - const basegfx::BColor& getColorB() const { return maColorB; } - double getScaleA() const { return mfScaleA; } - double getScaleB() const { return mfScaleB; } - bool isTranslateSet() const { return (0 != mpTranslate); } - basegfx::B2DVector getTranslateA() const { if(mpTranslate) return mpTranslate->maTranslateA; return basegfx::B2DVector(); } - basegfx::B2DVector getTranslateB() const { if(mpTranslate) return mpTranslate->maTranslateB; return basegfx::B2DVector(); } - - /// compare operator - virtual bool operator==(const BasePrimitive2D& rPrimitive) const; - - /// provide unique ID - DeclPrimitrive2DIDBlock() - }; - } // end of namespace primitive2d -} // end of namespace drawinglayer - -////////////////////////////////////////////////////////////////////////////// - -#endif //INCLUDED_DRAWINGLAYER_PRIMITIVE2D_SVGGRADIENTPRIMITIVE2D_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |