v.2008-05-10-1
UIV is a free image viewing program specialized for browsing large sets of images in the most common formats (PNG,JPEG,BMP,GIF).
Now there are of course already a bazillion image viewers out there, so you might wonder why the author even bothered. The following keypoints are features of UIV which the author though were not that reasily available in existing programs, or if they were only in applications having other unacceptable characteristics.
UIV consists of a single file, the executable. Therefore there are no settings files which would either have to be buried into the "Documents and Settings"-hell or made writable by every windows user account (HELLO? I actually use applications, released no earlier than 2007 where the authors obviuosly still think the user should run her daily business logged in as administrator.). When you put this together, the only oprtion to store settings in a compliant way is to use the registry. UIV can do this, if you want to keep settings. But it does not do it by default, in order not to immediately pollute any system where it is launched on. Instread, in the mouse menu you have a togglable item "Store to Registry". When this is checked and no entry exists in the registy, the full settings are written to registry (CURRENT USER!, therefore each user has its own settings and no security breaches are necessary). Then as long as this is checked, all setting changes will be reflected into the registy. When you uncheck it, the registry settings remain, but are read-only. All registry entires can be removed with "Remove from Registry", which deletes all of UIVs registry keys and unchecks "Store to Registry".
Basically, if you don't like UIV, it is removed with at most a single mouse menu command (no action at all if you ddin't turn on registry before). If you like UIV you can bring it to any system and not pollute it at all or if you want the setiing there too they are still later removed with a single mouse menu command. (Any system of course means a NT5 one (Windows 2000, Windows XP, Windows 2003 Server)).
UIV with its focus on what should be displayed naturally also provides efficient browsing. Wehenever an image is opened, its parent directory is scanned for supported image files and you can then navigate in this list using <SPACEBAR> (next), <BACKSPACE> (previous), <CTRL+HOME> (first in directory) and <CTRL+END> (last in directory). If you hit the front/end with space and backspace, they will not wrap around, but with shift+space/backspace, the wraparound occurs. The index in the directory is seen in the infobar (show/hide with "i").
While UIV does not have classic image editor functions, it features file deletion from within the application, and without confirmation. <DELETE> sends the currently shown image to the recycle bin without silly confirmation. <SHIFT+DELETE> even deletes the file without confirmation and without the option to resotre it from recycle bin (this is NOT a secure delete, just the normal without recycle bin, like <SHIFT+DELETE> in Windows Explorer but without confirmation).
UIV supports a list file format (*.uiv-list). Such a list can be loaded in parallel to the directory navigation facilities and the files referenced in such a list do not all need to be in the same directory. If a list file is navigated to, the directory browing facilities automatically update to that respective directory. While a list is loaded, whenever a file maches one in the list, this is shown in the info bar and the current list index changes to that one. Wehn a list is loaded, the directory naviation is still available such that starting from a list file, one can navigate away from it in that directory by using space and backspace and the list index is retained unless another file in the list is "accidentially" browsed to. When navigating off a list file, the info bar refelcts this by keeping the list index, but appending a "+/-offeset". For the full format of the nbavigation info string see the chapter about the info bar.
| CTRL | SHIFT | ALT | key | |
|---|---|---|---|---|
| 1..9,0 | Directly set rating of the image (As this is list property, this only works when a list is loaded and the current file is part of it) | |||
| ctrl | 1..9,0 | Size and position dial, see under Numpad 1..9,0 for explanation. The ctrl included when using the main pad digits is ignored by the size and position dial. | ||
| shift | 1..9,0 | Add the current image to the xth list (0 means the 10th) in the currently active link node. Only works if a link node is active, links to that many lists and the target list is not protected. If there is also a list loaded and the current image is part of it, the images tags will be copied as well. | ||
| shift | alt | 1..9,0 | Add the current image to the xth list and removes it from the current list. | |
| B | Open parent folder with Windows Explorer and select current image ("Browse") | |||
| ctrl | C | Copy selected (entire current viewport if nothing selected) | ||
| D | Open a new uiv instance with the same image open ("Duplicate") | |||
| F | Fit to screen (current viewport is scaled to the maximum zoom where still everything fits onto the screen) | |||
| G | Increase gamma correction | |||
| shift | G | Decrease gamma correction | ||
| alt | G | Reset gamma correction | ||
| H | Flip horizontally (on the current viewport) | |||
| I | Toggle bottom bar | |||
| ctrl | I | Show dialog with further image and file information | ||
| L | rotate left, around viewport center, small step | |||
| alt | L | rotate left, around viewport center, large step (small step x alt multiplier) | ||
| shift | L | rotate left, around viewport center, 90 | ||
| M | Minimise | |||
| ctrl | N | Erases image data (fills universe with background color) | ||
| ctrl | shift | N | Creates a new UIV list | |
| ctrl | O | Opens an image (browse for one) | ||
| ctrl | shift | O | Opens an UIV list (browse for one) | |
| P | If the current image is also the current list image (no offset), it is removed from the list, else it is inserted into the list after the current list position. | |||
| ctrl | P | Print the selection (viewport if no selection). This opens the dialog with further settings. | ||
| R | rotate right, around viewport center, small step | |||
| alt | R | rotate right, around viewport center, large step (small step x alt multiplier) | ||
| shift | R | rotate right, around viewport center, 90 | ||
| ctrl | S | Saves the selection (if nothing is selected, the viewport) as image file (PNG,JPEG,BMP). | ||
| ctrl | shift | S | Saves the current UIV list (browse for location) | |
| T | Show tag window for current image (if a list is loaded and the image is part of that list) | |||
| shift | T | Show tag window for current list (a list needs to be loaded and be linked to from the currently active link node) | ||
| V | Flip vertically (on the current viewport) | |||
| ctrl | V | Simple paste. All image data is replaced with the one from clipboard (transform is reset and window scaled to fit) | ||
| ctrl | shift | V | Enter paste mode. Resets the transform and allows to define the paste location by selection (all transforms extept translate are disabled during this mode). Apply paste with CTRL+V or exit mode with with ESCAPE. | |
| ctrl | Y | Set the viewport to the selection (zoom-translate) | ||
| ctrl | shift | Y | Zoom into selection (the window may grow in one direction) | |
| ctrl | shift | alt | Y | Zoom into selection (the window may shrink in one direction) |
| SPACEBAR | Switch to next image file in directory. | |||
| shift | SPACEBAR | When this is the last image file in the directory, switches to the first one. | ||
| BACKSPACE | Switch to previous image file in directory. | |||
| shift | BACKSPACE | When this is the first image file in the directory, switches to the last one in the directory. | ||
| ENTER | Resize window to entire screen (transform is not modified, this means the top left part is the same as before). When already fullscreen, this restores the former window size showing the top left part. | |||
| shift | ENTER | Resize window to entire screen (transform is modified such that the effect is that of no movement on the screen, just enlarging the viewport in all directions). When already fullscreen, this restores the former window size by shrinking the viewport borders in all directions. | ||
| DELETE | Sends this file to the recycle bin (without confirmation). The viewport stays the same, but "conceptually" it moved a file back, so F5 will load the previous and space will load the next. The dirlist is updated. | |||
| shift | DELETE | Deletes this file (not to the recycle bin and without confirmation). The viewport stays the same, but "conceptually" it moved a file back, so F5 will load the previous and space will load the next. The dirlist is updated. | ||
| Home | Go to first in UIV list | |||
| ctrl | Home | Go to first image in the currently browsed directory | ||
| End | Go to last in UIV list | |||
| ctrl | End | Go to last image in the currently browsed directory | ||
| Page Up | Go to previous in UIV list | |||
| shift | Page Up | Move this UIV list item up (=earlier) in the list | ||
| Page Down | Go to next in list | |||
| shift | Page Down | Move this UIV list item down (=later) in the list | ||
| Up Arrow | Walk up on the image (the image scrolls down) | |||
| alt | Up Arrow | Walk up on the image, large step | ||
| shift | Up Arrow | Walk up on the image, with "up" interpreted as on the untransformed image. | ||
| shift | alt | Up Arrow | Walk up on the image, with "up" interpreted as on the untransformed image, large step. | |
| ctrl | Up Arrow | Move the window up on the screen. | ||
| ctrl | shift | Up Arrow | Decrease the window height (bottom edge moves up). | |
| Down Arrow | Walk down on the image (the image scrolls up) | |||
| alt | Down Arrow | Walk down on the image, large step | ||
| shift | Down Arrow | Walk down on the image, with "down" interpreted as on the untransformed image. | ||
| shift | alt | Down Arrow | Walk down on the image, with "down" interpreted as on the untransformed image, large step. | |
| ctrl | Down Arrow | Move the window down on the screen. | ||
| ctrl | shift | Down Arrow | Increase the window height (bottom edge moves down). | |
| Left Arrow | Walk left on the image (the image scrolls to the right) | |||
| alt | Left Arrow | Walk left on the image, large step | ||
| shift | Left Arrow | Walk left on the image, with "left" interpreted as on the untransformed image. | ||
| shift | alt | Left Arrow | Walk left on the image, with "left" interpreted as on the untransformed image, large step. | |
| ctrl | Left Arrow | Move the window to the left on the screen. | ||
| ctrl | shift | Left Arrow | Decrease the window width (right edge moves to the left). | |
| Right Arrow | Walk right on the image (the image scrolls to the left) | |||
| alt | Right Arrow | Walk right on the image, large step | ||
| shift | Right Arrow | Walk right on the image, with "right" interpreted as on the untransformed image. | ||
| shift | alt | Right Arrow | Walk right on the image, with "right" interpreted as on the untransformed image, large step. | |
| ctrl | Right Arrow | Move the window to the right on the screen. | ||
| ctrl | shift | Right Arrow | Increase the window width (right edge moves further to the right). | |
| Numpad 1-9 | Type a position code. Imagine the square formed by the 9 keys as the screen region. By pressing a sequence of keys, you select which parts of the screen should be covered by the window. When done, press the numpad zero (possibly with modifiers). The code is retained until you press another of 1-9 after pressing 0. Note that two keys in one dimension stand for half the screen in that direction (not two thirds). Alternatively CTRL+1..9, 0 may be used in place of the numpad keys since numpad may be hardly accessible on a laptop keyboard - because for this CTRL is already needed, the "without zooming" operation is not available this way. | |||
| Numpad 0 | End and apply position code. The image is zoomed appropriately, thus the visible region stays the same. The window fits completely within the selected screen region and keeps its aspect ratio ("touch from inside"). | |||
| alt | Numpad 0 | End and apply position code. The image is zoomed appropriately, thus the visible region stays the same. The window is resized such that the smaller dimension covers as much of the screen as specified while keeping the aspect ratio ("touch from outside"). | ||
| shift | Numpad 0 | End and apply position code. The image is zoomed such that the visible region is at least the same as before. The window fits exactly to the selected screen region thus its aspect ratio may change (leading to more visible in one dimension since the zoom is always the same in all directions).Here, "Alt" is ignored (meaningless) when shift it pressed. | ||
| ctrl | Numpad 0 | End and apply position code. The image zoom is not changed, thus the visible region of the image changes. The window fits completely within the selected screen region and keeps its aspect ratio ("touch from inside"). | ||
| ctrl | alt | Numpad 0 | End and apply position code. The image zoom is not changed, thus the visible region of the image changes. The window is resized such that the smaller dimension covers as much of the screen as specified while keeping the aspect ratio ("touch from outside"). | |
| ctrl | shift | Numpad 0 | End and apply position code. The image zoom is not changed, thus the visible region of the image changes. The window fits exactly to the selected screen region thus its aspect ratio may change.Here, "Alt" is ignored (meaningless) when shift it pressed. | |
| Numpad + | Increase zoom ("zoom in") Window adjusts to keep the viewport the same part of the image, if possible. F10 does the same as Numpad +, because numpad may be hardly accessible on a laptop keyboard. | |||
| alt | Numpad + | Increase zoom ("zoom in") using alternative step size . Window adjusts to keep the viewport the same part of the image, if possible. | ||
| ctrl | Numpad + | Increase zoom. The viewport center is the fixed point and the window size doesn't change. | ||
| ctrl | alt | Numpad + | Increase zoom using alternative zoom step size. The viewport center is the fixed point and the window size doesn't change. | |
| Numpad - | Decrease zoom ("zoom out") Window adjusts to keep the viewport the same part of the image, if possible. F9 does the same Numpad - because numpad may be hardly accessible on a laptop keyboard. | |||
| alt | Numpad - | Decrease zoom ("zoom out") using alternative zoom step size. Window adjusts to keep the viewport the same part of the image, if possible. | ||
| ctrl | Numpad - | Decrease zoom. The viewport center is the fixed point and the window size doesn't change. | ||
| ctrl | alt | Numpad - | Decrease zoom using alternative zoom step size. The viewport center is the fixed point and the window size doesn't change. | |
| ESCAPE | Close application (except when inside some mode, then the mode is ecapsed) | |||
| F1 | Open this help file in the application associated with HTML. | |||
| F2 | Rename currently open image file (list and directory browser are updated, but not any other lists linking to it) | |||
| F3 | Show the current list to navigate to an arbitraty entry in it | |||
| shift | F3 | Builds a new list by filtering the images linked to by the current link node (and its subnodes) or if no link node is loaded, from the current list. A Dialog allows to define tag filters and the result can either be saved to disk, loaded as new list or appened to the current list. | ||
| F4 | Show the link browser. If no root node is set at that time, a file dialog pops up to select/create a root file. Once a root is set, F4 will directly jump to the currently active link node. Editing, including link tagging and switching root is all done in this browser. | |||
| F5 | Reload this image file from disk (changes the viewport the same way as your "file open" are currently set to do) | |||
| shift | F5 | Refresh the directory list (useful if files were added, renamed or removed by another application) | ||
| alt | F5 | Reblit the viewport (in case it outdated) | ||
| F6 | Go to next sibling folder of current folder. The first image in the new folder is loaded. | |||
| shift | F6 | Go to previous sibling folder of current folder. The first image in the new folder is loaded. | ||
| ctrl | F6 | Go to first child folder of current folder. The first image in the new folder is loaded. | ||
| ctrl | shift | F6 | Go to parent folder of current folder. The first image in the new folder is loaded. Tip: CTRL+F6 immediately followed by CTRL+SHIFT+F6 will take you to the first sibling of the current folder. Add SHIFT+F6 after that and it is the last sibling (since F6 and SHIFT+F6 wrap around ends). | |
| F9 | Decrease zoom (same as Numpad -, see there for explanation and modifiers). | |||
| F10 | Increase zoom (same as Numpad +, see there for explanation and modifiers). | |||
Mouse Action | ||||
| CTRL | SHIFT | ALT | action | |
| right click | Bring up mouse menu, which provides settings | |||
| drag | When not started close to any window edge, drag the window around on the screen | |||
| drag | When started close to top edge, drag the window vertically (horizontal locked) | |||
| drag | When started close to left edge, drag the window horizontally (vertical locked) | |||
| drag | When started close to right edge, resize window horizontally (drag right edge only) | |||
| drag | When started close to bottom edge, resize window vertically (drag bottom edge only) | |||
| ctrl | drag | Draw selection (for crop, copy) | ||
| ctrl | click | Select nothing | ||
| ctrl | click | When in extended paste mode, a mouse down outside the current selection will place the selections top left corder at that position. Thus a CTRL+click results in placing the selection, dragging will then just further move the selection with the cursor. | ||
| ctrl | drag | Close to selection border, drag this selection edge | ||
| ctrl | drag | Well inside the selection, drag selection around | ||
| drop file/dir | The action depends on what is dropped:
| |||
The application title format editor is opened by pressing 'C' without modifiers. It specifies the formatting used for the application title which shows up in the window task bar and application switching (ALT+TAB). The following placeholders will be replaced with the respective values:
The most CPU demanding part of the application -the pixel transform from source to display space- can now make use of multi-core and multi-processor systems (i'm not sure about this, but i suspect not too many free image viewers have MT). The number of threads is not hardcoded but user selectable in the range 1..64. WARNING setting way more threads than you have cores at disposal will make it considerably slower. I decided to allow up to 64 in case someone runs it on a "real system" ;) and wants to process huge pictures.
(c) 2008 Copyright Fabian Seiler
This program may be used free of charge. The author denies any responsibility. You use this program at your own risk. The source code of the main program is available for inspection to anyone, but modification of the source code requires permission from the author.
This program uses the following components by third parties which fall under the copyright and terms of use of their respective authors: