summaryrefslogtreecommitdiffstats
path: root/Mac/Demo/printing/PrintingDemo.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Demo/printing/PrintingDemo.py')
-rw-r--r--Mac/Demo/printing/PrintingDemo.py93
1 files changed, 0 insertions, 93 deletions
diff --git a/Mac/Demo/printing/PrintingDemo.py b/Mac/Demo/printing/PrintingDemo.py
deleted file mode 100644
index a42ac2f..0000000
--- a/Mac/Demo/printing/PrintingDemo.py
+++ /dev/null
@@ -1,93 +0,0 @@
-import Printing
-from Carbon import Qd
-from Carbon import Fm
-from Carbon import Res
-
-# some constants
-PostScriptBegin = 190 # Set driver state to PostScript
-PostScriptEnd = 191 # Restore QuickDraw state
-PostScriptHandle = 192 # PostScript data referenced in handle
-
-CHUNK_SIZE = 0x8000 # max size of PicComment
-
-def PostScript(text):
- """embed text as plain PostScript in print job."""
- handle = Res.Resource('')
- Qd.PicComment(PostScriptBegin, 0, handle)
- while text:
- chunk = text[:CHUNK_SIZE]
- text = text[CHUNK_SIZE:]
- handle.data = chunk
- Qd.PicComment(PostScriptHandle, len(chunk), handle)
- handle.data = ''
- Qd.PicComment(PostScriptEnd, 0, handle)
-
-# create a new print record
-printrecord = Printing.NewTPrintRecord()
-
-# open the printer
-Printing.PrOpen()
-try:
- # initialize print record with default values
- Printing.PrintDefault(printrecord)
-
- # page setup, ok is 0 when user cancelled
- ok = Printing.PrStlDialog(printrecord)
- if not ok:
- raise KeyboardInterrupt
- # at this stage, you should save the print record in your document for later
- # reference.
-
- # print job dialog, ok is 0 when user cancelled
- ok = Printing.PrJobDialog(printrecord)
- if not ok:
- raise KeyboardInterrupt
-
- # once per document
- port = Printing.PrOpenDoc(printrecord)
- # port is the Printer's GrafPort, it is also the current port, so no need to Qd.SetPort(port)
- try:
- # start printing a page
- # XXX should really look up what pages to print by
- # inspecting the print record.
- Printing.PrOpenPage(port, None)
- try:
- # use QuickDraw like in any other GrafPort
- Qd.FrameRect((10, 250, 100, 500))
- Qd.FrameRect((10, 510, 100, 600))
- Qd.MoveTo(10, 100)
- Qd.TextSize(50)
- Qd.TextFont(Fm.GetFNum("Helvetica"))
- Qd.DrawString("It rreally works!")
- Qd.MoveTo(10, 150)
- Qd.TextSize(20)
- Qd.DrawString("(and now for a little PostScript...)")
-
- # example PostScript code
- ps = """
- % the coordinate system is the quickdraw one, which is flipped
- % compared to the default PS one. That means text will appear
- % flipped when used directly from PostScript.
- % As an example we start by defining a custom scalefont operator
- % that corrects this.
- /myscalefont{[exch 0 0 2 index neg 0 0]makefont}def
- 0.75 setgray
- 0 0 moveto
- 0 30 lineto 10000 30 lineto
- 10000 0 lineto closepath fill
- 0 setgray
- 5 25 moveto /Courier findfont 20 myscalefont setfont
- (Printed with PostScript!) show
- 2 setlinewidth [10 10 5 10] 0 setdash 5 5 moveto 400 0 rlineto stroke
- """
- # embed the PostScript code in the print job
- PostScript(ps)
- finally:
- # when done with the page
- Printing.PrClosePage(port)
- finally:
- # when done with the document
- Printing.PrCloseDoc(port)
-finally:
- # when done printing
- Printing.PrClose()