39 , mfLastDiscreteSoftRadius(0.0)
40 , maLastClippedRange()
46 if (BufferedDecompositionGroupPrimitive2D::operator==(rPrimitive))
49 return getRadius() == rCompare.getRadius();
80 rClippedRange = rSoftRange;
111 if (ceil(rDiscreteSoftSize.
getX()) < 2.0 || ceil(rDiscreteSoftSize.
getY()) < 2.0)
115 rfDiscreteSoftRadius = ceil(
118 if (rfDiscreteSoftRadius < 1.0)
134 double fDiscreteSoftRadius(0.0);
138 fDiscreteSoftRadius, rViewInformation))
144 const sal_uInt32 nDiscreteSoftWidth(ceil(aDiscreteSoftSize.
getX()));
145 const sal_uInt32 nDiscreteSoftHeight(ceil(aDiscreteSoftSize.
getY()));
152 nDiscreteSoftHeight / aSoftRange.
getHeight());
165 const sal_uInt32 nDiscreteClippedWidth(ceil(aDiscreteClippedSize.
getX()));
166 const sal_uInt32 nDiscreteClippedHeight(ceil(aDiscreteClippedSize.
getY()));
168 const sal_uInt32 nMaximumQuadraticPixels(250000);
170 std::move(xEmbedSeq), aViewInformation2D, nDiscreteClippedWidth, nDiscreteClippedHeight,
171 nMaximumQuadraticPixels));
178 if (!(rBitmapExSizePixel.
Width() > 0 && rBitmapExSizePixel.
Height() > 0))
185 if (
static_cast<sal_uInt32
>(rBitmapExSizePixel.
Width()) != nDiscreteClippedWidth
186 ||
static_cast<sal_uInt32
>(rBitmapExSizePixel.
Height()) != nDiscreteClippedHeight)
190 const double fScaleX(
static_cast<double>(rBitmapExSizePixel.
Width())
191 /
static_cast<double>(nDiscreteClippedWidth));
192 const double fScaleY(
static_cast<double>(rBitmapExSizePixel.
Height())
193 /
static_cast<double>(nDiscreteClippedHeight));
195 fScale = (fScaleX + fScaleY) * 0.5;
203 aMask, -fDiscreteSoftRadius * fScale, fDiscreteSoftRadius * fScale, 0));
210 static bool bDoSaveForVisualControl(
false);
211 if (bDoSaveForVisualControl)
214 static const OUString sDumpPath(
215 OUString::createFromAscii(std::getenv(
"VCL_DUMP_BMP_PATH")));
216 if (!sDumpPath.isEmpty())
219 StreamMode::WRITE | StreamMode::TRUNC);
257 double fDiscreteSoftRadius(0.0);
261 fDiscreteSoftRadius, rViewInformation))
279 aLastClippedRangeAndHairline.
grow(fHalfPixel);
282 if (!aLastClippedRangeAndHairline.
isInside(aClippedRange))
301 const double fRelativeChange(fDiff / fLen);
306 bFree = fRelativeChange >= 0.075;
void BlendWith(const AlphaMask &rOther)
const AlphaMask & GetAlphaMask() const
Bitmap GetBitmap(Color aTransparentReplaceColor) const
const Size & GetSizePixel() const
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
basegfx::B2DRange getB2DRange(const geometry::ViewInformation2D &aViewInformation) const
virtual void visit(const Primitive2DReference &)=0
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
bool prepareValuesAndcheckValidity(basegfx::B2DRange &rSoftRange, basegfx::B2DRange &rClippedRange, basegfx::B2DVector &rDiscreteSoftSize, double &rfDiscreteSoftRadius, const geometry::ViewInformation2D &rViewInformation) const
helpers
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
compare operator
double mfLastDiscreteSoftRadius
last used DiscreteSoftRadius and ClippedRange
double getRadius() 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
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.
SoftEdgePrimitive2D(double fRadius, Primitive2DContainer &&aChildren)
constructor
basegfx::B2DRange maLastClippedRange
bool write(const BitmapEx &rBitmap)
#define PRIMITIVE2D_ID_SOFTEDGEPRIMITIVE2D
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)
BitmapEx convertToBitmapEx(drawinglayer::primitive2d::Primitive2DContainer &&rSeq, const geometry::ViewInformation2D &rViewInformation2D, sal_uInt32 nDiscreteWidth, sal_uInt32 nDiscreteHeight, sal_uInt32 nMaxSquarePixels)