		    Notes on the Minimalist Scaler
			    April 18, 1994

David Weber
Box 1376
Paonia, CO 81428
303-527-6699

    This zip file contains the source code, test bench and sample image
files for a minimalist scaler.  It was developed for a fax engine.  As
a consequence, the byte width of the scaled line is always the standard
fax width, 216 bytes.  Images which scale too large for this width are
clipped.  Those too small have the right side white filled.  The intent
of the scaler was to produce a device driver that used a minimum of
computer resources and yet still had quality output and acceptable
speed.  The algorithm is explained in detail in the magazine article.
Call or write me if you have any comments or questions.


Packing List:

README			This file
FAXASM   ASM		Essential algorithm in assembly
ARGS     C		Auxiliary file for test bench
FAXSCALE C		Essential algorithm in C
PCX      C		Auxiliary file for test bench
SCALE    C	        Main test bench file
SCALE    EXE		BCC 4.0 compiled assembly version of the scaler
ARGS     H		Auxiliary file for test bench
FAXSCALE H		Prototypes for the scaler
PCX      H		Auxiliary file for test bench
SCALE    MAK		Polymake 3.1 make file for C version
SCALEASM MAK		Polymake 3.1 make file for assembly version
FAXSCALE OLD		FAXSCALE.C without white space optimization
100      PCX		100 dpi test file
200      PCX		200 dpi test file
300      PCX		300 dpi test file
FISH     PCX		dithered/half toned test file


Usage:
    The test bench program and the accompanying test images allow you
to verify the quality and speed of the scaler.  It is a simple command
line program which uses the following format.

	scale -x50 -y50 input output

    Where 50 in this case means scale to 50% of the original.  The
scale range is 3% to 3200%.  Note that x and y are independently
scaled.  This means you can change the aspect ratio.  The independent
x/y scaling is necessary because a fax can be either high resolution
(200 dpi x 200 dpi) or standard resolution (200 dpi x 100 dpi).  The
input parameter is the file name of a monochrome PCX file.  Since faxes
are monochrome, color images are not supported.  The output argument is
the file name of the scaled result.  The test pictures are 8 1/2 by
11 inch pages scanned at various resolutions.  The 300 dpi image has
over a million pixels.  Scale the sample pictures to the standard fax
width using these commands.

	scale -x200 -y200 100.pcx junk.pcx
	scale -x100 -y100 200.pcx junk.pcx
	scale -x66 -y66 300.pcx junk.pcx

  View the output with any standard paint program.  The fish.pcx image
is a tough test for any scaler.  It is dithered and half toned, both of
which are usually scrambled by a low quality scaler.  As you can see,
it does fine.


Environment:
    Tested with Borland C++ 4.0, Zortech C++ 3.1 and Microsoft C 5.1


Copyright Restrictions:
    Copyright (C) 1992 by David Weber.  Unlimited use is granted
    for noncommercial use or for commercial distribution in EXE,
    OBJ, or LIB formats.  Do not sell as source without asking first.
