[Snoopy icon]

Snoopy image viewer

Introduction

I frequently scan paper documents, photographs etc and burn the scanned raster files to CD-R disks for distribution to customers, friends and relatives. Some receivers, however, often have no easy to use image browsers installed on their computers and may experience difficulties finding and installing one.

This is why I wrote Snoopy. Snoopy is a simple to use and relatively fast image viewer for 32-bit Windows environments. It supports most common raster formats and can be run directly from a CD requiring no prior installation to the computer. Snoopy also leaves the computer completely intact, ie. it doesn't create any installation directories, temporary files, registry entries or other 'pollution'.

After using some excellent freeware utilities myself for years, I decided to contribute something myself too and give Snoopy binaries away as freeware.

Features

These are the main features of Snoopy:

Screen capture

This is an example of what Snoopy looks like in the default configuration:

[Snoopy screenshot]

Using Snoopy

The left side of the window contains a directory tree. You can navigate this tree using the mouse or keyboard pretty much like you do in the standard Windows File Manager or Explorer. When you select a valid image file, the image is read and displayed in the image display area covering most of the window.

You can resize the Snoopy window to any size you like and the controls on the screen will be adjusted to the new size.

On bottom left of the window you can see three buttons. The 'Fit' button makes the image to be squeezed or stretched to fit the available image display area just like in the above screenshot. The '1:1' button instructs Snoopy to display the selected image in its' true size (see the image below).

[Snoopy 1:1-scale screenshot]

Finally the '?' button opens a short help describing instructions on how to use Snoopy.

If the '1:1' display mode is selected and the image being displayed is larger than the available display area then only a fraction of the image is displayed. In this case you can pan the image by placing the cursor over the image, pressing the left mouse button and then dragging the image while keeping the left mouse button down. When you release the left mouse button the image is left to the new panned position (see the image below).

[Snoopy panned screenshot]

Right clicking the window titlebar opens a menu with standard window controls such as move and close. In addition to these there are two added commands print and copy.

[Title bar menu]

The print command opens your computer's standard print dialog where you can select the printer and any printer specific parameters. Once you click the print button on this dialog the current contents of the image display area is printed maximized to the available paper area.

If the image is being displayed in fit-mode then the printing is done with full resolution of the image file regardless of your current window size. This is useful for quickly printing readable copies of large scanned documents etc. If the image is being displayed in 1:1-mode then only the visible portion of the image is printed at the current screen resolution.

The copy command copies the contents of the image display area to clipboard so you can paste it to other applications.

Double clicking the image with the left mouse button will temporarily remove the directory tree from view and expand the image to the full extents of the window. Double clicking the expanded image again will return to the original view including both the directory tree and the image.

In 1:1-mode pressing the plus (+) and minus (-) keys of your keyboard will zoom in and out the currently selected image. Pressing the 1:1-button again returns to the true 1:1-scaled image view.

The text field on the bottom of the screen can be used to enter and view textual descriptions of the images. To add or edit a description simply click on the text area and type your description. There is no need to explicitely save the text, it is done automatically.

Note: If the corresponding image file is in readonly mode (for example, when it is located on a CD-ROM) the image description is also readonly. Furthermore the readonly mode can be forced using the configuration parameters explained below.

The image desriptions are stored in the same directories with the images as standard ASCII text files with filenames having the same bodies as the image files but a .txt -extension. So an image file named stairs.gif will have a description file named stairs.txt. You can use this feature to 'bulk load' descriptions to the image directories and avoid typing them manually through the Snoopy interface for each image.

Preparing Snoopy for your own use

After you've downloaded the snoopy.zip file (see 'Download' below), you should unzip the package to an empty directory and allow your unzip-program to create the directory structure contained in the ZIP-file.

After unzipping you will see the following directory hierarchy:

| AUTORUN.INF
| MFC42.DLL
| MSVCRT.DLL
| MSVCRT40.DLL
| snoopy.exe
| snoopy.ini
|
+- Images
    +- Large image
        nfo.txt
        Stairs.gif
        Stairs.txt
    
    +- Small images
         nfo.txt
         Pioneer 10 plaque.jpg
         Pioneer 10 plaque.txt
         Santa Claus.jpg
         Santa Claus.txt
This directory structure is a complete and working example of a setup you'll want to create for your own purposes. There is a small subtree 'Images' that contains a few example images and their descriptions so you can try it out simply by starting the snoopy.exe application.

The snoopy.exe file is the main application. The configuration file snoopy.ini contains a lot of parameters that you can modify to alter the behaviour and appearance of Snoopy. Please see the next section 'Configuration options' for detailed information.

The autorun.inf file is an example of an autorun configuration file you can include in the root directory of your own CD-R -disk if you want Snoopy to launch automatically when the CD is inserted. The provided example file works as it is if the example directory structure is burned to a CD-R disk.

All the included DLL-files are standard redistributable Microsoft Visual C++ 6.0 runtime libraries. These libraries are usually included in the Windows installation and should therefore not be needed. There are, however, different versions of these libraries out there and since Snoopy was compiled with a fairly new version (6.0) of the Microsoft Visual C++ compiler, you can encounter target machines where the shipped libraries are not up-to-date. Therefore I would strongly recommend that you leave these libraries in the same directory with the snoopy.exe program.

To create your own distributable image collection all you need to do is:

Configuration options

The snoopy.ini file contains configuration options that you can edit (with any text editor) to alter the behaviour and appearance of Snoopy. The partial example file looks like this:

[General]
RootDirectory=Images
ShowHelpFirst=0
FitFirst=0
MaximizeWindow=0
ReadOnlyDescription=0
DefaultDescriptionFile=\nfo.txt

[WindowContents:Main]
Position=92,39,652,488,0,0
Titlebar=Example Snoopy setup [%s]
Const1=MG,5
Const2=BH,20
; Item 1: Directory tree
Item1ID=1001
Item1X=MG
Item1Y=MG
Item1W=WDT/5
Item1H=HGH-3*MG-BH
; Item 2: The image display frame
Item2ID=1002
Item2X=2*MG+WDT/5
Item2Y=MG
Item2W=4*WDT/5-3*MG
Item2H=HGH-2*MG-3*BH
; Item 3: The '1:1' button
Item3ID=1003
Item3X=MG+0*(WDT/5)/3
Item3Y=HGH-MG-BH
Item3W=(WDT/5)/3
Item3H=BH
; Item 4: The 'Fit' button
Item4ID=1004
Item4X=MG+1*(WDT/5)/3
Item4Y=HGH-MG-BH
Item4W=(WDT/5)/3
Item4H=BH
; Item 5: The '?' button
Item5ID=1006
Item5X=MG+2*(WDT/5)/3
Item5Y=HGH-MG-BH
Item5W=(WDT/5)/3
Item5H=BH
; Item 6: The description field
Item6ID=1007
Item6X=Item2X
Item6Y=HGH-MG-3*BH
Item6W=Item2W
Item6H=3*BH
Item6Font=Arial,24

Item1001Index=1
Item1002Index=2
Item1003Index=3
Item1004Index=4
Item1006Index=5
Item1007Index=6

[WindowContents:MainFull]
Position=66,22,1318,908,0,1
Titlebar=Example Snoopy setup [%s]
Const1=MG,5
Const2=BH,20
; Item 1: Directory tree
Item1ID=1001
Item1X=0
Item1Y=0
Item1W=0
Item1H=0
; Item 2: The image display frame
Item2ID=1002
Item2X=MG
Item2Y=MG
Item2W=WDT-2*MG
Item2H=HGH-2*MG
; Item 3: The '1:1' button
Item3ID=1003
Item3X=0
Item3Y=0
Item3W=0
Item3H=0
; Item 4: The 'Fit' button
Item4ID=1004
Item4X=0
Item4Y=0
Item4W=0
Item4H=0
; Item 5: The '?' button
Item5ID=1006
Item5X=0
Item5Y=0
Item5W=0
Item5H=0
; Item 6: The description field
Item6ID=1007
Item6X=0
Item6Y=0
Item6W=0
Item6H=0


Item1001Index=1
Item1002Index=2
Item1003Index=3
Item1004Index=4
Item1006Index=5
Item1007Index=6

The parameters in the [General] section are the most probable candidates for modification.

The RootDirectory-parameter defines the directory from which Snoopy will construct the directory tree visible in the user interface. The user interface will display the complete directory tree and all files in and underneath the root directory specified with this parameter. The root directory can be an absolute reference (such as "C:\My Documents"), a relative reference (such as "..\Pictures") or a reference to a Windows network resource (such as "\\MYSERVER\Media\Images"). If a relative reference is used then it will be relative to the current working directory of the snoopy.exe program.

The ShowHelpFirst parameter defines whether the help screen normally accessible with the '?' button is displayed upon starting the software. Setting it to value of 1 will display the help screen and value of 0 will not display it.

The FitFirst parameter defines the initial scaling mode. A value of one sets Snoopy to 'Fit'-mode upon startup (ie. the 'Fit' button will be pressed and the software will function accordingly) and a value of 0 will set Snoopy to '1:1'-mode.

The MaximizeWindow parameter will determine whether Snoopy will be opened in a maximized window upon startup. A value of 1 will do this and a value of 0 will open the window in normal mode. The size and position of the normal mode are determined with the Position parameter in the [WindowContents:Main] section.

The ReadOnlyDescription parameter will determine whether the text descriptions of the images will be read only or not. A value of 1 will set them readonly denying the user from editing the descriptions with the Snoopy user interface. A value of 0 will allow the user to edit the descriptions. Note however that readonly mode is always forced when the image file is readonly.

The DefaultDescriptionFile parameter contains the default name of item description files. If a selected image or folder doesn't have a specific description file then the software tries to open a file with this name appended to the image (or directory) path and display its contents.

The [WindowContents:Main] section defines the appearance of the application window.

The four first values listed in the Position parameter define the x-coordinate, y-coordinate, width and height of the application window.

The Titlebar option defines the text displayed in the application titlebar. This text string can also contain a substring '%s' which, if present, will be replaced with the name of the currently selected item in the directory tree.

The rest of the parameters in this section define the positions of all the dialog items on the application window. Two constant values are first defined with the Const parameters (MG=margin and BH=button height).

The locations and sizes of each item are specified with parameters Item?X (x-coordinate), Item?Y (y-coordinate), Item?W (width) and Item?H (height). You should not change the internal item ID numbers specified with the Item?ID parameters or the definitions will not work. These location and size parameters can be defined with artihmetic expressions as you can see in the example file. In addition to the predefined constants MG and BH there are two built in dynamic variables available that represent the current application window width (WDT) and height (HGH). Any parameter defined earlier can also be used as a variable in these expressions as can be seen in the definition of Item6 in the example file.

For the text description field there is an additional Item6Font definition that can be used to set the font and size of the image description field.

The [WindowContents:MainFull] section defines the appearance of the application window in the image-only -mode, ie. when the initial image has been double-clicked and the window only contains the image, not the image directory tree.

The Item?Index-parameters are for internal use by the software and they should not be modified.

Special notes about the configuration options

The window size and position are saved when the program is closed. The new size and position are saved in the Position-parameter of the [WindowContents:Main] section. Naturally this will not be done if the snoopy.ini configuration file is not writable as it is when it is located on a CD-ROM disk.

Command line switches and parameters

The parameters in the [General] section of the snoopy.ini configuration file can be overridden with command line options. Command line options can also be used to set an initial image file to be displayed upon startup.

The command line syntax of Snoopy is:

  snoopy.exe [startimage] [/conf:configfile] [/fit | /nofit] [/help | /nohelp] [/max | /nomax] 
All arguments and options are optional and their meanings are:

startimage

This argument specifies the image being automatically displayed when the software starts. If the specified filename is a plain filename without a path then the image will be scanned from the directory tree specified in the configuration file. If the filename contains path information then the image is read from the specified location and the directory tree displayed in the user interface will be constructed from the location of the image downwards.

/conf:configfile

This option specifies the configuration file (the INI-file) to be used for Snoopy options. If this option is not present then by default the software uses 'snoopy.ini' located in the same directory as the snoopy.exe application.

/fit and /nofit

These options specify whether the software will start in 'Fit' mode.

/help and /nohelp

These options specify whether the software will open the quick help window upon startup or not.

/max and /nomax

These options specify whether the software will start with a maximized window or not.

Version history

Known problems

Disclaimers

This software is purely a personal contribution, it is not a product of Finnish Steel Design Trading Ltd.

This software is supplied as it is with absolutely no guarantees. If you decide to download and use it you do so completely at your own risk. There is no support available for the software apart from the documentation provided on this webpage.

This software is copyrighted. The owner of this software is Ari Paananen. This information with a link to this WWW-page is displayed on the help screen of the software. You are not allowed to redistribute modified versions of this software where this information or any other supplied fixed feature has been altered. In other words you are not allowed to change a single bit in the snoopy.exe file if you want to redistribute it. You are allowed to modify the configuration file snoopy.ini for your specific needs and redistribute that.

You are free to use this software for any purpose be it personal, academic or commercial as long as you understand and comply with all the conditions presented in this section ('Disclaimers'), otherwise you are not allowed to download or use this software.

These terms apply to the software version available for public download at the moment. The terms of possible future versions of this software may change at any time without prior notice.

Download

Please read the disclaimers in the above section first. Once you've read and agreed to them you can download the latest version of Snoopy here:

Download Snoopy 1.4 (approximately 1 megabyte)

Due to bandwidth limitations and excessive "leeching" of this complete web-page the older versions of the software are no longer available directly. If you really want to try the older versions, you're welcome to contact me (see the Feedback section below).

Acknowledgements

The image decoding in this software is performed with a freeware C++ image manipulation class written by Julian Smart. His class is based in part on the work of the Independent JPEG Group.

Feedback

If you have any comments about this software, you're welcome to e-mail me to ari.paananen@fsdt.fi.

Other really free software

Snoopy is listed on the NONAGS collection of free software. For more great really free software please check the site.

Nonags


--
3rd of August 2003
Ari Paananen