Ppmdraw User Manual(1) General Commands Manual Ppmdraw User Manual(1)
NAME
ppmdraw - draw lines, text, etc on a PPM image
SYNOPSIS
ppmdraw
{ -script=script | -scriptfile=filename } [-verbose]
[ppmfile]
All options can be abbreviated to their shortest unique prefix. You may
use two hyphens instead of one to designate an option. You may use ei-
ther white space or an equals sign between an option name and its value.
DESCRIPTION
This program is part of Netpbm(1).
ppmdraw draws lines, shapes, text, etc. on a PPM image. It is essen-
tially an easy-to-program front end to libnetpbm's "ppmd" subroutines.
It lets you create a human-friendly script to describe the drawing
rather than write a C program.
You supply drawing instructions with a script, which you supply either
in a file named by a -scriptfile option or as the value of a -script op-
tion. Here is an example script:
setpos 50 50;
text_here 10 30 "hello";
setcolor black;
text_here 10 0 "there";
line_here 5 20;
This example starts at Column 50, Row 50 of the input image and writes
the word "hello" there in 10 pixel high white letters at a 30 degree an-
gle up from horizontal. Then, from where that leaves off, the script
writes "there" in 10 pixel high black letters horizontally. Finally, it
draws a black line to a point 5 pixels over and 20 pixels down from the
end of "there."
If you don't specify ppmfile, ppmdraw reads its input PPM image from
Standard Input.
The output image goes to Standard Output.
ppmdraw works on multi-image streams. It executes the same script on
each input image and produces an output stream with one image for each
input image. But before Netpbm 10.32 (February 2006), ppmdraw ignored
every image after the first.
If you just want to add a single line of text to an image, ppmlabel may
be more what you want.
OPTIONS
In addition to the options common to all programs based on libnetpbm
(most notably -quiet, see ]8;;index.html#commonoptions\ Common Options]8;;\ ), ppmdraw recognizes the fol-
lowing command line options:
-script=script
This option gives the script. See ]8;;#script\Script]8;;\ .
You may not specify both -script and -scriptfile.
-scriptfile=filename
This option names a file that contains the script. - means Stan-
dard Input.
You may not specify both -script and -scriptfile.
You may not specify - (Standard Input) for both -scriptfile and
the input image file.
SCRIPT
The heart of ppmdraw function is its script. The script is a character
stream. The stream consists of commands. Commands are separated by
semicolons. White space is regarded just like in C: Any contiguous
stretch of unquoted white space is equivalent to a single space charac-
ter. Note that this means newlines have no particular significance.
A command is composed of tokens, separated from each other by white
space. To write a token that contains white space, enclose it in double
quotes. Everything between two matched quotation marks is one token.
The first token of a command is the verb, which determines the basic
function of the command. The rest of the tokens of the command are ar-
guments, the meaning of which depends upon the verb. The following list
gives all the valid verbs, and for each its meaning and its arguments.
Many command have arguments that specify a position on the canvas, which
you specify by row and column. Row 0 is the top row. Column 0 is the
leftmost column. You may specify negative numbers (but such a position
would necessarily be off the canvas).
Your drawing instructions may involve positions not on the canvas. But
any pixels you draw there just get discarded.
setpos Set the "current position" in the image. This affects where sub-
sequent commands draw things. The 2 arguments are the column and
row number.
At the start of the script, the current position is (0,0).
setlinetype
The 1 argument is "normal" or "nodiag.". This effects a
ppmd_setlinetype() call. Further details are not yet documented.
setlineclip
This effects a ppmd_setlineclip() call. Not yet documented.
setcolor
This sets the "current color", which determines the color in
which subsequent drawing commands draw. Before the first set-
color, the current color is white.
There is one argument. It specifies the color as described for
the ]8;;libnetpbm_image.html#colorname\argument of the pnm_parsecolor() library routine]8;;\ .
setfont
This sets the "current font", which determines the font in which
subsequent text drawing commands draw. Before the first setfont,
the current font is a built in font called "standard."
The argument of this command is a file name. It is the name of a
Netpbm PPMD font file.
A Netpbm PPMD font file typically has a name that ends in ".ppmd-
font" and its first 8 bytes are the ASCII encoding of "ppmdfont".
There is only one of these fonts as far as we know. It is dis-
tributed with Netpbm as the file standard.ppmdfont, but you don't
need to use that file because the same font is built into the
Netpbm library and is the default. If you want to make a new
font, you can find the format of a ppmdfont file in the Netpbm
interface header file ppmdfont.h, but you'll have to make your
own tools to build it. The program ppmdmkfont generates stan-
dard.ppmdfont, so you can use that as an example.
line This draws a one pixel wide line in the current color. The 4 ar-
guments are: starting column, starting row, ending column, ending
row.
This command does not affect the current position.
line_here
This is like line, except it works in a more relative way.
The line starts at the current point. The two arguments are the
rightward and downward displacement from there to the terminal
point. The command moves the current position to the terminal
point after drawing.
spline3
This draws a spline in the current color between 2 points, using
a third as a control point. It approximates a cubic spline seg-
ment.
The shape of the curve is such that it passes through the speci-
fied endpoints, and lines tangent to the curve at those endpoints
intersect at the control point. Controlling the tangents allows
you to connect this curve to other curves generated the same way
without having corners at the connection points.
The 6 arguments are the starting point column, starting point
row, control point column, control point row, ending point col-
umn, and ending point row.
This command does not affect the current position.
circle This command draws a circle in the current color. The three ar-
guments are the column number and row number of the center of the
circle and the radius of the circle in pixels.
filledrectangle
This command draws a rectangle filled with the current color.
The 4 arguments are the column and row numbers of the upper left
corner of the rectangle, the width of the rectangle, and the
height of the rectangle.
text This command draws text in the current color in the built-in
font. The 5 arguments are:
• column number of starting point of baseline
• row number of starting point of baseline
• height of characters, in pixels
• angle of baseline in degrees elevated from the horizontal
• text
Note that if your text contains white space, you'll have to use
double quotes to cause it to be a single token.
text_here
This is like text, except that the baseline starts at the current
position and the command updates the current position to the
other end of the baseline after it draws.
Bear in mind that a script starts with the current position in
the top line, so if you leave it there, only the bottom line of
your text will be within the image!
HISTORY
ppmdraw was new in Netpbm 10.29 (August 2005).
SEE ALSO
ppmlabel(1), ppm(1) libnetpbm_draw(1)
DOCUMENT SOURCE
This manual page was generated by the Netpbm tool 'makeman' from HTML
source. The master documentation is at
http://netpbm.sourceforge.net/doc/ppmdraw.html
netpbm documentation 22 June 2005 Ppmdraw User Manual(1)
Generated by dwww version 1.16 on Tue Dec 16 04:18:52 CET 2025.