29#include <osl/diagnose.h>
30#include <rtl/ustrbuf.hxx>
40 : maObjectTransformation(
std::move(aObjectTransformation)),
42 maFontColor(rFontColor)
48 if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
66 double fRotate, fShearX;
80 const double fStrikeCharWidth(aTextLayouter.
getTextWidth(aSingleCharString, 0, 1));
81 const double fStrikeCharCount(fabs(
getWidth()/fStrikeCharWidth));
82 const sal_uInt32 nStrikeCharCount(
static_cast< sal_uInt32
>(fStrikeCharCount + 0.5));
83 std::vector<double> aDXArray(nStrikeCharCount);
84 OUStringBuffer aStrikeoutString;
86 for(sal_uInt32
a(0);
a < nStrikeCharCount;
a++)
88 aStrikeoutString.append(aSingleCharString);
89 aDXArray[
a] = (
a + 1) * fStrikeCharWidth;
92 auto len = aStrikeoutString.getLength();
96 aStrikeoutString.makeStringAndClear(),
112 css::lang::Locale aLocale)
114 maStrikeoutChar(aStrikeoutChar),
115 maFontAttribute(
std::move(aFontAttribute)),
116 maLocale(
std::move(aLocale))
122 if(BaseTextStrikeoutPrimitive2D::operator==(rPrimitive))
143 "Wrong TEXT_STRIKEOUT type; a TextCharacterStrikeoutPrimitive2D should be used (!)");
148 bool bDoubleLine(
false);
152 double fRotate, fShearX;
169 fStrikeoutHeight *= 2.0;
176 fStrikeoutOffset -= 0.50 * fStrikeoutHeight;
177 fStrikeoutHeight *= 0.64;
188 fShearX, fRotate, aTranslate));
190 aStrikeoutLine.
transform(aUnscaledTransform);
201 const double fLineDist(2.0 * fStrikeoutHeight);
205 -aTranslate.
getX(), -aTranslate.
getY()));
206 aTransform.
rotate(-fRotate);
212 aTransform.
rotate(fRotate);
222 rContainer.
append(std::move(xRetval));
235 meTextStrikeout(eTextStrikeout)
241 if(BaseTextStrikeoutPrimitive2D::operator==(rPrimitive))
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void rotate(double fRadiant)
void translate(double fX, double fY)
void transform(const basegfx::B2DHomMatrix &rMatrix)
void append(const basegfx::B2DPoint &rPoint, sal_uInt32 nCount)
const basegfx::BColor & getFontColor() const
BaseTextStrikeoutPrimitive2D(basegfx::B2DHomMatrix aObjectTransformation, double fWidth, const basegfx::BColor &rFontColor)
constructor
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
compare operator
const basegfx::B2DHomMatrix & getObjectTransformation() const
data read access
PolygonStrokePrimitive2D class.
void append(const Primitive2DReference &)
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
compare operator
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
const css::lang::Locale & getLocale() const
virtual void create2DDecomposition(Primitive2DContainer &rContainer, const geometry::ViewInformation2D &rViewInformation) const override
local decomposition.
const attribute::FontAttribute & getFontAttribute() const
TextCharacterStrikeoutPrimitive2D(const basegfx::B2DHomMatrix &rObjectTransformation, double fWidth, const basegfx::BColor &rFontColor, sal_Unicode aStrikeoutChar, attribute::FontAttribute aFontAttribute, css::lang::Locale aLocale)
constructor
sal_Unicode getStrikeoutChar() const
data read access
TextGeometryStrikeoutPrimitive2D(const basegfx::B2DHomMatrix &rObjectTransformation, double fWidth, const basegfx::BColor &rFontColor, double fHeight, double fOffset, TextStrikeout eTextStrikeout)
constructor
TextStrikeout getTextStrikeout() const
double getHeight() const
data read access
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
compare operator
virtual void create2DDecomposition(Primitive2DContainer &rContainer, const geometry::ViewInformation2D &rViewInformation) const override
local decomposition.
virtual sal_uInt32 getPrimitive2DID() const override
provide unique ID
TextLayouterDevice class.
void setFontAttribute(const attribute::FontAttribute &rFontAttribute, double fFontScaleX, double fFontScaleY, const css::lang::Locale &rLocale)
double getTextWidth(const OUString &rText, sal_uInt32 nIndex, sal_uInt32 nLength) const
TextSimplePortionPrimitive2D class.
#define PRIMITIVE2D_ID_TEXTCHARACTERSTRIKEOUTPRIMITIVE2D
#define PRIMITIVE2D_ID_TEXTGEOMETRYSTRIKEOUTPRIMITIVE2D
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
B2DHomMatrix createShearXRotateTranslateB2DHomMatrix(double fShearX, double fRadiant, double fTranslateX, double fTranslateY)
bool LocalesAreEqual(const css::lang::Locale &rA, const css::lang::Locale &rB)
small helper to have a compare operator for Locale
TextStrikeout
FontStrikeout definition.