Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Build

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:
runs-on: windows-latest

steps:
- uses: actions/checkout@v4

- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2

- name: Build x64
run: msbuild vs2026/voidImageViewer.sln /p:Configuration=Release /p:Platform=x64 /p:PlatformToolset=v143

- name: Build x86
run: msbuild vs2026/voidImageViewer.sln /p:Configuration=Release /p:Platform=Win32 /p:PlatformToolset=v143

- name: Setup NSIS
run: |
choco install nsis -y
"C:\Program Files (x86)\NSIS" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

- name: Build Installer x64
run: powershell -File nsis/build_installer.ps1 -Arch x64 -VsVersion vs2026 -BuildConfig Release -Lang English

- name: Build Installer x86
run: powershell -File nsis/build_installer.ps1 -Arch x86 -VsVersion vs2026 -BuildConfig Release -Lang English

- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: voidImageViewer-build
path: |
voidImageViewer/x64/Release/voidImageViewer.exe
voidImageViewer/Release/voidImageViewer.exe
nsis/voidImageViewer-*-setup.exe
10 changes: 10 additions & 0 deletions Changes.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
Saturday, 29 August 2026: Version 1.2.1.0
added Smooth (Halftone) toggle to main viewer View menu and context menu.
added Compare Images side-by-side comparison mode with synchronized/individual zoom and pan.
added drag and drop support directly onto left/right compare panes.
added "Use Current Image" toggle per pane with mutual exclusion.
added mini toolbars per pane for file browsing, zooming, 1:1, fit, and rotation.
added top control bar with tips, Auto-Fit, Smooth, Filename overlay, and Close.
added WebP fallback decoder and alpha blending over window background for transparent PNG/ICO/GIF images.
added full multilingual localization for English, Indonesian, and Simplified Chinese.

Monday, 12 January 2026: Version 1.0.0.15
fixed an issue with scrolling large images.
improved position offset when using numpad keys.
Expand Down
64 changes: 61 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,25 +26,83 @@ void Image Viewer main window:

void Image Viewer General Options:

![Void Image Viewer Options General](https://www.voidtools.com/voidImageViewer.Options.General10.png)
<img width="542" height="472" alt="image" src="https://github.com/user-attachments/assets/accca998-0a15-40f4-935b-d41d677f208b" />
<br/><br/><br/>



void Image Viewer View Options:

![Void Image Viewer Options View](https://www.voidtools.com/voidImageViewer.Options.View10.png)
<img width="542" height="472" alt="image" src="https://github.com/user-attachments/assets/316a167b-af09-4cbe-bec0-60ce396f047b" />
<br/><br/><br/>



void Image Viewer Controls Options:

![Void Image Viewer Image Controls](https://www.voidtools.com/voidImageViewer.Options.Controls10.png)
<img width="542" height="472" alt="image" src="https://github.com/user-attachments/assets/0a281f65-c849-4b0d-bcf9-0149badea0fc" />
<br/><br/><br/>



## Changelog

### Version 1.2.1.0 (Latest)
- **New Feature: Smooth Toggle in Main Viewer**
- Added **Smooth** (Halftone / Bilinear interpolation) toggle directly in the `View` menu and right-click context menu.
- Linked with configuration persistence (`shrink_blit_mode` / `mag_filter`), and seamlessly integrated with Compare Images initial smoothing state.
- **New Feature: Compare Images (Side-by-Side Image Comparison)**
- Added multi-pane **Compare Images** window accessible via `View` -> `Compare Images...` or shortcut (`Ctrl+Alt+C`).
- **Drag & Drop Support:**
- Directly drag & drop image files from File Explorer to either the left or right pane to compare.
- Dropping 2 files simultaneously automatically loads them into the left and right panes.
- **"Use Current Image" Toggle:**
- Convenient checkbox on each pane to instantly load the image currently open in the main viewer.
- Automatically disables on the other pane when active to avoid duplicate/conflicting states.
- **Synchronized Navigation & Precise Zoom:**
- Mouse wheel zooms all compared images simultaneously using the exact same zoom engine (`_viv_calculate_next_zoom`) with synchronized viewport centers to eliminate drift.
- Left-click drag pans all compared images synchronously.
- **Individual Pane Mode:** Hold `Ctrl` key or use **Right Mouse Button** to zoom or pan only the hovered image pane.
- **Per-Pane Mini Toolbar:**
- Previous (`<`) and Next (`>`) buttons to browse folder/playlist images per pane.
- Zoom In (`+`), Zoom Out (`-`), Zoom % display, `1:1` (Actual size), and `Fit` (Best Fit) buttons.
- Rotate clockwise button (`90°`).
- Change/Select image file button (`...`).
- **Top Control Bar:**
- Helpful shortcut and mouse tips.
- **Auto-Fit** toggle to automatically scale images to fit pane viewports.
- **Smooth** toggle (Halftone / High-quality interpolation).
- **Filename** toggle with bright green overlay text (`filename`, `dimensions`, `file size`).
- **Close** button (or `ESC` key) to quickly return to main viewer.
- **Full Format Support & Alpha Transparency:**
- Native support for PNG (with alpha transparency), GIF, animated GIF, BMP, ICO, TIFF, JPEG, and WebP (via `libwebp` fallback decoder).
- Clean alpha blending over the window background color, preventing black background issues on transparent images.
- **Full Multilingual Localization:** Added translations for all compare UI elements in English (`en-US`), Indonesian (`id-ID`), and Simplified Chinese (`zh-CN`).

### Version 1.1.0.0
- **New Feature: Zoom Options Tab & Calculation Engine**
- Added dedicated **Zoom options** tab in Options dialog (`IDD_ZOOM`).
- Added customizable zoom calculation methods:
- **Relative step:** Multiplicative scaling using configured zoom step % (default: 10%).
- **Absolute step:** Additive scaling by fixed percentage point steps.
- **Fixed table:** Step-by-step navigation through a user-defined list of zoom percentage levels (default: `1;2;3;10;14;16;19;21;25;28;33;38;43;50;57;66;76;87;100;115;132;150;174;200;230;260;300;350;400;450;500;600;700;800;900;1000;1200;1400;1600;2000;3000;`).
- Added **Load default table** button to quickly restore default values.
- **Improved Zoom Handling:** Pixel under cursor remains stationary during mouse wheel and shortcut zooms across all zoom methods.
- **Expanded Localization:** Added full UI translations for the Zoom options page in English (`en-US`), Indonesian (`id-ID`), and Simplified Chinese (`zh-CN`).
- **Configuration Persistence:** Zoom settings (`zoom_calc_method`, `zoom_step`, `zoom_fixed_table`) automatically saved to and loaded from `voidImageViewer.ini`.

| Feature / Behavior | Before (v1.0.1.0) | After (v1.1.0.0) |
| :--- | :--- | :--- |
| **Zoom Calculation Method** | Hardcoded fixed exponential power steps (`_viv_zoom_pos` from 0 to 63) | Choice between **Relative step (%)**, **Absolute step (%)**, or customizable **Fixed table** |
| **Zoom Step Config** | Fixed / non-configurable | Configurable zoom step percentage (default `10%`) |
| **Fixed Table Values** | Not available | Semicolon-delimited custom table support (up to 50 ordered values) with default reset |
| **Settings UI** | 3 tabs (*General*, *View*, *Controls*) | 4 tabs (*General*, *View*, *Controls*, ***Zoom options***) |
| **Localization** | Dialog strings for 3 tabs | Full multilingual translations for all 4 tabs (English, Indonesian, Chinese) |
| **INI Storage** | No zoom calculation preferences saved | Saves `zoom_calc_method`, `zoom_step`, `zoom_fixed_table` to INI |

<br/><br/><br/>

See also
--------
https://www.voidtools.com/forum/viewtopic.php?t=5623

Binary file added comments.json
Binary file not shown.
Binary file added issues.json
Binary file not shown.
3 changes: 2 additions & 1 deletion nsis/version.nsh
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
!define VERSION "1.0.0.15"
!define VERSION "1.2.1.0"
!define BETAVERSION ""
!define VERSIONYEAR "2026"

35 changes: 32 additions & 3 deletions res/resource.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#define IDD_RENAME 127
#define IDD_JUMPTO 128
#define IDD_EVERYTHING 129
#define IDD_ZOOM 130
#define IDC_TAB1 1003
#define IDC_BMP 1006
#define IDC_GIF 1007
Expand Down Expand Up @@ -90,15 +91,43 @@
#define IDC_TITLE_BAR_FORMAT 1052
#define IDC_SHRINK_BLIT_MODE_STATIC 1053
#define IDC_MAGNIFY_BLIT_MODE_STATIC 1054
#define IDC_RESET_WINDOW 1055
#define IDC_LANGUAGE_STATIC 1056
#define IDC_LANGUAGE_COMBOBOX 1057
#define IDC_LOOP_ANIMATIONS_ONCE_STATIC 1058
#define IDC_PRELOAD_NEXT_IMAGE_STATIC 1059
#define IDC_CACHE_LAST_IMAGE_STATIC 1060
#define IDC_WINDOWEDBACKGROUNDCOLOR_STATIC 1061
#define IDC_FULLSCREENBACKGROUNDCOLOR_STATIC 1062
#define IDC_LEFT_CLICK_ACTION_STATIC 1063
#define IDC_RIGHT_CLICK_ACTION_STATIC 1064
#define IDC_MOUSE_WHEEL_ACTION_STATIC 1065
#define IDC_COMMANDS_STATIC 1066
#define IDC_SETTINGS_FOR_SELECTED_COMMAND_STATIC 1067
#define IDC_TITLE_BAR_FORMAT_STATIC 1068
#define IDC_AUTO_SIZE_WINDOW_STATIC 1069
#define IDC_EDIT_KEYBOARD_SHORTCUT_KEY_STATIC 1070
#define IDC_EDIT_KEYBOARD_SHORTCUT_KEY_CURRENTLY_USED_BY_STATIC 1071
#define IDC_CUSTOM_RATE_STATIC 1072
#define IDC_TAB4 1073
#define IDC_ZOOM_STEP_STATIC 1074
#define IDC_ZOOM_STEP_EDIT 1075
#define IDC_ZOOM_STEP_PERCENT_STATIC 1076
#define IDC_ZOOM_STEP_DEFAULT_STATIC 1077
#define IDC_ZOOM_CALC_METHOD_STATIC 1078
#define IDC_ZOOM_CALC_RELATIVE_RADIO 1079
#define IDC_ZOOM_CALC_ABSOLUTE_RADIO 1080
#define IDC_ZOOM_CALC_FIXED_TABLE_RADIO 1081
#define IDC_ZOOM_FIXED_TABLE_EDIT 1082
#define IDC_ZOOM_LOAD_DEFAULT_TABLE_BUTTON 1083

// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 130
#define _APS_NEXT_RESOURCE_VALUE 131
#define _APS_NEXT_COMMAND_VALUE 40048
#define _APS_NEXT_CONTROL_VALUE 1055
#define _APS_NEXT_SYMED_VALUE 109
#define _APS_NEXT_CONTROL_VALUE 1084
#endif
#endif
Loading