Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

pgm(3)

ppm(3)

ppm(3)  —  C LIBRARY FUNCTIONS

NAME

ppm - functions to support portable pixelmap programs

SYNOPSIS

#include <ppm.h>
cc ... libppm.a libpgm.a libpbm.a

DESCRIPTION

TYPES AND CONSTANTS

typedef gray pixval;
#define PGM_MAXMAXVAL 255
typedef struct
    {
    pixval r, g, b;
    } pixel;
extern pixval ppm_pbmmaxval;

Each pixval should contain only the values between 0 and PGM_MAXMAXVAL. ppm_pbmmaxval is the maxval used when a PPM program reads a PBM file.  Normally it is 1; however, for some programs, a larger value gives better results. 

PIXEL MANIPULATIONS

pixval PPM_GETR(p)
pixel p;
 pixval PPM_GETG(p)
pixel p;
 pixval PPM_GETB(p)
pixel p;

These three macros retrieve the red, green or blue value from the given pixel.

void PPM_ASSIGN(p,red,grn,blu)
pixel p;
pixval red, grn, blu;

This macro assigns the given red, green and blue values to the pixel.

int PPM_EQUAL(p,q)
pixel p, q;

This macro checks two pixels for equality.

void PPM_CSCALE(newp, p, oldmaxval, newmaxval)
pixel newp, p;
pixval oldmaxval, newmaxval;

This macro scales the colors of pixel p according the old and new maximum values and assigns the new values to newp. It is intended to make writing ppmtowhatever easier.

double PPM_LUMIN(p)
pixel p;

This macro determines the luminance of the pixel p.

PGM MEMORY MANAGEMENT

pixel ∗∗pgm_allocarray(int cols, int rows)

Allocate an array of pixels.

pixel ∗pgm_allocrow( int cols )

Allocate a row of the given number of pixels.

void pgm_freearray( pixelrow, rows )

Free the array allocated with pgm_allocarray() containing the given number of rows. 

pbm_freerow( pixelrow )

Free a row of pixels.

READING PBM FILES

void
ppm_readppminit( file, colsP, rowsP, maxvalP, formatP )
FILE ∗file;
int ∗colsP, ∗rowsP, ∗formatP;
pixval ∗maxvalP;

Read the header from a pgm file, filling in the rows, cols, maxval and format variables.

void
ppm_readppmrow( file, pixelrow, cols, maxval, format )
FILE ∗file;
pixel ∗pixelrow;
pixval maxval;
int cols, format;

Read a row of pixels into the pixelrow array. Format and cols were filled in by ppm_readppminit().

pixel ∗∗
ppm_readppm( file, colsP, rowsP, maxvalP )
FILE ∗file;
int ∗colsP, ∗rowsP;
pixval ∗maxvalP;

Read an entire pixelmap file into memory, returning the allocated array and filling in the rows, cols and maxval variables. This function combines ppm_readppminit(), ppm_allocarray() and ppm_readppmrow().

WRITING PGM FILES

void
ppm_writeppminit( file, cols, rows, maxval )
FILE ∗file;
int cols, rows;
pixval maxval;

Write the header for a portable pixelmap file.

void
ppm_writeppmrow( file, pixelrow, cols, maxval )
FILE ∗file;
pixel ∗pixelrow;
int cols;
pixval maxval;

Write a row from a portable pixelmap.

void
ppm_writeppm( file, bits, cols, rows, maxval )
FILE ∗file;
pixel ∗∗bits;
int cols, rows;
pixval maxval;

Write the header and all data for a portable pixelmap. This function combines ppm_writeppminit() and ppm_writeppmrow().

pixel ppm_backgroundpixel(pixels, cols, rows)
pixel ∗∗pixels;
int cols;
int rows;

Intuit the value of the background.

SEE ALSO

pgm(3), ppm(3)

AUTHOR

Manual by Tony Hansen. 
 
Copyright (C) 1989 by Jef Poskanzer.
 
Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation.  This software is provided "as is" without express or implied warranty.

Amiga Unix  —  Last change:

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026