Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
ee9fd887
Kaydet (Commit)
ee9fd887
authored
Haz 02, 2013
tarafından
Khaled Hosny
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Get the new Core Text code to compile
Change-Id: I592158bd60afcbe756c6f0e11aa69a44768a0985
üst
ea8422d4
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
48 additions
and
102 deletions
+48
-102
Library_vcl.mk
vcl/Library_vcl.mk
+3
-4
ctfonts.cxx
vcl/coretext/ctfonts.cxx
+23
-66
ctfonts.hxx
vcl/coretext/ctfonts.hxx
+1
-1
ctlayout.cxx
vcl/coretext/ctlayout.cxx
+5
-5
salgdi2.cxx
vcl/coretext/salgdi2.cxx
+14
-24
salgdi2.h
vcl/inc/coretext/salgdi2.h
+2
-2
No files found.
vcl/Library_vcl.mk
Dosyayı görüntüle @
ee9fd887
...
...
@@ -344,10 +344,9 @@ vcl_quartz_code= \
vcl/quartz/utils \
vcl_coretext_code= \
vcl/coretext/salcoretextfontutils \
vcl/coretext/salcoretextlayout \
vcl/coretext/salcoretextstyle \
vcl/coretext/salgdi \
vcl/coretext/ctfonts \
vcl/coretext/ctlayout \
vcl/coretext/salgdi2 \
# GUIBASE specific stuff
...
...
vcl/coretext/ctfonts.cxx
Dosyayı görüntüle @
ee9fd887
...
...
@@ -19,8 +19,7 @@
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_vcl.hxx"
#include <boost/unordered_map.hpp>
#include "impfont.hxx"
#include "outfont.hxx"
...
...
@@ -29,6 +28,7 @@
#include "aqua/salinst.h"
#include "aqua/saldata.hxx"
#include "coretext/salgdi2.h"
#include "quartz/utils.h"
#include "ctfonts.hxx"
#include "basegfx/polygon/b2dpolygon.hxx"
...
...
@@ -47,10 +47,10 @@ class CTFontData
public
:
explicit
CTFontData
(
const
ImplDevFontAttributes
&
,
sal_IntPtr
nFontId
);
virtual
~
CTFontData
(
void
);
virtual
ImplFontData
*
Clone
(
void
)
const
;
virtual
PhysicalFontFace
*
Clone
(
void
)
const
;
virtual
ImplMacTextStyle
*
CreateMacTextStyle
(
const
ImplFontSelectData
&
)
const
;
virtual
ImplFontEntry
*
CreateFontInstance
(
/*const*/
ImplFontSelectData
&
)
const
;
virtual
ImplMacTextStyle
*
CreateMacTextStyle
(
const
FontSelectPattern
&
)
const
;
virtual
ImplFontEntry
*
CreateFontInstance
(
/*const*/
FontSelectPattern
&
)
const
;
virtual
int
GetFontTable
(
const
char
pTagName
[
5
],
unsigned
char
*
)
const
;
};
...
...
@@ -73,18 +73,18 @@ private:
CTFontCollectionRef
mpCTFontCollection
;
CFArrayRef
mpCTFontArray
;
typedef
std
::
hash
_map
<
sal_IntPtr
,
CTFontData
*>
CTFontContainer
;
typedef
boost
::
unordered
_map
<
sal_IntPtr
,
CTFontData
*>
CTFontContainer
;
CTFontContainer
maFontContainer
;
};
// =======================================================================
CTTextStyle
::
CTTextStyle
(
const
ImplFontSelectData
&
rFSD
)
CTTextStyle
::
CTTextStyle
(
const
FontSelectPattern
&
rFSD
)
:
ImplMacTextStyle
(
rFSD
)
,
mpStyleDict
(
NULL
)
{
mpFontData
=
(
CTFontData
*
)
rFSD
.
mpFontData
;
const
ImplFontSelectData
*
const
pReqFont
=
&
rFSD
;
const
FontSelectPattern
*
const
pReqFont
=
&
rFSD
;
double
fScaledFontHeight
=
pReqFont
->
mfExactHeight
;
#if 0 // TODO: does CoreText need font size limiting???
...
...
@@ -264,13 +264,8 @@ bool CTTextStyle::GetGlyphOutline( sal_GlyphId nGlyphId, basegfx::B2DPolyPolygon
void
CTTextStyle
::
SetTextColor
(
const
RGBAColor
&
rColor
)
{
#if (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5)
CGColorRef
pCGColor
=
CGColorCreateGenericRGB
(
rColor
.
GetRed
(),
rColor
.
GetGreen
(),
rColor
.
GetBlue
(),
rColor
.
GetAlpha
()
);
#else // for builds on OSX 10.4 SDK
const
CGColorSpaceRef
pCGColorSpace
=
GetSalData
()
->
mxRGBSpace
;
CGColorRef
pCGColor
=
CGColorCreate
(
pCGColorSpace
,
rColor
.
AsArray
()
);
#endif
CFDictionarySetValue
(
mpStyleDict
,
kCTForegroundColorAttributeName
,
pCGColor
);
CFRelease
(
pCGColor
);
}
...
...
@@ -290,21 +285,21 @@ CTFontData::~CTFontData( void )
// -----------------------------------------------------------------------
ImplFontData
*
CTFontData
::
Clone
(
void
)
const
PhysicalFontFace
*
CTFontData
::
Clone
(
void
)
const
{
return
new
CTFontData
(
*
this
);
}
// -----------------------------------------------------------------------
ImplMacTextStyle
*
CTFontData
::
CreateMacTextStyle
(
const
ImplFontSelectData
&
rFSD
)
const
ImplMacTextStyle
*
CTFontData
::
CreateMacTextStyle
(
const
FontSelectPattern
&
rFSD
)
const
{
return
new
CTTextStyle
(
rFSD
);
}
// -----------------------------------------------------------------------
ImplFontEntry
*
CTFontData
::
CreateFontInstance
(
/*const*/
ImplFontSelectData
&
rFSD
)
const
ImplFontEntry
*
CTFontData
::
CreateFontInstance
(
/*const*/
FontSelectPattern
&
rFSD
)
const
{
return
new
ImplFontEntry
(
rFSD
);
}
...
...
@@ -352,12 +347,12 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
rDFA
.
mnQuality
=
0
;
// reset the font attributes
rDFA
.
meFamily
=
FAMILY_DONTKNOW
;
rDFA
.
mePitch
=
PITCH_VARIABLE
;
rDFA
.
meWidthType
=
WIDTH_NORMAL
;
rDFA
.
meWeight
=
WEIGHT_NORMAL
;
rDFA
.
meItalic
=
ITALIC_NONE
;
rDFA
.
mbSymbolFlag
=
false
;
rDFA
.
SetFamilyType
(
FAMILY_DONTKNOW
)
;
rDFA
.
SetPitch
(
PITCH_VARIABLE
)
;
rDFA
.
SetWidthType
(
WIDTH_NORMAL
)
;
rDFA
.
SetWeight
(
WEIGHT_NORMAL
)
;
rDFA
.
SetItalic
(
ITALIC_NONE
)
;
rDFA
.
SetSymbolFlag
(
false
)
;
// all scalable fonts on this platform are subsettable
rDFA
.
mbEmbeddable
=
false
;
...
...
@@ -366,10 +361,10 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
// get font name
// TODO: use kCTFontDisplayNameAttribute instead???
CFStringRef
pFamilyName
=
(
CFStringRef
)
CTFontDescriptorCopyAttribute
(
pFD
,
kCTFontFamilyNameAttribute
);
rDFA
.
maName
=
GetOUString
(
pFamilyName
);
rDFA
.
SetFamilyName
(
GetOUString
(
pFamilyName
)
);
// get font style
CFStringRef
pStyleName
=
(
CFStringRef
)
CTFontDescriptorCopyAttribute
(
pFD
,
kCTFontStyleNameAttribute
);
rDFA
.
maStyleName
=
GetOUString
(
pStyleName
);
rDFA
.
SetStyleName
(
GetOUString
(
pStyleName
)
);
// get font-enabled status
int
bFontEnabled
=
FALSE
;
...
...
@@ -385,7 +380,7 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
CFNumberRef
pSymbolNum
=
NULL
;
if
(
CFDictionaryGetValueIfPresent
(
pAttrDict
,
kCTFontSymbolicTrait
,
(
const
void
**
)
&
pSymbolNum
)
)
{
CFNumberGetValue
(
pSymbolNum
,
kCFNumberSInt64Type
,
&
nSymbolTrait
);
rDFA
.
mbSymbolFlag
=
((
nSymbolTrait
&
kCTFontClassMaskTrait
)
==
kCTFontSymbolicClass
);
rDFA
.
SetSymbolFlag
(
((
nSymbolTrait
&
kCTFontClassMaskTrait
)
==
kCTFontSymbolicClass
)
);
}
// get the font weight
...
...
@@ -402,14 +397,14 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
if
(
nInt
<
WEIGHT_THIN
)
nInt
=
WEIGHT_THIN
;
}
rDFA
.
meWeight
=
(
FontWeight
)
nInt
;
rDFA
.
SetWeight
(
(
FontWeight
)
nInt
)
;
// get the font slant
double
fSlant
=
0
;
CFNumberRef
pSlantNum
=
(
CFNumberRef
)
CFDictionaryGetValue
(
pAttrDict
,
kCTFontSlantTrait
);
CFNumberGetValue
(
pSlantNum
,
kCFNumberDoubleType
,
&
fSlant
);
if
(
fSlant
>=
0.035
)
rDFA
.
meItalic
=
ITALIC_NORMAL
;
rDFA
.
SetItalic
(
ITALIC_NORMAL
)
;
// get width trait
double
fWidth
=
0
;
...
...
@@ -425,7 +420,7 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
if
(
nInt
<
WIDTH_ULTRA_CONDENSED
)
nInt
=
WIDTH_ULTRA_CONDENSED
;
}
rDFA
.
meWidthType
=
(
FontWidth
)
nInt
;
rDFA
.
SetWidthType
(
(
FontWidth
)
nInt
)
;
// release the attribute dict that we had copied
CFRelease
(
pAttrDict
);
...
...
@@ -433,44 +428,6 @@ static void CTFontEnumCallBack( const void* pValue, void* pContext )
// TODO? also use the HEAD table if available to get more attributes
// CFDataRef CTFontCopyTable( CTFontRef, kCTFontTableHead, /*kCTFontTableOptionNoOptions*/kCTFontTableOptionExcludeSynthetic );
#if (OSL_DEBUG_LEVEL >= 1)
// update font attributes using the font's postscript name
ImplDevFontAttributes
rDFA2
;
CTFontRef
pFont
=
CTFontCreateWithFontDescriptor
(
pFD
,
0.0
,
NULL
);
CFStringRef
pPSName
=
CTFontCopyPostScriptName
(
pFont
);
const
String
aPSName
=
GetOUString
(
pPSName
);
rDFA2
.
mbSymbolFlag
=
false
;
rDFA2
.
mePitch
=
PITCH_VARIABLE
;
rDFA2
.
meWidthType
=
WIDTH_NORMAL
;
rDFA2
.
meWeight
=
WEIGHT_NORMAL
;
rDFA2
.
meItalic
=
ITALIC_NONE
;
UpdateAttributesFromPSName
(
aPSName
,
rDFA2
);
CFRelease
(
pPSName
);
CFRelease
(
pFont
);
// show the font details and compare the CTFontDescriptor vs. PSName traits
char
cMatch
=
(
rDFA
.
mbSymbolFlag
==
rDFA2
.
mbSymbolFlag
);
cMatch
&=
(
rDFA
.
meWeight
==
rDFA2
.
meWeight
);
cMatch
&=
((
rDFA
.
meItalic
==
ITALIC_NONE
)
==
(
rDFA2
.
meItalic
==
ITALIC_NONE
));
cMatch
&=
(
rDFA
.
meWidthType
==
rDFA2
.
meWidthType
);
cMatch
=
cMatch
?
'.'
:
'#'
;
char
aFN
[
256
],
aSN
[
256
];
CFStringGetCString
(
pFamilyName
,
aFN
,
sizeof
(
aFN
),
kCFStringEncodingUTF8
);
CFStringGetCString
(
pStyleName
,
aSN
,
sizeof
(
aSN
),
kCFStringEncodingUTF8
);
const
ByteString
aPSCName
(
aPSName
,
RTL_TEXTENCODING_UTF8
);
const
char
*
aPN
=
aPSCName
.
GetBuffer
();
printf
(
"
\t
CTFont_%d%x%d%d_%c_%d%x%d%d ena=%d s=%02d b=%+.2f i=%+.2f w=%+.2f (
\"
%s
\"
,
\"
%s
\"
,
\"
%s
\"
)
\n
"
,
(
int
)
rDFA
.
mbSymbolFlag
,(
int
)
rDFA
.
meWeight
,(
int
)
rDFA
.
meItalic
,(
int
)
rDFA
.
meWidthType
,
cMatch
,
(
int
)
rDFA2
.
mbSymbolFlag
,(
int
)
rDFA2
.
meWeight
,(
int
)
rDFA2
.
meItalic
,(
int
)
rDFA2
.
meWidthType
,
bFontEnabled
,
(
int
)(
nSymbolTrait
>>
kCTFontClassMaskShift
),
fWeight
,
fSlant
,
fWidth
,
aFN
,
aSN
,
aPN
);
#endif // (OSL_DEBUG_LEVEL >= 1)
if
(
bFontEnabled
)
{
const
sal_IntPtr
nFontId
=
(
sal_IntPtr
)
pValue
;
...
...
vcl/coretext/ctfonts.hxx
Dosyayı görüntüle @
ee9fd887
...
...
@@ -30,7 +30,7 @@ class CTTextStyle
:
public
ImplMacTextStyle
{
public
:
explicit
CTTextStyle
(
const
ImplFontSelectData
&
);
explicit
CTTextStyle
(
const
FontSelectPattern
&
);
virtual
~
CTTextStyle
(
void
);
virtual
SalLayout
*
GetTextLayout
(
void
)
const
;
...
...
vcl/coretext/ctlayout.cxx
Dosyayı görüntüle @
ee9fd887
...
...
@@ -47,7 +47,7 @@ public:
virtual
bool
GetGlyphOutlines
(
SalGraphics
&
,
PolyPolyVector
&
)
const
;
virtual
bool
GetBoundRect
(
SalGraphics
&
,
Rectangle
&
)
const
;
const
ImplFontData
*
GetFallbackFontData
(
sal_GlyphId
)
const
;
const
PhysicalFontFace
*
GetFallbackFontData
(
sal_GlyphId
)
const
;
virtual
void
InitFont
(
void
)
const
;
virtual
void
MoveGlyph
(
int
nStart
,
long
nNewXPos
);
...
...
@@ -396,7 +396,7 @@ long CTLayout::FillDXArray( sal_Int32* pDXArray ) const
// -----------------------------------------------------------------------
int
CTLayout
::
GetTextBreak
(
long
nMaxWidth
,
long
nCharExtra
,
int
nFactor
)
const
int
CTLayout
::
GetTextBreak
(
long
nMaxWidth
,
long
/*nCharExtra*/
,
int
nFactor
)
const
{
if
(
!
mpCTLine
)
return
STRING_LEN
;
...
...
@@ -469,9 +469,9 @@ void CTLayout::MoveGlyph( int /*nStart*/, long /*nNewXPos*/ ) {}
void
CTLayout
::
DropGlyph
(
int
/*nStart*/
)
{}
void
CTLayout
::
Simplify
(
bool
/*bIsBase*/
)
{}
// get the
ImplFontData
for a glyph fallback font
// get the
PhysicalFontFace
for a glyph fallback font
// for a glyphid that was returned by CTLayout::GetNextGlyphs()
const
ImplFontData
*
CTLayout
::
GetFallbackFontData
(
sal_GlyphId
/*nGlyphId*/
)
const
const
PhysicalFontFace
*
CTLayout
::
GetFallbackFontData
(
sal_GlyphId
/*nGlyphId*/
)
const
{
#if 0
// check if any fallback fonts were needed
...
...
@@ -484,7 +484,7 @@ const ImplFontData* CTLayout::GetFallbackFontData( sal_GlyphId /*nGlyphId*/ ) co
pFallbackFont = mpFallbackInfo->GetFallbackFontData( nFallbackLevel );
#else
// let CoreText's font cascading handle glyph fallback
const
ImplFontData
*
pFallbackFont
=
NULL
;
const
PhysicalFontFace
*
pFallbackFont
=
NULL
;
#endif
return
pFallbackFont
;
}
...
...
vcl/coretext/salgdi2.cxx
Dosyayı görüntüle @
ee9fd887
...
...
@@ -36,7 +36,7 @@
#include "vcl/sysdata.hxx"
#include "vcl/svapp.hxx"
#include "
aqua/atsui/salgdi
.h"
#include "
coretext/salgdi2
.h"
#include "aqua/salframe.h"
#ifdef ENABLE_CORETEXT
#include "ctfonts.hxx"
...
...
@@ -65,7 +65,7 @@ SystemFontList::~SystemFontList( void )
// =======================================================================
ImplMacTextStyle
::
ImplMacTextStyle
(
const
ImplFontSelectData
&
rReqFont
)
ImplMacTextStyle
::
ImplMacTextStyle
(
const
FontSelectPattern
&
rReqFont
)
:
mpFontData
(
(
ImplMacFontData
*
)
rReqFont
.
mpFontData
)
,
mfFontScale
(
1.0
)
,
mfFontStretch
(
1.0
)
...
...
@@ -80,7 +80,7 @@ ImplMacTextStyle::~ImplMacTextStyle( void )
// =======================================================================
ImplMacFontData
::
ImplMacFontData
(
const
ImplMacFontData
&
rSrc
)
:
ImplFontData
(
rSrc
)
:
PhysicalFontFace
(
rSrc
)
,
mnFontId
(
rSrc
.
mnFontId
)
,
mpCharMap
(
rSrc
.
mpCharMap
)
,
mbOs2Read
(
rSrc
.
mbOs2Read
)
...
...
@@ -95,7 +95,7 @@ ImplMacFontData::ImplMacFontData( const ImplMacFontData& rSrc )
// -----------------------------------------------------------------------
ImplMacFontData
::
ImplMacFontData
(
const
ImplDevFontAttributes
&
rDFA
,
sal_IntPtr
nFontId
)
:
ImplFontData
(
rDFA
,
0
)
:
PhysicalFontFace
(
rDFA
,
0
)
,
mnFontId
(
nFontId
)
,
mpCharMap
(
NULL
)
,
mbOs2Read
(
false
)
...
...
@@ -132,12 +132,6 @@ ImplFontEntry* ImplMacFontData::CreateFontInstance(FontSelectPattern& rFSD) cons
static
unsigned
GetUShort
(
const
unsigned
char
*
p
){
return
((
p
[
0
]
<<
8
)
+
p
[
1
]);}
static
unsigned
GetUInt
(
const
unsigned
char
*
p
)
{
return
((
p
[
0
]
<<
24
)
+
(
p
[
1
]
<<
16
)
+
(
p
[
2
]
<<
8
)
+
p
[
3
]);}
#if MACOSX_SDK_VERSION >= 1070
extern
"C"
{
extern
ATSFontRef
FMGetATSFontRefFromFont
(
FMFont
iFont
);
}
#endif
const
ImplFontCharMap
*
ImplMacFontData
::
GetImplFontCharMap
()
const
{
// return the cached charmap
...
...
@@ -186,33 +180,29 @@ bool ImplMacFontData::GetImplFontCapabilities(vcl::FontCapabilities &rFontCapabi
}
mbFontCapabilitiesRead
=
true
;
int
nBufSize
=
0
;
// prepare to get the GSUB table raw data
ATSFontRef
rFont
=
FMGetATSFontRefFromFont
(
mnFontId
);
ByteCount
nBufSize
=
0
;
OSStatus
eStatus
;
eStatus
=
ATSFontGetTable
(
rFont
,
GetTag
(
"GSUB"
),
0
,
0
,
NULL
,
&
nBufSize
);
if
(
eStatus
==
noErr
)
nBufSize
=
GetFontTable
(
"GSUB"
,
NULL
);
if
(
nBufSize
>
0
)
{
// allocate a buffer for the GSUB raw data
ByteVector
aBuffer
(
nBufSize
);
// get the GSUB raw data
ByteCount
nRawLength
=
0
;
eStatus
=
ATSFontGetTable
(
rFont
,
GetTag
(
"GSUB"
),
0
,
nBufSize
,
(
void
*
)
&
aBuffer
[
0
],
&
nRawLength
);
if
(
eStatus
==
noErr
)
const
int
nRawLength
=
GetFontTable
(
"GSUB"
,
&
aBuffer
[
0
]
);
if
(
nRawLength
>
0
)
{
const
unsigned
char
*
pGSUBTable
=
&
aBuffer
[
0
];
vcl
::
getTTScripts
(
maFontCapabilities
.
maGSUBScriptTags
,
pGSUBTable
,
nRawLength
);
}
}
eStatus
=
ATSFontGetTable
(
rFont
,
GetTag
(
"OS/2"
),
0
,
0
,
NULL
,
&
nBufSize
);
if
(
eStatus
==
noErr
)
nBufSize
=
GetFontTable
(
"OS/2"
,
NULL
);
if
(
nBufSize
>
0
)
{
// allocate a buffer for the
GSUB
raw data
// allocate a buffer for the
OS/2
raw data
ByteVector
aBuffer
(
nBufSize
);
// get the OS/2 raw data
ByteCount
nRawLength
=
0
;
eStatus
=
ATSFontGetTable
(
rFont
,
GetTag
(
"OS/2"
),
0
,
nBufSize
,
(
void
*
)
&
aBuffer
[
0
],
&
nRawLength
);
if
(
eStatus
==
noErr
)
const
int
nRawLength
=
GetFontTable
(
"OS/2"
,
&
aBuffer
[
0
]
);
if
(
nRawLength
>
0
)
{
const
unsigned
char
*
pOS2Table
=
&
aBuffer
[
0
];
vcl
::
getTTCoverage
(
...
...
vcl/inc/coretext/salgdi2.h
Dosyayı görüntüle @
ee9fd887
...
...
@@ -62,7 +62,7 @@ public:
virtual
ImplFontEntry
*
CreateFontInstance
(
FontSelectPattern
&
)
const
;
virtual
sal_IntPtr
GetFontId
()
const
;
virtual
ImplMacTextStyle
*
CreateMacTextStyle
(
const
ImplFontSelectData
&
)
const
=
0
;
virtual
ImplMacTextStyle
*
CreateMacTextStyle
(
const
FontSelectPattern
&
)
const
=
0
;
virtual
int
GetFontTable
(
const
char
pTagName
[
5
],
unsigned
char
*
)
const
=
0
;
const
ImplFontCharMap
*
GetImplFontCharMap
()
const
;
...
...
@@ -92,7 +92,7 @@ private:
class
ImplMacTextStyle
{
public
:
explicit
ImplMacTextStyle
(
const
ImplFontSelectData
&
);
explicit
ImplMacTextStyle
(
const
FontSelectPattern
&
);
virtual
~
ImplMacTextStyle
(
void
);
virtual
SalLayout
*
GetTextLayout
(
void
)
const
=
0
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment