aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa/PlatCocoa.mm
diff options
context:
space:
mode:
Diffstat (limited to 'cocoa/PlatCocoa.mm')
-rw-r--r--cocoa/PlatCocoa.mm26
1 files changed, 17 insertions, 9 deletions
diff --git a/cocoa/PlatCocoa.mm b/cocoa/PlatCocoa.mm
index 97fee88d7..ac147b6b5 100644
--- a/cocoa/PlatCocoa.mm
+++ b/cocoa/PlatCocoa.mm
@@ -103,10 +103,18 @@ Font::~Font()
//--------------------------------------------------------------------------------------------------
+static QuartzTextStyle *TextStyleFromFont(Font &f) {
+ return static_cast<QuartzTextStyle *>(f.GetID());
+}
+
+//--------------------------------------------------------------------------------------------------
+
static int FontCharacterSet(Font &f) {
- return static_cast<QuartzTextStyle *>(f.GetID())->getCharacterSet();
+ return TextStyleFromFont(f)->getCharacterSet();
}
+//--------------------------------------------------------------------------------------------------
+
/**
* Creates a CTFontRef with the given properties.
*/
@@ -921,12 +929,12 @@ void SurfaceImpl::DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION yba
ColourDesired colour(fore.AsLong());
CGColorRef color = CGColorCreateGenericRGB(colour.GetRed()/255.0,colour.GetGreen()/255.0,colour.GetBlue()/255.0,1.0);
- QuartzTextStyle* style = static_cast<QuartzTextStyle*>(font_.GetID());
+ QuartzTextStyle *style = TextStyleFromFont(font_);
style->setCTStyleColor(color);
CGColorRelease(color);
- textLayout->setText (reinterpret_cast<const UInt8*>(s), len, encoding, *static_cast<QuartzTextStyle*>(font_.GetID()));
+ textLayout->setText(s, len, encoding, *style);
textLayout->draw(rc.left, ybase);
}
@@ -935,7 +943,7 @@ void SurfaceImpl::DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION yba
void SurfaceImpl::MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions)
{
CFStringEncoding encoding = EncodingFromCharacterSet(unicodeMode, FontCharacterSet(font_));
- textLayout->setText (reinterpret_cast<const UInt8*>(s), len, encoding, *static_cast<QuartzTextStyle*>(font_.GetID()));
+ textLayout->setText(s, len, encoding, *TextStyleFromFont(font_));
CTLineRef mLine = textLayout->getCTLine();
assert(mLine != NULL);
@@ -984,7 +992,7 @@ XYPOSITION SurfaceImpl::WidthText(Font &font_, const char *s, int len) {
if (font_.GetID())
{
CFStringEncoding encoding = EncodingFromCharacterSet(unicodeMode, FontCharacterSet(font_));
- textLayout->setText (reinterpret_cast<const UInt8*>(s), len, encoding, *static_cast<QuartzTextStyle*>(font_.GetID()));
+ textLayout->setText(s, len, encoding, *TextStyleFromFont(font_));
return static_cast<XYPOSITION>(textLayout->MeasureStringWidth());
}
@@ -996,7 +1004,7 @@ XYPOSITION SurfaceImpl::WidthChar(Font &font_, char ch) {
if (font_.GetID())
{
CFStringEncoding encoding = EncodingFromCharacterSet(unicodeMode, FontCharacterSet(font_));
- textLayout->setText (reinterpret_cast<const UInt8*>(str), 1, encoding, *static_cast<QuartzTextStyle*>(font_.GetID()));
+ textLayout->setText(str, 1, encoding, *TextStyleFromFont(font_));
return textLayout->MeasureStringWidth();
}
@@ -1012,7 +1020,7 @@ XYPOSITION SurfaceImpl::Ascent(Font &font_) {
if (!font_.GetID())
return 1;
- float ascent = static_cast<QuartzTextStyle*>( font_.GetID() )->getAscent();
+ float ascent = TextStyleFromFont(font_)->getAscent();
return ascent + 0.5f;
}
@@ -1021,7 +1029,7 @@ XYPOSITION SurfaceImpl::Descent(Font &font_) {
if (!font_.GetID())
return 1;
- float descent = static_cast<QuartzTextStyle*>( font_.GetID() )->getDescent();
+ float descent = TextStyleFromFont(font_)->getDescent();
return descent + 0.5f;
}
@@ -1625,7 +1633,7 @@ void ListBoxImpl::SetFont(Font& font_)
{
// NSCell setFont takes an NSFont* rather than a CTFontRef but they
// are the same thing toll-free bridged.
- QuartzTextStyle* style = static_cast<QuartzTextStyle*>(font_.GetID());
+ QuartzTextStyle *style = TextStyleFromFont(font_);
font.Release();
font.SetID(new QuartzTextStyle(*style));
NSFont *pfont = (NSFont *)style->getFontRef();