From 92d5c72dd665501875736ce52c52d29d6554c174 Mon Sep 17 00:00:00 2001 From: Sergey Semushin Date: Thu, 10 Apr 2025 22:10:39 +0200 Subject: [PATCH 1/2] Better icon scaling for non-dark theme --- Resources/Autocheck-bmp.bmp | Bin 822 -> 0 bytes Resources/Autocheck.bmp | Bin 1334 -> 0 bytes Resources/Autocheck16.bmp | Bin 0 -> 822 bytes Resources/Autocheck2.bmp | Bin 1334 -> 0 bytes Resources/Autocheck24.bmp | Bin 0 -> 1782 bytes Resources/Autocheck32.bmp | Bin 0 -> 3126 bytes Resources/Autocheck64.bmp | Bin 0 -> 12342 bytes Resources/arrow_refresh.ico | Bin 32038 -> 32038 bytes Resources/convert-icon.bat | 1 - Resources/convert-svg-to-bmp.bat | 4 ++++ Resources/convert-svg-to-ico.bat | 1 + src/common/raii.cpp | 22 ++++++++++++++++++---- src/common/raii.h | 10 +++++++++- src/plugin/DSpellCheck.rc | Bin 52776 -> 53300 bytes src/plugin/Plugin.cpp | 11 +++++++++-- src/plugin/resource.h | 6 +++++- 16 files changed, 46 insertions(+), 9 deletions(-) delete mode 100644 Resources/Autocheck-bmp.bmp delete mode 100644 Resources/Autocheck.bmp create mode 100644 Resources/Autocheck16.bmp delete mode 100644 Resources/Autocheck2.bmp create mode 100644 Resources/Autocheck24.bmp create mode 100644 Resources/Autocheck32.bmp create mode 100644 Resources/Autocheck64.bmp delete mode 100644 Resources/convert-icon.bat create mode 100644 Resources/convert-svg-to-bmp.bat create mode 100644 Resources/convert-svg-to-ico.bat diff --git a/Resources/Autocheck-bmp.bmp b/Resources/Autocheck-bmp.bmp deleted file mode 100644 index b5f271c7a6bbdad4f448502914985a0c6466b070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmZ?rHDhJ~12Z700mK4O%*Y@C7H0s;AK`;whyVk_e;R|8E8n}g-m`bOd-(7dh*iIT z|C>DJ_4FBU&}^=#cm@>7FL-Kaf7i$NzOLS_pFjVdJNwnp__njlJs>hRxpn8xPl&Ge z_Lqi6x7V-#0OZ!xKDV~H3k9%3! zPaxWN?EIvsf6LVkWUQI_?UyfqU%UPTs2HdPs1fK|pdn@!w;_rltnfewk zc=zs4W0TuX&Uc+%?psLFZP zTieZ>Hy0NdmzI_SMOs=~^78T^3dF_5f!ZS@Bazj|$H#BnxKU0{4(Mi}`0?Y%U0q#) z3>_VvmoHz&#KbIFvIL_3@#Dwq)~(~>;sSCR85zHPfkq{e3k0pLt!-^>5a$88KnBoc zU0vOXhzKB;kB<+i9i$EhfLx$aoSd8x0k}qfe*Vv&KfAfPZP>5@D0T4QL3MR?xSHhT zWH=j{aqHGChzZ`_-czPbfk>sLr5!zb6v9?gQUdx>N=jc&25QX7qAi)Mm6Ci-=DRTnXgLGS@+1AY*WsWk%BIlSoXGk$eaOWb$`lo0k z?t+l|^eB-_EhT>c@$gYcdH5iGqxI$0oj&c3JL&7^ZQpo1r^KPm9h_;ZyVbv2PrrUj z<_OSXg~muO7-)DPQD}@5g2BN>BnpjreXfy?K%&qXiKfcn2qX%P;ZF(%M<7vXjKrZa zI0A`6W8~s*%CKr6QE1Fwni=T`Bnpk$%XT9jfkdG(`;~-|jzFT&nEkraNJk)1Xv}_< zWuzmJC^Tlj<~Gt1NE8}#d;%XM9f3rlF-q2-GOU#cRxLC}X@bEKNE8~gKbsrr2qX%P z*`G9wbOaKG#_Z3{LoywKM4>TzE0mFrK%&r?y-nIkM<7vX%&~=XjC2GNg~q5^f6L$q zBnqp}-dbj)BakRGW^X$;(h*1$8nd@#80iQk3XR#@HH~xx5{1U>tz1Sr0*OLn_BL-L z9f3sY>Ca79#wGJfx8u<5wpyUBTbxe+Ecc9f=bnpq^~>csrI@)KRpx;(GO>G{kJ xU9P9=<+xt=c3Js`=HvPA_47q~T%%t5*BnP-zV(1Jb6@Fud)^v9QO5bw^mJvAb@tfJI&+(6ljzwkDWKk+1?ZMmMrBv2~{bA0@HS z1W6#W@&O4hL@-80h(Yjy3@DBR7N*141M~;9H*;^!cjkQGIrqNq?Rd&-t`3|pv7i6l zPk1kyJP-e$y=v_i!Q(yt=encV&CT+6S1A_%#c_>hmVL}-nRL3wFwMF-uv+D^=L`gE zYm`En5sA~fciG+D2b!)gEZn~TaE@|jra+RvTmBx;9YI`WG7Lr4zkVw!RT;75%rJ6k zwOzlJo&igG8>h{7jh4N=2c0epW^wTr?eOvk?$H7le9+tNg}J$+Oy1}+j$VEGd?A*k z^&c;ej;bv?mgNG0`!B|8g2;J((zROS77j-VEpJ3=7-@BvTU!-~Q>j$3SOnlWE*48B zlUMuu@tvK>;o%`oSJ&5Ri#2Z;NzBfMNU|X_8jaJ_(*QR&HwuN^?f%i--EA-!v|6pn zG+Hjx$z)ok(yCNSwYoo%NVr@srBX?fWH1<%NF?EKSSS>tw^S<0<#M0TH$FaYwOVVn z8YY`erqk0?fk2>Et2;Y8Q6ff9PY*>=a2y&MayT3cg<^Yq8>QdxH=E52!wd`zfY)d= zZnqnbU0q$v%gd9KlY@hUCnqN&kti06LC>-*TmbBLyI!vsi^aJ6@$oUA&mS8b12a54 zjGR)bG!ltGhJ*+M5DJCb+S>a1`rvhNaDY6ON(G~2GFdblB?w}Eejc)wl@%leC=?3q z?d>+34H$Y{#Ow7solfX;xg1^qV0CpBv5^y+dcD51v=ooWf%EzN#KeTfVwswn!f-HH R8yg#VC6C9004?U<&p+tpFZ%!h literal 0 HcmV?d00001 diff --git a/Resources/Autocheck2.bmp b/Resources/Autocheck2.bmp deleted file mode 100644 index 881564291885b5bd3d924b9583f10d2b1c46f2c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1334 zcmb8tEsoqk5QgDeDN#oXiIfWz%n25k!Ulv4F&Hp)l)A@&DKN^g>=g><3;}h5)iQ&C z&1?4tM``=<*FXMiyT5*Wd@p->d?)gS+NU=U@?j11qR{&!4XIldj4)65@B!z5`~^iA(b>Z0*OM;Wl~BS9Dzik_azjqq`?tL z6k3Y;mnaO5Kw{f^E-h8k;0PoNJ(ry+X>bG*g`P{&l{7d4i9*li8cG@*fkdI_Qcfie zjzFT&bD5Wt21g*}<@c-HI4`)L$m_n#>+4nn+t$Tl{BOCQ&tu%L*Qf2m`?#N%y#>UiPOw?bmXXttG;~mD^YkavG=0xSWQJn~dXy@s**K l_Ilv3mE-ZaUA1>^?Ufosm%})$E2qd|ALf2HIsJ2fe*oqyb=?2} diff --git a/Resources/Autocheck24.bmp b/Resources/Autocheck24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c7a82e69d77b5f7921bdf66e8f4ae1741e1c3ecb GIT binary patch literal 1782 zcmb_cSxBQ-6t+Ip7jfSOcd$Bwh@heowD=&^IHT6YCG99U&WLqp@X1U}JK#e*ts`0& z&@dt@u82BFz)oGzxZ=zhG(ISrT~lM4L``B=`%SL=wXbC^|9?66JLi1=Ip00W*L35T zF3y#L{VTjdx9=BD%f)30evb_DIs>uYeC}m7JM8xVPinK>h(y<2-5L%@)$&>`6q@dG zU0&MZ-4U8J8rxl**w@#Ntu3R$@agj#8;0*6%JcHYdHIrW^284-hy zg6GpE#l_OWL9N+xOSQgkV3s04{OtM3>8TY|TCMHpU(UcxQXUjao<2RHj$pupPrzGP zBpDpiqAG>bf(i*OiFs3HNN zYHt2Zr~8k3Z{O;n21EPg?s;a8Uxhg6udV71d zS}kH!D(m)p)0;PIELI(p$!KqHC;0UAw15i^jun60*-qD&*tVP#dFtyEHoO8%jKdTC=VCv0Z(INBU+f4 zn8?n~W-^&ZqfsCb0H2$iBk2~4WqW)3`1qI{hlYmy{rzKNVlXeLlklLg(a}*7u&}TY z6cn_vv7uBdBO@a*3GX?>3wYs*i;H8iSQr%$ z78Dc^PLkNx)`kHi6AJ_*l$)EIk&%H&d;)}+91@8g4VIUe!-dJG#35cN1{tYH{Lrqh Wt}dMm)lxWR;I4sVyeZ_f82+J;q literal 0 HcmV?d00001 diff --git a/Resources/Autocheck32.bmp b/Resources/Autocheck32.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cfb3d49a4f6261354034ba26123f0e18465f1416 GIT binary patch literal 3126 zcmds(YfO_@7{|d2sGE4#MH9tnj4_!SH706|ig!^inLt3fIN2l<-G(w^V3Uo>m~4qb z1-!%`<*Xh+-%5yGX_kpjo(|brP_T5&9uTVHS_5EMgix>8$CaX?ovsxYhZcOd%y_YgO zKaXk&32of z37y^+8>bHp)JlHgLtv0rNsc_|HEdU7Noju+CX-#62afLyZmh2E7W_Q1Rax0B9gwMz z7Gd5S*^C>cSEA=Xy=1=xEGY$_Pm_@Tme`u}LGy`rAiWG8&NK{0E-zJ#NeMY0Bcc29Zqq@5t zSy`R1i5Lmf%Ukp5XRYNGRwY!c)n;dBS5{UkmB@8gu|6>lPTXa&vR* z>+9{WE5|Hfyx8$wQd@Fz`^l5F8LFT2@^UpAjbzKq%Nsj(tcQn($z+mBhr_XZ_wJ!X zhh}DGK79Ca!h{JfE-vr9S|dk}oH}*tzJ2>}OyYZc9V*qO1q1mY0`9ylBxP{3np}=g)84xRKj^{rdGf zolYEK3n!;dn-&)r7at$*?(U8oSy@@^3Rl6aR4U0|TwDz2>eZ`zdV0#r%8=pgeO-yp z&d$KVK#m+gew-uEpFdx|eEI0nqi@`}AF@8abYSt~#givbuBxg6z>^G4q z*Up$RgESKL+xRg$YSbt{KR*B@1ZPg1IDsq{hJ1W{P+q=#8I93sT(N?mO{XPGmUw!4 zu3Whie`d~{saC7mmHrdm!1=zuvuDqO7XcE5v$L~Ij=-Ebb0#=AI6psMydF4k0DO9S zI3cr*^bNR8&-SbaYr)82!0$;X)c407mh|)z$U>{rhiZ7E0zwoN8@t_4W0o z`uFbLll*ROZfGz;(rCgVLx!wdx9;iFrvUIjC@6@0Qt^M_r#Cil-VD#xt5;{wo;`2g zJPb*G`g7H)Rg|NprG?p~ltcucMg?>5;6dWe$jDIgKY8+mzG`l6mdb>L1j>p+SCnhEW zRW*xR{t2rM{w~f^o)MvBr-dPXmB47z|2Sb#-+> zKmdsX0RM#x7i7E=MmXHYZEbB*gJ3qBA3b`6UaZHDACpO0eI=3t@za1Iu3x48KP~?O D^$EaR literal 0 HcmV?d00001 diff --git a/Resources/Autocheck64.bmp b/Resources/Autocheck64.bmp new file mode 100644 index 0000000000000000000000000000000000000000..abf2224d6d87329890c1ae6314a99c675b848eca GIT binary patch literal 12342 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 Jz<<95{tZ`l3r+w4 literal 0 HcmV?d00001 diff --git a/Resources/arrow_refresh.ico b/Resources/arrow_refresh.ico index 61b5d56a0c055095308a45e0fc6e56de3f37083b..00366b623cd71dab1112a99d32030a8a86523528 100644 GIT binary patch literal 32038 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 literal 32038 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 bWAp58Zr6v-$PGU~=aJ<<`+48pWX%5nxV>&5 diff --git a/Resources/convert-icon.bat b/Resources/convert-icon.bat deleted file mode 100644 index ffda0566..00000000 --- a/Resources/convert-icon.bat +++ /dev/null @@ -1 +0,0 @@ -magick convert -density 384 -background none %1.svg -define icon:auto-resize=64,48,32,16 %1.ico \ No newline at end of file diff --git a/Resources/convert-svg-to-bmp.bat b/Resources/convert-svg-to-bmp.bat new file mode 100644 index 00000000..c6f6926c --- /dev/null +++ b/Resources/convert-svg-to-bmp.bat @@ -0,0 +1,4 @@ +magick %1.svg -resize 16x16 -density 384 BMP3:%116.bmp +magick %1.svg -resize 24x24 -density 384 BMP3:%124.bmp +magick %1.svg -resize 32x32 -density 384 BMP3:%132.bmp +magick %1.svg -resize 64x64 -density 384 BMP3:%164.bmp diff --git a/Resources/convert-svg-to-ico.bat b/Resources/convert-svg-to-ico.bat new file mode 100644 index 00000000..320fd379 --- /dev/null +++ b/Resources/convert-svg-to-ico.bat @@ -0,0 +1 @@ +magick -density 384 -background none %1.svg -define icon:auto-resize=64,48,32,16 %1.ico \ No newline at end of file diff --git a/src/common/raii.cpp b/src/common/raii.cpp index a97634b8..c7394e4c 100644 --- a/src/common/raii.cpp +++ b/src/common/raii.cpp @@ -17,6 +17,7 @@ #include "Notepad_plus_msgs.h" #include +#include ToolbarIconsWrapper::ToolbarIconsWrapper() : m_icons{std::make_unique()} { m_icons->hToolbarBmp = nullptr; @@ -35,10 +36,23 @@ ToolbarIconsWrapper::~ToolbarIconsWrapper() { DeleteObject(m_icons->hToolbarIconDarkMode); } -ToolbarIconsWrapper::ToolbarIconsWrapper(HINSTANCE h_inst, LPCWSTR normal_name, LPCWSTR dark_mode_name, LPCWSTR bmp_name) - : ToolbarIconsWrapper() { - m_icons->hToolbarBmp = ::LoadBitmap(h_inst, bmp_name); - m_icons->hToolbarIcon = ::LoadIcon(h_inst, normal_name); +ToolbarIconsWrapper::ToolbarIconsWrapper(HINSTANCE h_inst, LPCWSTR normal_name, LPCWSTR dark_mode_name, std::span bmp_icons) + : ToolbarIconsWrapper() { + HDC hdc = ::GetDC(NULL); + int icon_width = 0; + int icon_height = 0; + if (hdc) { + icon_width = ::MulDiv(16, GetDeviceCaps(hdc, LOGPIXELSX), 96); + icon_height = ::MulDiv(16, GetDeviceCaps(hdc, LOGPIXELSY), 96); + } + auto style = (LR_LOADTRANSPARENT | LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS); + assert(!bmp_icons.empty()); + auto it = std::ranges::find_if(bmp_icons, [&](size_t size) { return size == icon_width && size == icon_height; }, &BmpData::size); + if (it == std::cend(bmp_icons)) { + it = std::prev(it); + } + m_icons->hToolbarBmp = static_cast(::LoadImage(h_inst, it->name, IMAGE_BITMAP, icon_width, icon_height, style)); + m_icons->hToolbarIcon = static_cast(::LoadImage(h_inst, normal_name, IMAGE_ICON, icon_width, icon_height, style)); m_icons->hToolbarIconDarkMode = ::LoadIcon(h_inst, dark_mode_name); } diff --git a/src/common/raii.h b/src/common/raii.h index 1aa77684..e93cd78b 100644 --- a/src/common/raii.h +++ b/src/common/raii.h @@ -14,10 +14,18 @@ #pragma once +#include + struct toolbarIconsWithDarkMode; +struct BmpData +{ + size_t size; + LPCWSTR name; +}; + struct ToolbarIconsWrapper { - ToolbarIconsWrapper(HINSTANCE h_inst, LPCWSTR normal_name, LPCWSTR dark_mode_name, LPCWSTR bmp_name); + ToolbarIconsWrapper(HINSTANCE h_inst, LPCWSTR normal_name, LPCWSTR dark_mode_name, std::span bmp_icons); const toolbarIconsWithDarkMode *get(); ~ToolbarIconsWrapper(); diff --git a/src/plugin/DSpellCheck.rc b/src/plugin/DSpellCheck.rc index 6b1c94b46fc5401a95102536e333a01a4229f611..98661a6f157ceaa4b6938b00e7e4715f09bd5681 100644 GIT binary patch delta 112 zcmZ26hk45a<_#)!tnmzn3}%yGS0_%^DH37^vESF40!57&OyHs*Hbm5z!3Zu2VnamD d5NdgWYz94sB!*mu0tThY8{2noPOCrU2LK$~B$@yK delta 34 qcmdn8fO*9n<_#)!%nA$&lNZ(`Pu3|CV%KFzV#sAE*u1`>)gJ)RMGLb4 diff --git a/src/plugin/Plugin.cpp b/src/plugin/Plugin.cpp index 66443b4f..5665901a 100644 --- a/src/plugin/Plugin.cpp +++ b/src/plugin/Plugin.cpp @@ -385,8 +385,15 @@ static void command_menu_init() { } static void add_icons() { - static ToolbarIconsWrapper auto_check_icon{static_cast(h_module), MAKEINTRESOURCE(IDI_AUTOCHECK), MAKEINTRESOURCE(IDI_AUTOCHECK_DARK), - MAKEINTRESOURCE(IDB_AUTOCHECK_BMP)}; + static ToolbarIconsWrapper auto_check_icon{static_cast(h_module), + MAKEINTRESOURCE(IDI_AUTOCHECK), + MAKEINTRESOURCE(IDI_AUTOCHECK_DARK), + std::array{ + BmpData{16, MAKEINTRESOURCE(IDB_AUTOCHECK_BMP_16)}, + BmpData{24, MAKEINTRESOURCE(IDB_AUTOCHECK_BMP_24)}, + BmpData{32, MAKEINTRESOURCE(IDB_AUTOCHECK_BMP_32)}, + BmpData{64, MAKEINTRESOURCE(IDB_AUTOCHECK_BMP_64)} + }}; ::SendMessage(npp_data.npp_handle, NPPM_ADDTOOLBARICON_FORDARKMODE, static_cast(func_item[0].cmd_id), reinterpret_cast(auto_check_icon.get())); } diff --git a/src/plugin/resource.h b/src/plugin/resource.h index d88d18e7..0d30d6a0 100644 --- a/src/plugin/resource.h +++ b/src/plugin/resource.h @@ -9,7 +9,11 @@ #define IDR_DOWNARROW_PUSH 104 #define IDD_CHOOSE_MULTIPLE_LANGUAGES 106 #define IDD_ABOUT 107 +#define IDB_AUTOCHECK_BMP_16 107 +#define IDB_AUTOCHECK_BMP_24 108 #define IDD_DOWNLOADDICS 109 +#define IDB_AUTOCHECK_BMP_32 109 +#define IDB_AUTOCHECK_BMP_64 110 #define IDD_DIALOGPROGRESS 111 #define IDD_REMOVE_DICS 113 #define IDI_REFRESH 128 @@ -227,7 +231,7 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 106 +#define _APS_NEXT_RESOURCE_VALUE 111 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1010 #define _APS_NEXT_SYMED_VALUE 101 From db92ad66ec3c523af78695e0eb9043d95c945c23 Mon Sep 17 00:00:00 2001 From: Sergey Semushin Date: Fri, 11 Apr 2025 19:58:10 +0200 Subject: [PATCH 2/2] Fix win32 build --- src/common/raii.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/raii.cpp b/src/common/raii.cpp index c7394e4c..a1765630 100644 --- a/src/common/raii.cpp +++ b/src/common/raii.cpp @@ -47,7 +47,7 @@ ToolbarIconsWrapper::ToolbarIconsWrapper(HINSTANCE h_inst, LPCWSTR normal_name, } auto style = (LR_LOADTRANSPARENT | LR_DEFAULTSIZE | LR_LOADMAP3DCOLORS); assert(!bmp_icons.empty()); - auto it = std::ranges::find_if(bmp_icons, [&](size_t size) { return size == icon_width && size == icon_height; }, &BmpData::size); + auto it = std::ranges::find_if(bmp_icons, [&](size_t size) { return size == static_cast(icon_width) && size == static_cast(icon_height); }, &BmpData::size); if (it == std::cend(bmp_icons)) { it = std::prev(it); }