summaryrefslogtreecommitdiff
path: root/drawinglayer/inc/texture/texture.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'drawinglayer/inc/texture/texture.hxx')
-rw-r--r--drawinglayer/inc/texture/texture.hxx73
1 files changed, 27 insertions, 46 deletions
diff --git a/drawinglayer/inc/texture/texture.hxx b/drawinglayer/inc/texture/texture.hxx
index 24e23a4b241c..aa6e79515b37 100644
--- a/drawinglayer/inc/texture/texture.hxx
+++ b/drawinglayer/inc/texture/texture.hxx
@@ -19,8 +19,6 @@
#pragma once
-#include <drawinglayer/drawinglayerdllapi.h>
-
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/range/b2drange.hxx>
#include <basegfx/color/bcolor.hxx>
@@ -45,28 +43,24 @@ namespace drawinglayer::texture
virtual void modifyOpacity(const basegfx::B2DPoint& rUV, double& rfOpacity) const;
};
- /// helper class for processing equal number of matrices and colors
- /// for texture processing
- struct B2DHomMatrixAndBColor
- {
- basegfx::B2DHomMatrix maB2DHomMatrix;
- basegfx::BColor maBColor;
- };
-
class GeoTexSvxGradient : public GeoTexSvx
{
protected:
basegfx::ODFGradientInfo maGradientInfo;
basegfx::B2DRange maDefinitionRange;
- basegfx::BColor maStart;
- basegfx::BColor maEnd;
+ sal_uInt32 mnRequestedSteps;
+ basegfx::BColorStops mnColorStops;
double mfBorder;
+ // provide a single buffer entry used for gradient texture
+ // mapping, see ::modifyBColor implementations
+ mutable basegfx::BColorStops::BColorStopRange maLastColorStopRange;
+
public:
GeoTexSvxGradient(
const basegfx::B2DRange& rDefinitionRange,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
+ sal_uInt32 nRequestedSteps,
+ const basegfx::BColorStops& rColorStops,
double fBorder);
virtual ~GeoTexSvxGradient() override;
@@ -75,8 +69,7 @@ namespace drawinglayer::texture
// virtual base methods
virtual void appendTransformationsAndColors(
- std::vector< B2DHomMatrixAndBColor >& rEntries,
- basegfx::BColor& rOuterColor) = 0;
+ const std::function<void(const basegfx::B2DHomMatrix& rMatrix, const basegfx::BColor& rColor)>& rCallback) = 0;
};
class GeoTexSvxGradientLinear final : public GeoTexSvxGradient
@@ -89,16 +82,14 @@ namespace drawinglayer::texture
GeoTexSvxGradientLinear(
const basegfx::B2DRange& rDefinitionRange,
const basegfx::B2DRange& rOutputRange,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- sal_uInt32 nSteps,
+ sal_uInt32 nRequestedSteps,
+ const basegfx::BColorStops& rColorStops,
double fBorder,
double fAngle);
virtual ~GeoTexSvxGradientLinear() override;
virtual void appendTransformationsAndColors(
- std::vector< B2DHomMatrixAndBColor >& rEntries,
- basegfx::BColor& rOuterColor) override;
+ const std::function<void(const basegfx::B2DHomMatrix& rMatrix, const basegfx::BColor& rColor)>& rCallback) override;
virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const override;
};
@@ -111,16 +102,14 @@ namespace drawinglayer::texture
GeoTexSvxGradientAxial(
const basegfx::B2DRange& rDefinitionRange,
const basegfx::B2DRange& rOutputRange,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- sal_uInt32 nSteps,
+ sal_uInt32 nRequestedSteps,
+ const basegfx::BColorStops& rColorStops,
double fBorder,
double fAngle);
virtual ~GeoTexSvxGradientAxial() override;
virtual void appendTransformationsAndColors(
- std::vector< B2DHomMatrixAndBColor >& rEntries,
- basegfx::BColor& rOuterColor) override;
+ const std::function<void(const basegfx::B2DHomMatrix& rMatrix, const basegfx::BColor& rColor)>& rCallback) override;
virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const override;
};
@@ -129,17 +118,15 @@ namespace drawinglayer::texture
public:
GeoTexSvxGradientRadial(
const basegfx::B2DRange& rDefinitionRange,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- sal_uInt32 nSteps,
+ sal_uInt32 nRequestedSteps,
+ const basegfx::BColorStops& rColorStops,
double fBorder,
double fOffsetX,
double fOffsetY);
virtual ~GeoTexSvxGradientRadial() override;
virtual void appendTransformationsAndColors(
- std::vector< B2DHomMatrixAndBColor >& rEntries,
- basegfx::BColor& rOuterColor) override;
+ const std::function<void(const basegfx::B2DHomMatrix& rMatrix, const basegfx::BColor& rColor)>& rCallback) override;
virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const override;
};
@@ -148,9 +135,8 @@ namespace drawinglayer::texture
public:
GeoTexSvxGradientElliptical(
const basegfx::B2DRange& rDefinitionRange,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- sal_uInt32 nSteps,
+ sal_uInt32 nRequestedSteps,
+ const basegfx::BColorStops& rColorStops,
double fBorder,
double fOffsetX,
double fOffsetY,
@@ -158,8 +144,7 @@ namespace drawinglayer::texture
virtual ~GeoTexSvxGradientElliptical() override;
virtual void appendTransformationsAndColors(
- std::vector< B2DHomMatrixAndBColor >& rEntries,
- basegfx::BColor& rOuterColor) override;
+ const std::function<void(const basegfx::B2DHomMatrix& rMatrix, const basegfx::BColor& rColor)>& rCallback) override;
virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const override;
};
@@ -168,9 +153,8 @@ namespace drawinglayer::texture
public:
GeoTexSvxGradientSquare(
const basegfx::B2DRange& rDefinitionRange,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- sal_uInt32 nSteps,
+ sal_uInt32 nRequestedSteps,
+ const basegfx::BColorStops& rColorStops,
double fBorder,
double fOffsetX,
double fOffsetY,
@@ -178,8 +162,7 @@ namespace drawinglayer::texture
virtual ~GeoTexSvxGradientSquare() override;
virtual void appendTransformationsAndColors(
- std::vector< B2DHomMatrixAndBColor >& rEntries,
- basegfx::BColor& rOuterColor) override;
+ const std::function<void(const basegfx::B2DHomMatrix& rMatrix, const basegfx::BColor& rColor)>& rCallback) override;
virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const override;
};
@@ -188,9 +171,8 @@ namespace drawinglayer::texture
public:
GeoTexSvxGradientRect(
const basegfx::B2DRange& rDefinitionRange,
- const basegfx::BColor& rStart,
- const basegfx::BColor& rEnd,
- sal_uInt32 nSteps,
+ sal_uInt32 nRequestedSteps,
+ const basegfx::BColorStops& rColorStops,
double fBorder,
double fOffsetX,
double fOffsetY,
@@ -198,8 +180,7 @@ namespace drawinglayer::texture
virtual ~GeoTexSvxGradientRect() override;
virtual void appendTransformationsAndColors(
- std::vector< B2DHomMatrixAndBColor >& rEntries,
- basegfx::BColor& rOuterColor) override;
+ const std::function<void(const basegfx::B2DHomMatrix& rMatrix, const basegfx::BColor& rColor)>& rCallback) override;
virtual void modifyBColor(const basegfx::B2DPoint& rUV, basegfx::BColor& rBColor, double& rfOpacity) const override;
};