19 #ifndef INCLUDED_SW_SOURCE_CORE_INC_SWFONT_HXX
20 #define INCLUDED_SW_SOURCE_CORE_INC_SWFONT_HXX
45 constexpr OUStringChar
CH_PAR =
u'\u00B6';
64 sal_uInt16
CalcEscAscent(
const sal_uInt16 nOldAscent )
const;
66 const sal_uInt16 nOldAscent )
const;
87 inline void SetCharSet(
const rtl_TextEncoding eCharSet );
89 inline void SetAlign(
const FontAlign eAlign );
96 inline void SetShadow(
const bool bShadow );
107 inline void SetName(
const OUString& rName );
115 { m_nFontCacheId =
nullptr; m_nProportionalWidth = nNew; }
118 { m_nFontCacheId =
nullptr; m_nFontIndex = m_nOrgHeight = m_nOrgAscent = 0; m_nProportionalWidth =100; m_bSmallCapsPercentage66 =
false; }
128 #define SW_SCRIPTS (SwFontScript(int(SwFontScript::LAST)+1))
197 { rnFontCacheId = m_aSub[nWhich].m_nFontCacheId; rIdx = m_aSub[nWhich].m_nFontIndex; }
199 { m_aSub[nWhich].m_nFontCacheId = nNewFontCacheId; m_aSub[nWhich].m_nFontIndex = nIdx; }
201 {
return m_aSub[nWhich].m_nFontCacheId != pFnt->
m_aSub[nWhich].m_nFontCacheId ||
202 !m_aSub[nWhich].m_nFontCacheId || !pFnt->
m_aSub[nWhich].m_nFontCacheId; }
205 {
return m_aSub[nWhich].m_aSize; }
212 inline void SetAlign(
const FontAlign eAlign );
218 inline void SetOutline(
const bool bOutline );
220 const bool bVertLayoutLRBT =
false);
221 inline void SetShadow(
const bool bShadow );
248 bool IsTox()
const {
return ( 0 != m_nToxCount ); }
250 bool IsRef()
const {
return ( 0 != m_nRefCount ); }
252 bool IsMeta()
const {
return (0 != m_nMetaCount); }
264 {
return m_aSub[nWhich]; };
267 {
return m_aSub[
m_nActual].IsSymbol( pSh ); }
283 {
return m_aSub[
m_nActual].GetEmphasisMark(); }
285 const bool bVertFormatLRBT =
false)
const;
288 {
return m_aSub[nWhich].GetFamilyName(); }
290 {
return m_aSub[nWhich].GetLanguage(); }
292 {
return m_aSub[nWhich].GetCharSet(); }
294 {
return m_aSub[nWhich].GetFontSize().Height(); }
304 { m_aSub[
m_nActual].DoOnCapitals( rDo ); }
312 {
return m_aSub[
m_nActual].GetModelPositionForViewPoint_( rInf ); }
318 { m_aSub[
m_nActual].DrawStretchText_( rInf ); }
321 {
return m_aSub[
m_nActual].CheckKerning(); }
324 {
return m_aSub[
m_nActual].GetAscent( pSh, rOut ); }
326 {
return m_aSub[
m_nActual].GetHeight( pSh, rOut ); }
342 const std::optional<editeng::SvxBorderLine>&
343 GetAbsTopBorder(
const bool bVertLayout,
const bool bVertLayoutLRBT)
const;
344 const std::optional<editeng::SvxBorderLine>&
346 const std::optional<editeng::SvxBorderLine>&
348 const std::optional<editeng::SvxBorderLine>&
388 const bool bVertLayoutLRBT)
const;
405 const SvxShadowItemSide nShadow,
const bool bVertLayout,
const bool bVertLayoutLRBT,
406 const bool bSkipLeft,
const bool bSkipRight )
const;
423 Font::SetColor( rColor );
430 Font::SetFillColor( rColor );
445 Font::SetFamily( eFamily );
451 m_aSub[nWhich].SetFamily( eFamily );
458 Font::SetFamilyName( rName );
464 m_aSub[nWhich].SetName( rName );
471 Font::SetStyleName( rStyleName );
477 m_aSub[nWhich].SetStyleName( rStyle );
484 Font::SetCharSet( eCharSet );
490 m_aSub[nWhich].SetCharSet( eCharSet );
497 Font::SetPitch( ePitch );
504 m_aSub[nWhich].SetPitch( ePitch );
511 Font::SetAlignment( eAlign );
526 Font::SetWeight( eWeight );
532 m_aSub[nWhich].SetWeight( eWeight );
539 Font::SetUnderline( eUnderline );
554 Font::SetOverline( eOverline );
569 Font::SetStrikeout( eStrikeout );
584 Font::SetItalic( eItalic );
590 m_aSub[nWhich].SetItalic( eItalic );
597 Font::SetOutline( bOutline );
612 Font::SetShadow( bShadow );
627 Font::SetKerning( nAutoKern );
634 if( nAutoKern != FontKerning::NONE )
635 nAutoKern = FontKerning::FontSpecific;
665 Font::SetWordLineMode( bWordLineMode );
679 Font::SetEmphasisMark( eValue );
705 Font::SetRelief( eNew );
727 Font::SetFontSize(
Size(
738 m_aSub[nWhich].SetSize( rSize );
806 m_aSub[nWhich].SetLanguage( eNewLang );
823 Font::SetVertical( bVertFormat );
824 Font::SetOrientation( nDir );
964 OSL_ENSURE( m_pFont,
"No underline font" );
970 void SetPos(
const Point& rPoint ) { m_aPos = rPoint; }
985 { nGetTextSize = nDrawText = nGetStretchTextSize = nDrawStretchText = nChangeFont = 0; }
991 #define SV_STAT(nWhich) ++(g_SvStat.nWhich);
995 #define SV_STAT(nWhich)
void SetLeftBorderDist(const sal_uInt16 nLeftDist)
rtl_TextEncoding GetCharSet(const SwFontScript nWhich) const
const sal_Unicode CH_BREAK
void SetPropr(const sal_uInt8 nNewPropr)
sal_uInt16 GetLeftBorderSpace() const
sal_uInt16 GetShadowWidth() const
const std::optional< editeng::SvxBorderLine > & GetBottomBorder() const
sal_uInt8 GetPropr() const
void SetFamily(const FontFamily eFamily)
const sal_Unicode CH_NB_SPACE
void SetWordLineMode(const bool bWordLineMode)
sal_uInt16 GetAscent(SwViewShell const *pSh, const OutputDevice &rOut)
bool m_bSmallCapsPercentage66
TextFrameIndex GetCapitalCursorOfst(SwDrawTextInfo &rInf)
void SetName(const OUString &rName)
const Color & GetUnderColor() const
bool IsInputField() const
sal_uInt8 GetPropr() const
std::optional< editeng::SvxBorderLine > m_aTopBorder
sal_uInt16 GetTopBorderDist() const
sal_uInt16 GetRightBorderSpace() const
void SetFillColor(const Color &rColor)
constexpr OUStringChar CH_PAR
void SetFillColor(const Color &rColor)
bool ChgFnt(SwViewShell const *pSh, OutputDevice &rOut)
void SetGreyWave(const bool bNew)
void SetUnderline(const FontLineStyle eUnderline)
Size GetTextSize_(SwDrawTextInfo &rInf)
bool DifferentFontCacheId(const SwFont *pFnt, SwFontScript nWhich)
const std::optional< editeng::SvxBorderLine > & GetAbsRightBorder(const bool bVertLayout, const bool bVertLayoutLRBT) const
const SvxFont & GetActualFont() const
void SetEmphasisMark(const FontEmphasisMark eValue)
void SetSize(const Size &rSize)
void SetVertical(const Degree10 nDir, const bool bVertFormat)
void CalcEsc(SwDrawTextInfo const &rInf, Point &rPos)
bool HasBorder() const
Check whether font has any border on any side.
const sal_Unicode CH_BULLET
bool IsSymbol(SwViewShell const *pSh)
const Size & GetSize(SwFontScript nWhich) const
FontStrikeout GetStrikeout() const
void SetOutline(const bool bOutline)
void SetPropWidth(const sal_uInt16 nNew)
void dumpAsXml(xmlTextWriterPtr writer) const
Degree10 GetOrientation(const bool bVertLayout=false, const bool bVertFormatLRBT=false) const
void SetBottomBorderDist(const sal_uInt16 nBottomDist)
void SetPitch(const FontPitch ePitch, const SwFontScript nWhich)
sal_uInt16 m_nLeftBorderDist
void DrawText_(SwDrawTextInfo &rInf)
void DrawCapital(SwDrawTextInfo &rInf)
void SetColor(const Color &rColor)
void SetShadow(const bool bShadow)
sal_uInt16 m_nShadowWidth
sal_uInt16 m_nRightBorderDist
void SetPitch(const FontPitch ePitch)
const Color & GetOverColor() const
SwUnderlineFont(SwFont &rFnt, TextFrameIndex nEnd, const Point &rPoint)
sal_uInt16 GetAscent(SwViewShell const *pSh, const OutputDevice &rOut)
sal_uInt16 GetRightBorderDist() const
void SetFntChg(const bool bNew)
void DrawStretchText_(SwDrawTextInfo &rInf)
SvxCaseMap GetCaseMap() const
o3tl::enumarray< SwFontScript, SwSubFont > m_aSub
SwFont(const SwAttrSet *pSet, const IDocumentSettingAccess *pIDocumentSettingAccess)
void SetShadowColor(const Color &rColor)
void SetUnderline(const FontLineStyle eUnderline)
void SetShadowLocation(const SvxShadowLocation aLocation)
const std::optional< editeng::SvxBorderLine > & GetAbsBottomBorder(const bool bVertLayout, const bool bVertLayoutLRBT) const
FontEmphasisMark GetEmphasisMark() const
void ChgPhysFnt(SwViewShell const *pSh, OutputDevice &rOut)
const std::optional< Color > & GetBackColor() const
sal_uInt16 GetHeight(SwViewShell const *pSh, const OutputDevice &rOut)
void SetStrikeout(const FontStrikeout eStrikeout)
void SetLanguage(LanguageType eNewLang)
void SetAlign(const FontAlign eAlign)
sal_uInt16 m_nProportionalWidth
void SetItalic(const FontItalic eItalic)
SwFontScript GetActual() const
void SetLeftBorder(const editeng::SvxBorderLine *pLeftBorder)
const std::optional< editeng::SvxBorderLine > & GetRightBorder() const
std::optional< editeng::SvxBorderLine > m_aLeftBorder
struct _xmlTextWriter * xmlTextWriterPtr
void SetOverline(const FontLineStyle eOverline)
void SetStyleName(const OUString &rStyleName, const SwFontScript nWhich)
void SetTransparent(const bool bTrans)
void SetCharSet(const rtl_TextEncoding eCharSet)
void SetLanguage(LanguageType eNewLang, const SwFontScript nWhich)
void SetRightBorder(const editeng::SvxBorderLine *pRightBorder)
std::optional< editeng::SvxBorderLine > m_aBottomBorder
void SetWordLineMode(const bool bWordLineMode)
sal_uInt8 m_nInputFieldCount
void SetEscapement(const short nNewEsc)
void SetUnderColor(const Color &rColor)
void SetRightBorderDist(const sal_uInt16 nRightDist)
const sal_Unicode CH_FULL_BLANK
void SetShadowWidth(const sal_uInt16 nWidth)
const Point & GetPos() const
void DrawStretchCapital(SwDrawTextInfo &rInf)
void SetCaseMap(const SvxCaseMap eNew)
void CheckFontCacheId(SwViewShell const *pSh, SwFontScript nWhich)
const std::optional< editeng::SvxBorderLine > & GetAbsTopBorder(const bool bVertLayout, const bool bVertLayoutLRBT) const
void DrawText_(SwDrawTextInfo &rInf, const bool bGrey)
Size GetCapitalSize(SwDrawTextInfo &rInf)
void SetVertical(Degree10 nDir, const bool bVertLayout=false, const bool bVertLayoutLRBT=false)
sal_uInt16 GetBottomBorderDist() const
FontLineStyle GetOverline() const
const sal_Unicode CH_BLANK
TextFrameIndex GetCapitalBreak(SwViewShell const *pSh, const OutputDevice *pOut, const SwScriptInfo *pScript, const OUString &rText, tools::Long nTextWidth, TextFrameIndex nIdx, TextFrameIndex nLen)
sal_uInt16 GetTopBorderSpace() const
TextFrameIndex GetEnd() const
sal_uInt16 GetPropWidth() const
tools::Long Width() const
void SetRelief(const FontRelief eNew)
void SetProportion(const sal_uInt8 nNewPropr)
void SetShadow(const bool bShadow)
void SetEscapement(const short nNewEsc)
Provides access to settings of a document.
void DrawStretchText_(SwDrawTextInfo &rInf)
const std::optional< editeng::SvxBorderLine > & GetLeftBorder() const
void SetWeight(const FontWeight eWeight, const SwFontScript nWhich)
const Color & GetColor() const
TextFrameIndex GetModelPositionForViewPoint_(SwDrawTextInfo &rInf)
void DoOnCapitals(SwDoCapitals &rDo)
void SetPos(const Point &rPoint)
void SetAutoKern(FontKerning nAutoKern)
void SetOverColor(const Color &rColor)
void SetAlign(const FontAlign eAlign)
void SetPropWidth(const sal_uInt16 nNew)
bool IsPaintBlank() const
std::optional< Color > mxBackColor
sal_uInt16 m_nBottomBorderDist
void SetFixKerning(const short nNewKern)
sal_uInt16 nGetStretchTextSize
sal_uInt16 CalcShadowSpace(const SvxShadowItemSide nShadow, const bool bVertLayout, const bool bVertLayoutLRBT, const bool bSkipLeft, const bool bSkipRight) const
Calculate the shadow space on the specified side dependent from the orientation and connection with n...
FontLineStyle GetUnderline() const
void SetBottomBorder(const editeng::SvxBorderLine *pBottomBorder)
sal_uInt16 GetLeftBorderDist() const
void SetOutline(const bool bOutline)
Size GetTextSize_(SwDrawTextInfo &rInf)
SwFont & operator=(const SwFont &rFont)
const OUString & GetName(const SwFontScript nWhich) const
std::unique_ptr< SwFont > m_pFont
void SetStyleName(const OUString &rStyleName)
FontWeight GetWeight() const
sal_uInt16 GetHeight(SwViewShell const *pSh, const OutputDevice &rOut)
bool IsSymbol(SwViewShell const *pSh)
LanguageType GetLanguage() const
void DoOnCapitals(SwDoCapitals &rDo)
const void * m_nFontCacheId
void SetRelief(const FontRelief eNew)
sal_uInt8 & GetInputField()
void SetBackColor(std::optional< Color > xNewColor)
void SetSize(const Size &rSize, const SwFontScript nWhich)
void SetFontCacheId(const void *nNewFontCacheId, const sal_uInt16 nIdx, SwFontScript nWhich)
sal_uInt16 CalcEscAscent(const sal_uInt16 nOldAscent) const
SvxShadowLocation GetShadowLocation() const
FontItalic GetItalic() const
void SetTopBorder(const editeng::SvxBorderLine *pTopBorder)
void SetActual(SwFontScript nNew)
LanguageType GetAppLanguage()
std::optional< editeng::SvxBorderLine > m_aRightBorder
void SetFamily(const FontFamily eFamily, const SwFontScript nWhich)
TextFrameIndex GetModelPositionForViewPoint_(SwDrawTextInfo &rInf)
void SetCharSet(const rtl_TextEncoding eCharSet, const SwFontScript nWhich)
tools::Long Height() const
sal_uInt16 GetBottomBorderSpace() const
void SetWeight(const FontWeight eWeight)
const Color & GetHighlightColor() const
const Color & GetShadowColor() const
sal_uInt16 nDrawStretchText
void SetName(const OUString &rName, const SwFontScript nWhich)
TextFrameIndex GetTextBreak(SwDrawTextInfo const &rInf, tools::Long nTextWidth)
const std::optional< editeng::SvxBorderLine > & GetTopBorder() const
Degree10 UnMapDirection(Degree10 nDir, const bool bVertFormat, const bool bVertFormatLRBT)
short GetFixKerning() const
void SetAutoKern(FontKerning nAutoKern)
void SetFont(SwFont *pNew)
void SetDiffFnt(const SfxItemSet *pSet, const IDocumentSettingAccess *pIDocumentSettingAccess)
SvxShadowLocation m_aShadowLocation
LanguageType GetLanguage(const SwFontScript nWhich) const
void SetItalic(const FontItalic eItalic, const SwFontScript nWhich)
sal_uInt16 CalcEscHeight(const sal_uInt16 nOldHeight, const sal_uInt16 nOldAscent) const
sal_uInt16 m_nTopBorderDist
bool IsWordLineMode() const
const std::optional< editeng::SvxBorderLine > & GetAbsLeftBorder(const bool bVertLayout, const bool bVertLayoutLRBT) const
void SetLanguage(SwWrtShell &rWrtSh, std::u16string_view rLangText, bool bIsForSelection, SfxItemSet &rCoreSet)
void SetEmphasisMark(const FontEmphasisMark eValue)
void SetProportion(const sal_uInt8 nNewPropr)
SvxShadowLocation GetAbsShadowLocation(const bool bVertLayout, const bool bVertLayoutLRBT) const
Get the absolute shadow location dependent from orientation.
void SetHighlightColor(const Color &aNewColor)
void ChgFnt(SwViewShell const *pSh, OutputDevice &rOut)
void SetStrikeout(const FontStrikeout eStrikeout)
short GetEscapement() const
void SetEscapement(const short nNewEsc)
void SetOverline(const FontLineStyle eOverline)
tools::Long GetHeight() const
void SetTopBorderDist(const sal_uInt16 nTopDist)
const SvxFont & GetFnt(const SwFontScript nWhich) const
void AllocFontCacheId(SwViewShell const *pSh, SwFontScript nWhich)
tools::Long GetHeight(const SwFontScript nWhich) const
void SetColor(const Color &rColor)
const sal_Unicode CH_SIX_PER_EM
void GetFontCacheId(const void *&rnFontCacheId, sal_uInt16 &rIdx, SwFontScript nWhich)