41 , maGlowColor(rGlowColor)
42 , mfGlowRadius(fRadius)
43 , mfLastDiscreteGlowRadius(0.0)
44 , maLastClippedRange()
50 if (BufferedDecompositionGroupPrimitive2D::operator==(rPrimitive))
89 rClippedRange = rGlowRange;
119 if (ceil(rDiscreteGlowSize.
getX()) < 2.0 || ceil(rDiscreteGlowSize.
getY()) < 2.0)
123 rfDiscreteGlowRadius = ceil(
126 if (rfDiscreteGlowRadius < 1.0)
138 double fDiscreteGlowRadius(0.0);
142 fDiscreteGlowRadius, rViewInformation))
148 const sal_uInt32 nDiscreteGlowWidth(ceil(aDiscreteGlowSize.
getX()));
149 const sal_uInt32 nDiscreteGlowHeight(ceil(aDiscreteGlowSize.
getY()));
156 nDiscreteGlowHeight / aGlowRange.
getHeight());
169 const sal_uInt32 nDiscreteClippedWidth(ceil(aDiscreteClippedSize.
getX()));
170 const sal_uInt32 nDiscreteClippedHeight(ceil(aDiscreteClippedSize.
getY()));
172 const sal_uInt32 nMaximumQuadraticPixels(250000);
177 std::move(xEmbedSeq), aViewInformation2D, nDiscreteClippedWidth, nDiscreteClippedHeight,
178 nMaximumQuadraticPixels));
184 if (rBitmapExSizePixel.
Width() > 0 && rBitmapExSizePixel.
Height() > 0)
190 if (
static_cast<sal_uInt32
>(rBitmapExSizePixel.
Width()) != nDiscreteClippedWidth
191 ||
static_cast<sal_uInt32
>(rBitmapExSizePixel.
Height()) != nDiscreteClippedHeight)
195 const double fScaleX(
static_cast<double>(rBitmapExSizePixel.
Width())
196 /
static_cast<double>(nDiscreteClippedWidth));
197 const double fScaleY(
static_cast<double>(rBitmapExSizePixel.
Height())
198 /
static_cast<double>(nDiscreteClippedHeight));
200 fScale = (fScaleX + fScaleY) * 0.5;
209 fDiscreteGlowRadius * fScale / 2.0,
218 static bool bDoSaveForVisualControl(
false);
219 if (bDoSaveForVisualControl)
222 static const OUString sDumpPath(
223 OUString::createFromAscii(std::getenv(
"VCL_DUMP_BMP_PATH")));
224 if (!sDumpPath.isEmpty())
227 StreamMode::WRITE | StreamMode::TRUNC);
256 double fDiscreteGlowRadius(0.0);
260 fDiscreteGlowRadius, rViewInformation))
285 aLastClippedRangeAndHairline.
grow(fHalfPixel);
288 if (!aLastClippedRangeAndHairline.
isInside(aClippedRange))
312 const double fRelativeChange(fDiff / fLen);
316 bFree = fRelativeChange >= 0.15;
Size GetSizePixel() const
bool Erase(const Color &rFillColor)
constexpr tools::Long Height() const
constexpr tools::Long Width() const
void scale(double fX, double fY)
BASEGFX_DLLPUBLIC void transform(const B2DHomMatrix &rMatrix)
B2DVector getRange() const
void intersect(const Range2D &rRange)
bool isInside(const Tuple2D< TYPE > &rTuple) const
BufferedDecompositionGroupPrimitive2D class.
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
identical to BufferedDecompositionPrimitive2D, see there please
const Primitive2DContainer & getBuffered2DDecomposition() const
identical to BufferedDecompositionPrimitive2D, see there please
void setBuffered2DDecomposition(Primitive2DContainer &&rNew)
virtual void create2DDecomposition(Primitive2DContainer &rContainer, const geometry::ViewInformation2D &rViewInformation) const override
method which is to be used to implement the local decomposition of a 2D primitive.
GlowPrimitive2D(const Color &rGlowColor, double fRadius, Primitive2DContainer &&rChildren)
constructor
double mfLastDiscreteGlowRadius
last used DiscreteGlowRadius and ClippedRange
basegfx::B2DRange maLastClippedRange
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
compare operator
double getGlowRadius() const
const Color & getGlowColor() const
data read access
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
The default implementation will return an empty sequence.
virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &rViewInformation) const override
get range
bool prepareValuesAndcheckValidity(basegfx::B2DRange &rRange, basegfx::B2DRange &rClippedRange, basegfx::B2DVector &rDiscreteSize, double &rfDiscreteGlowRadius, const geometry::ViewInformation2D &rViewInformation) const
helpers
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
const Primitive2DContainer & getChildren() const
data read access
basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &aViewInformation) const
bool write(const BitmapEx &rBitmap)
#define PRIMITIVE2D_ID_GLOWPRIMITIVE2D
double getLength(const B2DPolygon &rCandidate)
B2DHomMatrix createScaleTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fTranslateX, double fTranslateY)
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
AlphaMask ProcessAndBlurAlphaMask(const Bitmap &rMask, double fErodeDilateRadius, double fBlurRadius, sal_uInt8 nTransparency, bool bConvertTo1Bit)
AlphaMask createAlphaMask(drawinglayer::primitive2d::Primitive2DContainer &&rSeq, const geometry::ViewInformation2D &rViewInformation2D, sal_uInt32 nDiscreteWidth, sal_uInt32 nDiscreteHeight, sal_uInt32 nMaxSquarePixels, bool bUseLuminance)