20#ifndef INCLUDED_VCL_INC_SALLAYOUT_HXX
21#define INCLUDED_VCL_INC_SALLAYOUT_HXX
38#include <com/sun/star/i18n/XBreakIterator.hpp>
46#define MAX_FALLBACK 16
53 class PhysicalFontFace;
57 class TextLayoutCache;
64 sal_Int32
GetTextBreak(
double nMaxWidth,
double nCharExtra,
int nFactor)
const override;
66 double FillDXArray(std::vector<double>* pDXArray,
const OUString& rStr)
const override;
67 void GetCaretPositions(std::vector<double>& rCaretPositions,
const OUString& rStr)
const override;
87 const double* pMultiDXArray);
106 const double* pMultiDXArray);
117 bool IsKashidaPosValid(
int nCharPos,
int nNextCharPos) const final override;
120 double GetTextWidth() const final override;
121 double FillDXArray(
std::vector<
double>* pDXArray, const OUString& rStr) const final override;
122 sal_Int32 GetTextBreak(
double nMaxWidth,
double nCharExtra,
int nFactor) const final override;
123 void GetCaretPositions(
std::vector<
double>& rCaretPositions, const OUString& rStr) const override;
127 {
return *m_GlyphItems.GetFont(); }
136 void MoveGlyph(
int nStart,
double nNewXPos);
137 void DropGlyph(
int nStart);
138 void Simplify(
bool bIsBase);
143 void ApplyDXArray(
const double*,
const sal_Bool*);
144 void Justify(
double nNewWidth);
145 void ApplyAsianKerning(std::u16string_view rStr);
147 void GetCharWidths(std::vector<double>& rCharWidths,
148 const OUString& rStr)
const;
154 void ParseFeatures(std::u16string_view name);
156 css::uno::Reference<css::i18n::XBreakIterator>
mxBreak;
SalLayoutGlyphsImpl m_GlyphItems
GenericSalLayout & operator=(const GenericSalLayout &)=delete
const SalLayoutGlyphsImpl & GlyphsImpl() const
std::vector< hb_feature_t > maFeatures
GenericSalLayout(const GenericSalLayout &)=delete
css::uno::Reference< css::i18n::XBreakIterator > mxBreak
bool GetNextGlyph(const GlyphItem **pGlyph, basegfx::B2DPoint &rPos, int &nStart, const LogicalFontInstance **ppGlyphFont=nullptr) const override
bool GetOutline(basegfx::B2DPolyPolygonVector &) const override
void AdjustLayout(vcl::text::ImplLayoutArgs &) override
void ImplAdjustMultiLayout(vcl::text::ImplLayoutArgs &rArgs, vcl::text::ImplLayoutArgs &rMultiArgs, const double *pMultiDXArray)
void SetIncomplete(bool bIncomplete)
std::unique_ptr< GenericSalLayout > mpLayouts[MAX_FALLBACK]
MultiSalLayout(const MultiSalLayout &)=delete
std::unique_ptr< SalLayout > ReleaseBaseLayout()
sal_Int32 GetTextBreak(double nMaxWidth, double nCharExtra, int nFactor) const override
void DrawText(SalGraphics &) const override
void InitFont() const override
double GetTextWidth() const final override
double FillDXArray(std::vector< double > *pDXArray, const OUString &rStr) const override
bool LayoutText(vcl::text::ImplLayoutArgs &, const SalLayoutGlyphsImpl *) override
SalLayoutGlyphs GetGlyphs() const final override
MultiSalLayout & operator=(const MultiSalLayout &)=delete
ImplLayoutRuns maFallbackRuns[MAX_FALLBACK]
void AddFallback(std::unique_ptr< SalLayout > pFallbackLayout, ImplLayoutRuns const &)
virtual ~MultiSalLayout() override
void GetCaretPositions(std::vector< double > &rCaretPositions, const OUString &rStr) const override
bool IsKashidaPosValid(int nCharPos, int nNextCharPos) const override
MultiSalLayout(std::unique_ptr< SalLayout > pBaseLayout)
virtual bool LayoutText(vcl::text::ImplLayoutArgs &, const SalLayoutGlyphsImpl *)=0
virtual void AdjustLayout(vcl::text::ImplLayoutArgs &)
virtual void DrawText(SalGraphics &) const =0
virtual bool GetNextGlyph(const GlyphItem **pGlyph, basegfx::B2DPoint &rPos, int &nStart, const LogicalFontInstance **ppGlyphFont=nullptr) const =0
virtual SalLayoutGlyphs GetGlyphs() const
::std::vector< B2DPolyPolygon > B2DPolyPolygonVector
vcl::Font GetFont(vcl::Font const &rFont, DrawModeFlags nDrawMode, StyleSettings const &rStyleSettings)
A PhysicalFontFaceCollection is created by a PhysicalFontCollection and becomes invalid when original...