22#include <com/sun/star/i18n/BreakIterator.hpp>
24#include <com/sun/star/i18n/CharacterIteratorMode.hpp>
25#include <com/sun/star/i18n/WordType.hpp>
26#include <com/sun/star/i18n/CharType.hpp>
60 std::vector< double > aNewDXArray;
61 std::vector< sal_Bool > aNewKashidaArray;
67 aNewDXArray = std::vector< double >(
74 aNewKashidaArray = std::vector< sal_Bool >(
79 if(bNewStartIsNotOldStart)
99 double fOffsetNoScale(fOffset);
105 fOffsetNoScale /= fFontScaleX;
109 aNewTransform.
translate(fOffsetNoScale, 0.0);
115 const sal_uInt32 nArraySize(aNewDXArray.size());
117 for(sal_uInt32
a(0);
a < nArraySize;
a++)
119 aNewDXArray[
a] -= fOffset;
138 if(pTextDecoratedPortionPrimitive2D)
141 rTempResult.push_back(
147 std::move(aNewDXArray),
148 std::move(aNewKashidaArray),
168 pTextDecoratedPortionPrimitive2D->
getShadow()));
173 rTempResult.push_back(
179 std::move(aNewDXArray),
180 std::move(aNewKashidaArray),
198 static css::uno::Reference< css::i18n::XBreakIterator > xBreakIterator;
200 if(!xBreakIterator.is())
202 css::uno::Reference< css::uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
203 xBreakIterator = css::i18n::BreakIterator::create(xContext);
210 sal_Int32 nCurrent(nTextPosition);
217 sal_Int32 nNextCellBreak(xBreakIterator->nextCharacters(rTxt, nTextPosition, rLocale, css::i18n::CharacterIteratorMode::SKIPCELL, 0, nDone));
218 sal_Int32
a(nTextPosition);
220 for(;
a < nTextPosition + nTextLength;
a++)
222 if(
a == nNextCellBreak)
226 nNextCellBreak = xBreakIterator->nextCharacters(rTxt,
a, rLocale, css::i18n::CharacterIteratorMode::SKIPCELL, 1, nDone);
235 css::i18n::Boundary nNextWordBoundary(xBreakIterator->getWordBoundary(rTxt, nTextPosition, rLocale, css::i18n::WordType::ANY_WORD,
true));
236 sal_Int32
a(nTextPosition);
238 for(;
a < nTextPosition + nTextLength;
a++)
240 if(
a == nNextWordBoundary.endPos)
251 const sal_Int32 nEndOfSpaces(xBreakIterator->endOfCharBlock(rTxt,
a, rLocale, css::i18n::CharType::SPACE_SEPARATOR));
255 nCurrent = nEndOfSpaces;
259 nNextWordBoundary = xBreakIterator->getWordBoundary(rTxt,
a + 1, rLocale, css::i18n::WordType::ANY_WORD,
true);
void translate(double fX, double fY)
const B2DVector & getScale() const
const B2DHomMatrix & getB2DHomMatrix() const
Primitive2DContainer extractResult(BreakupUnit aBreakupUnit=BreakupUnit::Character)
get result
Primitive2DContainer mxResult
const TextSimplePortionPrimitive2D & mrSource
TextBreakupHelper(const TextSimplePortionPrimitive2D &rSource)
void breakup(BreakupUnit aBreakupUnit)
breakup complete primitive
void breakupPortion(Primitive2DContainer &rTempResult, sal_Int32 nIndex, sal_Int32 nLength, bool bWordLineMode)
create a portion from nIndex to nLength and append to rTempResult
virtual bool allowChange(sal_uInt32 nCount, basegfx::B2DHomMatrix &rNewTransform, sal_uInt32 nIndex, sal_uInt32 nLength)
allow user callback to allow changes to the new TextTransformation.
TextLayouterDevice maTextLayouter
virtual ~TextBreakupHelper()
basegfx::utils::B2DHomMatrixBufferedOnDemandDecompose maDecTrans
TextDecoratedPortionPrimitive2D class.
TextLine getFontOverline() const
data read access
bool getEmphasisMarkBelow() const
TextEmphasisMark getTextEmphasisMark() const
const basegfx::BColor & getTextlineColor() const
TextRelief getTextRelief() const
TextStrikeout getTextStrikeout() const
TextLine getFontUnderline() const
const basegfx::BColor & getOverlineColor() const
bool getUnderlineAbove() const
bool getEmphasisMarkAbove() const
bool getWordLineMode() const
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.
sal_Int32 getTextLength() const
sal_Int32 getTextPosition() const
const css::lang::Locale & getLocale() const
const ::std::vector< sal_Bool > & getKashidaArray() const
const basegfx::BColor & getFontColor() const
const OUString & getText() const
const ::std::vector< double > & getDXArray() const
const attribute::FontAttribute & getFontAttribute() const
const basegfx::B2DHomMatrix & getTextTransform() const
data read access
const Color & getTextFillColor() const