VIEWGIF ver 1.60
----------------

This program allows viewing GIF files under OS/2 Presentation Manager.
It requires a VGA or super VGA card and works best with a 256 color
PM driver (now available for Video 7 VRAM VGA and NEC Graphics Engine).
I don't know how it works with the IBM 8514/A card, but I think the DAC 
registers are also VGA compatible.
For loading a file you can select if you alter the palette registers directly
(VGA only) or let OS/2 do it for you (with dithered colors).

This is a true OS/2 PM program, so it does not run under DOS or the DOS 
compatibility box. There are already enough ones for DOS (VPIC, etc.).
The program is public domain and you can spread and copy it as much you want.

The program can also read DeluxePaint LBM files, but not LBM files created by 
DP II Enhanced. I don't know the unpacking algorithm on DP II Enhanced. It can 
also handle ZSOft .PCX files until version 3.00.
The Grab menu creates also (unpacked) DeluxePaint II files, in the same way as 
the CAMERA utility does under DOS.

The command line switch -c or /c enables direct palette manipulation as a 
default. You can Associate in the File System VIEWGIF -C for all .PCX, .GIF and 
.LBM files.

The command line switch -n or /n disables the confirmation on quitting the
program or loading another file when the current bitmap is modified and not
saved yet.

The command line switch -4 will load a 256 color picture in a dithered 16 color 
image with the default PM palette.

Menu items:
Menu bar(F10 or doubleclick):
      Toggles menubar/titlebar display.

File (F): 
      change directory and load picture file (Only .GIF, .PCX  and .LBM
      extensions are enabled). With marking the Direct Palette manipulation
      check box, the program changes the VGA DAC registers directly so the
      other programs in the PM session 'go technicolor'. In this case a task
      switch with Ctrl-Esc or Alt-Esc or popping up the file menu will restore
      the PM default palette and the GIF picture is in false color. This
      works only with pictures with less or equal number of colors than the VGA
      driver. When the checkbox is not marked (or the picture has too many
      colors, e.g. a 256 color GIF on a standard VGA) the closest matching PM
      colors will be used.

Scale (S):
      Toggle scaled display within the window and part of picture in window.
      The method of scaling is one of three bitmap compression methods provided
      by PM (keys 1,2 or 3). The redrawing is somewhat slow, it takes a few 
      seconds to redraw a 640x480 picture on a 16 MHz AT. This is because of the 
      GpiBitBlt() function. The 'N' key turns scaling off anyway. Scrolling
      through the picture can be done with the cursor keys (PgUp,PgDn, Home,
      End, Arrows) when scaling is off and the picture does not fit in the
      window. When Save is pressed, the picture will be saved in the scaled way
      when Scale is on, so you can expand or shrink pictures and save them
      again.

Palette (P):
      Change colors (only enabled when the picture has not more colors than the 
      display device driver). When the Rewrite check box is enabled, the program 
      rewrites the color table to the GIF header (GIF files only).
      The RGB slides can also be controlled by the enhanced keyboard 
      Red: Insert/Delete, Green: Home/End, Blue: PgUp/PgDn 'grey' keys. Arrow 
      up/down move to previous/next color.

Save Method (M):
      Selects the .GIF, DeLuxePaint .LBM or ZSoft .PCX format as save option.

Update (U):
      Reads the contents of the main window of VIEWGIF and writes it to a 
      DeluxePaint .LBM or a ZSoft .PCX file, depending on the Save Method menu.
      A Z pressed in the main window forces PCX format and sets the save format 
      to it, and a D forces DeluxePaint format, a G forces GIF format.
      When SCALE is enabled, the picture will be saved with the same picture
      size as the window, so you can save scaled pictures.
      Saving will be done in four bits (16 colors) or eight bits (256 colors) 
      dependant on the current PM driver. When the picture has one color bit 
      (B/W pictures) the file will be saved in one bit when GIF or PCX is 
      selected.

Update Window(W):
      Reads a part of the main window of VIEWGIF. Can be selected by the mouse. 
      The initial size of the mouse window is 320x200.

Capture(C):
      Captures the entire PM session screen in a file in .GIF, .PCX or .LBM
      format, dependant on the save mode. You can also select a particular area
      of the screen. Initial size = 320x200, but can be expanded. 
      Icons:
      When Icon is selected in the Grab menu (64x64 is best , because it is 
      device independent) you can create icons. After selecting Icon, VIEWGIF 
      asks you for the size. Minimum is 32x32, maximum is 320x256.The Icon
      Editor is a somewhat cumbersome tool, because you can just draw dots and
      little squares and that is all. No circles, nonharizontal and nonvertical
      lines. With Viewgif a GIF or PCX or LBM picture can be shrinked to a
      bitmap of the specified size which can be transferred to the system
      clipboard and then be pasted (paste option) by the Icon Editor provided
      with the OS/2 Programmer's Toolkit. Unfortunately, the colors of IconEdit
      cannot be changed by the bitmap which comes from the clipboard, so the
      colors do not match, because the default colormap of Iconedit does not
      match the system colormap. Therefore I provide a custom icon called
      CUSTOM.ICO with the default color map for 16 colors. You can use any
      paint program for creating icons for PM (I use DeluxePaint) and then read
      the picture with Viewgif and copy the icon into the clipboard. Then you
      must call iconedit with custom.ico and then call paste (in all device
      formats!) and then call Save As (not save) to your own icon file.

Custom Size:
      VIEWGIF starts up in full screen mode or in 640x480 size when the PM 
      driver screen size is greater. Pressing F5, F6, F7, F8 or F9 sets the 
      window size to resp. 320x200, 640x400, 640x480, 800x600 and 1024x768. All 
      the sizes work on any screen driver, but int the menu only the screen 
      sizes smaller or equal than the device size are shown. The F4 key lets you 
      set the window to any size (when it fits on the screen). When it doesn't 
      fit on the screen, you can retry it with switching the title bar and menu 
      off (F10 or doubleclick on the client window).
      With the F12 key the current window size (set with Custom size or just 
      with the normal resizing of a window), the current client window size is 
      set to the new bitmap size, so you can cut out parts of a bitmap and then 
      magnify them with the Scale menu. When you save the file now, the new size 
      will be the saved to disk too.

Dithering to Monochrome:

T:    The picture will be dithered to monochrome with six levels.

H:    Halftone dithering. Bright colors will turn white, very dark colors black 
      and medium colors halftone gray.

R:    Random dithering. The chance a certain pixel will be white is proportional 
      with the intensity of the color.

      In all three ways the intensity is counted as follows:
      (Red*3 + Green*3 + Blue*2)/8. The picture has two colors, white and black.

Dithering of 256 color pictures to 16 color(4):

With this option a 256 color bitmap can be simulated with using 256 'binary' 
colors consisting of two RGB values. The picture will be dithered in halftone.
When you save the bitmap to a file (GIF/PCX/LBM), it will be saved as a 16 color 
image.

Saving and loading of files occurs in background, so this slow action won't 
block you switching to other tasks. Only the VIEWGIF window is locked during 
saving and loading. The same occurs with dithering.

Problems:
---------

The source code for unpacking GIFs is a converted Turbo Pascal program for 
unpacking GIFs. I have optimized it somewhat after converting it to C, but it 
can be faster. I am working on it. The reading and writing goes through a 
separate thread, so VIEWGIF won't block the system while loading a picture and 
the user can switch to another program.

Because of the awkward color translation of PM, 256 color pictures do not look
very well on a 16 color PM driver.

Because of the inability to manipulate the palette registers under the 
current version of PM ( GpiRealizeColorTable() is a dummy function ) this 
program has an IOPL routine to manipulate the DAC registers of the VGA card 
directly. Therefore, to run this program you must set in CONFIG.SYS:
  iopl=yes
or:
  iopl=viewgif

Sometimes the entire screen grab does show an entire white bitmap, but grabbing 
once more in the same way does the right thing. I did not yet solve this bug.

On EGA cards the direct palette manipulation does not work, but, still the IOPL
statement must be added to CONFIG.SYS.

Big bitmaps consume much memory, a 1024x768 bitmap consumes 768 K so multiple
VIEWGIF sessions can slow down overall performance due to swapping. On my PC
with 4 Megs RAM (of which 768 K ramdisk and 512 K diskcache, so net 2816 K) two
VIEWGIFs with 640x480 slows down considerably. Because of loading and saving
performance reasons I translate all bitmaps, even with 16 colors, wo 8 bit
bitmaps, but this consumes twice as much memory.

After saving monochrome bitmaps in scaled mode, the screen turns blank. I could
not find the problem, because the bitmap is OK, the saved file and the color
table are all OK. It may be a bug in the way how PM handles bitmaps. When you 
reload the newly written file, it's OK.

Trademarks.
----------

DeluxePaint is a registered trademark of Electronic Arts TM.
GIF (Graphic Interchange Format) is a trademark of Compuserve Inc. and the H&R 
Block Corporation.

WANTED:
-------

The format of OS/2 1.2 Icons, so I can write .ICO files directly to disk with 
Viewgif.

Does someone know if DeluxePaint II exists for OS/2 ? The DOS version is very 
good, but I get frustrated with the many 'Not enough memory' messages even with 
4 MB RAM on my PC.

Information about direct Color Palette changing in future versions of OS/2.
This is not possible now. The way I use now is hardware dependant. I have a .DLL 
with direct color palette change (VGA + Super VGA only) with source code which 
you can download from this BBS (PMPAL.ZIP). Viewgif uses the same code, but it's 
embedded in it.

Update record:
--------------
VIEWGIF v. 1.2 (20 Jan 90) OS/2 PTK 1.1:

Added ZSOft PCX format.
Fixed bug in Update files, now it saved the entire window, even if it's not 
shown entirely.

It has been tested on a Tandon 386/16 and Compaq 386/20e with Video 7 VRAM VGA
board (with all available drivers for it) and a Paradise Plus 16 card with
800x600 PM driver.

VIEWGIF v. 1.3 (14 Feb 90) OS/2 PTK 1.1:

Loading/saving in separate thread.
Also part of picture save added.
Setting of custom window/bitmap size.

VIEWGIF v. 1.4 (11 Mar 90) OS/2 PTK 1.2:

Bug with window maximizing (only in OS/2 1.2) fixed.
Bug with custom size of small pictures (segmentation violation) fixed.
Color icon support enabled for transferring pictures to IconEdit.

VIEWGIF v. 1.5 (23 Mar 90) OS/2 PTK 1.2:

Version 1.4 did not start under OS/2 1.1 because of the color icon. Now VIEWGIF 
loads a B/W icon under OS/2 version 1.1.
Also writing to GIF files supported. Picture/window can be set to any size from 
32x32 to the screen size.
Monochrome pictures will be written as monochrome pictures to disk when .GIF or 
.PCX format is selected.
Icons also to any size from 32x32 to 320x256.

VIEWGIF v. 1.6 (?? Apr 90) OS/2 PTK 1.2:

Confirmation on exiting or loading another file when the bitmap has been altered 
by ViewGIF.
Bitmap (16 and 256 color) dithering to monochrome bitmaps.
256 color bitmap dithering to halftone 16 color bitmaps.

VIEWGIF is made by:
Klaas van Ditzhuyzen
DATAD Telecom Products
P.O.Box 371
3900 AJ Veenendaal Holland
Tel +31 8385 33400
Fax +31 8385 26386

For suggestions or bugs, refer to the above address.
You can also leave a message to 

Klaas Vanditzhuyzen on the FARGO BBS
 (701) 293-5973  2400 n 8 1 MNP 4.
Martin Vermeer on Magnum (Gilmore) BBS
 (805) 581-1275  2400 n 8 1 MNP 4.
