47 , maShadowTransform(
std::move(aShadowTransform))
49 , mfShadowBlur(fShadowBlur)
50 , mfLastDiscreteBlurRadius(0.0)
51 , maLastClippedRange()
57 if (BufferedDecompositionGroupPrimitive2D::operator==(rPrimitive))
80 = std::make_shared<basegfx::BColorModifier_replace>(
getShadowColor());
111 rBlurRange = aEmbedded.
getB2DRange(rViewInformation);
121 rClippedRange = rBlurRange;
142 if (ceil(rDiscreteBlurSize.
getX()) < 2.0 || ceil(rDiscreteBlurSize.
getY()) < 2.0)
146 rfDiscreteBlurRadius = ceil(
149 if (rfDiscreteBlurRadius < 1.0)
171 double fDiscreteBlurRadius(0.0);
175 fDiscreteBlurRadius, rViewInformation))
181 const sal_uInt32 nDiscreteBlurWidth(ceil(aDiscreteBlurSize.
getX()));
182 const sal_uInt32 nDiscreteBlurHeight(ceil(aDiscreteBlurSize.
getY()));
189 nDiscreteBlurHeight / aBlurRange.
getHeight());
210 const sal_uInt32 nDiscreteClippedWidth(ceil(aDiscreteClippedSize.
getX()));
211 const sal_uInt32 nDiscreteClippedHeight(ceil(aDiscreteClippedSize.
getY()));
213 const sal_uInt32 nMaximumQuadraticPixels(250000);
218 std::move(xEmbedSeq), aViewInformation2D, nDiscreteClippedWidth, nDiscreteClippedHeight,
219 nMaximumQuadraticPixels));
226 if (!(rBitmapExSizePixel.
Width() > 0 && rBitmapExSizePixel.
Height() > 0))
233 if (
static_cast<sal_uInt32
>(rBitmapExSizePixel.
Width()) != nDiscreteClippedWidth
234 ||
static_cast<sal_uInt32
>(rBitmapExSizePixel.
Height()) != nDiscreteClippedHeight)
238 const double fScaleX(
static_cast<double>(rBitmapExSizePixel.
Width())
239 /
static_cast<double>(nDiscreteClippedWidth));
240 const double fScaleY(
static_cast<double>(rBitmapExSizePixel.
Height())
241 /
static_cast<double>(nDiscreteClippedHeight));
243 fScale = (fScaleX + fScaleY) * 0.5;
248 aAlpha, 0, fDiscreteBlurRadius * fScale, 0,
false));
256 static bool bDoSaveForVisualControl(
false);
257 if (bDoSaveForVisualControl)
260 static const OUString sDumpPath(
261 OUString::createFromAscii(std::getenv(
"VCL_DUMP_BMP_PATH")));
262 if (!sDumpPath.isEmpty())
265 StreamMode::WRITE | StreamMode::TRUNC);
297 rVisitor.
visit(aEmbedded);
307 double fDiscreteBlurRadius(0.0);
311 fDiscreteBlurRadius, rViewInformation))
329 aLastClippedRangeAndHairline.
grow(fHalfPixel);
332 if (!aLastClippedRangeAndHairline.
isInside(aClippedRange))
351 const double fRelativeChange(fDiff / fLen);
355 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)
const Primitive2DContainer & getChildren() const
data read access
ModifiedColorPrimitive2D class.
virtual void visit(const Primitive2DReference &rSource) override
basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &aViewInformation) const
virtual void visit(const Primitive2DReference &)=0
virtual basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &rViewInformation) const override
get range
ShadowPrimitive2D(basegfx::B2DHomMatrix aShadowTransform, const basegfx::BColor &rShadowColor, double fShadowBlur, Primitive2DContainer &&aChildren)
constructor
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
compare operator
void getFullyEmbeddedShadowPrimitives(Primitive2DContainer &rContainer) const
helpers
const basegfx::BColor & getShadowColor() const
basegfx::B2DRange maLastClippedRange
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.
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
double getShadowBlur() const
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
create decomposition
const basegfx::B2DHomMatrix & getShadowTransform() const
data read access
double mfLastDiscreteBlurRadius
last used DiscreteBlurRadius and ClippedRange
bool prepareValuesAndcheckValidity(basegfx::B2DRange &rRange, basegfx::B2DRange &rClippedRange, basegfx::B2DVector &rDiscreteSize, double &rfDiscreteBlurRadius, const geometry::ViewInformation2D &rViewInformation) const
bool write(const BitmapEx &rBitmap)
#define PRIMITIVE2D_ID_SHADOWPRIMITIVE2D
double getLength(const B2DPolygon &rCandidate)
B2DHomMatrix createScaleTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fTranslateX, double fTranslateY)
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
std::shared_ptr< BColorModifier > BColorModifierSharedPtr
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)
const ::Color maShadowColor