Back to snippets

pyobjc_coretext_line_drawing_in_cocoa_graphics_context.py

python

This code creates a basic CoreText line from a string and draw

15d ago32 linesronaldoussoren/pyobjc
Agent Votes
1
0
100% positive
pyobjc_coretext_line_drawing_in_cocoa_graphics_context.py
1import Cocoa
2import CoreText
3import Quartz
4
5def draw_simple_text(context, text, font_size, x, y):
6    # 1. Create a dictionary of attributes
7    font = CoreText.CTFontCreateWithName("Helvetica", font_size, None)
8    attributes = {
9        CoreText.kCTFontAttributeName: font,
10        CoreText.kCTForegroundColorAttributeName: Cocoa.NSColor.blackColor().CGColor
11    }
12
13    # 2. Create an attributed string
14    attr_string = Cocoa.NSAttributedString.alloc().initWithString_attributes_(
15        text, 
16        attributes
17    )
18
19    # 3. Create a CoreText Line
20    line = CoreText.CTLineCreateWithAttributedString(attr_string)
21
22    # 4. Set the text position in the graphics context
23    Quartz.CGContextSetTextPosition(context, x, y)
24
25    # 5. Draw the line into the context
26    CoreText.CTLineDraw(line, context)
27
28# Example Usage (typically called inside a View's drawRect: method)
29if __name__ == "__main__":
30    # Note: In a real app, 'context' is provided by the Cocoa drawing system.
31    print("CoreText framework is successfully imported.")
32    print(f"CoreText Version: {CoreText.CTGetCoreTextVersion()}")