CocoaDrawingShell¶
A PyObjC Example without documentation
Sources¶
MyView.py¶
import math
import Cocoa
import Quartz
def doAlphaRects(context):
# ***** Part 1 *****
ourRect = Quartz.CGRectMake(0.0, 0.0, 130.0, 100.0)
numRects = 6
rotateAngle = 2 * math.pi / numRects
tintAdjust = 1.0 / numRects
# ***** Part 2 *****
Quartz.CGContextTranslateCTM(
context, 2 * ourRect.size.width, 2 * ourRect.size.height
)
# ***** Part 3 *****
tint = 1.0
for _ in range(numRects):
Quartz.CGContextSetRGBFillColor(context, tint, 0.0, 0.0, tint)
Quartz.CGContextFillRect(context, ourRect)
Quartz.CGContextRotateCTM(context, rotateAngle) # cumulative
tint -= tintAdjust
class MyView(Cocoa.NSView):
def drawRect_(self, rect):
nsctx = Cocoa.NSGraphicsContext.currentContext()
context = nsctx.graphicsPort()
Quartz.CGContextSetLineWidth(context, 5.0)
# Draw the coordinate axes.
Quartz.CGContextBeginPath(context)
# First draw the x axis.
Quartz.CGContextMoveToPoint(context, -2000.0, 0.0)
Quartz.CGContextAddLineToPoint(context, 2000.0, 0.0)
Quartz.CGContextDrawPath(context, Quartz.kCGPathStroke)
# Next draw the y axis.
Quartz.CGContextMoveToPoint(context, 0.0, -2000.0)
Quartz.CGContextAddLineToPoint(context, 0.0, 2000.0)
Quartz.CGContextDrawPath(context, Quartz.kCGPathStroke)
doAlphaRects(context)
main.py¶
import MyView # noqa: F401
from PyObjCTools import AppHelper
AppHelper.runEventLoop()
setup.py¶
"""
Script for building the example.
Usage:
python3 setup.py py2app
"""
from setuptools import setup
setup(
name="CocoaDrawingShell",
app=["main.py"],
data_files=["English.lproj"],
setup_requires=["py2app", "pyobjc-framework-Cocoa", "pyobjc-framework-Quartz"],
)