STANNIX Community


Manual: ppmdraw

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 either 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 essentially  an  easy-to-program	front  end  to	lib‐
       netpbm'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.

OPTIONS
       In addition to the options common to all programs based on libnetpbm (most notably -quiet, see  Common Options ), pp‐
       mdraw recognizes the following command line options:

       -script=script
	      This option gives the script.  See Script .

	      You may not specify both -script and -scriptfile.

       -scriptfile=filename
	      This option names a file that contains the script.  - means Standard 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 character.  Note that this means newlines  have  no	particular  signifi‐
       cance.

       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 arguments, 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 subsequent 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 setcolor, the current color is white.

	      There  is	 one argument.	It specifies the color as described for the argument of the pnm_parsecolor() library
	      routine .

       setfont
	      This sets the "current font", which determines the font in which subsequent text drawing commands	 draw.	 Be‐
	      fore 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 ".ppmdfont" and its first 8 bytes are the ASCII en‐
	      coding of "ppmdfont".

	      There is only one of these fonts as far as we know.  It is distributed with Netpbm as the file  standard.ppmd‐
	      font,  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
	      standard.ppmdfont, so you can use that as an example.

       line   This draws a one pixel wide line in the current color.  The 4 arguments 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 segment.

	      The  shape of the curve is such that it passes through the specified 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 column, and ending point row.

	      This command does not affect the current position.

       circle This command draws a circle in the current color.	 The three arguments 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 to‐
	      ken.

       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)