66 lines
1.5 KiB
C++
66 lines
1.5 KiB
C++
/**
|
|
* QuartzTextStyleAttribute.h
|
|
*
|
|
* Original Code by Evan Jones on Wed Oct 02 2002.
|
|
* Contributors:
|
|
* Shane Caraveo, ActiveState
|
|
* Bernd Paradies, Adobe
|
|
*
|
|
*/
|
|
|
|
|
|
#ifndef _QUARTZ_TEXT_STYLE_ATTRIBUTE_H
|
|
#define _QUARTZ_TEXT_STYLE_ATTRIBUTE_H
|
|
|
|
class QuartzFont
|
|
{
|
|
public:
|
|
/** Create a font style from a name. */
|
|
QuartzFont( const char* name, int length, float size, bool bold, bool italic )
|
|
{
|
|
assert( name != NULL && length > 0 && name[length] == '\0' );
|
|
|
|
CFStringRef fontName = CFStringCreateWithCString(kCFAllocatorDefault, name, kCFStringEncodingMacRoman);
|
|
assert(fontName != NULL);
|
|
|
|
if (bold || italic)
|
|
{
|
|
CTFontSymbolicTraits desiredTrait = 0;
|
|
CTFontSymbolicTraits traitMask = 0;
|
|
|
|
// if bold was specified, add the trait
|
|
if (bold) {
|
|
desiredTrait |= kCTFontBoldTrait;
|
|
traitMask |= kCTFontBoldTrait;
|
|
}
|
|
|
|
// if italic was specified, add the trait
|
|
if (italic) {
|
|
desiredTrait |= kCTFontItalicTrait;
|
|
traitMask |= kCTFontItalicTrait;
|
|
}
|
|
|
|
// create a font and then a copy of it with the sym traits
|
|
CTFontRef iFont = ::CTFontCreateWithName(fontName, size, NULL);
|
|
fontid = ::CTFontCreateCopyWithSymbolicTraits(iFont, size, NULL, desiredTrait, traitMask);
|
|
CFRelease(iFont);
|
|
}
|
|
else
|
|
{
|
|
// create the font, no traits
|
|
fontid = ::CTFontCreateWithName(fontName, size, NULL);
|
|
}
|
|
}
|
|
|
|
CTFontRef getFontID()
|
|
{
|
|
return fontid;
|
|
}
|
|
|
|
private:
|
|
CTFontRef fontid;
|
|
};
|
|
|
|
#endif
|
|
|