[Pythonmac-SIG] Problems with CoreGraphics API post-Snow Leopard
João Leão
joaoleao at gmx.net
Tue Apr 17 17:48:41 CEST 2012
Hi list
I have an old script using the CoreGraphics API that's no longer working properly since Snow Leopard.
I' running Lion with the default Python, which is 2.7.1.
I googled about this and it seems that's because Python is 64-bit now and some old data types don't work anymore.
The first error I got was in the function CGBitmapContextCreateWithColor.
The Console spits the following error:
---
TypeError: in method 'CGBitmapContextCreateWithColor', argument 4 of type 'CGFloat const [5]'
---
My code looks like this:
c = CGBitmapContextCreateWithColor(new_Width, new_Height, cs, (0,0,0,0))
The problem is in the last argument "(0, 0, 0, 0)" [a color reference] which, the new API expects to be CGFloatArray.
I couldn't find any documentation on how to create such an object in python but, fortunately, I found some code here http://stuffineededtoknow.blogspot.pt/2009_01_01_archive.html that solved this issue:
---
bg = CGFloatArray(5)
c = CGBitmapContextCreateWithColor(new_Width, new_Height, cs, bg)
---
But now I'm getting another error (and I'll probably get some more) with another function that expects a CGFloat object instead of a plain integer.
The code looks like this:
---
self.pdf.drawPlainTextInRect(text_prov, textRect, 10)
---
And the error (again caused by the last argument, in this case "10"):
---
TypeError: in method 'CGContext_drawPlainTextInRect', argument 4 of type 'CGFloat'
---
I'm sure that it can't be so hard to create a CGFloat but I didn't find the right documentation or sample code to do it.
Does anybody know how to do this?
Thanks in advance.
João
More information about the Pythonmac-SIG
mailing list