NakedEye A SuperVga GIF viewer Van Dao Mai Wollongong University July 1991 1.1 Acknowledgements I think it is always the work of somebody else that makes your work worth doing. That is why I wish to acknowledge the good work of Jordan Hargrave (for a SuperVGA BGI driver) and Gershon Elber (a GIFLIB library) for their excellent work. The SVGA256 BGI driver written by Jordan for the Borland Turbo C compiler is truly superb. On the other hand, the GIF library written by Gershon is impressive and so easy to use. I created this software NakedEye Version 1.0 relying on the two software items mentioned above and found them extremely useful. 1.2 Is there anything new ? I am afraid that I am not offering many new things as far as features are concerned, but I do think there is something better. I adopt a stand that I will not repeat what others have previously done beautifully. This GIF viewer is designed for PCs running MsDos using some really good old-fashioned programming techniques which have generally been ignored by the careless programmers of today's computing world. I do keep in the back of my mind that the little machines we have today are the giants of yesterday, and if we cannot make them do a better job then we have failed pretty badly. This GIF viewer is designed to work and make the most of what a small architecture like that of a PC can offer, typically 64K memory segments and a maximum of 640K of conventional memory. To work within this restricted environment, the amount of memory the GIF viewer needs is 1.5K of conventional memory for each opened image. This 1.5K is used mainly for the colour table, and the rest of the image is either in EMS (Expanded Memory LIM 4.#) or in a hard disk buffer. Nevertheless, this program is almost as fast as any of the popular GIF viewers currently in use by the DOS community. No attempt has been made to optimise it for better efficiency. I have to admit that this is sort of a rough work rather than the work of a fine artist with a lot time and dedication. I have spent only a little bit of my spare time on this GIF viewer to convince myself that the good old-fashioned techniques in programming are still very useful. 1.3 Some highlights This GIF viewer is a pure SuperVGA GIF viewer, it does not understand anything less than the resolution 640x400 (this is actually a lie, it does know 320x200, but I hate this low resolution). The BGI driver by Jordan knows 640x480, 800x600 and 1024x678 in 256 colours. Thanks to the beautiful BGI driver, we have 256 colours for all resolutions of SuperVGA (it does not handle modes with less colours). - Supports Resolutions : 640x400, 640x480, 800x600 and 1024x678. - Supports 256 colours (out of 256K colours). - Can open up to 150 GIF files (about 40-50 Mbytes) and be ready for very fast switching between them. - Only 1.5K bytes is needed for each GIF picture in the conventional 640K memory and the rest is in EMS or/and hard disk. - Automatically detect the idle time (when the user is looking at the current picture) and make use of it to decode the next image in advance. This method gives NakedEye a substantial speed advantage to many other popular GIF viewers. - Provides automatic compression of the colour table to leave some colour entries for text and windows. - Does not have any complicated installation or configuration, thanks to the BGI driver's ability to auto-detect the hardware type and handle it accordingly. - Is almost totally mouse-driven and needs minimal key strokes. - Gives some limited capabilities to resize and save the images in GIF format. Provides a set of exotic features uniquely designed for the pleasure of the eyes. Well, in fact, these features are also very nice for viewing materials of scientific nature. 1.4 Using NakedEye This GIF viewer is extremely easy to use, all you have to do is to make sure that all its files are in one directory. readme : a short information file NakedEye.txt : this documentation file Note.txt : up to date information after version 1.0 NakedEye.exe : the executable. Splayer.exe : the VOC sound player. NakedEye.cfg : optional configuration file. Goth.chr : font file. Litt.chr : font file Svga256.bgi : Jordan's SuperVGA BGI driver. stories.rc : miscellaneous messages. NakedEye.hlp : help information file. NakedEye.key : the key file (registered copy only). There are also some other documentation files which are not used by the program. There are various extra files in this release 1.0.1, please read the file NOTE.TXT for changes since the first version 1.0 The hardware requirement for this software to run is an IBM PC or compatible with a SuperVGA video card and a SuperVGA monitor. The video card must have at least 512K RAM for resolutions up to 800x600 in 256 colours, and definitely 1Mb RAM for the resolution 1024x768 in 256 colours. Here is the list of video cards supported by the SuperVGA graphics driver : Ahead, ATI, Chips & Tech, Everex, Paradise, Trident, Tseng (both 3000 and 4000 chipsets) and Video7. At the DOS prompt type NakedEye gif-files where gif-files is a list of GIF files (a wild card is accepted in each item of the list). If directories are given they will be scanned and all GIF files within them will be loaded. All the GIF file names will be sorted alphabetically, then the file names will be displayed in a window awaiting your selection. After selecting what you would like to load, hit the L key to start loading the first image. Then NakedEye will display the control panel window and wait for your commands. All other images will be loaded on demand when you wish to see them. At this point hit F2 to start loading the rest of the GIF files in a slide show if you wish. If you do not have a mouse, you will be limited to keyboard commands. Let's first look at the Control Panel of NakedEye. 1.4.1 The Control Panel Here is the Control Panel window for NakedEye. All functions on the panel are only accessible by the mouse. Some are offered on the keyboard and will be described later. +------------------+ | NakedEye | +------------------+ | AboutMe SHELL | | 640x400 640x480 | | 800x600 1024x768 | <--- Resolution changes | Light+ Light- | | Red+ Red- | <--- Colour intensity changes | Green+ Green- | | Blue+ Blue | | Random Puzzle | <- Chewing gums for the eyes | Glass Tiles | <- Maginfication glass | Convex Concave | <- Special mirrors | Previous Next | <- Select picture | Mag+ Mag- | <- Set maginfication factors | HorzFlip VertFlip| <- Flip the image | Rotate90 BlkWhte | <- Rotation, Black&White mode | ShakeIt ShLevel | <- More chewing gums for the eyes | Curtain CurMode | <- Even more chewing gums for the eyes | Pick'em Kill'em | <- And more of chewing gums | Music Mfile | <- Chewing gums for the ears | Delay Show'em | <- Slide show commands | Scroll Select | <- View commands | Resize Save | | Rename Delete | <- File selection commands | <--- ---> | | ---^ ---v | <- Image shift commands | Memory FullScr | <- Memory report, Full Screen mode | Open Close | <- Open new image or closing current image | Restore Exit | <- Redraw with original colour table, Exit | | +------------------+ Please do not feel alarmed if you find it hard to understand the above control panel. Most of the functions are self-explanatory as soon as you try them. Some more complex functions that need some explanation will be explained shortly. But first let's look at a mouse technique, the mouse is seen as a big + sign. To select an area you find a suitable spot and press the leftmost button once, then release it go to another spot opposite to form a rectangle, then press the same button once again. The two points together help NakedEye to determine the size of a square area (the smaller side of the rectangle). This square area will be used as the active image area directly affected by the current command. - Random moves blocks of pixels randomly. - Puzzle shifts blocks of pixels randomly. - Tiles changes the number of rows and columns that the whole image will be divided into when Random or Puzzle is active. - Glass acts as a real-time magnification glass. You have to select a square area to help NakedEye determine the size of the glass, then the real- time glass will move everywhere you move the mouse. - Convex acts as a special round mirror that is produced by variable magnification factors reducing/increasing gradually and steadily from the outside to the centre of a circular area. These mirrors are very expensive in CPU time, therefore it is recommended for 286 with a math co-processor or 386 or 486 machines only. - Concave is similar to Convex but has the opposite effect. - Mag + and Mag - are for setting the magnification factor for the Glass, Convex and Concave mirrors. - HorzFlip flips the image horizontally so that left becomes right and vice versa. - VertFlip flips the image vertically so that top becomes bottom and vice versa. - Rotate90 rotates the image by 90 degrees. This when combined with the flipping commands helps you to get the desired orientation for an image. - Shake'it lets you select an area. It then shakes the rectangle. If you press the mouse it will stop and wait for you to select a new area. To exit from this mode type ESCape key. ShLevel is for you to the vibration level. - Curtain draws a 50% visibility curtain across an area selected by the user. The direction can be left-to-right, right-to-left, top-to-bottom or bottom-to-top according to the mode selected using CurMode. - BlkWhte reduces the colour table to a gray scale table to give a black and white look for the image. This is a mode only and can be turned off by the command Restore. - Pick'em is a command used to highlight small parts of the image. A portion of the image is extracted, and it will be floating inside the image area like a fish in an aquarium. - Kill'em kills the objects created by Pick'em so that they stop floating on the screen. The object to be eliminated will have to be selected individually. - Delay sets the value for the slide show. It is a rotary value (back to minimum when it passes the maximum). - Resize allows you to resize an image, the image is written into a file which can be loaded later. It is an expensive function because of the memory restriction of the PC architecture. A lot of disk swapping is done, but the good thing is that you can resize to any reasonable size (between 10-2000 pixels wide or high). It takes about 5 minutes to resize an image to 1500x1500 and about 1.5 minutes to resize an image to 800x600 on a 25Mhz 386 PC. - Rename helps you to rename a GIF file. It is there for you to put good or bad picture into a collection of similar names. Delete is the command to eliminate bad GIF files from your disk. - Save is an inexpensive routine that writes the image out in GIF format with the current magnification factor for viewing. This factor is determined by two keys strokes U to blow it up and D to get it down. - FullScr hides the control panel, to revert to the panel type F on the keyboard. The keystroke F is a toggle (on/off) key for the FullScreen mode. - Restore reloads the original colour table and redraws the image. 1.4.2 The Keyboard Functions The keyboard is an alternative if you do not have a mouse to access the control panel, and it also caters for some functions that the control panel does not have room to accommodate. The way to work the keyboard is a bit cunning, and you do not have to know everything to get the most out of NakedEye. Many keys will be used to offer the same commands which can be activated from the control panel by the mouse. If you do not have a mouse, then the keyboard has to be used instead. Not all functions on the control panel are offered on the keyboard, and the reverse is also true that not all keyboard commands are on the Control Panel. Key 1, 2, 3 and 4 are for switching to different resolutions from 640x400 to 1024x768. A tells about the program (AboutMe). B goes back to previous image (Previous). C closes current image (Close). D reduces the display magnification factor by 1. E exits to DOS (Exit). F switches ON/OFF full-screen mode (FullScr). H flips the image horizontally. M Play the VOC sound file associated with the image (Please read NOTE.TXT for more information) N goes to next image (Next). P shows the Puzzle (Puzzle). R restores the colour and redraws the image (Restore). T toggles background/foreground colour. U increases the magnification factor by 1. V flips the image vertically. W writes the images out (Save). F1 shows a help window. F2 does a slide show (Show'em). F3 changes time delay in seconds (Delay). F9 does shell escape to DOS (SHELL). F10 toggles ON/OFF the idle time detection and automatic next-image-decoding running in the background. ESC stops the current command or exit back to DOS if no command is running. HOME shows the top-left corner of the current image. LEFT shifts the image left gradually. UP shifts the image up gradually. DOWN shifts the image down gradually. RIGHT shifts the image right gradually. CTRL-S saves the gif file (Save). CTRL-R rotates the gif file by 90 degrees. CTRL-D dumps the screen. The only portion that fits into the window is dumped out in GIF format. This is very similar to Save but the source is the screen. The output file is "eye#.gif" where # is a number. Please note that LEFT, DOWN, UP and RIGHT are the arrow keys. You can control the scrolling of the image using these keys. It takes time to refresh the screen in high resolution such as 800x600 and 1024x768. This means you should not type ahead the speed of the machine because this will eventually cause you to wait. You may have noted that the magnification factor you get from the keyboard is not the same as the one on the control panel. The keyboard is for the whole image whilst the magnification from the panel is for the real-time magnifying glass, the convex and concave mirrors. The current command can be stopped by the ESC key or at other situations, by holding the leftmost mouse button down (mouse-related commands) 1.4.3 Other weird features There are a couple of weird features that can be invoked from the keyboard. When NakedEye is waiting for your command the two keys J and K are used to change the colour of the mouse. The mouse has its colour from the colour table of the current GIF image. Sometimes the mouse is hard to see and the keys can be used to change it. Initially the colour of the mouse is set to the last colour index in the colour table. When you are in the shifting mode where the whole image drifts slowly, the current image is drifting up/down or left/right depending on what arrow key was used. The arrow keys are also used to slow the speed down or increase it depending upon in what direction the image is drifting. Simply do some experiments with them and you will see that they are intuitive enough. You will also notice that the keys U and D are used for instant magnification and reduction of the current image. The way they work are through duplicating pixels, and this means the image will be blown up by 2, 3, 4 ... times the original size. NakedEye limits the magnification factor to 10, but It also offers a magnification factor of 0.5. This strange number actually causes 50 of the pixels to be skipped in both directions and effectively reduces the image by half each side. It is the only way to bring huge images (about 1500x1500) into the SuperVGA screen instantly without the huge overhead of scaling. But as soon as you are ready to do something else, NakedEye will return the image back to the original size, then continue to do what you command it to do. 1.5 What else do you need to know ? This copy of the software is offered for free (unregistered copy) without warranty of any kind. If you are happy with the unregistered copy and its limited functionality, you are welcome to use it. However if you would like to have a fully functional copy of NakedEye you should register. More information will be given later, especially if you support an environmental organisation you are more than welcomed to have a registered copy for free. NakedEye has been tested extensively, and no obvious bugs are known. There may be a minor problem with the SuperVGA graphics driver. The BGI driver of Jordan crashes on some video cards if you try to select the video mode that your hardware does not support. On some good video cards the driver will be able to come back and complain. I cannot handle the case when it crashes. The machine will have to be rebooted. To avoid this situation, you can explicitly tell NakedEye about the video modes that your video card can handle. The variable resol in the file nakedeye.cfg can be set to the correct video modes. NakedEye does not handle interlaced GIF files. This is a limitation due to a trade-off in the design of the software. It uses very little memory for each GIF file, and this makes it too hard for decoding interlaced GIF files. You have to convert interlaced GIF files into normal GIF files using some utility in the public domain. One of such utility is GifInter (created by Gershon Elber in his GIFLIB) for the purpose. Please look at the README file for more information. There are a couple of command line options that you can use to invoke NakedEye into a correct video resolution or avoid the automatic compression of the colour table. Here is the full UNIX and DOS style synopsis : NakedEye [-m] [-mRES] [-c] [-q] [-s] [-dSECS] [-ns] gif-files Or NakedEye gif-files [/m] [/mRE] [/c] [/q] [/s] [/dSECS] [/ns] Gif-files is a list of GIF files or names with wild card or even directory names. The scanning process can take some time if you give NakedEye too many places to search for GIF files. Option -m is used to set the start-up resolution for the video card where RES is one of 320x200, 640x400, 640x480, 800x600 and 1024x768. To save you from typing such a long string, NakedEye also understands /0, /1, /2, /3 and /4 respectively. When -m is used with no argument NakedEye 1.0.1 will start up into a file selection menu for user to choose files. To start NakedEye up in 800x600, simply type nakedeye /3 *.gif, for instance. Option -c tells NakedEye not to compress the colour table for each image. This is useful if you do not want to alter the images fearing some problem later when you may like to save them into new GIF files. I have not found any problems with compressing the colour table. The compression tends to leave a few empty colour entries behind to be used as colours for the Control Panel and text. Option -q is for quick display of a GIF file. When NakedEye sees this flag it will display the GIF file (or the first of many) straight away with FullScreen mode turned ON. You can then manipulate the image by the keyboard or hit ESC to exit. Of course, you can hit the F key to toggle to normal mouse-driven mode and proceed as usual. To start a slide show simply hit the F2 key after the first image has been loaded. Option -s is for starting up a slide show. A slide show can be started up by option -q then the F2 key, but there will be users who want to save one extra key stroke. Option -d is used to set up a delay time value between each picture in a slide show of the GIF pictures where SECS is the amount of time in seconds. To get a slide show going, the typical method is to run NakedEye with a wild card to match all the desired GIF files and option - s for a quick start up straight into a slide show. nakedeye -s -d5 *.gif The above command will start NakedEye and set it ready for you to have a slide show with 5 seconds delay between each image. I assume that you have all the desired GIF files in the current directory. Of course, at first the show will be much slower than 5 seconds between each image because a lot of time is needed to load (decode) the images into memory (and/or hard disk cache). Once all the GIF files have been decoded, the speed can be very fast depending on how much memory your machine has. Option -ns stops NakedEye from sorting the list of GIF files given to it. This may be what you desired so that you can manually arrange the images into a particular order. Perhaps you would have noticed that the DOS convention of option using the / character is also supported. The options can be placed anywhere on the command line even between the list of GIF files. NakedEye automatically discards all non-GIF formatted files if you use a wild card. The wild card "*" means everything that can be read. This is in fact the one I use myself all the time. There is also a configuration file called nakedeye.cfg for you to set the default start up for your PC. The sample file is self-explanatory with a lot of comments inside. Simply follow the comments and set it right for your system. The most probable item that you would set is the default start-up resolution. This should be set to the best resolution you have in your hardware. If you worry about speed, also set the swap buffer file's path to your fastest hard drive. In case you do not have a memory manager LIM 4.# installed, but you have a large ramdisk installed, then go for it! - set the path of the swap file to this ramdisk to make swapping a lot faster. Please read the section Configuring NakedEye if you plan to tune NakedEye to your taste. If NakedEye crashes due to some system exception trap, the EMS memory may not be freed, and this means the machine has to be rebooted to get the EMS memory functional again. This is inevitable for this kind of situation. To reduce the chance that this happens, please do not use Ctrl-C or Ctrl-Break to break the program unless you are desperate to do so, and also do not to switch to the video modes that your hardware cannot handle. In any problematic case hit the ESC key and wait for NakedEye to complete what it is doing and exits cleanly. In case of crashes you should look for a file called buffer#.tmp in your disk and delete it as that is the swap file used for buffering the decoded GIF images. The software is designed to handle up to 50 Mbytes of GIF files in a session, therefore the swap buffer file can be very large. If you use commands that will alter the actual size of the image NakedEye will have to performed a lot of disk I/O because it is designed to conserve memory. It will create temporary files for swapping. These files all have the .tmp extensions to make it easy for you to identified and delete them if the system crashes. It is a good idea to set the variable bufpath in namedeye.cfg to the fastest hard disk you have, and make it point to a directory that is used mainly for temporary files that can be removed any time. For example, if you have drive C: as the fastest drive (and/or it has a lot of free disk space), the bufpath should be set to c:\tmp. Then you create c:\tmp to accommodate all the temporary files. 1.6 Configuring NakedEye NakedEye will run fine in most situations with a decent hardware setup. However, you can get the most out of NakedEye by doing some tuning to fit it in perfectly with your system. You can set the variables in nakedeye.cfg to alter the behaviour of NakedEye. svga is a variable to be set to the full path name to your preferred SuperVga BGI driver. Some video cards have their own BGI driver, therefore if the standard BGI driver which comes with NakedEye does not work, you should set this to the one that works. Here is an example svga=c:\mydriver.bgi You have to be careful if you choose a different BGIdriver for NakedEye. The mapping of the video mode numbers and the actual resolution in the Svga256.bgi driver is as follows: Mode 0 to 320x200 Mode 1 to 640x400 Mode 2 to 640x480 Mode 3 to 800x600 Mode 4 to 1024x768 If the mapping of your SuperVGA driver is different then some commands may switch NakedEye to a wrong resolution. bufpath is the directory path name to where the temporary buffer file for NakedEye to swap decoded raster images out when memory is low. It should be set to your fastest and/or largest hard disk. Here is an example bufpath=c:\tmp NakedEye uses the hard disk very often for swapping therefore it creates a number of temporary files that will be removed when no longer needed. However, your system crashes when NakedEye is running, these files may have to be removed manually if your are short of space. That is why it is a good idea to set bufpath to a directory which is used mainly for temporary stuffs that can be removed at any time. ems is a yes/no flag to indicate whether you want NakedEye to use EMS memory. The default is yes as this is what most people want. greeting is a yes/no flag to indicate that whether you want to have the LOGO display when NakedEye starts up. You may want to disable it when you have got a registered copy of the software and do not want to wait 30 seconds for the LOGO to disappear. compress is a yes/no flag that indicates whether you would like NakedEye to compress the color table. The default is yes because this is what almost everybody wants. quickstart is a yes/no flag that indicates whether a quick start-up is what you want. This is identical to option /q on the command line. If it is set to yes, the LOGO and file selection menus are skipped altogether. But the only difference is that NakedEye will start up with the FullScreen mode OFF instead of ON NakedEye has been designed to be simple. This configuration step unfortunately makes it look a little bit complex. However, it is hoped that you will not have to do much configuration at all and still get what you want out of NakedEye. 1.7 A pleasure-seeker's tour of NakedEye In this section I would like to guide you through the most enjoyable ways to view GIF pictures using NakedEye. Obviously you need to have a good collection of GIF pictures preferably big GIF files. Then secondly you need a good hardware setup with SuperVga resolutions up to 1024x768 pixels in 256 colours. You really need a video card with 1 Mbyte memory to support the resolution 1024x768 in 256 colours. Many people have cards with 512Kbyte memory, but they mistaken that the card can support 1024x768 in 256 colours. 1.7.1 A quick start for the greedy viewer All you really want is a quick start up and glance through the pictures. This is typical when you are about to select good GIF pictures out of hundreds that you have just copied. You can simply start NakedEye with option /q for a quick start. NakedEye /q GIF-FILE(s) Provided that you have a registered copy of the software, the LOGO and selection menu are skipped altogether with the /q option. NakedEye starts up in FullScreen mode, and this means you do not see the Control Panel (however you can get it by typing F to toggle between FullScreen (KeyBoard-Driven) and MouseDriven mode. At this point you can have two options You can enter a slide show by hitting the key F2 . The rest of the selected GIF files will be sequentially loaded. As soon as they are loaded, NakedEye will run at its maximum speed giving you a continuous slide show until the ESC key is typed. You can view the current picture to your satisfaction with all the keyboard commands. The typical commands to try out would be U magnifies the picture up by 2 times what it was before. D reduces the picture by a factor of 2 . The arrow keys can be used to shift the image left, down, up and right. Please note that this only works if the current image is actually larger than the physical screen-size (or has been blown up by the U command). Keys H, V can be used to flip the image. Rotation can only be activated by the mouse, so you will have to use F to get back to FullScreen mode to able to access the Control Panel. The key 1, 2, 3 and 4 switches to different physical screen resolutions if you do have different video modes. Key N gives you the next image. Key F switches to FullScreen mode so that you can use the Control Panel with the mouse 1.7.2 Get the best out of small images Small images can be very frustration to look. You must know how hard it feels to have a very beautiful but tiny picture that looks bad when you magnify it. NakedEye can help with the ability to switch instantly to a higher resolution video mode right after a magnification. Use the key U to blow the image up larger than the size you want to see. Then use key 3 or 4 to bring the high resolution video mode in (800x600 or 1024x768). The net effect is that you have a small reduction in quality but the same picture size is achieved. I suppose this needs the best resolution of 1024x768 to work well. If you do not have this then it may be of some comfort to know that I do not have a proper 1024x768 pixels resolution either!. 1.7.3 Beauty is in motion We all know that pictures on computers suffer a huge reduction in beauty because they do not move !. This is a hard feeling, and I know it well. That is why NakedEye gives you something less attractive, but pleasant to have. The trick is to set a picture larger than the size of your screen into motion so that you can gradually see all of it. While the picture is shifting in a direction you can control the speed of this shift and, when the speed is slow, you have a wavy motion effect that is pleasant to the eyes. The best effect is usually a very slow motion that gives a watery and wavy look of the moving image. Choose an image larger than your physical screen (send the video mode to lower resolution or blow it up so that it no longer fits into the screen). Use one of arrow keys to shift the image in one direction. While the image is in motion, use the arrow that is opposite to the direction of the moving image to slow it down and the opposing arrow key to speed it up. Some experimentation with this technique will give you a smooth control over the blurriness you may like to see the image when you sit back and enjoy this alternative sense of motion. By the way I not commenting on what you may be looking at! 1.7.4 The exotic and fantasy or simply love of beauty ? You will find the three mirrors given by the program rather exotic. These are the Convex, Concave and the Glass mirrors. Some even think that these mirrors are classic . Well whatever you feel about them, they are their purely for your pleasure. The convex mirror performs the effect of a convex round magnifying glass, and the concave mirror performs the opposite effect which is the concave round magnifying glass. You must forgive me if I have got the two words convex and concave mixed up in this software. The Glass is a straight square glass, but it is special in the sense that it is performed in real time. Convex gives a rounded magnification with a gradually increasing magnification factor to the centre to create the effect of growing in size. Concave gives a rounded de-magnification with a gradually reducing magnification factor to the centre to create the effect of shrinking in size. Glass gives a real time square magnifying glass which moves in synchronization with the mouse cursor. It is very easy to work these mirrors. Just do the normal selection of two points on the image to specify the size of the glass. NakedEye will look at the size of the rectangle and make the mirror fit into the smaller side of it. A word of warning for the round mirrors. They are very expensive if you do not have a proper 386 or a math-co- processor. The size of the mirror should not be too big. NakedEye will make sure that it does not exceed 150x150 as there is not enough memory to hold all the temporary frames needed to get a decent speed out of a PC lower than a 386. Once again I will not comment on what you look at with these mirrors. NakedEye also gives two types of chewing gum for your eyes: Puzzle and Random. These are probably great for coffee breaks as they help you to exercise your eyes' muscles. The command Pick'em is a designed for pure pleasure so that user can set up a number of most interesting objects in the image. These portions of the image will then be floating like fishes in an aquarium. This will certainly slow your machine down if you have many objects floating around. The spare time that the machine is idle between commands is used for this function. The object selected will be drifting across the screen. To create an object, you can simply select Pick'em then use the mouse to define a rectangular area on the screen covering the object you want. The smaller side of the rectangular area will be the size of the object which is a square area of image. This object is then recorded and will be floating about until you explicitly kill each one by selecting Kill'em then click the left most button when the mouse cursor is pointing at the object. To cancel the command simply click on an empty area. When you switch to a different image, the current objects are still floating about. However the colour table of the current image will be different from that of the previous image (where the objects come from), and this means the objects will change colour. If you switch to BackWhite mode then the differences between the colour tables will be minimised. After a while you would want to eliminate some of the objects. Simply select Kill'em then point to the object to be eliminated. A click to empty space will cancel the command. 1.7.5 Getting very large pictures into full view NakedEye allows you to get very large pictures into the physical size of your screen. If D is typed when the image is in normal size, a zoom factor of 0.5 is applied to reduce the size of the image by half each direction. This will fit very large pictures in comfortably, especially when you have 800x600 or even 1024x768 pixels resolution. An alternative exists for looking at different sections of the picture if it cannot fit on the screen. The scroll command from the Control Panel will allow you to scroll the image in both directions at the same time. Simply use the mouse clicks to form two points on the image. The size of the rectangle is used to calculate the amount of scrolling desired in both directions. A final alternative is the shifting commands: Left, Down, Up and Right indicated by the arrows shapes on the Control Panel. You can access these functions very quickly by the four arrow keys. The shifting is at a constant number of pixels, but this can be altered when the image is moving. This creates a wavy slow motion effect on the scrolling picture. 1.7.6 Prepare a good slide show Preparing a good slide show is very easy with NakedEye. You simply work out the following points: The desired screen resolution depending on the size of the GIF pictures and also the hardware you have. Select the needed option from /m640x400 or /m640x480 or /m800x600 or /m1024x768 (to save typing use /1, /2, /3 or /4 respectively). Determine whether you would like NakeEye to sort the images for you. If the answer is NO then remember the option /ns. Now you are ready to run NakedEye NakedEye /3 /ns /s *.gif The above command will start NakedEye in quick-start mode into a slide show where there is no time wasted in displaying the LOGO and file menu. The switch /ns prevents the automatic sorting of the file names. To interrupt the show simply type ESC to return to command mode. You can use the keyboard to control NakedEye. Type F will bring back the Control Panel if you would like to use the mouse. Then you can close the images that are not to your taste and set magnification factor by the keys U or D. There are various things that you can do to an image which will affect the display of all images such as scrolling, magnification etc... You can simply experiment this all these to see the desired effects. 1.7.7 Image orientation NakedEye gives users a number of commands to alter the orientation of the image. You can flip the current image horizontally or vertically and also rotate it by 90 degrees. Due to the limits in memory architecture of the DOS machine, these commands can be slow. HorizFlip flips the current image horizontally. This command is fairly fast and can be accessed by the key H. If you type ahead many times, the image will be flipped left then right and vice versa. VertFlip flips the image vertically. It is an expensive command because NakedEye is not designed to use up precious memory. The whole processed image has to be dumped out to secondary storage (disk) then reloaded. This does take time, but if you run NakedEye from a RAM disk it should be fast. Rotate90 is a very expensive command. It takes about 40 seconds to rotate a 640x480 image, and about 90 seconds to do an 1800x600 image (on a 386 at 25Mhz and 16ms seek- time hard disk). Again this is a trade off between memory usage and speed which is, in turn, dictated by the DOS architecture. With the above commands, you can combine them to alter the orientation of your current picture. Then you can save them if you wish with the Save command. These commands create temporary buffer files where you instruct NakedEye to put them (in the configuration file) or by default the current directory. If your system crashes for some reason when one of these commands are active, please make sure that you remove them to save disk space. They all have the extension .tmp for you to recognise easily. 1.7.8 Saving and resizing GIF images NakedEye gives you some limited capabilities to modify GIF images and save them. All the colour changes will affect the saved images. If you have magnified the image by the key U, this will be taken into account as well. It is very straight forward with the command Save so I will not talk about it here. There is another command call Dump that dumps the screen into a GIF file. It is very similar to Save but the only difference is that it only writes whatever on the portion of the screen inside the window boundaries. The source of the image comes straight from the video RAM of your machine, this means all the alterations are recorded into the output file. NakedEye has to avoid disturbing the screen when the command is activated by the key Ctrl-D. The command Resize is not simple and deserves some consideration. The memory limit of a DOS architecture causes a big problem with resizing images. Most image are larger than 4Kbytes, therefore cannot fit into the one segment of memory allocated. NakedEye takes a slow but sure approach to resizing the image. It first resizes the horizontal direction, then rotates the whole image by 90 degrees, then performs the same resizing again, then finally rotates it back by 90 degrees. The net result is that it can resize images to any size between 10-2000 pixels in both directions. This process surely takes quite sometime to complete if you deal with images greater than 500x500 pixels in size. It is fairly fast if you have a lot of EMS memory, and the memory is not occupied by other GIF files. For the above reason the output will be written into a file on the disk, and you have to load it in using the command Open if you wish to look at it. When you activate command Resize it will ask for three values: horizontal size, vertical size and the output file name. You can give it an extra option s or p standing for speed and precision respectively. If speed is preferred, the output file will not be of the exact size but the process is considerably faster. The trade off is very reason able because the difference is less than 10 pixels different in both directions. NakedEye will handle raster images up to 2500x2500 pixels in size, but you are pushing your luck with this size unless you have a lot of free disk space after loading the image (over 20 Mbytes). 1.7.9 Fix colour problems The colour tables of the GIF pictures can cause problems due to the fact that most do use full 256 colour entries. This mans none is left for NakedEye to paint the Control Panel, the mouse cursor and the text displayed. NakedEye tackles this problem by many different ways which may need your help as you move from one image to another. Colour table compression is performed automatically to remove all duplicate colour entries and modify the image to fit into the new colours table. This tends to squeeze out up to 5 entries in average, and this is about adequate for NakedEye to display the Control Panel and its LOGO. The T command allows you to toggle the colour of background and foreground. This helps because images tend to have different colours for background and foreground. The commands allows the borders of the windows to show up if it has been submerged into the background colour. The colour of the mouse can be very hard to see. If this is the case then the keys K and J can be used to select different colours until you can see the mouse cursor clearly. 1.8 Some conditions I do not make any promise of having this software supported free of charge in the future. But if anyone wants to have a special version custom made for certain purpose, I will be prepared to build it at some negotiated cost. In any case, this software is not for companies to make money out of. Personal use here is granted for an unregistered copy of NakedEye , however an unregistered copy is not fully activated, and you definitely miss out some of the exotic features. I will be very happy to give a registered copy of this software out to anyone who makes a reasonable donation to support an environmental organisation for instance GreenPeace. Simply send me a proof of such an effort and a self- addressed, pre-paid courier bag (or postpak) with a floppy disk and a registered copy will be sent to you. For others who wish to have a fully functional copy of NakedEye, please send a registration form to me. You will receive the latest copy of NakedEye and a properly typeset user guide. If you are on the Internet, I can e-mailed the key to you after receiving the registration form. I also disclaim any responsibility in case the software causes any damage to your computer. It has been tested fully and no bug is currently known, apart from some possible problems with the SuperVga graphics driver when an unpopular video card is used. I hope that everybody will enjoy NakedEye, please send all comments to my e-mail address v.mai@uow.edu.edu.au or mail me at Mr. Van Dao MAI 50/7 Corrimal St. Wollongong N.S.W 2500 Tel: 61 042 213346 Australia Any suggestion for improvement would be greatly appreciated.