sources-request@mirror.TMC.COM (11/11/86)
Submitted by: David Sher <seismo!rochester!sher> Mod.sources: Volume 7, Issue 68 Archive-name: image/Part05 [ The Makefiles had ESCAPE and \r characters in their comment lines; I changed them to their printable representation, the two-character sequences ^[ and ^M, respectively. Also, the file ascii2var/uu.test.var had some non-ASCII characters in it; I used uuencode; the resultant file is really ascii2var/test.var. Also, I do not have C++ nor any images, so I have not tested this package. --r$ ] #!/bin/sh # This is a shell archive. Remove anything before this line, # then unpack it by saving it in a file and typing "sh file". # If all goes well, you will see the message "No problems found." # Wrapped by mirror!rs on Mon Nov 10 13:45:52 EST 1986 # Exit status; set to 1 on "wc" errors or if would overwrite. STATUS=0 # Contents: vartools/makefile vartools/vartools.h++ # vartools/vartools.h vartools/cap.c++ MANIFEST echo x - vartools/makefile if test -f vartools/makefile ; then echo vartools/makefile exists, putting output in $$vartools/makefile OUT=$$vartools/makefile STATUS=1 else OUT=vartools/makefile fi sed 's/^X//' > $OUT <<'@//E*O*F vartools/makefile//' X# this is the makefile for the vartools library X# This line constructs the library name (equal to the directory name) X# jccpwd^[!!sh^M:s/.*\///g^MILIBRARY = lib^[A.a^[ XLIBRARY = libvartools.a X.SUFFIXES: .c++ XCFLAGS = -O -I/usr/grads/include XC++FLAGS = -Fi $(CFLAGS) XLIBS = -liff -lC X# This line constructs the list of possible objects X# 2jc}ls *[A-Za-z0-9].c *.c++^[!!sh^M>}>}:g/\.c\+*$/ s//.o \\/^M XOBJS = \ X ascii2var.o \ X cap.o \ X correlate.o \ X scale.o \ X trunc.o \ X var2ascii.o X.c++.o: X c++ -c $(C++FLAGS) $*.c++ X# the library is constructed by this line X$(LIBRARY) : $(OBJS) X ar qv $(LIBRARY) $(OBJS) X ranlib $(LIBRARY) @//E*O*F vartools/makefile// chmod u=rw,g=r,o=r $OUT echo x - vartools/vartools.h++ if test -f vartools/vartools.h++ ; then echo vartools/vartools.h++ exists, putting output in $$vartools/vartools.h++ OUT=$$vartools/vartools.h++ STATUS=1 else OUT=vartools/vartools.h++ fi sed 's/^X//' > $OUT <<'@//E*O*F vartools/vartools.h++//' X/* X This is the header file for all the utilities supplied X in the vartools library X assumes that stdio.h has been included X*/ X#ifndef VARTOOLS_H X#define VARTOOLS_H X// needs this include file to have the image routines definition make sense X#include <double_image.h++> X#include <long_image.h++> X/* X This routine gets information from an iff file and constructs X a var file from it X comments is a null terminated string that sets up the X comments for the var file X*/ Xvoid Xiff2var(FILE *iff_file, FILE *var_file, char *comments); X/* X This routine gets information from a var file and constructs X an iff file from it. X This only works with graytone (integer) var files X To make a double var file into a graytone one use trunc X*/ Xvoid Xvar2iff(FILE *var_file, FILE *iff_file); X/* X This converts a file in ascii format to a double var file X ascii format is 2 dimensions followed by an appropriate number X of doubles followed by comments X input is a file pointer to the input file X output is a file pointer open for output X*/ Xvoid Xascii2var(FILE *input , FILE *output); X/* X This takes an initialized double image and outputs a file in ascii format X described above X input is an initialized image X output is a file pointer open for output X format is the format to output each number X*/ Xvoid Xvar2ascii2(double_image& input , FILE *output , char *format ); X/* X This is a version of var2ascii that takes an input file rather X than an initialized image X*/ Xvoid Xvar2ascii(FILE *input, FILE *output , char *format); X/* X Truncates an input image (takes floating point to long) X needs a file to be output to X but does not write to file X instead returns the truncated image X*/ Xlong_image& Xtrunc2( double_image& input , FILE *outfile ); X/* X Truncates a double image into a graytone (integer image) X Takes two files and reads from one to write to the other X comment is a comment to be placed on the image X*/ Xvoid Xtrunc( FILE *infile , FILE *outfile, char *comment); X/* X This takes an image as input and creates another X It takes every pixel of the image and multiplies it by the X scale and then adds to it the increment. X*/ Xdouble_image& Xscale2(double scale, double increment, double_image& input, FILE *output_file); X/* X This takes two files and takes one and puts X a scaled and incremented version into the other X comment will be placed in the comment for the output image X*/ Xvoid Xscale(double scale, double increment, FILE *input, FILE *output, char * comment); X/* X this one takes 2 images and returns an image containing the X correlation of the input image with the template image X it only returns values for the point where the template lies X entirely within the input X*/ Xdouble_image& Xcorrelate2(double_image& template, double_image& input, FILE *output_file); X/* X this one takes 2 image files and returns an image file containing the X correlation of the input image with the template image X it only returns values for the point where the template lies X entirely within the input X*/ Xvoid Xcorrelate(FILE *template_file, FILE *input_file, FILE *output_file, char *comment); X/* X This code places an upper bound on the values of the pixels. X If a pixel exceeds the bound it is set to the bound. X*/ Xdouble_image& Xupper_bound2(double bound, double_image& input, FILE * output_file); X/* X This code places an lower bound on the values of the pixels. X If a pixel exceeds the bound it is set to the bound. X*/ Xdouble_image& Xlower_bound2(double bound, double_image& input, FILE * output_file); X/* X This code is like upper_bound2 but with files (for C) X*/ Xvoid Xupper_bound(double bound, FILE * input_file, FILE * output_file, char *comment); X/* X This code is like lower_bound2 but with files (for C) X*/ Xvoid Xlower_bound(double bound, FILE * input_file, FILE * output_file, char *comment); X#endif VARTOOLS_H X/* XCopyright (C) 1986, David Sher in the University of Rochester XPermission is granted to any individual or institution to use, copy, or Xredistribute this software so long as it is not sold for profit, provided Xthis copyright notice is retained. X*/ @//E*O*F vartools/vartools.h++// chmod u=rw,g=r,o=r $OUT echo x - vartools/vartools.h if test -f vartools/vartools.h ; then echo vartools/vartools.h exists, putting output in $$vartools/vartools.h OUT=$$vartools/vartools.h STATUS=1 else OUT=vartools/vartools.h fi sed 's/^X//' > $OUT <<'@//E*O*F vartools/vartools.h//' X/* X This is the header file for all the utilities supplied X in the vartools library X assumes that stdio.h has been included X*/ X#ifndef VARTOOLS_H X#define VARTOOLS_H X/* X This routine gets information from an iff file and constructs X a var file from it X comments is a null terminated string that sets up the X comments for the var file X*/ Xvoid Xiff2var(/* FILE *iff_file, FILE *var_file, char *comments */); X/* X This routine gets information from a var file and constructs X an iff file from it. X This only works with graytone (integer) var files X To make a double var file into a graytone one use trunc X*/ Xvoid Xvar2iff(/* FILE *var_file, FILE *iff_file */); X/* X This converts a file in ascii format to a double var file X ascii format is 2 dimensions followed by an appropriate number X of doubles followed by comments X input is a file pointer to the input file X output is a file pointer open for output X*/ Xvoid Xascii2var(/* FILE *input , FILE *output */); X/* X This takes an initialized double image and outputs a file in ascii format X described above X*/ Xvoid Xvar2ascii(/* FILE *input, FILE *output , char *format */); X/* X Truncates a double image into a graytone (integer image) X Takes two files and reads from one to write to the other X comment is a comment to be placed on the image X*/ Xvoid Xtrunc(/* FILE *infile , FILE *outfile, char *comment */); X/* X This takes an image file as input and creates another X It takes every pixel of the image and multiplies it by the X scale and then adds to it the increment. X*/ Xvoid Xscale(/* double scale, double increment, FILE *input, FILE *output, char * comment */); X/* X This routine takes in a file for the template and a file for the X input and outputs a file for the result of correlating the template X with the image. It only gets values for points where the template X lies entirely within the input image. X Comment will be placed within the comments. X*/ Xvoid Xcorrelate(/* FILE *template_file, FILE *input_file, FILE *output_file, char *comment */); X/* X This code places an upper bound on the values of the pixels. X If a pixel exceeds the bound it is set to the bound. X*/ Xvoid Xupper_bound(/* double bound, FILE * input_file, FILE * output_file, char *comment */); X/* X This code places an lower bound on the values of the pixels. X If a pixel exceeds the bound it is set to the bound. X*/ Xvoid Xlower_bound(/* double bound, FILE * input_file, FILE * output_file, char *comment */); X#endif VARTOOLS_H @//E*O*F vartools/vartools.h// chmod u=rw,g=r,o=r $OUT echo x - vartools/cap.c++ if test -f vartools/cap.c++ ; then echo vartools/cap.c++ exists, putting output in $$vartools/cap.c++ OUT=$$vartools/cap.c++ STATUS=1 else OUT=vartools/cap.c++ fi sed 's/^X//' > $OUT <<'@//E*O*F vartools/cap.c++//' X/* X This is the routines that take the pixels of an image and place an X upper or lower bound on them. X*/ X#include <stream.h> X#include <stdio.h> X#include <string.h> X#include <double_image.h++> X#include <vartools.h++> X/* X This code places an upper bound on the values of the pixels. X If a pixel exceeds the bound it is set to the bound. X*/ Xdouble_image& Xupper_bound2(double bound, double_image& input, FILE * output_file) X { X // create the image X double_image *output_pointer = X new double_image(CREATE,input.n_rows(),input.n_cols(),output_file); X double_image& output = *output_pointer; X // iterate through the images copying when it is a good idea X while(++input,++output) X { X double pixel = input(); X output() = (pixel > bound) ? bound : pixel; X } X return output; X } X/* X This code places an lower bound on the values of the pixels. X If a pixel exceeds the bound it is set to the bound. X*/ Xdouble_image& Xlower_bound2(double bound, double_image& input, FILE * output_file) X { X // create the image X double_image *output_pointer = X new double_image(CREATE,input.n_rows(),input.n_cols(),output_file); X double_image& output = *output_pointer; X // iterate through the images copying when it is a good idea X while(++input,++output) X { X double pixel = input(); X output() = (pixel < bound) ? bound : pixel; X } X return output; X } X/* X This code is like upper_bound2 but with files (for C) X*/ Xvoid Xupper_bound(double bound, FILE * input_file, FILE * output_file, char *comment) X { X // read in the input image X double_image input(READ,input_file); X // apply the upper bound to it and get the output X double_image& output = upper_bound2(bound,input,output_file); X // set up the comments X output.set_comments(comment,strlen(comment)); X char *string = form("Applying Upper Bound of %e to image:\n",bound); X output.add_comment(string,strlen(string)); X output.add_comment((char *) input.the_comments(),input.c_length()); X // write the result to file X output.write(); X } X/* X This code is like lower_bound2 but with files (for C) X*/ Xvoid Xlower_bound(double bound, FILE * input_file, FILE * output_file, char *comment) X { X // read in the input image X double_image input(READ,input_file); X // apply the upper bound to it and get the output X double_image& output = lower_bound2(bound,input,output_file); X // set up the comments X output.set_comments(comment,strlen(comment)); X char *string = form("Applying Lower Bound of %e to image:\n",bound); X output.add_comment(string,strlen(string)); X output.add_comment((char *) input.the_comments(),input.c_length()); X // write the result to file X output.write(); X } X/* XCopyright (C) 1986, David Sher in the University of Rochester XPermission is granted to any individual or institution to use, copy, or Xredistribute this software so long as it is not sold for profit, provided Xthis copyright notice is retained. X*/ @//E*O*F vartools/cap.c++// chmod u=rw,g=r,o=r $OUT echo x - MANIFEST if test -f MANIFEST ; then echo MANIFEST exists, putting output in $$MANIFEST OUT=$$MANIFEST STATUS=1 else OUT=MANIFEST fi sed 's/^X//' > $OUT <<'@//E*O*F MANIFEST//' XMANIFEST 5 XREADME 1 Xascii2var 1 Xascii2var/main.c++ 1 Xascii2var/makefile 1 Xascii2var/uu.test.var 1 Xcopywrite 1 Xcorrelate 1 Xcorrelate/main.c++ 1 Xcorrelate/makefile 1 Xlowerbound 1 Xlowerbound/main.c++ 1 Xlowerbound/makefile 1 Xman 1 Xman/ascii2var.1 1 Xman/correlate.1 2 Xman/iff2var.1 1 Xman/image.5 1 Xman/lowerbound.1 2 Xman/scale.1 2 Xman/truncate.1 2 Xman/upperbound.1 2 Xman/var2ascii.1 2 Xman/var2iff.1 1 Xman/vartools.3 2 Xscale 1 Xscale/main.c++ 2 Xscale/makefile 2 Xtruncate 1 Xtruncate/main.c++ 2 Xtruncate/makefile 2 Xupperbound 1 Xupperbound/main.c++ 2 Xupperbound/makefile 2 Xvar2ascii 1 Xvar2ascii/main.c++ 2 Xvar2ascii/makefile 2 Xvarc++ 1 Xvarc++/archive.h++ 2 Xvarc++/bitio.h++ 2 Xvarc++/char_image.h++ 2 Xvarc++/double_image.c++ 4 Xvarc++/double_image.h++ 3 Xvarc++/error.h++ 2 Xvarc++/for.h++ 3 Xvarc++/iff_image.h++ 3 Xvarc++/iff_local.h++ 3 Xvarc++/iff_stdim.h++ 3 Xvarc++/image.c++ 4 Xvarc++/image.c.old 4 Xvarc++/image.h++ 3 Xvarc++/long_image.c++ 4 Xvarc++/long_image.h++ 3 Xvarc++/makefile 3 Xvarc++/var.h++ 3 Xvarc++/var_double_image.c++ 3 Xvarc++/var_image.c++ 3 Xvarc++/var_long_image.c++ 3 Xvartools 1 Xvartools/README 3 Xvartools/ascii2var.c++ 3 Xvartools/cap.c++ 5 Xvartools/correlate.c++ 4 Xvartools/makefile 5 Xvartools/scale.c++ 4 Xvartools/trunc.c++ 4 Xvartools/var2ascii.c++ 3 Xvartools/vartools.h 5 Xvartools/vartools.h++ 5 @//E*O*F MANIFEST// chmod u=rw,g=rw,o=rw $OUT echo Inspecting for damage in transit... temp=/tmp/sharin$$; dtemp=/tmp/sharout$$ trap "rm -f $temp $dtemp; exit" 0 1 2 3 15 cat > $temp <<\!!! 34 93 641 makefile 142 661 4189 vartools.h++ 87 425 2548 vartools.h 98 382 2994 cap.c++ 69 138 2143 MANIFEST 430 1699 12515 total !!! wc vartools/makefile vartools/vartools.h++ vartools/vartools.h vartools/cap.c++ MANIFEST | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp if test -s $dtemp ; then echo "Ouch [diff of wc output]:" cat $dtemp STATUS=1 elif test $STATUS = 0 ; then echo "No problems found." else echo "WARNING -- PROBLEMS WERE FOUND..." fi exit $STATUS