Viewtek A freely distributable picture and animation viewer for the Amiga (Another fine UBTASITE product) Written by Thomas Krehbiel Copyright © 1992,1993 Thomas Krehbiel All Rights Reserved (Notice how the 'tek' in Viewtek is not capitalized in any way.) ----------------------------------------------------------------------------- If you like Viewtek, and you are of the opinion that if a programmer writes *one* good program, then *all* programs by that same programmer must be good, then take a look at ImageFX, too. :) ----------------------------------------------------------------------------- IMPORTANT, CRITICAL, VITAL-TO-NATIONAL-SECURITY NOTES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Many people reported crashes playing hires overscan animations; this version does not seem to be doing this, however I was only able to duplicate this problem once under less-than-ideal circumstances with the previous version. I'm sure I can count on you people to let me know if it still crashes. :) Sorry for any inconvenience. Throughout this document you will find information on (most of) the new features, including datatypes, XPK support, and playing animations from hard drive. I've tried to mark new items with a "(1.05)" so you can search for them with a text editor. Also, see the important note under DISTRIBUTION below. (See the end of this document for changes since the previous version.) INTRODUCTION ~~~~~~~~~~~~ Some of you may remember an ILBM/ANIM viewer program I wrote a while back called "TIV". Some would say that "Viewtek" is TIV 2.0, but I consider it a totally different and much improved program (no part of TIV is in Viewtek; it is all rewritten from scratch). (If you're using TIV now under 2.0 I *strongly* suggest you dump it in favor of Viewtek.) Viewtek was written with a few objectives in mind. I wanted a program that first and foremost was totally 2.0 (and 3.0) compatible. I wanted it to take advantage of 3.0 and the AGA chips wherever possible. I wanted it to show ANIMs as good or better than TIV did, with support for any and all display modes. I also wanted to be able to render decent (if not spectacular) representations of 24-bit ILBMs, GIFs, and JPEGs. And I wanted to keep the program internally modular enough to support 3rd party display devices fairly easily (I don't find this goal terribly useful anymore now that I have an A4000, but it's still there just in case). The result you have before you. FEATURES ~~~~~~~~ o Requires Workbench 2.04 or greater. o Shows most ILBM's (including 24-bit ILBM's). o Shows most Compuserve GIF format images. o Shows most JFIF format JPEG images. o Shows most ANIM Op5/Op7 format animations, with support for different palettes for each frame. o Supports SHAM, CTBL, and PCHG images. o Full support of ECS/AGA display modes (ie. show 256 color GIF's directly, show 800x600xHAM animations, etc.). o Supports viewing contents of clipboard. o Iconifies to a Workbench AppIcon. o Can play animations directly from hard drive. o Supports the XPK compression package. o Includes a version written for GVP's Impact Vision 24, to support true 24-bit display. o And even includes a stripped-down version that doesn't show GIF's or JPEG's for those who don't need it. NOTE ~~~~ I have no intention of supporting ANIM8 as long as there is an infinitely superior ANIM7 format around. You, the animation user, would be wise to petition those who would use ANIM8 to use ANIM7 instead. Unless you *want* a less efficient animation format. 'Nuff said. The included utility MakeAnim7 can be used to convert existing animations (5's or 8's) into the ANIM7 format. I have also included the documentation I received that describes the ANIM7 format. To the best of my knowledge, there are no limitations on its distribution. DISTRIBUTION ~~~~~~~~~~~~ Viewtek is being distributed as Freeware. It may be freely distributed to any bulletin board service, network, or public domain collection, so long as no fees (beyond reasonable media fees) are charged for its distribution (that is, no fees are charged for Viewtek). I'm not asking for donations on this one, but feel free to drop me a note (preferably e-mail) or something if you want. Note, however, that Viewtek is NOT public domain. The author retains all rights to the program. IMPORTANT: If you want to include Viewtek with any sort of commercial distribution, you are free to do so as long as the following files are included somewhere in your distribution (and not modified): VT VT.info VT.doc VT.doc.info It is not necessary that you contact me to get my permission; I hereby grant permission to any and all who wish to use Viewtek as a picture and/or animation viewer for any commercial or non-commercial purpose. See another important note under AUTHOR below if Viewtek doesn't quite meet your needs for a picture viewer. OOPS! ~~~~~ Older versions of the Viewtek documentation left out a very important statement: This software is based in part on the work of the Independant JPEG Group. I'd just like to apologize to the Independant JPEG Group for not having included this, they deserve full credit for their work in bringing this popular compression format to the computer world at large. INSTALLATION ~~~~~~~~~~~~ Viewtek requires no special libraries or fonts or anything to run. Simply drag the Viewtek icon to wherever you wish to install it. It may be run from a Shell, Workbench, or even your favorite dirutil. The IV-24 version of Viewtek, however, requires that you have a copy of GVP's "fye.library" in your LIBS: directory. (If you have an IV-24, chances are pretty good you have this installed already.) DISABILITIES ~~~~~~~~~~~~ Okay, what *doesn't* it do? - No color cycling (yet?). Why? I have exactly one picture that color cycles out of hundreds of images and I never look at it anyway, so it wasn't a high priority. - Some CTBL images may not quite show properly, more than likely due to more palette changes per line than can be shown properly with the copper. Same may be true for SHAM pictures. I probably will not fix this because I don't really see much value in these types of pictures anyway. It may help to force the images to be shown in NTSC/PAL on an A4000, or move the picture to the right (with control arrow keys). With better displays becoming more widely available, this is also not a priority to work on. - Does not (yet?) support a non-existant first-frame BODY as specified for ANIM7 animations. (Personally, I think this is a bad thing anyway.) - Known incompatibility: VT doesn't interact well with the Commodore mouse blanker supplied with 3.0 when showing animations. When you move the mouse after it has been blanked (eg. after hitting some keys during the animation), the screen goes black. DATATYPES AND YOU (1.05) ~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 1.05 makes use of 3.0's datatypes.library. This means that when VT runs across a file it is not capable of reading, it then asks datatypes to try and read the file. If it can, then VT will still be able to show the file. If you want VT to use datatypes exclusively (ie. not try to identify or decode the files within VT at all), use the "DT" option on the command line. This lets you, for example, use the GIF datatype instead of VT's own GIF decoding. VT has been tested successfully with the GIF and PCX datatypes. (These are the only ones I have.) NOTE: Processing files via. datatypes works a little differently than things normally work in VT... there is no way to abort reading a file, and the file is read entirely into memory before even opening a display screen. SHOWING COMPRESSED FILES (1.05) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 1.05 supports the XPK compression package (a nice package, BTW), allowing it to read any kind of encoding scheme that XPK itself supports. In order to continue using iffparse.library and in generally keep VT the way it is, it works a little strangely; the encoded file is decompressed to a temporary file in T:, which is then shown normally by Viewtek. Obviously, this could impose some memory problems if your T: directory happens to be in RAM:. You'll have to get the XPK package elsewhere; consult a BBS near you (I got it from BIX). PLAYING ANIMATIONS FROM DISK (1.05) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Viewtek 1.05 can play animations directly from disk... sort of. How well it works depends on many factors: - The speed of your computer. - The speed of your hard drive and/or controller. - The complexity/resolution of the animation. - The chosen playback rate. - The chosen buffer size. - How much you're willing to fiddle with parameters. Here's an overview of how it works: Playback from disk is done with two tasks; one task is responsible for reading data from disk, the other task is responsible for decoding and displaying the frames. Basically, while the disk reader is getting data from disk, the playback task is playing the frames from the previous batch. Buffer Size. The buffer size is very important to the performance of the playback. The idea is to make the buffer size such that a new batch of frames can be read from disk faster than VT can play the frames from the previous batch. If the buffer size is too small, VT will end up stuttering during playback because it has to wait for the disk reader to catch up to the playback task. However, if the buffer size is too large, a lot of wasted time will be spent reading from the hard drive (on my system, reading from the drive for extended periods of time also causes the animations to stutter - not sure if this is just my own HD or a universal problem tho). (NOTE: Animations with large deltas will require larger buffer sizes. Viewtek will inform if you need to increase the buffer size (and give you an approxiamate target size).) Playback Rate. A good way to smooth out the playback is to slow down the playback rate. This will give the disk reader task more time to read from the disk. Animation Complexity. Let me be blunt: If you think a 736x480, HAM8 animation of a camera pan is going to animate well, you're crazy. The Amiga's good, but it ain't *that* good. :) Computer Speed. Obviously, the faster your computer, the better the results are going to be. I personally haven't tried VT on a system equipped with less than a 68040 for quite some time, so I can't really comment on whether it will even work at all on a 68000. Hard Drive Speed. I've tried HD playback on two systems: One is an A4000 with the internal IDE drive, along with a GVP SCSI controller and a Maxtor drive. The other is an A2000 with a GVP G-Force 040 (SCSI controller built-in) and a couple Quantum drives. (Funny how I have all this GVP stuff, ain't it? :) The results I get are generally pretty good, although stuttering animations definitely do happen. Fiddling with the playback rate and buffer size usually helps in all but the most severe cases though. In short, if you have a 1MB A500 and want to genlock your 40MB HAM interlace animations onto videotape for production work, you'll be disappointed. This feature is strictly a novelty at this point. CAVEATS: The Up Arrow does not work when playing anims from disk, and the animations are always played in "continuous" mode; ie. if the anim doesn't have loop frames it's going to look pretty strange. COMMAND LINE OPTIONS ~~~~~~~~~~~~~~~~~~~~ Note that all options now have (hopefully) convenient two-letter abbreviations in case you don't like to do a lot of typing. (1.05) FILE HANDLING OPTIONS ~~~~~~~~~~~~~~~~~~~~~ Files/M One or more files, directories, or patterns. If you give VT a directory, all files in that directory will be shown (in no special order). Standard AmigaDOS wildcards are supported. Basically, anything that is not a recognizable option is assumed to be a file spec. AL=All/S Tells VT to recursively enter subdirectories. CL=Clip/S Read image from clipboard. DE=Delay/K/N Number of seconds to show each picture or animation before automatically proceeding to the next one. The timer doesn't start until *after* the picture or animation has been loaded. DT=DataTypes/S (1.05) Force VT to use Datatypes to identify and display files (normally datatypes is the last thing checked before giving up on a file). This lets you, for example, use a datatypes GIF converter instead of the one built into VT. FO=Forever/S Repeat showing the list of files given on the command line forever and ever amen (and/or until cancelled). IL=ILBM/S Force VT to assume all files are ILBM pictures. In case you only want to show the first frame of an animation and not the whole thing. RE=Repeat/K/N Repeat showing the list of files given on the command line the number of times specified (or until cancelled manually). SA=Save/K Save the resulting image that VT renders to a displayable ILBM file. Makes VT into a (*very*) simple file conversion utility. (NOTE: I have no plans to turn VT into a killer awesome amazing wonderful convert-anything-to-everything- else file converter.) UT=Unit/K/N Specify clipboard unit when showing contents of clipboard. ANIMATION OPTIONS ~~~~~~~~~~~~~~~~~ BU=BufSize/K/N (1.05) Sets the buffer size when playing animations directly from hard drive, in KB (ie. BUFSIZE 128 == 128KB). VT actually allocates 3 of these buffers, so don't get too crazy. Also see the notes on playing animations from disk elsewhere in this document. CO=Cont/S Force animations to be considered "continuous". My definition of a "continuous" animation is one that has those two looping frames stuck on the end (like the kind that DPaint always creates). Normally, VT will only consider an animation to be continuous if a DPAN chunk is found. DI=Disk/S (1.05) Force animations to be played directly from disk. FP=FPS/K/N Specify animation playback rate in frames per second. LP=Loop/K/N Number of times to loop an animation before continuing on with the next file. Normally, VT will loop until you tell it to stop. MA=MaxFrames/K/N (1.05) Maximum number of frames to read from an animation. This is handy if you don't quite have enough memory to load an entire animation, or for some reason the anim is corrupted beyond repair halfway through; VT will only read in the number of frames you specify before going on to show it. ND=NoDisk/S (1.05) Never show animations from disk. Normally, VT will try to play an animation from disk if it sees you don't have enough memory to play the animation from RAM. SP=Speed/K/N Specify animation playback rate in jiffies per frame (one jiffy is 1/60th of a second). PA=Paused/S Begin animations in paused mode; you must hit the right or down arrow to actually begin playing the animation. DISPLAY MODE OPTIONS ~~~~~~~~~~~~~~~~~~~~ DF=Default/S Force pictures and animations to use the DEFAULT monitor id. This is handy when you have mode promotion on, but a picture you are showing is hard-coded as NTSC... this option forces the picture to use the default monitor id, which in turn causes it to be mode promoted. HI=Hires/S Force pictures and animations into HIRES. Use with caution; some viewmode combinations are not allowed on non-AGA machines. LA=Lace/S Force pictures and animations into INTERLACE. LO=Lores/S Force pictures and animations into LORES. NL=NoLace/S Force pictures and animations into NON-INTERLACE. NS=NoScroll/S Disable autoscrolling large pictures. Why? Beats me. NT=NTSC/S Force pictures and animations to use the NTSC monitor id. PL=PAL/S Force pictures and animations to use the PAL monitor id. S7=Super72/S Force pictures and animations to use the SUPER72 monitor id. Generally only useful on AGA machines. SC=ScreenMode/K Specify the name of any available screen mode to show pictures and animations in. The name must be exact, as shown in the preferences ScreenMode program (be sure to put quotes around the name if it has spaces in it). Case is not sensitive. SU=SuperHires/S Force pictures and animations into SUPERHIRES mode. UN=Underscan/S (1.05) Disables overscan for any pictures or animations that VT shows, this lets you see all the way to the edges of super bitmap pictures. MISCELLANEOUS OPTIONS ~~~~~~~~~~~~~~~~~~~~~ HD=Hide/S Hide images while they are being decoded. Normally, VT shows you the images while they are being read; this option causes VT to only show you the images when they are completely decoded. You probably want to set this for slideshow-style presentations. IC=Iconify/S Start VT in iconified mode. When iconified, a little AppIcon appears on your Workbench, where you can drag image icons to view them. Double-clicking the icon gives you options for quitting or showing files interactively. IN=Info/S (1.05) Only display information about files, do not actually display them. LM=LowMem/S Disable double-buffering of pictures. Handy if you don't have a lot of chip memory. NB=NoBusy/S Do not show a busy pointer at any time. PO=Pointer/S (1.05) Do not blank the mouse pointer when showing pictures. QU=Quiet/S Do not print any information to the shell. EXAMPLES ~~~~~~~~ 1> VT picdir Show all files in the "picdir" directory. 1> VT picdir ALL Show all files in "picdir", including subdirectories. 1> VT picdir SUPER72 SUPERHIRES LACE Show all files in "picdir", forcing them into Super72 800x600 mode. 1> VT myjpeg SAVE ram:mypic Show "myjpeg", and save the resulting screen to "ram:mypic". 1> VT picdir HIDE Show all files in "picdir", but don't show each picture until it is fully read into memory. 1> VT picdir FOREVER DELAY 2 Show each file in "picdir" for 2 seconds, repeat forever. 1> VT picdir SCREENMODE "MULTISCAN:Productivity" Show all files in "picdir", forcing each one into Productivity mode. USEAGE FROM WORKBENCH ~~~~~~~~~~~~~~~~~~~~~ All of the options above may be used (except Files/M) as a tool type. (Not the abbreviated form, the spelled out form.) The following additional tool type may be set: DEFAULTDIR Choose default directory where file requester opens. VIEWING COMMANDS ~~~~~~~~~~~~~~~~ ESCAPE Abort viewing immediately. BACKSPACE Abort viewing current directory (when using 'ALL'). LMB/RMB Go to next picture. SPACE Will hold on the current picture, when using DELAY. S Will save the currently displayed picture as an ILBM (you will be asked for an output filename). This only works on pictures; not animations (yeah, I know it would be nice to save frames from anims, but gimme a break here... I've only got 2 hands. :) CTRL+Arrows Move image/anim around on the display (overscan position). Up Arrow (Anim Only) Return to beginning of the animation. Right Arrow (Anim Only) Pause/single step animation. Down Arrow (Anim Only) Resume playing animation after paused. C (Anim Only) Toggle "continuous" mode. F1 (Anim Only) Play animation as fast as possible. F2 (Anim Only) Play animation at 60fps. F3 (Anim Only) Play animation at 30fps. F4 (Anim Only) Play animation at 24fps. F5 (Anim Only) Play animation at 15fps. F6 (Anim Only) Play animation at 12fps. F7 (Anim Only) Play animation at 10fps. F8 (Anim Only) Play animation at 5fps. F9 (Anim Only) Play animation at 1fps. F10 (Anim Only) Play animation at rate specified in ANIM file. SHAMELESS PLUG ~~~~~~~~~~~~~~ Yes, it's true, ImageFX is the greatest image processing software ever to walk the face of the earth. Get it. Don't make me beg... :) THE AUTHOR ~~~~~~~~~~ I can be reached on BIX as "tkrehbiel" if you want to email me about something (like, say, bugs). BIX is now connected to the Internet, so my Internet address is "tkrehbiel@bix.com". You can also reach me on the Late Nite BBS (804-262-9944) as Tom Krehbiel (user #13). As a last resort my U.S. Mail address is: Thomas Krehbiel 10747 Surry Road Chester, VA 23831 WARNING: I generally don't answer paper mail very fast (if at all), and I am also pretty slow responding to email these days. NOTE: I am currently not available for any sort of programming work, including (but not limited to :) custom versions of Viewtek. REVISION HISTORY ~~~~~~~~~~~~~~~~ 1.05 6/17/93 MakeAnim7 now copies over unknown chunk types; this preserves DPaint looping/speed info. Shows 640x480 GIFs in Productivity mode under AGA. Removed V39 gfx double buffering, 'cause palette changing didn't seem to work. Added anim playing from disk... of sorts. Added 'S' to save picture being displayed. Now supports XPK to read crunched files. Now supports datatypes to read unknown file types. New two-letter abbreviations for all options. Added UNDERSCAN, INFO, and POINTER options. Revised this documentation a bit. 1.04a 3/14/93 Fixed DEFAULTDIR tool type to actually work. SAVE works on ILBM's without memory gurus. *Doesn't* call BestModeID under < V39 anymore... :) 1.04 3/9/93 Supports ANIM7 (short & longword) animations. Supports ANIM brushes. Now uses the latest version of Tom Lane's JPEG code. Fixed SAVE option (CMAP specifically) under < V39. Added SUPER72, SUPERHIRES, and SCREENMODE keywords. Changed the way it picks JPEG viewmodes. Tells you how many frames are in the anims it plays. Now uses new graphics double buffering under V39. Added PAUSED option for animations. Added a FPS option to set frame rate in fps. 1.03b 1/10/93 Now allows showing directories via. file requester. Shows >= 800x600 GIF's in Super72 mode if available. More robust error messages on display open fail. Now uses BestModeID to show undisplayable modes. Doesn't close screen on first click of LMB after inactivity. 1.03a 12/15/92 Fixed unbelievably stupid bug in AppIcon stuff. 1.03 12/10/92 Fixed hanging locks when used as AppIcon. Added LORES,NOLACE,ILBM options. Always sets autoscroll now, and still centers 'em. Added NOSCROLL option to disable autoscroll. Added SAVE option to save rendered pictures. Handles animation playback a bit better. 1.02a 11/25/92 More accurate overscan calculation. (Maybe not) 1.02 11/24/92 Stock version renders to HAM8 mode if available. Oops, fixed so you can select just one file from ASL freq. Fixed problem with VT's abort "sticking". Fixed problems with centering AGA animations. Added NTSC/PAL/DEFAULT options. Now examines DPAN chunks for frame rates. Fixed problems with 'odd' sized anims on AGA. Defers allocating ASL struct until needed. More generalized copper stuff. 1.01 11/10/92 Now more intelligent about picking JPEG viewmodes. Handles ANIMs with masking planes. Now able to respect ANIM's reltime by pressing F10. Added busy pointer while loading images. 1.00 11/4/92 Initial version.