g.pnmcomp

## NAME

g.pnmcomp - Overlays multiple PPM image files.

## KEYWORDS

general

## SYNOPSIS

g.pnmcomp
g.pnmcomp help
g.pnmcomp input=string[,string,...] [mask=string[,string,...]] [opacity=float[,float,...]] output=string width=integer height=integer [background=string]

### Parameters:

input=string[,string,...]
  Names of input files.
mask=string[,string,...]
  Names of mask files.
opacity=float[,float,...]
  Layer opacities.
output=string
  Name of output file.
width=integer
  Image width.
height=integer
  Image height.
background=string
  Background color.

## DESCRIPTION

(culled from the mailing list)

    From: Glynn Clements
    Subject: Re: [GRASS5] Re: [GRASSLIST:10403] Transparency added
    Date: Sun, 19 Feb 2006 20:17:59 +0000

    g.pnmcomp isn't meant for end users. It's an internal tool for use by
    a Tcl/Tk GUI.

    In essence, g.pnmcomp generates a PPM image by overlaying a series of
    PPM/PGM pairs (PPM = RGB image, PGM = alpha channel).

    The intention is that d.* programs will emit PPM/PGM pairs (by way of
    the PNG-driver code being integrated into libraster). The GUI will
    manage a set of layers; each layer consists of the data necessary to
    generate a PPM/PGM pair.

    Whenever the layer "stack" changes (by adding, removing, hiding,
    showing or re-ordering layers), the GUI will render any layers for
    which it doesn't already have the PPM/PGM pair, then re-run g.pnmcomp
    to generate the final image (just redoing the composition is a lot
    faster than redrawing everything).

    A C/C++ GUI would either have g.pnmcomp's functionality (image
    composition) built-in, or would use the system's graphics API to
    perform composition (for translucent layers, you would need OpenGL or
    the Render extension, or something else which supports translucent
    rendering).

    Tk doesn't support transparent (masked) true-colour images (it does
    support transparent GIFs, but that's limited to 256 colours), and an
    image composition routine in Tcl would be unacceptably slow, hence
    the existence of g.pnmcomp.

## AUTHOR

Glynn Clements

Last changed: $Date: 2006/03/01 10:02:32 $

Main index - general index - Full index