diff --git a/CHANGELOG.md b/CHANGELOG.md index 18be7ef..508a34f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ Alle noemenswaardige wijzigingen in kniip staan in dit bestand. De nieuwste versie staat bovenaan. +## 1.1.7 - 2026-11-09 + +### Gewijzigd + +- Het icoon in het systeemvak is groter en sluit aan bij de andere systeemvakpictogrammen. +- De tekst bij het icoon is nu **kniip**. Tijdens een opname staat daar **kniip - opname loopt**. + ## 1.1.6 - 2026-11-09 ### Nieuw diff --git a/README.md b/README.md index 54dc266..a832a56 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ kniip is een annotatie-editor die naast het Windows Knipprogramma werkt. Maak ee | Versie | Installer | | ------ | --------- | -| 1.1.6 | [Kniip-Setup-1.1.6.exe](https://git.hibbit.net/rogier/kniip/releases/download/1.1.6/Kniip-Setup-1.1.6.exe) | +| 1.1.7 | [Kniip-Setup-1.1.7.exe](https://git.hibbit.net/rogier/kniip/releases/download/1.1.7/Kniip-Setup-1.1.7.exe) | Oudere versies vind je bij [alle releases](https://git.hibbit.net/rogier/kniip/releases). @@ -80,7 +80,7 @@ Vereisten: Bouwen: ```powershell -.\build.ps1 # versie 1.1.6 +.\build.ps1 # versie 1.1.7 .\build.ps1 -Version 1.2.0 # andere versie ``` diff --git a/build.ps1 b/build.ps1 index a3a025c..4834157 100644 --- a/build.ps1 +++ b/build.ps1 @@ -12,7 +12,7 @@ # .\build.ps1 -SkipTest -> zonder testexe param( - [string]$Version = "1.1.6", + [string]$Version = "1.1.7", [string]$Runtime = "win-x64", [switch]$SkipTest ) diff --git a/installer/Kniip.iss b/installer/Kniip.iss index ad26894..933294c 100644 --- a/installer/Kniip.iss +++ b/installer/Kniip.iss @@ -5,7 +5,7 @@ #define AppName "kniip" #define AppExe "Kniip.exe" #ifndef AppVersion - #define AppVersion "1.1.6" + #define AppVersion "1.1.7" #endif #ifndef PublishDir #define PublishDir "..\artifacts\publish" diff --git a/src/Kniip/Infrastructure/TrayIcon.cs b/src/Kniip/Infrastructure/TrayIcon.cs index 2dc9e7f..24d9d94 100644 --- a/src/Kniip/Infrastructure/TrayIcon.cs +++ b/src/Kniip/Infrastructure/TrayIcon.cs @@ -225,7 +225,7 @@ internal sealed class TrayIcon : IDisposable private static string IdleText => AppIdentity.IsTest ? $"{AppIdentity.DisplayName} {Kniip.Update.UpdateChecker.CurrentVersion}" - : "kniip - annotaties voor het Knipprogramma"; + : AppIdentity.DisplayName; private void BuildFolders() { @@ -316,7 +316,8 @@ internal sealed class TrayIcon : IDisposable private static Icon LoadIcon() { - var info = System.Windows.Application.GetResourceStream(new Uri("pack://application:,,,/AppIcon.ico")); + // Uitsnede van AppIcon.ico zonder snijlijnen (tools\make-tray-icon.ps1): op 16px vult het kader zo het vak. + var info = System.Windows.Application.GetResourceStream(new Uri("pack://application:,,,/TrayIcon.ico")); if (info == null) { return SystemIcons.Application; diff --git a/src/Kniip/Kniip.csproj b/src/Kniip/Kniip.csproj index 1869df3..df0d634 100644 --- a/src/Kniip/Kniip.csproj +++ b/src/Kniip/Kniip.csproj @@ -18,7 +18,7 @@ app.manifest kniip Annotatie-editor naast het Windows Knipprogramma - 1.1.6 + 1.1.7 nl;en $(NoWarn);WFAC010 @@ -34,6 +34,7 @@ + diff --git a/src/Kniip/TrayIcon.ico b/src/Kniip/TrayIcon.ico new file mode 100644 index 0000000..28d9db4 Binary files /dev/null and b/src/Kniip/TrayIcon.ico differ diff --git a/tools/make-tray-icon.ps1 b/tools/make-tray-icon.ps1 new file mode 100644 index 0000000..13c14a3 --- /dev/null +++ b/tools/make-tray-icon.ps1 @@ -0,0 +1,72 @@ +# Maakt src/Kniip/TrayIcon.ico uit de 256px-afbeelding in AppIcon.ico. Het systeemvak tekent op 16px; +# daar zijn de snijlijnen en de zwarte rand op een donkere taakbalk onzichtbaar en lijkt het icoon klein. +# Dit snijdt alleen het fotokader uit, zodat dat het hele vak vult. Opnieuw draaien als AppIcon.ico wijzigt. + +$ErrorActionPreference = 'Stop' +Add-Type -AssemblyName System.Drawing + +$root = Split-Path -Parent $PSScriptRoot +$source = Join-Path $root 'src\Kniip\AppIcon.ico' +$target = Join-Path $root 'src\Kniip\TrayIcon.ico' + +# Kader in de 256px-afbeelding, inclusief de zwarte rand. +$crop = New-Object System.Drawing.Rectangle 42, 42, 172, 172 +$sizes = 16, 20, 24, 32, 40, 48, 64 + +function Get-IcoPng([byte[]]$ico, [int]$size) { + $count = [BitConverter]::ToUInt16($ico, 4) + for ($i = 0; $i -lt $count; $i++) { + $entry = 6 + $i * 16 + $width = if ($ico[$entry] -eq 0) { 256 } else { $ico[$entry] } + if ($width -eq $size) { + $length = [BitConverter]::ToUInt32($ico, $entry + 8) + $offset = [BitConverter]::ToUInt32($ico, $entry + 12) + $data = New-Object byte[] $length + [Array]::Copy($ico, $offset, $data, 0, $length) + return $data + } + } + throw "Geen ${size}px-afbeelding in $source" +} + +$png = Get-IcoPng ([IO.File]::ReadAllBytes($source)) 256 +$master = [System.Drawing.Bitmap]::FromStream((New-Object IO.MemoryStream (, $png))) + +$images = foreach ($size in $sizes) { + $bitmap = New-Object System.Drawing.Bitmap $size, $size, ([System.Drawing.Imaging.PixelFormat]::Format32bppArgb) + $g = [System.Drawing.Graphics]::FromImage($bitmap) + $g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic + $g.PixelOffsetMode = [System.Drawing.Drawing2D.PixelOffsetMode]::HighQuality + $g.CompositingQuality = [System.Drawing.Drawing2D.CompositingQuality]::HighQuality + $g.DrawImage($master, (New-Object System.Drawing.Rectangle 0, 0, $size, $size), $crop, [System.Drawing.GraphicsUnit]::Pixel) + $g.Dispose() + $stream = New-Object IO.MemoryStream + $bitmap.Save($stream, [System.Drawing.Imaging.ImageFormat]::Png) + $bitmap.Dispose() + , $stream.ToArray() +} +$master.Dispose() + +$out = New-Object IO.MemoryStream +$writer = New-Object IO.BinaryWriter $out +$writer.Write([UInt16]0) +$writer.Write([UInt16]1) +$writer.Write([UInt16]$sizes.Count) +$offset = 6 + 16 * $sizes.Count +for ($i = 0; $i -lt $sizes.Count; $i++) { + $writer.Write([byte]$sizes[$i]) + $writer.Write([byte]$sizes[$i]) + $writer.Write([byte]0) + $writer.Write([byte]0) + $writer.Write([UInt16]1) + $writer.Write([UInt16]32) + $writer.Write([UInt32]$images[$i].Length) + $writer.Write([UInt32]$offset) + $offset += $images[$i].Length +} +foreach ($image in $images) { + $writer.Write($image) +} +$writer.Flush() +[IO.File]::WriteAllBytes($target, $out.ToArray()) +Write-Host "Geschreven: $target"