iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
Pythonをマスターする必要が出てきた。でも漠然と素のスクリプトの練習をしても仕方がないと思う。多分、PythonのWebアプリケーションのフレームワークを使ったサイトを立ち上げてみるのが要求に対する適切な対応だと思うが、ここはCocoa練習帳ですし、他とは少し違うスキルが必要という事で、QuartzツールをPythonスクリプトで制作する事に挑戦だ!
OS X Lion (10.7)には、2.7系列が組み込まれているようだ。
$ python -V
Python 2.7.1
$ python --version
Python 2.7.1
$ which python
/usr/bin/python
以前は、/Developer/Examples/Quartz/Python/API-SUMMARY にQuartz Python APIの文書があったようが、現在はない。
色々探してみて見つけたのがこれ。実は新しいXcodeインストール時に誤って古いXcodeを削除しなかったのだが、それがよかった。/Developer/Documentation/Python/ に情報があった。
早速、Retina以前のiPhone画面サイズの空のPDF書類「demo.pdf」を作成。
$ cat demo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from CoreGraphics import *
# iOS size
mediaRect = CGRectMake(0.0, 0.0, 640.0, 960.0)
context = CGPDFContextCreateWithFilename("demo.pdf", mediaRect)
context.beginPage(mediaRect)
context.endPage()
context.finish()
# End Of File
このスクリプトを実行すれば、demo.pdfというファイルが生成されるのが確認できると思う。
空白ページだと寂しいので、赤色の四角形を描画。
$ cat demo.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from CoreGraphics import *
# iOS size
mediaRect = CGRectMake(0.0, 0.0, 640.0, 960.0)
context = CGPDFContextCreateWithFilename("demo.pdf", mediaRect)
context.beginPage(mediaRect)
context.setRGBFillColor(1.0, 0.0, 0.0, 1.0)
ourRect = CGRectMake(20.0, 20.0, 130.0, 100.0)
context.fillRect(ourRect)
context.endPage()
context.finish()
# End Of File
あれ、CGContextSetRGBFillColorに相当する箇所でエラーとなっている。
$ ./demo.py
Traceback (most recent call last):
File "./demo.py", line 12, in
context.setRGBFillColor(1.0, 0.0, 0.0, 1.0)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/CoreGraphics/__init__.py", line 528, in setRGBFillColor
def setRGBFillColor(*args): return _CoreGraphics.CGContext_setRGBFillColor(*args)
TypeError: in method 'CGContext_setRGBFillColor', argument 2 of type 'CGFloat'
何故だろう?