[Pyobjc-dev] Problem drawing custom view to PDF
Brought to you by:
ronaldoussoren
|
From: Tom T. <pan...@gm...> - 2007-12-14 00:31:21
|
I've been trying to make a program using a function to draw to a context that it is passed to render a custom view. I'd also like to be able to use the same function that draws into the window to draw into a PDF. At the moment the drawing is done by importing Quartz, and drawing into the view's context using commands like CGContextSetGrayFillColor(self.context,1.0,1.0) CGContextFillRect(self.context,self.rect) This works fine when I call it in my subclass of NSView, but when I try to draw into a PDF it doesnt work properly. Looking at this page: http://developer.apple.com/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_pdf/chapter_14_section_4.html#//apple_ref/doc/uid/TP30001066-CH214-CJBHHJCB I would have assumed that all you have to do is create a context for your PDF, and then I could draw into it as usual using my generic drawing function that renders the custom view. However looking at the example file in /Developer/Examples/Quartz/Python/circle.py, they use CoreGraphics, and seem to be using a different calling style to call the drawing functions. from CoreGraphics import * import math # for pi pageRect = CGRectMake (0, 0, 612, 792) # landscape c = CGPDFContextCreateWithFilename ("circle.pdf", pageRect) c.beginPage (pageRect) c.setRGBFillColor(1.0,0.0,0.0,1.0) c.addArc(300,300,100,0,2*math.pi,1) c.fillPath() c.endPage() c.finish() I have tried using this, and inserting my code using 'c' as the context, but it does not work properly and gives the error: 2007-12-14 00:30:21.515 Python[992:613] <type 'exceptions.TypeError'>: depythonifying struct, got no sequence I don't understand what the difference between using CoreGraphics and Quartz is, and why the calling conventions are different. Do I need to use Quartz to create the PDF instead of CoreGraphics? Or do i need to rewrite my custom view using importing coregraphics instead of quartz? Why is the calling convention different? (the Quartz code I used for the custom view I took from the dotView example is similar to the function calls in the objective-C pdf creation example, whereas on the apple Quartz 2D python bindings page it is like the example above) Any help would be much appreciated! |