pokey@well.UUCP (Jef Poskanzer) (09/14/89)
#! /bin/sh # This is a shell archive, meaning: # 1. Remove everything above the #! /bin/sh line. # 2. Save the resulting text in a file. # 3. Execute the file with /bin/sh (not csh) to create the files: # pbm/xwdtopbm.1 # pbm/pbmtoicon.c # pbm/pbmtoicon.1 # pbm/pbmtoptx.c # pbm/pbmtoptx.1 # pbm/pbmtorast.c # pbm/pbmtorast.1 # pbm/pbmtoxbm.c # pbm/pbmtoxbm.1 # pbm/pbmtox10bm.c # pbm/pbmtox10bm.1 # pbm/pbmtoascii.c # pbm/pbmtoascii.1 # pbm/pbmpaste.c # pbm/pbmpaste.1 # pbm/g3topbm.c # pbm/g3topbm.1 # This archive created: Thu Sep 14 03:43:26 1989 # By: Jef Poskanzer (Paratheo-Anametamystikhood Of Eris Esoteric, Ada Lovelace Cabal) export PATH; PATH=/bin:$PATH if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/xwdtopbm.1'" '(1144 characters)' if test -f 'pbm/xwdtopbm.1' then echo shar: will not over-write existing file "'pbm/xwdtopbm.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/xwdtopbm.1' X.TH xwdtopbm 1 "31 August 1988" X.SH NAME Xxwdtopbm - convert an X11 or X10 window dump file into a portable bitmap X.SH SYNOPSIS Xxwdtopbm [xwdfile] X.SH DESCRIPTION XReads an X11 or X10 window dump file as input. XProduces a portable bitmap as output. X.PP XUsing this program, you can convert anything on an X workstation's screen Xinto a pbm bitmap. XJust display whatever you're interested in, do an xwd, run it through Xxwdtopbm, and then use pnmcut to select the part you want. X.PP XNote that this tool only works for monochrome dump files. X.SH BUGS XI haven't tested this tool with very many configurations, so there are Xprobably bugs. XPlease let me know if you find any. X.SH "SEE ALSO" Xpbmtoxwd(1), pbm(5), xwdtoppm(1), ppmtoxwd(1) X.SH AUTHOR XCopyright (C) 1988 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 1144 -ne "`wc -c < 'pbm/xwdtopbm.1'`" then echo shar: error transmitting "'pbm/xwdtopbm.1'" '(should have been 1144 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoicon.c'" '(2333 characters)' if test -f 'pbm/pbmtoicon.c' then echo shar: will not over-write existing file "'pbm/pbmtoicon.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoicon.c' X/* pbmtoicon.c - read a portable bitmap and produce a Sun icon file X** X** Copyright (C) 1988 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#include "pbm.h" X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd; X register bit *bitrow, *bP; X int rows, cols, format, pad, padleft, padright, row, col; X X pm_progname = argv[0]; X X if ( argc > 2 ) X pm_usage( "[pbmfile]" ); X X if ( argc == 2 ) X ifd = pm_openr( argv[1] ); X else X ifd = stdin; X X pbm_readpbminit( ifd, &cols, &rows, &format ); X bitrow = pbm_allocrow( cols ); X X /* Round cols up to the nearest multiple of 16. */ X pad = ( ( cols + 15 ) / 16 ) * 16 - cols; X padleft = pad / 2; X padright = pad - padleft; X X printf( "/* Format_version=1, Width=%d, Height=%d", cols + pad, rows ); X printf( ", Depth=1, Valid_bits_per_item=16\n */\n" ); X X putinit( ); X for ( row = 0; row < rows; row++ ) X { X pbm_readpbmrow( ifd, bitrow, cols, format ); X for ( col = 0; col < padleft; col++ ) X putbit( 0 ); X for ( col = 0, bP = bitrow; col < cols; col++, bP++ ) X putbit( *bP ); X for ( col = 0; col < padright; col++ ) X putbit( 0 ); X } X X pm_close( ifd ); X X putrest( ); X X exit( 0 ); X } X X Xint item, bitsperitem, bitshift, itemsperline, firstitem; X Xputinit( ) X { X itemsperline = 0; X bitsperitem = 0; X item = 0; X bitshift = 15; X firstitem = 1; X } X Xputbit( b ) Xbit b; X { X if ( bitsperitem == 16 ) X putitem( ); X bitsperitem++; X if ( b == PBM_BLACK ) X item += 1 << bitshift; X bitshift--; X } X Xputrest( ) X { X if ( bitsperitem > 0 ) X putitem( ); X putchar( '\n' ); X } X Xputitem( ) X { X if ( firstitem ) X firstitem = 0; X else X putchar( ',' ); X if ( itemsperline == 8 ) X { X putchar( '\n' ); X itemsperline = 0; X } X if ( itemsperline == 0 ) X putchar( '\t' ); X itemsperline++; X printf( "0x%04x", item ); X bitsperitem = 0; X item = 0; X bitshift = 15; X } SHAR_EOF if test 2333 -ne "`wc -c < 'pbm/pbmtoicon.c'`" then echo shar: error transmitting "'pbm/pbmtoicon.c'" '(should have been 2333 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoicon.1'" '(663 characters)' if test -f 'pbm/pbmtoicon.1' then echo shar: will not over-write existing file "'pbm/pbmtoicon.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoicon.1' X.TH pbmtoicon 1 "31 August 1988" X.SH NAME Xpbmtoicon - convert a portable bitmap into a Sun icon X.SH SYNOPSIS Xpbmtoicon [pbmfile] X.SH DESCRIPTION XReads a portable bitmap as input. XProduces a Sun icon as output. X.SH "SEE ALSO" Xicontopbm(1), pbm(5) X.SH AUTHOR XCopyright (C) 1988 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 663 -ne "`wc -c < 'pbm/pbmtoicon.1'`" then echo shar: error transmitting "'pbm/pbmtoicon.1'" '(should have been 663 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoptx.c'" '(1749 characters)' if test -f 'pbm/pbmtoptx.c' then echo shar: will not over-write existing file "'pbm/pbmtoptx.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoptx.c' X/* pbmtoptx.c - read a portable bitmap and produce a Printronix printer file X** X** Copyright (C) 1988 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#ifdef SYSV X#include <string.h> X#else SYSV X#include <strings.h> X#endif SYSV X#include "pbm.h" X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd; X register bit *bitrow, *bP; X int rows, cols, format, row, col; X char *usage = "[pbmfile]"; X X pm_progname = argv[0]; X X if ( argc > 2 ) X pm_usage( usage ); X X if ( argc == 2 ) X ifd = pm_openr( argv[1] ); X else X ifd = stdin; X X pbm_readpbminit( ifd, &cols, &rows, &format ); X bitrow = pbm_allocrow( cols ); X X putinit( ); X for ( row = 0; row < rows; row++ ) X { X pbm_readpbmrow( ifd, bitrow, cols, format ); X for ( col = 0, bP = bitrow; col < cols; col++, bP++ ) X putbit( *bP ); X putrest( ); X putchar( 5 ); X putchar( '\n' ); X } X X pm_close( ifd ); X X exit( 0 ); X } X X Xchar item; Xint bitsperitem, bitshift; X Xputinit( ) X { X bitsperitem = 0; X item = 64; X bitshift = 0; X } X Xputbit( b ) Xbit b; X { X if ( bitsperitem == 6 ) X putitem( ); X if ( b == PBM_BLACK ) X item += 1 << bitshift; X bitsperitem++; X bitshift++; X } X Xputrest( ) X { X if ( bitsperitem > 0 ) X putitem( ); X } X Xputitem( ) X { X putchar( item ); X bitsperitem = 0; X item = 64; X bitshift = 0; X } SHAR_EOF if test 1749 -ne "`wc -c < 'pbm/pbmtoptx.c'`" then echo shar: error transmitting "'pbm/pbmtoptx.c'" '(should have been 1749 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoptx.1'" '(764 characters)' if test -f 'pbm/pbmtoptx.1' then echo shar: will not over-write existing file "'pbm/pbmtoptx.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoptx.1' X.TH pbmtoptx 1 "31 August 1988" X.SH NAME Xpbmtoptx - convert a portable bitmap into Printronix printer graphics X.SH SYNOPSIS Xpbmtoptx [pbmfile] X.SH DESCRIPTION XReads a portable bitmap as input. XProduces a file of Printronix printer graphics as output. X.PP XNote that there is no ptxtopbm tool - this transformation is one way. X.SH "SEE ALSO" Xpbm(5) X.SH AUTHOR XCopyright (C) 1988 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 764 -ne "`wc -c < 'pbm/pbmtoptx.1'`" then echo shar: error transmitting "'pbm/pbmtoptx.1'" '(should have been 764 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtorast.c'" '(2239 characters)' if test -f 'pbm/pbmtorast.c' then echo shar: will not over-write existing file "'pbm/pbmtorast.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtorast.c' X/* pbmtorast.c - read a portable bitmap and produce a Sun rasterfile X** X** Copyright (C) 1988 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#include "pbm.h" X X/* This program compiles only on Suns. */ X#include <pixrect/pixrect_hs.h> X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd; X register bit *bitrow, *bP; X int argn, pr_type, linesize; X int rows, cols, format, row, col; X struct pixrect *pr; X short *data, *sp; X int bitcount; X char *usage = "[-s] [pbmfile]"; X X pm_progname = argv[0]; X X argn = 1; X pr_type = RT_BYTE_ENCODED; X X if ( argc - argn >= 1 && argv[argn][0] == '-' ) X { X if ( ( argv[argn][1] == 's' || argv[argn][1] == 'S' ) && X argv[argn][2] == '\0' ) X { X pr_type = RT_STANDARD; X argn++; X } X else X pm_usage( usage ); X } X X if ( argc - argn > 1 ) X pm_usage( usage ); X X if ( argc - argn == 1 ) X ifd = pm_openr( argv[argn] ); X else X ifd = stdin; X X pbm_readpbminit( ifd, &cols, &rows, &format ); X bitrow = pbm_allocrow( cols ); X X if ( (pr = mem_create(cols, rows, 1)) == NULL ) X pm_error( "unable to create new pixrect", 0,0,0,0,0 ); X X data = ( (struct mpr_data *) pr->pr_data )->md_image; X linesize = ( (struct mpr_data *) pr->pr_data )->md_linebytes; X X for ( row = 0; row < rows; row++ ) X { X pbm_readpbmrow( ifd, bitrow, cols, format ); X sp = data; X bitcount = 15; X for ( col = 0, bP = bitrow; col < cols; col++, bP++ ) X { X if ( *bP == PBM_BLACK ) X *sp |= 1 << bitcount; X bitcount--; X if ( bitcount < 0 ) X { X sp++; X bitcount = 15; X } X } X data += linesize / sizeof(short); X } X X pm_close( ifd ); X X#ifdef sun386 X /* Force a flip to 80386 format. */ X ( (struct mpr_data *) pr->pr_data )->md_flags &= ! MP_I386; X pr_flip( pr ); X#endif sun386 X X pr_dump( pr, stdout, NULL, pr_type, 0 ); X X exit( 0 ); X } SHAR_EOF if test 2239 -ne "`wc -c < 'pbm/pbmtorast.c'`" then echo shar: error transmitting "'pbm/pbmtorast.c'" '(should have been 2239 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtorast.1'" '(1146 characters)' if test -f 'pbm/pbmtorast.1' then echo shar: will not over-write existing file "'pbm/pbmtorast.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtorast.1' X.TH pbmtorast 1 "19 November 1988" X.SH NAME Xpbmtorast - convert a portable bitmap into a Sun rasterfile X.SH SYNOPSIS Xpbmtorast [-s] [pbmfile] X.SH DESCRIPTION XReads a portable bitmap as input. XProduces a Sun rasterfile as output. XNOTE: since it uses Sun-specific include files and libraries, pbmtorast Xwill compile only on Suns. X.PP XThe -s flag forces the result to be in RT_STANDARD form; otherwise, Xit defaults to RT_BYTE_ENCODED, which is smaller but, well, less standard. X.PP XThe ppmtorast filter provides the same functionality as pbmtorast, in Xaddition to handling color images; but pbmtorast is worth keeping, since Xit is significantly faster. X.SH "SEE ALSO" Xrasttopbm(1), pbm(5), ppmtorast(1), rasttoppm(1) X.SH AUTHOR XBarry Klawans X XCopyright (C) 1988 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 1146 -ne "`wc -c < 'pbm/pbmtorast.1'`" then echo shar: error transmitting "'pbm/pbmtorast.1'" '(should have been 1146 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoxbm.c'" '(2576 characters)' if test -f 'pbm/pbmtoxbm.c' then echo shar: will not over-write existing file "'pbm/pbmtoxbm.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoxbm.c' X/* pbmtoxbm.c - read a portable bitmap and produce an X11 bitmap file X** X** Copyright (C) 1988 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#ifdef SYSV X#include <string.h> X#define index strchr X#else SYSV X#include <strings.h> X#endif SYSV X#include "pbm.h" X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd; X register bit *bitrow, *bP; X int rows, cols, format, padright, row, col; X char name[100], *cp; X X pm_progname = argv[0]; X X if ( argc > 2 ) X pm_usage( "[pbmfile]" ); X X if ( argc == 2 ) X { X ifd = pm_openr( argv[1] ); X strcpy( name, argv[1] ); X if ( strcmp( name, "-" ) == 0 ) X strcpy( name, "noname" ); X X if ( ( cp = index( name, '.' ) ) != 0 ) X *cp = '\0'; X } X else X { X ifd = stdin; X strcpy( name, "noname" ); X } X X pbm_readpbminit( ifd, &cols, &rows, &format ); X bitrow = pbm_allocrow( cols ); X X /* Compute padding to round cols up to the nearest multiple of 8. */ X padright = ( ( cols + 7 ) / 8 ) * 8 - cols; X X printf( "#define %s_width %d\n", name, cols ); X printf( "#define %s_height %d\n", name, rows ); X printf( "static char %s_bits[] = {\n", name ); X X putinit( ); X for ( row = 0; row < rows; row++ ) X { X pbm_readpbmrow( ifd, bitrow, cols, format ); X for ( col = 0, bP = bitrow; col < cols; col++, bP++ ) X putbit( *bP ); X for ( col = 0; col < padright; col++ ) X putbit( 0 ); X } X X if ( ifd != stdin ) X fclose( ifd ); X X putrest( ); X X exit( 0 ); X } X X Xint item, bitsperitem, bitshift, itemsperline, firstitem; X Xputinit( ) X { X itemsperline = 0; X bitsperitem = 0; X item = 0; X bitshift = 0; X firstitem = 1; X } X Xputbit( b ) Xbit b; X { X if ( bitsperitem == 8 ) X putitem( ); X bitsperitem++; X if ( b == PBM_BLACK ) X item += 1 << bitshift; X bitshift++; X } X Xputrest( ) X { X if ( bitsperitem > 0 ) X putitem( ); X printf( "};\n" ); X } X Xputitem( ) X { X if ( firstitem ) X firstitem = 0; X else X printf( "," ); X if ( itemsperline == 15 ) X { X putchar( '\n' ); X itemsperline = 0; X } X if ( itemsperline == 0 ) X printf( " " ); X itemsperline++; X printf( "0x%02x", item ); X bitsperitem = 0; X item = 0; X bitshift = 0; X } SHAR_EOF if test 2576 -ne "`wc -c < 'pbm/pbmtoxbm.c'`" then echo shar: error transmitting "'pbm/pbmtoxbm.c'" '(should have been 2576 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoxbm.1'" '(680 characters)' if test -f 'pbm/pbmtoxbm.1' then echo shar: will not over-write existing file "'pbm/pbmtoxbm.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoxbm.1' X.TH pbmtoxbm 1 "31 August 1988" X.SH NAME Xpbmtoxbm - convert a portable bitmap into an X11 bitmap X.SH SYNOPSIS Xpbmtoxbm [pbmfile] X.SH DESCRIPTION XReads a portable bitmap as input. XProduces an X11 bitmap as output. X.SH "SEE ALSO" Xpbmtox10bm(1), xbmtopbm(1), pbm(5) X.SH AUTHOR XCopyright (C) 1988 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 680 -ne "`wc -c < 'pbm/pbmtoxbm.1'`" then echo shar: error transmitting "'pbm/pbmtoxbm.1'" '(should have been 680 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtox10bm.c'" '(2565 characters)' if test -f 'pbm/pbmtox10bm.c' then echo shar: will not over-write existing file "'pbm/pbmtox10bm.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtox10bm.c' X/* pbmtox10bm.c - read a portable bitmap and produce an X10 bitmap file X** X** Copyright (C) 1988 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#ifdef SYSV X#include <string.h> X#define index strchr X#else SYSV X#include <strings.h> X#endif SYSV X#include "pbm.h" X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd; X register bit *bitrow, *bP; X int rows, cols, format, padright, row, col; X char name[100], *cp; X X pm_progname = argv[0]; X X if ( argc > 2 ) X pm_usage( "[pbmfile]" ); X X if ( argc == 2 ) X { X ifd = pm_openr( argv[1] ); X strcpy( name, argv[1] ); X if ( strcmp( name, "-" ) == 0 ) X strcpy( name, "noname" ); X X if ( ( cp = index( name, '.' ) ) != 0 ) X *cp = '\0'; X } X else X { X ifd = stdin; X strcpy( name, "noname" ); X } X X pbm_readpbminit( ifd, &cols, &rows, &format ); X bitrow = pbm_allocrow( cols ); X X /* Compute padding to round cols up to the nearest multiple of 16. */ X padright = ( ( cols + 15 ) / 16 ) * 16 - cols; X X printf( "#define %s_width %d\n", name, cols ); X printf( "#define %s_height %d\n", name, rows ); X printf( "static short %s_bits[] = {\n", name ); X X putinit( ); X for ( row = 0; row < rows; row++ ) X { X pbm_readpbmrow( ifd, bitrow, cols, format ); X for ( col = 0, bP = bitrow; col < cols; col++, bP++ ) X putbit( *bP ); X for ( col = 0; col < padright; col++ ) X putbit( 0 ); X } X X pm_close( ifd ); X X putrest( ); X X exit( 0 ); X } X X Xint item, bitsperitem, bitshift, itemsperline, firstitem; X Xputinit( ) X { X itemsperline = 0; X bitsperitem = 0; X item = 0; X bitshift = 0; X firstitem = 1; X } X Xputbit( b ) Xbit b; X { X if ( bitsperitem == 16 ) X putitem( ); X bitsperitem++; X if ( b == PBM_BLACK ) X item += 1 << bitshift; X bitshift++; X } X Xputrest( ) X { X if ( bitsperitem > 0 ) X putitem( ); X printf( "};\n" ); X } X Xputitem( ) X { X if ( firstitem ) X firstitem = 0; X else X printf( "," ); X if ( itemsperline == 11 ) X { X putchar( '\n' ); X itemsperline = 0; X } X if ( itemsperline == 0 ) X printf( " " ); X itemsperline++; X printf( "0x%04x", item ); X bitsperitem = 0; X item = 0; X bitshift = 0; X } SHAR_EOF if test 2565 -ne "`wc -c < 'pbm/pbmtox10bm.c'`" then echo shar: error transmitting "'pbm/pbmtox10bm.c'" '(should have been 2565 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtox10bm.1'" '(830 characters)' if test -f 'pbm/pbmtox10bm.1' then echo shar: will not over-write existing file "'pbm/pbmtox10bm.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtox10bm.1' X.TH pbmtox10bm 1 "31 August 1988" X.SH NAME Xpbmtox10bm - convert a portable bitmap into an X10 bitmap X.SH SYNOPSIS Xpbmtox10bm [pbmfile] X.SH DESCRIPTION XReads a portable bitmap as input. XProduces an X10 bitmap as output. XThis older format is maintained for compatibility. X.PP XNote that there is no x10bmtopbm tool, because Xxbmtopbm can read both X11 and X10 bitmaps. X.SH "SEE ALSO" Xpbmtoxbm(1), xbmtopbm(1), pbm(5) X.SH AUTHOR XCopyright (C) 1988 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 830 -ne "`wc -c < 'pbm/pbmtox10bm.1'`" then echo shar: error transmitting "'pbm/pbmtox10bm.1'" '(should have been 830 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoascii.c'" '(1598 characters)' if test -f 'pbm/pbmtoascii.c' then echo shar: will not over-write existing file "'pbm/pbmtoascii.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoascii.c' X/* pbmtoascii.c - read a portable bitmap and produce ASCII graphics X** X** Copyright (C) 1988 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#include "pbm.h" X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd; X register bit **bits, *bP, *b1P; X int rows, cols, row, col, lastcol; X X pm_progname = argv[0]; X X if ( argc > 2 ) X pm_usage( "[pbmfile]" ); X X if ( argc == 2 ) X ifd = pm_openr( argv[1] ); X else X ifd = stdin; X X bits = pbm_readpbm( ifd, &cols, &rows ); X X pm_close( ifd ); X X /* Write out rows by twos. */ X for ( row = 0; row < rows; row += 2 ) X { X /* Find end of lines. */ X for ( lastcol = cols-1; lastcol > 0; lastcol-- ) X { X if ( bits[row][lastcol] == PBM_BLACK ) X break; X if ( row+1 < rows && bits[row+1][lastcol] == PBM_BLACK ) X break; X } X for ( col = 0, bP = bits[row], b1P = bits[row+1]; col <= lastcol; col++, bP++, b1P++ ) X { X if ( *bP == PBM_WHITE ) X { X if ( row+1 >= rows || *b1P == PBM_WHITE ) X putchar( ' ' ); X else X putchar( 'o' ); X } X else X { X if ( row+1 >= rows || *b1P == PBM_WHITE ) X putchar( '"' ); X else X putchar( '$' ); X } X } X putchar( '\n' ); X } X X exit( 0 ); X } SHAR_EOF if test 1598 -ne "`wc -c < 'pbm/pbmtoascii.c'`" then echo shar: error transmitting "'pbm/pbmtoascii.c'" '(should have been 1598 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmtoascii.1'" '(752 characters)' if test -f 'pbm/pbmtoascii.1' then echo shar: will not over-write existing file "'pbm/pbmtoascii.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmtoascii.1' X.TH pbmtoascii 1 "31 August 1988" X.SH NAME Xpbmtoascii - convert a portable bitmap into ASCII graphics X.SH SYNOPSIS Xpbmtoascii [pbmfile] X.SH DESCRIPTION XReads a portable bitmap as input. XProduces a somewhat crude ASCII graphic as output. X.PP XNote that there is no asciitopbm tool - this transformation is one-way. X.SH "SEE ALSO" Xpbm(5) X.SH AUTHOR XCopyright (C) 1988 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 752 -ne "`wc -c < 'pbm/pbmtoascii.1'`" then echo shar: error transmitting "'pbm/pbmtoascii.1'" '(should have been 752 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmpaste.c'" '(3670 characters)' if test -f 'pbm/pbmpaste.c' then echo shar: will not over-write existing file "'pbm/pbmpaste.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmpaste.c' X/* pbmpaste.c - paste a rectangle into a portable bitmap X** X** Copyright (C) 1989 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#ifdef SYSV X#include <string.h> X#else SYSV X#include <strings.h> X#endif SYSV X#include "pbm.h" X X#define max(a,b) ((a) > (b) ? (a) : (b)) X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd1, *ifd2; X register bit *bitrow1, **bits2, *b1P, *b2P; X int argn, rows1, cols1, format1, x, y, rows2, cols2, row, col; X char function; X char *usage = "[-replace|-or|-and|-xor] frompbmfile x y [intopbmfile]"; X X pm_progname = argv[0]; X X argn = 1; X function = 'r'; X X /* Check for flags. */ X if ( argn < argc && argv[argn][0] == '-' ) X { X if ( strncmp(argv[argn],"-replace",max(strlen(argv[argn]),2)) == 0 ) X function = 'r'; X else if ( strncmp(argv[argn],"-or",max(strlen(argv[argn]),2)) == 0 ) X function = 'o'; X else if ( strncmp(argv[argn],"-and",max(strlen(argv[argn]),2)) == 0 ) X function = 'a'; X else if ( strncmp(argv[argn],"-xor",max(strlen(argv[argn]),2)) == 0 ) X function = 'x'; X else X pm_usage( usage ); X argn++; X } X X if ( argn == argc ) X pm_usage( usage ); X ifd1 = pm_openr( argv[argn] ); X pbm_readpbminit( ifd1, &cols1, &rows1, &format1 ); X bitrow1 = pbm_allocrow( cols1 ); X argn++; X X if ( argn == argc ) X pm_usage( usage ); X if ( sscanf( argv[argn], "%d", &x ) != 1 ) X pm_usage( usage ); X argn++; X if ( argn == argc ) X pm_usage( usage ); X if ( sscanf( argv[argn], "%d", &y ) != 1 ) X pm_usage( usage ); X argn++; X X if ( argn == argc ) X ifd2 = stdin; X else X { X ifd2 = pm_openr( argv[argn] ); X argn++; X } X bits2 = pbm_readpbm( ifd2, &cols2, &rows2 ); X pm_close( ifd2 ); X X if ( x <= -cols2 ) X pm_error( X "x is too negative -- the second bitmap has only %d cols", X cols2, 0,0,0,0 ); X if ( y <= -rows2 ) X pm_error( X "y is too negative -- the second bitmap has only %d rows", X rows2, 0,0,0,0 ); X if ( x < 0 ) X x = cols2 - x; X if ( y < 0 ) X y = rows2 - y; X X if ( x >= cols2 ) X pm_error( X "x is too large -- the second bitmap has only %d cols", X cols2, 0,0,0,0 ); X if ( y >= rows2 ) X pm_error( X "y is too large -- the second bitmap has only %d rows", X rows2, 0,0,0,0 ); X if ( x + cols1 > cols2 ) X pm_error( X "x + width is too large by %d pixels", x + cols1 - cols2, 0,0,0,0 ); X if ( y + rows1 > rows2 ) X pm_error( X "y + height is too large by %d pixels", y + rows1 - rows2, 0,0,0,0); X X if ( argn != argc ) X pm_usage( usage ); X X for ( row = 0; row < rows1; row++ ) X { X pbm_readpbmrow( ifd1, bitrow1, cols1, format1 ); X for ( col = 0, b1P = bitrow1, b2P = &(bits2[row+y][x]); col < cols1; col++, b1P++, b2P++ ) X switch ( function ) X { X case 'r': X *b2P = *b1P; X break; X X case 'o': X *b2P = ( *b1P == PBM_WHITE || *b2P == PBM_WHITE ? X PBM_WHITE : PBM_BLACK ); X break; X X case 'a': X *b2P = ( *b1P == PBM_WHITE && *b2P == PBM_WHITE ? X PBM_WHITE : PBM_BLACK ); X break; X X case 'x': X *b2P = ( ( *b1P == PBM_WHITE && *b2P != PBM_WHITE ) || X ( *b1P != PBM_WHITE && *b2P == PBM_WHITE ) ? X PBM_WHITE : PBM_BLACK ); X break; X X default: X pm_error( "can't happen", 0,0,0,0,0 ); X } X } X X pm_close( ifd1 ); X X pbm_writepbm( stdout, bits2, cols2, rows2 ); X X exit( 0 ); X } SHAR_EOF if test 3670 -ne "`wc -c < 'pbm/pbmpaste.c'`" then echo shar: error transmitting "'pbm/pbmpaste.c'" '(should have been 3670 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/pbmpaste.1'" '(1767 characters)' if test -f 'pbm/pbmpaste.1' then echo shar: will not over-write existing file "'pbm/pbmpaste.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/pbmpaste.1' X.TH pbmpaste 1 "08 August 1989" X.SH NAME Xpbmpaste - paste a rectangle into a portable bitmap X.SH SYNOPSIS Xpbmpaste [-replace|-or|-and|-xor] frompbmfile x y [intopbmfile] X.SH DESCRIPTION XReads two portable bitmaps as input. XInserts the first bitmap into the second at the specified location, Xand produces a portable bitmap the same size as the second as output. XIf the second bitmap is not specified, it is read from stdin. XThe x and y can be negative, in which case they are interpreted Xrelative to the right and bottom of the bitmap, respectively. X.PP XThe flags specify the operation to use when doing the paste. XThe default is replace. XThe other operations act as if white is 1 and black is 0. X.PP XAll flags can be abbreviated to their shortest unique prefix. X.PP XThis tool is useful in combination with pnmcut(1). XFor instance, if you want to edit a small segment of a large Xbitmap, and your bitmap editor is TOO STUPID to edit the Xlarge bitmap, you can cut out the segment you are interested in, Xedit it, and then paste it back in. X.PP XAnother useful companion tool is pbmmask(1). X.PP XThe pnmpaste(1) tool is like this one, except that it doesn't implement Xthe logical operation flags -- since they don't have any useful meaning Xfor grayscale and color images. X.SH "SEE ALSO" Xpnmcut(1), pbmmask(1), pnminvert(1), ppmarith(1), pnmpaste(1), pbm(5) X.SH AUTHOR XCopyright (C) 1989 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 1767 -ne "`wc -c < 'pbm/pbmpaste.1'`" then echo shar: error transmitting "'pbm/pbmpaste.1'" '(should have been 1767 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/g3topbm.c'" '(8332 characters)' if test -f 'pbm/g3topbm.c' then echo shar: will not over-write existing file "'pbm/g3topbm.c'" else sed 's/^X//' << \SHAR_EOF > 'pbm/g3topbm.c' X/* g3topbm.c - read a Group 3 FAX file and write a portable bitmap X** X** Copyright (C) 1989 by Jef Poskanzer. X** X** Permission to use, copy, modify, and distribute this software and its X** documentation for any purpose and without fee is hereby granted, provided X** that the above copyright notice appear in all copies and that both that X** copyright notice and this permission notice appear in supporting X** documentation. This software is provided "as is" without express or X** implied warranty. X*/ X X#include <stdio.h> X#include "pbm.h" X Xint eof; X Xmain( argc, argv ) Xint argc; Xchar *argv[]; X { X FILE *ifd; X /* register bit **bits, *bP; */ X register bit *bitrow, *bP; X bit getbit(); X int argn, rows, cols, row, col; X X pm_progname = argv[0]; X X argn = 1; X X if ( argn < argc ) X { X ifd = pm_openr( argv[argn] ); X argn++; X } X else X ifd = stdin; X X if ( argn != argc ) X pm_usage( "[g3file]" ); X X getinit( ifd, &cols, &rows ); X X /* bits = pbm_allocarray( cols, rows ); */ X pbm_writepbminit( stdout, cols, rows ); X bitrow = pbm_allocrow( cols ); X X for ( row = 0; row < rows; row++ ) X { X getlineinit( ); X /* for ( col = 0, bP = bits[row]; col < cols; col++, bP++ ) */ X for ( col = 0, bP = bitrow; col < cols; col++, bP++ ) X *bP = getbit( ifd ); X pbm_writepbmrow( stdout, bitrow, cols ); X } X X pm_close( ifd ); X X /* pbm_writepbm( stdout, bits, cols, rows ); */ X X exit( 0 ); X } X X Xbit data; Xint eol, eols, count, item, bitsinitem; Xint rawitem, rawbitsinitem, rawbitshift, rawzeros; X Xgetinit( file, colsP, rowsP ) XFILE *file; Xint *colsP, *rowsP; X { X *colsP = 1728; X *rowsP = 2236; X eof = 0; X eols = 0; X } X Xgetlineinit( ) X { X rawbitsinitem = 8; X rawzeros = 0; X eol = 0; X data = 1; X count = 0; X } X Xbit Xgetbit( file ) XFILE *file; X { X int i; X bit b, rawgetbit( ); X struct tableentry { X int code; X int length; X int count; X }; X static struct tableentry twtable[] = { X { 0x35, 8, 0 }, X { 0x7, 6, 1 }, X { 0x7, 4, 2 }, X { 0x8, 4, 3 }, X { 0xb, 4, 4 }, X { 0xc, 4, 5 }, X { 0xe, 4, 6 }, X { 0xf, 4, 7 }, X { 0x13, 5, 8 }, X { 0x14, 5, 9 }, X { 0x7, 5, 10 }, X { 0x8, 5, 11 }, X { 0x8, 6, 12 }, X { 0x3, 6, 13 }, X { 0x34, 6, 14 }, X { 0x35, 6, 15 }, X { 0x2a, 6, 16 }, X { 0x2b, 6, 17 }, X { 0x27, 7, 18 }, X { 0xc, 7, 19 }, X { 0x8, 7, 20 }, X { 0x17, 7, 21 }, X { 0x3, 7, 22 }, X { 0x4, 7, 23 }, X { 0x28, 7, 24 }, X { 0x2b, 7, 25 }, X { 0x13, 7, 26 }, X { 0x24, 7, 27 }, X { 0x18, 7, 28 }, X { 0x2, 8, 29 }, X { 0x3, 8, 30 }, X { 0x1a, 8, 31 }, X { 0x1b, 8, 32 }, X { 0x12, 8, 33 }, X { 0x13, 8, 34 }, X { 0x14, 8, 35 }, X { 0x15, 8, 36 }, X { 0x16, 8, 37 }, X { 0x17, 8, 38 }, X { 0x28, 8, 39 }, X { 0x29, 8, 40 }, X { 0x2a, 8, 41 }, X { 0x2b, 8, 42 }, X { 0x2c, 8, 43 }, X { 0x2d, 8, 44 }, X { 0x4, 8, 45 }, X { 0x5, 8, 46 }, X { 0xa, 8, 47 }, X { 0xb, 8, 48 }, X { 0x52, 8, 49 }, X { 0x53, 8, 50 }, X { 0x54, 8, 51 }, X { 0x55, 8, 52 }, X { 0x24, 8, 53 }, X { 0x25, 8, 54 }, X { 0x58, 8, 55 }, X { 0x59, 8, 56 }, X { 0x5a, 8, 57 }, X { 0x5b, 8, 58 }, X { 0x4a, 8, 59 }, X { 0x4b, 8, 60 }, X { 0x32, 8, 61 }, X { 0x33, 8, 62 }, X { 0x34, 8, 63 }, X }; X static struct tableentry mwtable[] = { X { 0x1b, 5, 64 }, X { 0x12, 5, 128 }, X { 0x17, 6, 192 }, X { 0x37, 7, 256 }, X { 0x36, 8, 320 }, X { 0x37, 8, 384 }, X { 0x64, 8, 448 }, X { 0x65, 8, 512 }, X { 0x68, 8, 576 }, X { 0x67, 8, 640 }, X { 0xcc, 9, 704 }, X { 0xcd, 9, 768 }, X { 0xd2, 9, 832 }, X { 0xd3, 9, 896 }, X { 0xd4, 9, 960 }, X { 0xd5, 9, 1024 }, X { 0xd6, 9, 1088 }, X { 0xd7, 9, 1152 }, X { 0xd8, 9, 1216 }, X { 0xd9, 9, 1280 }, X { 0xda, 9, 1344 }, X { 0xdb, 9, 1408 }, X { 0x98, 9, 1472 }, X { 0x99, 9, 1536 }, X { 0x9a, 9, 1600 }, X { 0x18, 6, 1664 }, X { 0x9b, 9, 1728 }, X }; X static struct tableentry tbtable[] = { X { 0x37, 10, 0 }, X { 0x2, 3, 1 }, X { 0x3, 2, 2 }, X { 0x2, 2, 3 }, X { 0x3, 3, 4 }, X { 0x3, 4, 5 }, X { 0x2, 4, 6 }, X { 0x3, 5, 7 }, X { 0x5, 6, 8 }, X { 0x4, 6, 9 }, X { 0x4, 7, 10 }, X { 0x5, 7, 11 }, X { 0x7, 7, 12 }, X { 0x4, 8, 13 }, X { 0x7, 8, 14 }, X { 0x18, 9, 15 }, X { 0x17, 10, 16 }, X { 0x18, 10, 17 }, X { 0x8, 10, 18 }, X { 0x67, 11, 19 }, X { 0x68, 11, 20 }, X { 0x6c, 11, 21 }, X { 0x37, 11, 22 }, X { 0x28, 11, 23 }, X { 0x17, 11, 24 }, X { 0x18, 11, 25 }, X { 0xca, 12, 26 }, X { 0xcb, 12, 27 }, X { 0xcc, 12, 28 }, X { 0xcd, 12, 29 }, X { 0x68, 12, 30 }, X { 0x69, 12, 31 }, X { 0x6a, 12, 32 }, X { 0x6b, 12, 33 }, X { 0xd2, 12, 34 }, X { 0xd3, 12, 35 }, X { 0xd4, 12, 36 }, X { 0xd5, 12, 37 }, X { 0xd6, 12, 38 }, X { 0xd7, 12, 39 }, X { 0x6c, 12, 40 }, X { 0x6d, 12, 41 }, X { 0xda, 12, 42 }, X { 0xdb, 12, 43 }, X { 0x54, 12, 44 }, X { 0x55, 12, 45 }, X { 0x56, 12, 46 }, X { 0x57, 12, 47 }, X { 0x64, 12, 48 }, X { 0x65, 12, 49 }, X { 0x52, 12, 50 }, X { 0x53, 12, 51 }, X { 0x24, 12, 52 }, X { 0x37, 12, 53 }, X { 0x38, 12, 54 }, X { 0x27, 12, 55 }, X { 0x28, 12, 56 }, X { 0x58, 12, 57 }, X { 0x59, 12, 58 }, X { 0x2b, 12, 59 }, X { 0x2c, 12, 60 }, X { 0x5a, 12, 61 }, X { 0x66, 12, 62 }, X { 0x67, 12, 63 }, X }; X static struct tableentry mbtable[] = { X { 0xf, 10, 64 }, X { 0xc8, 12, 128 }, X { 0xc9, 12, 192 }, X { 0x5b, 12, 256 }, X { 0x33, 12, 320 }, X { 0x34, 12, 384 }, X { 0x35, 12, 448 }, X { 0x6c, 13, 512 }, X { 0x6d, 13, 576 }, X { 0x4a, 13, 640 }, X { 0x4b, 13, 704 }, X { 0x4c, 13, 768 }, X { 0x4d, 13, 832 }, X { 0x72, 13, 896 }, X { 0x73, 13, 960 }, X { 0x74, 13, 1024 }, X { 0x75, 13, 1088 }, X { 0x76, 13, 1152 }, X { 0x77, 13, 1216 }, X { 0x52, 13, 1280 }, X { 0x53, 13, 1344 }, X { 0x54, 13, 1408 }, X { 0x55, 13, 1472 }, X { 0x5a, 13, 1536 }, X { 0x5b, 13, 1600 }, X { 0x64, 13, 1664 }, X { 0x65, 13, 1728 }, X }; X static struct tableentry embtable[] = { X { 0x8, 11, 1792 }, X { 0xc, 11, 1856 }, X { 0xd, 11, 1920 }, X { 0x12, 12, 1984 }, X { 0x13, 12, 2048 }, X { 0x14, 12, 2112 }, X { 0x15, 12, 2176 }, X { 0x16, 12, 2240 }, X { 0x17, 12, 2304 }, X { 0x1c, 12, 2368 }, X { 0x1d, 12, 2432 }, X { 0x1e, 12, 2496 }, X { 0x1f, 12, 2560 }, X }; X X while ( count == 0 && ! eol && ! eof ) X { X data = 1 - data; Xmakeup: X item = 0; X for ( bitsinitem = 1; bitsinitem <= ( data ? 13 : 9 ); bitsinitem++ ) X { X /* Get bit and check for EOL. */ X if ( rawzeros >= 11 && ( b = rawgetbit( file ) ) ) X { X eol = 1; X eols++; X if ( eols >= 6 ) X eof = 1; X goto continuewhile; X } X else X b = rawgetbit( file ); X item = item * 2 + rawgetbit( file ); X /* Check tables. */ X if ( data ) X { /* Black. */ X for ( i = 0; X i < sizeof( tbtable ) / sizeof( struct tableentry ); X i++ ) X if ( bitsinitem == tbtable[i].length && X item == tbtable[i].code ) X { X count += tbtable[i].count; X eols = 0; X goto continuewhile; X } X for ( i = 0; X i < sizeof( mbtable ) / sizeof( struct tableentry ); X i++ ) X if ( bitsinitem == mbtable[i].length && X item == mbtable[i].code ) X { X count += mbtable[i].count; X eols = 0; X goto makeup; X } X for ( i = 0; X i < sizeof( embtable ) / sizeof( struct tableentry ); X i++ ) X if ( bitsinitem == embtable[i].length && X item == embtable[i].code ) X { X count += embtable[i].count; X eols = 0; X goto makeup; X } X } X else X { /* White. */ X for ( i = 0; X i < sizeof( twtable ) / sizeof( struct tableentry ); X i++ ) X if ( bitsinitem == twtable[i].length && X item == twtable[i].code ) X { X count += twtable[i].count; X eols = 0; X goto continuewhile; X } X for ( i = 0; X i < sizeof( mwtable ) / sizeof( struct tableentry ); X i++ ) X if ( bitsinitem == mwtable[i].length && X item == mwtable[i].code ) X { X count += mwtable[i].count; X eols = 0; X goto makeup; X } X } X } X /* Unrecognized code. Skip to EOL. */ X fprintf( stderr, "g3topbm: unrecognized code - skipping to EOL\n" ); X while ( rawzeros < 11 ) X b = rawgetbit( file ); X do X { X b = rawgetbit( file ); X } X while ( ! b ); X eol = 1; X eols++; X if ( eols >= 6 ) X eof = 1; X Xcontinuewhile: X ; X } X X /* And return result. */ X if ( eol || eof ) X return 0; X else X { X count--; X return data; X } X } X Xbit Xrawgetbit( file ) XFILE *file; X { X bit b; X X if ( rawbitsinitem == 8 ) X { X rawitem = getc( file ); X if ( rawitem == EOF ) X pm_error( "premature EOF", 0,0,0,0,0 ); X rawbitsinitem = 0; X rawbitshift = 7; X } X rawbitsinitem++; X b = ( ( rawitem >> rawbitshift) & 1 ) ? PBM_BLACK : PBM_WHITE; X rawbitshift--; X if ( b ) X rawzeros = 0; X else X rawzeros++; X return b; X } SHAR_EOF if test 8332 -ne "`wc -c < 'pbm/g3topbm.c'`" then echo shar: error transmitting "'pbm/g3topbm.c'" '(should have been 8332 characters)' fi fi # end of overwriting check if test ! -d 'pbm' then echo shar: creating directory "'pbm'" mkdir 'pbm' fi echo shar: extracting "'pbm/g3topbm.1'" '(811 characters)' if test -f 'pbm/g3topbm.1' then echo shar: will not over-write existing file "'pbm/g3topbm.1'" else sed 's/^X//' << \SHAR_EOF > 'pbm/g3topbm.1' X.TH g3topbm 1 "06 September 1989" X.SH NAME Xg3topbm - convert a Group 3 FAX file into a portable bitmap X.SH SYNOPSIS Xg3topbm [g3file] X.SH DESCRIPTION XReads a Group 3 FAX file as input. XProduces a portable bitmap as output. X.PP XThe standard for Group 3 FAX is defined in CCITT Recommendation T.4. X.PP XNote that there is currently no pbmtog3 tool. X.SH BUGS XDoesn't work yet. X.SH "SEE ALSO" Xpbm(5) X.SH AUTHOR XCopyright (C) 1989 by Jef Poskanzer. X XPermission to use, copy, modify, and distribute this software and its Xdocumentation for any purpose and without fee is hereby granted, provided Xthat the above copyright notice appear in all copies and that both that Xcopyright notice and this permission notice appear in supporting Xdocumentation. This software is provided "as is" without express or Ximplied warranty. SHAR_EOF if test 811 -ne "`wc -c < 'pbm/g3topbm.1'`" then echo shar: error transmitting "'pbm/g3topbm.1'" '(should have been 811 characters)' fi fi # end of overwriting check # End of shell archive exit 0