Fully document PIL.PSDraw

This commit is contained in:
Stephen Johnson 2013-10-13 22:30:00 -07:00
parent 7030e50b36
commit c3de637362
4 changed files with 51 additions and 11 deletions

View File

@ -23,6 +23,10 @@ from PIL import EpsImagePlugin
# Simple Postscript graphics interface. # Simple Postscript graphics interface.
class PSDraw: class PSDraw:
"""
Sets up printing to the given file. If **file** is omitted,
:py:attr:`sys.stdout` is assumed.
"""
def __init__(self, fp=None): def __init__(self, fp=None):
if not fp: if not fp:
@ -31,7 +35,7 @@ class PSDraw:
self.fp = fp self.fp = fp
def begin_document(self, id = None): def begin_document(self, id = None):
"Write Postscript DSC header" """Set up printing of a document. (Write Postscript DSC header.)"""
# FIXME: incomplete # FIXME: incomplete
self.fp.write("%!PS-Adobe-3.0\n" self.fp.write("%!PS-Adobe-3.0\n"
"save\n" "save\n"
@ -45,7 +49,7 @@ class PSDraw:
self.isofont = {} self.isofont = {}
def end_document(self): def end_document(self):
"Write Postscript DSC footer" """Ends printing. (Write Postscript DSC footer.)"""
self.fp.write("%%EndDocument\n" self.fp.write("%%EndDocument\n"
"restore showpage\n" "restore showpage\n"
"%%End\n") "%%End\n")
@ -53,6 +57,12 @@ class PSDraw:
self.fp.flush() self.fp.flush()
def setfont(self, font, size): def setfont(self, font, size):
"""
Selects which font to use.
:param font: A Postscript font name
:param size: Size in points.
"""
if font not in self.isofont: if font not in self.isofont:
# reencode font # reencode font
self.fp.write("/PSDraw-%s ISOLatin1Encoding /%s E\n" %\ self.fp.write("/PSDraw-%s ISOLatin1Encoding /%s E\n" %\
@ -62,23 +72,49 @@ class PSDraw:
self.fp.write("/F0 %d /PSDraw-%s F\n" % (size, font)) self.fp.write("/F0 %d /PSDraw-%s F\n" % (size, font))
def setink(self, ink): def setink(self, ink):
"""
.. warning::
This has been in the PIL API for ages but was never implemented.
"""
print("*** NOT YET IMPLEMENTED ***") print("*** NOT YET IMPLEMENTED ***")
def line(self, xy0, xy1): def line(self, xy0, xy1):
"""
Draws a line between the two points. Coordinates are given in
Postscript point coordinates (72 points per inch, (0, 0) is the lower
left corner of the page).
"""
xy = xy0 + xy1 xy = xy0 + xy1
self.fp.write("%d %d %d %d Vl\n" % xy) self.fp.write("%d %d %d %d Vl\n" % xy)
def rectangle(self, box): def rectangle(self, box):
"""
Draws a rectangle.
:param box: A 4-tuple of integers whose order and function is currently
undocumented.
Hint: the tuple is passed into this format string:
.. code-block:: python
%d %d M %d %d 0 Vr\n
"""
self.fp.write("%d %d M %d %d 0 Vr\n" % box) self.fp.write("%d %d M %d %d 0 Vr\n" % box)
def text(self, xy, text): def text(self, xy, text):
"""
Draws text at the given position. You must use
:py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method.
"""
text = "\\(".join(text.split("(")) text = "\\(".join(text.split("("))
text = "\\)".join(text.split(")")) text = "\\)".join(text.split(")"))
xy = xy + (text,) xy = xy + (text,)
self.fp.write("%d %d M (%s) S\n" % xy) self.fp.write("%d %d M (%s) S\n" % xy)
def image(self, box, im, dpi = None): def image(self, box, im, dpi = None):
"Write an PIL image" """Draw a PIL image, centered in the given box."""
# default resolution depends on mode # default resolution depends on mode
if not dpi: if not dpi:
if im.mode == "1": if im.mode == "1":

View File

@ -118,14 +118,6 @@ can be found here.
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
:mod:`PSDraw` Module
--------------------
.. automodule:: PIL.PSDraw
:members:
:undoc-members:
:show-inheritance:
:mod:`PaletteFile` Module :mod:`PaletteFile` Module
------------------------- -------------------------

11
docs/reference/PSDraw.rst Normal file
View File

@ -0,0 +1,11 @@
.. py:module:: PIL.PSDraw
.. py:currentmodule:: PIL.PSDraw
:py:mod:`PSDraw` Module
=======================
The :py:mod:`PSDraw` module provides simple print support for Postscript
printers. You can print text, graphics and images through this module.
.. autoclass:: PIL.PSDraw.PSDraw
:members:

View File

@ -22,4 +22,5 @@ Reference
ImageStat ImageStat
ImageTk ImageTk
ImageWin ImageWin
PSDraw
../PIL ../PIL