{ -script=script | -scriptfile=filename } [-verbose]


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 either white space or an equals sign between an option name and
its value.

This program is part of Netpbm.

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
option. 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
angle 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.



The heart of ppmdraw function is its script. The script is a charac-
ter 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 char-
acter. 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 dou-
ble quotes. Everything between two matched quotation marks is one

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
arguments, the meaning of which depends upon the verb. The following
list gives all the valid verbs, and for each its meaning and its argu-

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





line This draws a one pixel wide line in the current color. The 4



circle This command draws a circle in the current color. The three


text This command draws text in the current color in the built-in

? 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


ppmdraw was new in Netpbm 10.29 (August 2005).

ppmlabel, ppm

netpbm documentation 22 June 2005 Ppmdraw User Manual(0)