aboutsummaryrefslogtreecommitdiffhomepage
path: root/cocoa/QuartzTextStyle.h
diff options
context:
space:
mode:
Diffstat (limited to 'cocoa/QuartzTextStyle.h')
-rw-r--r--cocoa/QuartzTextStyle.h114
1 files changed, 51 insertions, 63 deletions
diff --git a/cocoa/QuartzTextStyle.h b/cocoa/QuartzTextStyle.h
index 36729b77b..2825fbb2f 100644
--- a/cocoa/QuartzTextStyle.h
+++ b/cocoa/QuartzTextStyle.h
@@ -15,75 +15,63 @@ class QuartzTextStyle
public:
QuartzTextStyle()
{
- ATSUCreateStyle( &style );
+ styleDict = CFDictionaryCreateMutable(NULL, 1, NULL, NULL);
}
~QuartzTextStyle()
{
- if ( style != NULL )
- ATSUDisposeStyle( style );
- style = NULL;
+ if (styleDict != NULL)
+ {
+ CFRelease(styleDict);
+ styleDict = NULL;
+ }
}
-
- void setAttribute( ATSUAttributeTag tag, ByteCount size, ATSUAttributeValuePtr value )
- {
- ATSUSetAttributes( style, 1, &tag, &size, &value );
- }
-
- void setAttribute( QuartzTextStyleAttribute& attribute )
- {
- setAttribute( attribute.getTag(), attribute.getSize(), attribute.getValuePtr() );
- }
-
- void getAttribute( ATSUAttributeTag tag, ByteCount size, ATSUAttributeValuePtr value, ByteCount* actualSize )
- {
- ATSUGetAttribute( style, tag, size, value, actualSize );
- }
-
- template <class T>
- T getAttribute( ATSUAttributeTag tag )
- {
- T value;
- ByteCount actualSize;
- ATSUGetAttribute( style, tag, sizeof( T ), &value, &actualSize );
- return value;
- }
-
- // TODO: Is calling this actually faster than calling setAttribute multiple times?
- void setAttributes( QuartzTextStyleAttribute* attributes[], int number )
- {
- // Create the parallel arrays and initialize them properly
- ATSUAttributeTag* tags = new ATSUAttributeTag[ number ];
- ByteCount* sizes = new ByteCount[ number ];
- ATSUAttributeValuePtr* values = new ATSUAttributeValuePtr[ number ];
-
- for ( int i = 0; i < number; ++ i )
- {
- tags[i] = attributes[i]->getTag();
- sizes[i] = attributes[i]->getSize();
- values[i] = attributes[i]->getValuePtr();
- }
-
- ATSUSetAttributes( style, number, tags, sizes, values );
-
- // Free the arrays that were allocated
- delete[] tags;
- delete[] sizes;
- delete[] values;
- }
-
- void setFontFeature( ATSUFontFeatureType featureType, ATSUFontFeatureSelector selector )
- {
- ATSUSetFontFeatures( style, 1, &featureType, &selector );
- }
-
- const ATSUStyle& getATSUStyle() const
- {
- return style;
- }
-
+
+ CFMutableDictionaryRef getCTStyle() const
+ {
+ return styleDict;
+ }
+
+ void setCTStyleColor(CGColor* inColor )
+ {
+ CFDictionarySetValue(styleDict, kCTForegroundColorAttributeName, inColor);
+ }
+
+ float getAscent() const
+ {
+ return ::CTFontGetAscent(fontRef);
+ }
+
+ float getDescent() const
+ {
+ return ::CTFontGetDescent(fontRef);
+ }
+
+ float getLeading() const
+ {
+ return ::CTFontGetLeading(fontRef);
+ }
+
+ void setFontRef(CTFontRef inRef)
+ {
+ fontRef = inRef;
+
+ if (styleDict != NULL)
+ CFRelease(styleDict);
+
+ styleDict = CFDictionaryCreateMutable(NULL, 1, NULL, NULL);
+
+ CFDictionaryAddValue(styleDict, kCTFontAttributeName, fontRef);
+ }
+
+ CTFontRef getFontRef()
+ {
+ return fontRef;
+ }
+
private:
- ATSUStyle style;
+ CFMutableDictionaryRef styleDict;
+ CTFontRef fontRef;
};
#endif