1 // This file is part of VSTGUI. It is subject to the license terms 2 // in the LICENSE file found in the top-level directory of this 3 // distribution and at http://github.com/steinbergmedia/vstgui/LICENSE 4 5 #ifndef __cfontmac__ 6 #define __cfontmac__ 7 8 #include "../iplatformfont.h" 9 10 #if MAC 11 #include "../../ccolor.h" 12 13 #if TARGET_OS_IPHONE 14 #include <CoreText/CoreText.h> 15 #else 16 #include <ApplicationServices/ApplicationServices.h> 17 #endif 18 19 namespace VSTGUI { 20 class MacString; 21 22 //----------------------------------------------------------------------------- 23 class CoreTextFont : public IPlatformFont, public IFontPainter 24 { 25 public: 26 CoreTextFont (const UTF8String& name, const CCoord& size, const int32_t& style); 27 28 double getAscent () const override; 29 double getDescent () const override; 30 double getLeading () const override; 31 double getCapHeight () const override; 32 getPainter()33 const IFontPainter* getPainter () const override { return this; } 34 getFontRef()35 CTFontRef getFontRef () const { return fontRef; } getSize()36 CGFloat getSize () const { return CTFontGetSize (fontRef); } 37 38 //------------------------------------------------------------------------------------ 39 protected: 40 ~CoreTextFont () noexcept override; 41 42 void drawString (CDrawContext* context, IPlatformString* string, const CPoint& p, bool antialias = true) const override; 43 CCoord getStringWidth (CDrawContext* context, IPlatformString* string, bool antialias = true) const override; 44 CFDictionaryRef getStringAttributes (const CGColorRef color = nullptr) const; 45 46 CTLineRef createCTLine (CDrawContext* context, MacString* macString) const; 47 48 CTFontRef fontRef; 49 int32_t style; 50 bool underlineStyle; 51 mutable CColor lastColor; 52 mutable CFMutableDictionaryRef stringAttributes; 53 double ascent; 54 double descent; 55 double leading; 56 double capHeight; 57 }; 58 59 } // namespace 60 61 #endif // MAC 62 63 #endif 64