home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hot Stuff 2
/
hot_stuff_2.zip
/
hot_stuff_2
/
PROGRAMS
/
GDS.ZIP
/
GDSINFO.DOC
< prev
next >
Wrap
Text File
|
1991-07-08
|
27KB
|
528 lines
INTRODUCTION Graphic Display System - GDS
One day, I was working on a simple card game and needed a variety of
cardback graphics. I referred to a library of GIF files for some good
scenery to put on the backs of cards and found about 30 files which had
nice scenery and pieces which could be used quite nicely.
First, I converted a set of GIFs into IFF format and loaded them into
Deluxe Paint II Enhanced. Deluxe Paint is one of the more powerful paint
programs, and I was very surprised to find that the brush size is limited
to 64K (a forgivable programming limit). After messing around with grids
and reducing chunks of images down in a nice orderly fashion, I did not get
the results that I wanted, I deleted the whole bunch.
I was very happy to find a program called GIFDESK on a bulletin board.
It seemed to be just what I was looking for, and it solved another problem
for me also. The documentation said it could reduce GIFs, but it was
designed for cataloging pictures, rather than just image reduction. Great!
Now I could get the graphics done, and I could catalog my 150 megabytes of
GIFs!
WRONG. GIFDESK is great for a simple catalog program, but it doesn't do
much for preserving images. The version I have simply grabs dots from the
original and slaps them in a reduced space. Although I'm not sure, it
seems to also use a generic palette which further reduces the quality.
In short, all images get stomped on, some are very simply unrecognizable.
Another problem which was mounting in the back of my mind was that every
GIF viewer I've seen either has mounds of technical problems/ quirks/bugs,
or a user interface that would scare the average user.
I was disgusted, in between projects, and wired on coffee. I downloaded
CompuServe's GIF file specifications for encoding and decoding and got to
work. A day later, GDS 1.00 was a reality.
I make no claims that GDS is everything. The general outline of the
program is based around a very few simple concepts, and there is certainly
room for improvement.
Ironically, many users keep a collection of viewers available in case
they run into this well known scenario:
"Oh that picture! You have to use this viewer for that one..."
GDS overcomes a lot of common problems like "odd aspect ratios" and
enormous pictures. I have many VERY large or odd shaped GIF's that I had
never seen completely before I wrote GDS. GDS handles images up to and
including 2048x2048, and should be able to reduce any 2048x2048 image down
to 32x32 with no problem (300 would fit on a single 640x480 screen)!
The last but not least effort before version 1.07 was to support the
GIF89a file format. Reading and writing these files was no problem, except
that we couldn't find another viewer that would display '89a images
properly. So . . . GDS will continue to write GIF87a files until the other
viewers are up to speed.
It has now been several weeks since the first releases of GDS, and the
response thus far has been overwhelming. Only three weeks after the
release of GDS 1.07 on CompuServe, GDS107.ZIP received over 190 downloads!
That level of interest is phenomenal on CompuServe since the existence of
GDS is not publicly advertised in any forums, BBS's, etc. When I first
wrote GDS, I had no idea how much all of you wanted it. Now I do, and this
latest version demonstrates how I intend to continue improving it.
Many thanks go to all of you who have been invaluable in helping solve
hardware and software problems, and becoming part of the GDS family of
registered users.
REVISION HISTORY
1.00 02-10-91 The "First Release; Hope You Like It" Version
--> No bugs reported yet. (I'm plugging my ears.)
1.01 02-11-91 The "Wow! that was fast!" Version
--> "Sort:" menu in earlier versions could easily lock up GDS when
used to sort by "Bits per pixel" or "Resolution" if GDS had not yet read
file information for all files in file list. Although I haven't seen it,
this bug may cause stack overflows, 386 exceptions, and all sorts of
other unpredictable stuff.
--> Palette generation for array images is much more accurate for
images with varying numbers of bits per pixel. In prior versions, images
with fewer bits per pixel were not represented equally among pictures
with many bits per pixel. This problem has been eliminated by padding
smaller palettes to bias the importance of their individual color ranges.
--> When displaying a 2, 4, 8, or 16 color image in single view mode
and the screen format used to display the image was an EGA mode, some VGA
boards would handle the EGA palette and VGA color registers
inconsistently. This occasionally caused a color or two to be incorrect.
GDS now resets all EGA palette registers and all VGA color registers
every time the palette is set, which seems to have corrected the problem.
NEW! Changed behavior of mouse clicks in file list when "View:" mode
is set to "Slides." Users tend to want to point at a file and add it to
the list rather than deselecting all other entries in favor of the one
their clicking on. So from now on, when you're doing slides, remember
that the mouse toggles files!
--> Fixed small moving button click problem in array setup.
1.02 02-12-91 The "QUIX RIX FIX" Version
NEW! Added RIX support through the ALT-R command. Note that GDS can
only support the UNCOMPRESSED RIX file formats as RIX Software is not
releasing any information about their compressed file format. If you
would really like to see support for compressed RIX files, don't ask me--
ask RIX Software.
--> Fixed PCX file write for 16 color screen modes. In previous
versions, GDS would write odd images with the bits in the bytes flipped
around, and possibly the plane order reversed. This bug may be a
reflection of how much time I spent writing PCX support. GDS now reads
and writes PCX files correctly in all screen modes.
1.03 02-13-91 The "New and Improved Slideshow" Version
--> Corrected bug in slide shows which could incorrectly display
images which had been read completely into EMS before being displayed.
This bug is more common when the user hits the space bar to bypass the
slide show delay. Earlier versions of GDS could display slide shows with
image misalignment/fracturing or even garbage in horizontal bands of
images.
--> Corrected bug in array generation which could crash a system.
The bug occurs when the individual array images were reduced to less than
1:32 of the original image size. This limitation was not protected
against in prior versions of GDS. GDS is now capable of 1:64 image
reduction and limits the size of array images to prevent users from
reaching this limitation.
--> Corrected many bugs in ALT-Z zoom function during single image
viewing. In prior versions, the zoom feature would inversely compensate
for the aspect ratio of the screen. This version should handle the zoom
feature as one would expect.
--> Corrected nasty bug in two dimensional antialiasing when
displaying zoomed areas. This bug would skew some lines in the display
to the left of where they should have been drawn. The severity of the
display problems depended on the level of zooming, the aspect ratio of
the original image, and the position of the upper left zoom rectangle
corner.
NEW! Added READMAC file format to list of supported formats.
Readmac files (.MAC) can be read, but not yet written. Anybody out there
want to write these files? Let me know. NEW! Added color control to
single and array views. The overall color level in the palette can be
adjusted with the ',' and '.' keys (normal case of '<' and '>'). To
reset the color level, just hit Shift-',' or Shift-'.' ('<' or '>').
This feature, along with the other image palette options gives the user a
surprising amount of control over problem images.
NEW! Added page display compensation when generating arrays and using
ALT-F to fit an image to the display. In previous versions, high
resolution portrait files would just be remapped to the entire screen.
GDS now looks at the screen resolution and tries to figure out if it's a
high resolution page display file.
NEW! Increased EMS support for read-ahead buffering for slideshows.
Slideshows now read images of any size while the current image is
displayed. This facility will automatically buffer images, provided
there is enough available system RAM and/or EMS to hold the images.
NEW! Increased file table size to 2800 files. Yes, now you can have a
slideshow which will last just under four hours (at 5 seconds between
images) without repeating an image. Previous versions were limited to
2048 files.
NEW! Added "label" and "border" preference buttons to array preview
user interface. The "Labels:" and "Borders:" buttons may disappear from
the text file display screen in future versions.
NEW! Changed user interface for selecting array images. In earlier
versions, it was necessary to set the "View:Arrays" and then hit "Enter"
or click on the view button in order to start array generation. GDS now
starts array generation immediately when the user selects "Arrays of
reduced images" from the "View:" menu. There is no longer a
"View:Arrays" mode in GDS.
NEW! Increased image reduction by 100%. Array images may now be
displayed reduced down to 0.04% in 1024x768 graphics modes. With this
increase, it is now possible to display 2304 reduced images on one
1024x768 screen. I encourage anyone who has that many images accessible
to one machine to try this. At 150K per image, that's over 345 megabytes
of GIF files. Unfortunately, even with antialiasing off, it should take
an average of at least 5 seconds per image on a 33Mhz 80386 machine, and
that works out to about 3 hours and 12 minutes. I want a copy of the
result!
1.04 02-14-91 The "Quick Change Act" Version
==> CORRECTED FOUR MEMORY ALLOCATION ERRORS WHICH COULD TRASH MEMORY.
The bugs would happen when memory layouts made certain combinations of
allocations impossible. I spotted this problem as I did a directory and
got garbage for files. I'm not sure if these bugs will trash FAT tables
or not, but looking at the code, the memory addresses being written to
could conceivably be any segment, including DOS.
--> Bug corrected with arrow keys and shift key. It should now work
like the documentation says.
--> Corrected bug with screen clear which would very rarely leave one
dot per 64K dots in the wrong color.
1.05 02-15-91 The "Demo" Version
NEW! "Almost" fully functional version so that you can try before you
buy. Only some of the "high end" functions are not in this version, all
the normal viewing, modifying, and reduction features are operational so
that you can enjoy it for personal use at no charge.
1.06 02-23-91 The "Apocalypse Now" Version -- GIF89a
NEW! Added GIF89a compatibility. GDS will now read GIF89a files, and
performs all of the user interface functions with the appropriate timing.
There is one primitive in GIF89a that GDS will read over but not process.
This primitive is the "plain text extension" record (ID=0x01). I'd love
to support this, but I don't have a file which uses it, and I don't know
if anyone has even used it yet. I'd like to see someone use it before I
release something buggy that claims to support it. Anybody want to send
me a file?
AGH! A) Added feature to allow users to comment GIF files directly.
B) Put out beta copies with this feature.
C) Found out that most GIF viewers choke on GIF89a files.
D) Spent hours on the phone, telling people to go back to 1.06.
E) Removed the feature and changed GDS back to write GIF87a.
F) Took several aspirin and went to sleep.
ACK! Discovered that most other GIF viewers choke on multiple palette
GIF files. All GIF files written by GDS now have only a global palette,
rather than global and image palettes so other viewers don't get all
wound up and display the images with an RGB palette. Other viewers would
see the two palettes in the GIF file and think they should correct for
differing palettes (which is actually a fair assumption). Oh well, now
GDS writes only one palette. VPIC, CSHOW, PICEM, and most other viewers
should work fine with images generated with this and future versions of
GDS. (Sorry about the glitch, guys!)
ACK! Removed "Palette" menu from all versions. This menu seemed to
frustrate and confuse most users, and had limited utility besides. This
menu may surface in a later "GDS Professional," but for now, its value is
not really perfected and its utility is difficult to understand. For all
of you graphics hackers out there who understand what it does, watch for
the (as yet undefined) "GDS Professional" (see the end of the file).
ACK! Removed the "palette search" menu from all versions. This menu
had very little actual value when it came right down to it. The actual
use for this menu is valid, but the task it performs is so intricate that
I couldn't figure out how to explain it to an end user. For that matter,
it was difficult explaining it to other programmers... It sure looked
neat, though. Oh well, it's gone, and GDS will now dynamically perform
the most accurate palette search it can at any given time.
1.07 02-27-91 The "Minor Revision" Version
==> Added final touches to the now stabilized release version of GDS.
--> Corrected problems with PCX files. I've received a bunch of PCX
files which have some interesting problems. One of the problems was
admittedly mine, and it's fixed. It had to do with monochrome PCX files
with no extended palette, which GDS 1.06 and earlier would incorrectly
display in all black (ahem!). A few programs, however, apparently write
PCX files which have incorrect header information. GDS now tries to make
an intelligent assessment of what to do with various types of PCX file
headers, even with files which have obviously been written incorrectly.
Some conversion programs (1) write incorrect headers and (2) fill the
48-byte palette with zeros (black), even when the image is NOT flagged as
a greyscale image, AND has more than two colors, AND does not have an
extended palette in the file. In this case, GDS processes the image using
a standard EGA palette. I hope this addition to GDS makes more of your
PCX pictures display properly, but I would also hope that other programmers
obtain the Z-Soft technical specification for PCX files (readily available
from Z-Soft).
NEW! Added the capability to write LBM files via the Alt-L key during
single viewing and array generation. GDS can now output directly to files
which Deluxe Paint II will read directly, INCLUDING the 256 color formats!
NEW! File list specifiable within the program. Many of you have asked
for the ability to change paths from within GDS. Registered copies of
GDS now allow you to not only change paths, but to really change all of
your paths. Ctrl-F now allows the user to specify a completely new list
of path/file specifications to create a new file list from. Handy dandy.
NEW! File rename/copy/move functions are now available to registered
users through the CTRL-R, CTRL-C, and CTRL-M keys. No more exiting
to DOS to do image file housekeeping! Sorry, these functions work only in
registered versions.
NEW! File delete function is now available in *ALL* GDS versions. This
function was in such heavy demand, we decided to allow unregistered users
to have it.
NEW! File "Hide" function now quietly hides a single file when the
CTRL-H key is pressed. This function does not delete the file; it just
gets removed from the screen. This is very useful when there are
oddball images in an otherwise clean list of files.
1.08 03-??-91 The Beta Version in Many Forms
*** This version went out to specific users in order to solve some
specific problems for our users. If you have a version 1.08, you must
have dealt with us directly, or gotten it from one of our "EX" beta
testers!
1.09 03-27-91 The Complete GIF89a Version
*!!!* GDS 1.09 is now 100% compliant with ALL of CompuServe's GIF89a
specification. In previous versions, GDS skipped over "plain text
extension" records (...and we told you we did). GDS 1.09 adds support
for "plain text extension" records and comment records.
--> Corrected even more bizarre problems with the PCX file reader.
Special thanks goes to Jean Luthringer in France, who has meticulously
documented many odd varieties of PCX file headers. Some of these files
do not conform to the exact word of the ZSoft PCX specs, but are somewhat
detectable. One of the bugs in GDS (which was a typo on my part) would
display all sorts of random colors with 16 color planar images. I
apologize for this screw up. I believe there are still some programs
which write PCX files which are set up in such a way that choosing the
correct palette is impossible. If you come across one of these files,
please send it to Phase II and we'll do what we can to find a way to
detect these images and display them correctly in future versions of GDS.
--> Corrected problems writing 16 color LBM files. Deluxe Paint on
the IBM doesn't seem to decompress IFF files when the image compression
runs across bitplane line boundaries (that's O.K., because the IFF spec.
says that it doesn't have to). GDS will read files compressed that way,
just in case you have an IFF encoder that does. GDS should now write 16
color (bitplanar) images which Deluxe Paint reads.
--> Corrected problem reading some planar odd sized BBM brushes. GDS
would occasionally miscalculate the image width and display severely
skewed images when a brush has an odd byte width and the masking bit was
set in the "ILBM" (or "PBM_") bitmap header. This bug is no more.
--> Corrected bug in GIF89a image background restore for areas larger
than would fit in available system RAM. GDS writes excess screen data to
a temporary file when it has to restore the data later, but a typo
prevented GDS from being able to read the file data back in. Also, when
a GIF89a image had a "restore to original" graphics control block in it
and the image was enlarged greatly with the ALT-Z (zoom) feature, GDS
would store tons of nonexistant screen data to this temporary file.
Ironically, the typo made this data storage even more useless because it
could not be read back in. Users who have a lot of free disk space may
not have noticed anything except very long delays when this happened.
These two problems have been fixed. GDS now clips restored areas to the
visible screen to minimize the size of temporary files and memory
consumption. These problems were annoying, but NOT harmful.
--> Corrected bug in MAC file reader which would hang when displaying
certain images which contained a specific compression scenario. This bug
surfaced with a file called "BROOKE.MAC" which we received from a devout
user. Thank you. The bug has been eliminated.
--> Corrected bugs in Genoa bank switching routine which limited
memory to 256KB, or four banks. Also, modified GDS.CFG to include only
valid modes for current end-user Genoa cards. Some of the modes listed
in GDS.CFG were supported only on Genoa 5000 cards. These modes can be
re-invoked by removing the semicolon (";") at the beginning of each line
in the configuration file. Special thanks goes to Herman Wadler of Genoa
Systems Corporation for his quick response to my numerous inquiries.
Also, at least one of Genoa's BIOS releases (3.5) has a problem with
640x400x256 mode when using an analog monitor. Genoa is aware of this
problem and is working on (or has completed) a new BIOS to correct this
problem. Call Genoa technical support at (408)432-9123 to get an update
if you have experienced problems with the 640x400x256 mode.
--> Special thanks goes to Joe Brabec in Livermore, California, just
because he's a fantastic hardware designer. Will someone please hire him
away from his current job? He deserves better!
--> Added some logic to the mouse button up/down portion of GDS which
should help those of you who have a video BIOS which plays around with
interrupt enable flag and/or mouse driver during a mode change. If you
have ever seen GDS return to the text screen immediately after you double
click on a file, this change should prevent that from happening.
--> Corrected bug with GIF files which have a Macintosh file header
at the beginning. GDS was always set up to automatically detect and skip
Mac headers, but somewhere along the way I disabled that code. Oops.
--> Corrected bug in automatic (unattended) array generation and file
writing which would write GIF files (rather than PCX or LBM) after the
first image. GDS now continues to write the same format of file which the
user specifies for the first array write.
--> Corrected bug which would force GDS to think that the
installed video card had 512K of video memory available, even when it was
known that the video card had only 256K. Double Oops!
NEW! Added support for GIF89a "plain text extensions." Thanks to Jim
Burton (a very good artist sometimes found lurking around the CompuServe
PICS forum and also responsible for many very praise-worthy GIFs), I've
obtained CNTAUR.GIF, which includes several "plain text extension"
records. Thanks, --> JB!
NEW! Added the GIF89a comment records. GDS automatically formats and
displays comment records after viewing GIF89a images. Naturally, this
automatic comment viewing behavior can be disabled by using the "/K0"
command line parameter.
NEW! Added a short "beep" at the end of viewing an image. Many users
want a beep after the display of an image because the file viewer they
used to use did it. GDS now lets you know that it's done with a friendly
beep. Some users will probably find the beep annoying ("BEEP!!"), and are
free to kill it completely by using the "/!0" command line parameter.
NEW! Added PCC format. Some users have asked to have PCC files listed
along with PCX files. I left this out initially because the extension is
considered obsolete in most circles, but alas, having this extension
supported can't hurt. Enjoy.
NEW! Added status message when writing files. Now you don't have to
guess what GDS is doing after you hit an ALT key to write an image.
NEW! Disabled writing images until the display cycle of each image
is complete. We decided that it is in everyone's best interests to
protect the rights of the authors of quality GIF images against users who
write GIF89a images before the image is complete. Now disabled, this
capability had little use except to conceal copyright messages in GIF
files.
NEW! Direct hardware support for setting palettes. In order to avoid
"snow," certain display adapter BIOS's wait for a vertical retrace period
before setting the palette registers. The flaw in this strategy is that
programs like GDS set sections of the palette interactively, and must wait
for the video BIOS. Cards which are known to do this are the Orchid Pro
Designer II, Hercules Graphics Station 34010, and TVGA (there are many
others). GDS now defaults to going direct to the hardware DAC registers
in order to set up the palette. IF COLORS IN IMAGES SEEM TO BE WRONG,
OR SEVERELY DARKER THAN NORMAL, try using the "/C0" command line option
(see "Common Problems" section). This option tells GDS to go ahead and
use the video adapter's ROM BIOS to set the palette.
NEW! Added command line option ("/R") which sets the default mode of
the "LOck/AutO" button when GDS is first executed. This is useful if
GDS.CFG is modified such that the first resolution is the one that is to
be locked.
NEW! Added command line option ("/E") which tells GDS to try to fit
images to the screen in single view and slideshow mode. This is
convenient when giving slideshows of large images on standard VGA's which
support only the lower resolutions.
NEW! Added the version number to the GDS exit message. Now you can
tell which version you have if GDS doesn't work on your machine! AGH!
1.1 07-15-91 Ta Da!.... Geeze more new stuff.
Lemme see, what did we do in 1.09a,b,c,e,f?
NEW! Reads and converts TARGA 16 and 24 bit uncompressed files.
NEW! Auto array creation with the /P<n> command.
NEW! Add your own "Logo" to array images with the /Q command.
NEW! Keyboard Commands......
"H" (yes that's the H key) Horizontal flip (mirror).
"V" Vertical flip (mirror).
"/" 90 degree rotate
Alt-C Clip an area to save to a file.
Well...There is a bunch more but to save both of us a lot of
confusion. Check out this new feature......
NEW! Move the mouse cursor to the top of the screen while viewing an
image then hold down the mouse button to access the pull-down menus.
(gee, It looks like a game from Sierra!).
====================================
FUTURE WATCH
====================================
In the works......
GDSPaint.. Another Paint Program??
GDS Toolbox.. A library of GDS functions that you can LINK and
CALL from your own applications.
Do you want:
More file formats? Which?
Batch language for multiple processes?
Palette locking/translation?
Image content palette searches?
Extremely high quality photomontages?
Shells to DOS and/or paint programs?
Scanner support?
GDSPRO (the professional version of GDS) is a complete image scanning
package that presently supports the Epson ES-300C scanner. Next will be
the MicroTech scanner, then whoever gets to us first. GDSPRO saves the
full image data from the scanner then provides many options for recreating
and enhancing the image on your VGA display.
GDSPRO can also generate a common palette for multiple images.
The price for GDSPRO has been set at $249. If you have registered GDS,
you can deduct the $35.
PLEASE LET US KNOW!
Phase II Electronics Inc.
19 Sands Point Drive
Toms River New Jersey 08755-5167
Phone (908) 286-0080, Fax (908) 349-3842
Compuserve 76667,1522 Bob Holland