Releases: bluescan/tacentview
Feedback
This release includes fixes and usability features from user feedback as well speedups to thumbnail generation.
-
Increased number of off-screen thumbnail generating threads. Added thumbnail generation progress indicator to view window.
-
Esc key exits fullscreen/basic-mode as before, but now also exits the viewer if not in fullscreen/basic.
This can be disabled in preferences. -
Support for multiple profiles to be saved in config file. There are currently two profiles: Main and Basic. Each has a complete compliment of viewer settings. The B key toggles between them. The defaults for the Basic profile give you a simplified viewer with no nav bar or menu bar, and a longer slideshow period. These settings can all be modified and are saved to whatever profile is current. The preferences window tells you the current profile.
-
Reworked preferences window tabs with buttons to reset only the current profile, the current category/tab within a profile, or reset everything (all profiles, all categories).
-
Support non-US layout keyboards.
-
Fix image centering when downsampling (smaller image than drawable area). A rounding bug was causing the image to be out by one pixel in width.
-
Toolbar cleanup and separators.
-
Cubemap and Mipmap options moved from toolbar to DDS properties window.
Simplifies toolbar by removing two buttons that are only available to DDS files. -
Ability to reset the zoom mode when displaying a new image. The default zoom mode is available in Preferences->Interface. The available zoom modes when switching images are:
- Keep: No change to zoom mode when switching images (this is the old behaviour).
- Fit: Image is zoomed to fit display area no matter its size.
- Downscale:* Shows it at 100% zoom unless image is too big and needs downscaling.
- OneToOne: One image pixel takes up one screen pixel.
-
Cleanup of image properties window. HDR image exposure changes no longer require hitting a reload button.
-
Ability to not use a fixed aspect work area. It is now an option to turn it on in the Display tab of the preferences. Look for Fixed Aspect Work Area (defaults to off). A non-fixed aspect work area helps when zooming in as all avail real estate will be used, and matches more closely the behaviour of other image viewers.
-
Fixed a background drawing bug that was sometimes showing a pixel-width line outside of the image.
Sorting It Out
Ability to sort files by dimension (width, height, or area). Speed is maintained since these attributes are now stored/cached along with thumbnail cache files. Regarding thumbnail generation, it now chugs along for off-screen images, while still prioritizing the visible thumbnails. This means that sorting by area will always work since all thumbnails are generated in the background.
Support for opening folders with thousands of images has been further improved -- especially on Windows where there was a noticable stall when first opening the folder. This was due to not retrieving file detail information at the same time as enumerating the folder contents. For a folder with 2K files, we've gone from about 15 seconds to sub 1 second for the program to launch.
- Support 2:3 and 3:2 aspect ratio as non-custom in the resize canvas dialog. This is a popular ratio for modern laptops.
- Super speedup loading a folder with thousands of files. On an NTFS folder with 2K image files down from about 15 sec to under 1. It is much faster to retrieve file details (mod time etc) at the same time as enumerating the files.
- Thumbnails generate even when off-screen. This means that when sorting images based on keys that are stored with the thumbnail (like area), the content view will be correct once all thumbnails have completed generation.
- Updated desktop entries with comment/tooltip and GenericName. Both deb and snap.
- Transparent work area not (and were not) supported by snaps (transparent frame buffers in GLFW). We now suggest using the deb file install in the app if the user tries to activate this feature. Tab (open file browser) also restriced by snap confinement -- now indicated in F1 cheat sheet help.
- Ability to sort by images by area, width, and height. This was a little tricky to keep it performant since it requires opening the image to determine the dimensions. It is currently tied to the thumbnail generation. The thumbnail cache now stores the dimensions, so if a thumbnail is visible, it will get sorted correctly. Access this feature in the view window.
- Configuring now pulls a specific Tacent library rather than latest. Don't want PBCs in Tacent to break the viewer build.
Much Speed
Andale! Opening an image in a directory with thousands of files is much faster. The improvement was two-fold.
- The base library file-entry enumeraton was using standard filesystem iterators. Now there is a native implementation for Windows and Linux (using dirent). In some cases as much as an 8X speedup on retrieving directory contents. The more generic code still exists.
- If a directory had many png images in it, they were all being inspected to see if they contained animated data (apng). This check, which is slow since it requires inspecting the file contents, is now deferred until load time, and is not forced upon every png in the directory.
In addition, the About page now gives more information about the build config, architecture, and packaging method. That is, you can tell if you are running a snap or deb install for example.
Single Channel Dolphin
This release features better support for KDE (Kubuntu etc) and the Dolphin file browser. TAB will open File Explorer in Windows, Nautilus in Gnome, and Dolphin in KDE. Note that the snap version of Tacent View does not support launching native file browsers. Use the deb install for this feature.
Fixed the app icon that appears in the KDE window title bar.
EXR display of single channel luminance images is now supported.
Clarity and Speed
This release contains a couple of important improvements while the file dialog is being worked on. Of note::
- Loading time significantly improved for directories with large numbers of files. Before this release the directory was enumerated multiple times, once for each supported filetype. Now it does it in one pass.
- The quality of displayed images with text/writing in them under zoomed-out conditions was not ideal (was seeing better results on some other image-viewers). Minification now optionally uses mipmaps. Chaining mipmap generation can be used for fast generation (resampling). Both chaining and the mipmap filter can be chosen in the preferences. Select None for the filter to disable minification mipmaps.
- Updated to ImGui v1.81
Scrubber and Scrubbed Bugs
While viewing an animated gif went to use the frame scrubber and realized it didn't exist. This release fixes that. The scrubber works for all multi-frame image types (tiff, apng, webp, exr, ico, dds, and gif).
Improvements and fixes in this release include:
- Fixed EXR loading parameters (exposure, defog, gamma) that had become disconnected.
- Scrubber for multi-frame images. Pauses playback automatically while scrubbing. Use Alt-Left/Right to step one frame at a time.
- Visible escape button in basic mode in case you forget the hotkey to use to exit that mode (B or Esc will work).
- Fixed rare crash while displaying the preferences tabbed window.
Save the Animations
The ongoing addition of editing features (pixel edits, rotate, resize, etc) have highlighted the need for an undo/redo stack. This release features simple undo (Ctrl-Z) and redo (Ctrl-Y) of all edits. Each image has its own undo stack.
Another area that needed improvement was the limited support for saving images in different formats -- especially animated formats. This release brings the ability to save tiff, gif, apng, and webp files. Animation is supported for all these filetypes along with the ability to edit frame durations individually. Tiff files, which are called 'multi-page' if they have more than one embedded image, do not normally have a place to store the page/frame durations. Tacent View solves this by storing the duration in the software-description tag for the page. This allows these 'animated-tiff' files to be loaded by other imaging software.
To save a collection of individual frames into a single animated image (perhaps an animated gif or webp file), open Tacent View in the directory with all the individual frame images and select File->Save Multi-Frame (or hit Ctrl-M).
To resave an existing animated image to some other format, simply select File->Save-As (Ctrl-S) and choose the type of file you want to save as (apng, gif, webp, and tiff support animations).
To edit individual frame durations of an animated image file, just display the frame you want in the Property Editor window and adjust the frame duration. Like all other edits, you can press Ctrl-Z to undo.
Similarly, to save (extract) an individual frame from an animated image, select/display the frame you want in the Property Editor window, and Save As (Ctrl-S). Choose a non-animated output format like tga or jpg.
Improvements and fixes in this release include:
- Reorganized preferences window. It now uses tabs for the different sections.
- Tooltip instructions on how to set the anchor to use the cursor position while resizing.
- Clearer Rotation-by-Theta toolbar button.
- Saving of multi-frame (animated) webp, gif, apng, and tiff files. Ability to create these animations from a collection of individual frame images, or save existing animated images to a different format.
- Undo/redo stack. Stack depth may be set in the Preferences window. Each image has its own undo stack.
- Internal cleanup of EXR loading code. Multi-part EXR files will load faster.
- Saving webp files allows both lossy and lossless compression to be used, as well as specifying the quality/compression strength.
- Edit operations that may be undone include flip, rotate, pixel colour edits, crop, and resize. For all of these, the Edit menu will show a brief description of the step you are undoing (or redoing).
Right on Rotations
This release features the ability to produce high-quality rotations at arbitrary angles. Look for the rotate theta toolbar button. Arbitrary rotations are useful for correcting for a horizon that is not quite horizontal, or in any case where rotations by 90 degrees will not cut it. A live preview of the rotation is available at interactive speeds. The rotation may be performed in a number of different modes and with a number of different filters (including the ability to rotate pixel art). The various modes include fill, which fills rotated-in empty-areas with a fill-colour, crop which crops the image where empty pixels are rotated in, and crop resize that does the crop but then resizes the image back to original dimensions.
Additionally there is now the ability to edit a specific pixel's colour and a big cleanup to the UI, especially for the canvas resize dialogs. For this dialog tabs are now used for the 3 canvas resize modes: anchor, remove borders, and aspect. Improvements and fixes include:
- Ability to use the cursor position as the anchor during canvas resize operations.
- Big cleanup to the resize dialogs. Use Ctrl-R for canvas resize, and Alt-R for image resize. R by itself is for rotate.
- A fine-tune drag-widget for rotation adjustments.
- Ability to rotate an image while zoomed-in.
- Ability to move the cursor around one pixel at a time using shift plus the arrow keys.
- A pixel colour editor.
- Border removal functionality with per-colour-channel matching (including alpha).
- Rework of all canvas resize dialogs into one dialog with 3 tabs.
- All fill-colour UIs allow picking the current cursor colour or the lower-left origin pixel colour.
- Crop mode rotations deal with the aspect ratio becoming inverted for rotations outside of 45 degrees.
- Cleanup of the FlipH and FlipV toolbar icons and addition of the Rotate Theta icon.
Filter Frenzy
The heavy-lifting for this release is largely from improvements in the Tacent library. All image filtering is now done natively. Supported resample filters (for resizing an image) now include: Nearest neighbour, box, bilinear, bicubic, Catmull-Rom, Mitchell, pure cardinal, b-spline, plus 3 variants of Lanczos (narrow, normal, and wide).
In addition, the resizing dialogs have been reworked to be more powerful. There are 3 new edit-menu dialogs for resizing: Resize Image allows you to specify the new dimensions and uses one of the above resample filters, Resize Canvas allows you to specify an anchor and a new size without filtering -- if the new image is larger you can specify the fill colour, if smaller cropping occurs. The last option, Resize Aspect, is similar to Resize Canvas but allows you to specify the new desired aspect ratio and either have the new image be cropped or add letterbox padding -- often useful processing photos.
Additional features and improvements include:
- Ability to specify the edge mode (clamp of wrap) when using resize filters. Useful for textures that will be tiled.
- Support for multipage TIFFs using official libtiff 4.2.0.
- BMP loading supports more pixel formats (including 32 bit with alpha). BMP saving to 24 or 32 bit is more robust.
Rename and Reset
This is a minor release that includes one big piece of functionality: the ability to rename the selected image file with F2. In addition a bug involving ResetUI in preferences has been fixed -- the dialog now displays the proper 'needs restart' message if the transparent-workarea state requires one.