From 2b65e2d808b31a146569dd270b0e3fc0673471ba Mon Sep 17 00:00:00 2001 From: John Scipione Date: Sun, 26 Mar 2023 20:13:14 -0400 Subject: [PATCH] Deskbar: Use hvif window icons & scale with font Add rdef vector icons for shown, hidden, shown switch and hidden switch. Reuse resource ids for vector icons. Remove unused bitmap resources. Fixes #17918. Change-Id: I2ba1b126422f679c91f3272991c78d236198a358 Reviewed-on: https://review.haiku-os.org/c/haiku/+/6260 Tested-by: Automation Reviewed-by: waddlesplash --- .../icons/Deskbar_Window_Hidden_Switch | Bin 0 -> 7623 bytes .../icons/Deskbar_Window_Visible_Switch | Bin 0 -> 9004 bytes src/apps/deskbar/BarMenuBar.cpp | 9 +- src/apps/deskbar/WindowMenuItem.cpp | 40 ++++- src/apps/deskbar/WindowMenuItem.h | 1 + src/apps/deskbar/icons.h | 3 +- src/apps/deskbar/icons.rdef | 153 ++++-------------- 7 files changed, 75 insertions(+), 131 deletions(-) create mode 100644 data/artwork/icons/Deskbar_Window_Hidden_Switch create mode 100644 data/artwork/icons/Deskbar_Window_Visible_Switch diff --git a/data/artwork/icons/Deskbar_Window_Hidden_Switch b/data/artwork/icons/Deskbar_Window_Hidden_Switch new file mode 100644 index 0000000000000000000000000000000000000000..2c60819901b9855120363bfaaf0ae9bef305669b GIT binary patch literal 7623 zcmeHKJ#1T56h4mIkS0+`1_o#87kPy^qA>$WB!stKS-~&^Q3rV-k%&g3Fj!%1t>bXMlOb!3C zOJo;)XfURZ|1>1>cAxg&Ocd7hat~g9cJ(^^xT4vWS=GEm2tC{t`^Q|n;wthvM*3Og zM-1+EEyBsU5Es_3a#ogCS0-uWEtK%6!Wgx>uoUCiQRpC)W5aUJgHHqJ2E)?p!EXXP zQ^n(pi)tRu^$4ox=@;T$m->Ab&m=ZdI9-t|e9Z~j%-Wd(Ov-yPktL{Ut*asyY}2xj zvJ_LJB6ddGwE=zyWhsu7Gqzr-;;q;!S(+)fREgDFvPGs$E3gM)*IGQf#lt2i<6ySb zlbBeueX=t*Mgv2_6A?w6pr8Ex4DWcHh#;#GXk$be{4)C75n=Fmf%BPp%{=8Z^)|Fw zMBK09ts(;5H6imP&a|Slyq>Sd(>R#cIM(yCwWpVXr~d5K5#qGW6=+)PYQtUme~$ID zZ|xbJef_(II5!uSG~9G0%YF7f9II#lM9(LjeZH`jPUYo`E`L|gGW>8$sq2Ax#^Aa+%<58_ln^ll0Q2N;cASvV)7{x-BflJ{G3}jZ%3`l-C-2nN<;Ob zG=?je$iRdYa*0fSEt}g&6zr_2t`DM^sfif;qNO_rt##D$cILXshMkFgV(0Dm?X+Fk zisX}tbV@mGB#O;CO4ifM3gfB93XOo34#*W|SB(`K0V^HA3V5iqLL*?M(^%oBF<_+w zSn=Fo{#g-=d39JS(b?@0zzb#FHy(WLk5YrR&B|BlpD&424%J`>tofW@qwkda#!xs0 ztgw>yR>1x%7%Q6n>6L(uOKYfvTdtSR7goAQgf5QxtF0HU`P5Ba#DBky_)fn+1Cvc@0V= zBy!<^5aREE0!ZZmJ>-&HK;nXtxCC+O0rh}5vsw!mxVsYN!h z*EmXUVHE`!B@|9UJgPp*u)MaoaE{}LIe|h`rLk)9;`|KPoLe;!tG~Dm6}J&_)t8wUWO_5gBE>v z9<>`SLoZ`4jFzD{K@X!vI_u-uPcO8d4(R>RTC+4#Y*}Td(-JKrWm>^_661D@Zn#9y zq%baK%X&WqYqamLZBcr~1c!L)|46QBJ#qX<0kw)ag4Ync>iTI+0A zuKYj7j_vz%CbsWFQahYS0kTb6i3TR z@C~6-ijj`4ubE@sK+Waw2q#cT=jAYWv5@Busr+a__mlr245s{jOiQU&snszSHDFuf zDF$pyD=RCi05swN_bV(Pe$Ws^76QVf?G?BbZuRB?bR9zI7?jfoP)=Q|7q2=t?&e>E zKhB;vA(Iz-W*1QuI97OC)DZ5E(S;Mb|6W>eXVy zsk!p^rN^Ezjf*>$Ip=~AB>FfZTU-d5gHaT&SrExerLILsMn1>VI9hICRoFc#LA#l8pRtIWPz!g(2XWY~#zCW7b%&q{ zscv_E3cNg78crO35Wfu?_mGxjzB^MF-Iy=aUi6Oxx}SM7b-N6SxG(b+$^nlOie@4( zEnU6>7L-=tqI%T%HS{MfO`Eiq;DwHRO{D6$nRgw}dDE#ljn#}-Dps_cR*NgWCf2M6 z7ZqaIMuiY1s0=`?FuL}P%9Yc%d&bJm3wHwga~9;vw;!EKVkJMj_YB6Q)kcNOlUNym zSfNX|QQ;s#WzbOJMp%C@5-mV^QleJ|N60d>E}QF@e9d!W#8YG z_^AAH7b-vlWh=X}vGK1`$1Q&-R)WfbpfW$qKLob=qO#Lccty3E8kH9lR1O4{-*?q! zkg2rcBfneO@~(Ob4|PkElUTuDRr|ad$H`!S?5bujRCfID$Y%ESUG)Xu{w;reE{T-` cL1le?9seC}_swACa{0DWqd}~k-w!JP0ilgZH~;_u literal 0 HcmV?d00001 diff --git a/src/apps/deskbar/BarMenuBar.cpp b/src/apps/deskbar/BarMenuBar.cpp index e7297d7aaa..3996b84d9d 100644 --- a/src/apps/deskbar/BarMenuBar.cpp +++ b/src/apps/deskbar/BarMenuBar.cpp @@ -338,7 +338,7 @@ TBarMenuBar::FetchTeamIcon() if (fTeamIconData == NULL || fTeamIconSize == 0) { // we haven't fetched vector icon data yet, fetch it fTeamIconData = (const uint8*)AppResSet()->FindResource( - B_VECTOR_ICON_TYPE, R_TeamIconVector, &fTeamIconSize); + B_VECTOR_ICON_TYPE, R_TeamIcon, &fTeamIconSize); } if (fTeamIconData != NULL && fTeamIconSize > 0) { @@ -349,11 +349,12 @@ TBarMenuBar::FetchTeamIcon() iconRect.InsetBy(-1, -1); // grow icon by 1px so that it renders nicely at 12pt font size BBitmap* icon = new(std::nothrow) BBitmap(iconRect, B_RGBA32); - if (icon != NULL && BIconUtils::GetVectorIcon(fTeamIconData, - fTeamIconSize, icon) == B_OK) { + if (icon != NULL && icon->InitCheck() == B_OK + && BIconUtils::GetVectorIcon(fTeamIconData, fTeamIconSize, icon) == B_OK) { // rasterize vector icon into a bitmap at the scaled size teamIcon = icon; - } + } else + delete icon; } return teamIcon; diff --git a/src/apps/deskbar/WindowMenuItem.cpp b/src/apps/deskbar/WindowMenuItem.cpp index 69098a51c6..6562c04c67 100644 --- a/src/apps/deskbar/WindowMenuItem.cpp +++ b/src/apps/deskbar/WindowMenuItem.cpp @@ -36,9 +36,12 @@ All rights reserved. #include "WindowMenuItem.h" +#include + #include #include #include +#include #include #include "BarApp.h" @@ -269,13 +272,15 @@ TWindowMenuItem::_Init(const char* name) } if (fMini) { - fBitmap = fCurrentWorkSpace - ? AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_WindowHiddenIcon) - : AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_WindowHiddenSwitchIcon); + if (fCurrentWorkSpace) + fBitmap = _FetchWindowVectorIcon(R_WindowHiddenIcon); + else + fBitmap = _FetchWindowVectorIcon(R_WindowHiddenSwitchIcon); } else { - fBitmap = fCurrentWorkSpace - ? AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_WindowShownIcon) - : AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_WindowShownSwitchIcon); + if (fCurrentWorkSpace) + fBitmap = _FetchWindowVectorIcon(R_WindowShownIcon); + else + fBitmap = _FetchWindowVectorIcon(R_WindowShownSwitchIcon); } BFont font(be_plain_font); @@ -287,3 +292,26 @@ TWindowMenuItem::_Init(const char* name) SetLabel(name); } + + +const BBitmap* +TWindowMenuItem::_FetchWindowVectorIcon(int32 id) +{ + const BBitmap* windowIcon = NULL; + const uint8* data; + size_t size; + + data = (const uint8*)AppResSet()->FindResource(B_VECTOR_ICON_TYPE, id, &size); + if (data != NULL && size > 0) { + // seems valid, scale bitmap according to font size + BBitmap* icon = new(std::nothrow) BBitmap( + BRect(B_ORIGIN, be_control_look->ComposeIconSize(B_MINI_ICON)), B_RGBA32); + if (icon != NULL && icon->InitCheck() == B_OK + && BIconUtils::GetVectorIcon((const uint8*)data, size, icon) == B_OK) { + windowIcon = icon; + } else + delete icon; + } + + return windowIcon; +} diff --git a/src/apps/deskbar/WindowMenuItem.h b/src/apps/deskbar/WindowMenuItem.h index 30f0b22ab9..5bcc4e1664 100644 --- a/src/apps/deskbar/WindowMenuItem.h +++ b/src/apps/deskbar/WindowMenuItem.h @@ -76,6 +76,7 @@ protected: private: void _Init(const char* name); + const BBitmap* _FetchWindowVectorIcon(int32 id); int32 fID; bool fMini; diff --git a/src/apps/deskbar/icons.h b/src/apps/deskbar/icons.h index 15565a6c09..22cd22b20f 100644 --- a/src/apps/deskbar/icons.h +++ b/src/apps/deskbar/icons.h @@ -8,6 +8,5 @@ enum { R_WindowHiddenIcon = 21, R_ResizeIcon = 22, R_WindowShownSwitchIcon = 23, - R_WindowHiddenSwitchIcon = 24, - R_TeamIconVector = 25 + R_WindowHiddenSwitchIcon = 24 }; diff --git a/src/apps/deskbar/icons.rdef b/src/apps/deskbar/icons.rdef index ed8495b64d..3e8dc9f066 100644 --- a/src/apps/deskbar/icons.rdef +++ b/src/apps/deskbar/icons.rdef @@ -1,7 +1,7 @@ #include "icons.h" -resource(R_LeafLogoBitmap) #'VICN' array { +resource(R_LeafLogoBitmap) vector_icon { $"6E6369660102010602438798C0E5A13DF937406BAE4D330E4CA0420000AAFFFF" $"00337F010216C676C7BCC676C7BCCDE4CEECDD2DCFB2D596D105DBF0CEC5DAD9" $"CCB5DB59CDA2E352D196EA2CC98EE790CB83E947C8D3E65EC72EE82DC964E8B0" @@ -81,32 +81,7 @@ resource(R_SmallNewGroupIcon) archive(, 0x00000000) BBitmap { } }; -resource(R_TeamIcon) archive(, 0x00000000) BBitmap { - "_frame" = rect { 0.0, 0.0, 19.0, 15.0 }, - "_cspace" = 4, - "_bmflags" = 1, - "_rowbytes" = 20, - "_data" = array { - $"FFFF0000000000000000000000000000FFFFFFFF" - $"FFFF008F8F8F8F8F8F8F8F8F8F00000000FFFFFF" - $"FFFF008F8F8F8F8F0000000000D9D90000FFFFFF" - $"FFFF008F8F3F8F3F00D9001B00D9D9AA01FFFFFF" - $"FFFF008F3F3F3F3F8F8F00001500000A0016FFFF" - $"FFFF008F8F3F8F3F3F8F8F8F001B151C1C00FFFF" - $"FFFF008F8F3F8F3F8F8F8F8F0015150B1B00FFFF" - $"FFFF008F8F8F8F8F8F8F8F8F8F0100001C00FFFF" - $"FFFF008F8F8F8F8F8F8F8F8F8F0166001C00FFFF" - $"FFFF00000000000000000000000066660000FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFF0066660000FFFF" - $"FFFFFFFFFFFFFFFFFF000000000000000000FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFF0066668D00FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFF0066668D00FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFF0000AAAA0011FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFF000000000011FFFF" - } -}; - -resource(R_TeamIconVector) #'VICN' array { +resource(R_TeamIcon) vector_icon { $"6E6369661905FF03000001020006023F900F3DA311BDA3113F900F49E579C426" $"607B77AD779F66986605F905F905F9020006023D81E73ACACFBCF5653FB7664A" $"22313F685CA6A4D0FFB781C0FF036697CB020006023C194E3ADC9FBE40D23F4E" @@ -178,54 +153,20 @@ resource(R_GenericAppIcon) archive(, 0x00000000) BBitmap { } }; -resource(R_WindowShownIcon) archive(, 0x00000000) BBitmap { - "_frame" = rect { 0.0, 0.0, 15.0, 15.0 }, - "_cspace" = 4, - "_bmflags" = 1, - "_rowbytes" = 16, - "_data" = array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FF0F0F0F0F0F0F0F0F0FFFFFFFFFFFFF" - $"FF0FFCFCFCFCFCFCFC00FFFFFFFFFFFF" - $"FF0FBDBDBDBDBDBDBD0F0F0F0F0FFFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF00000000000000000000000000FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - } +resource(R_WindowShownIcon) vector_icon { + $"6E63696605050005FF0578020006020000003A0000C000000000004BFFFF43FF" + $"FF9AFFFF65FFFFAF1205C8050A0620585458542C502C505420540A0A24542424" + $"4024402C542C542844284420202020540A042020202C402C40200A04202C2058" + $"5458542C0A044024402844284424060A030102202C240A040103202C240A0101" + $"03023EC4EC0000000000003EE8BA48800046D1740A020101202C240A00010020" + $"2C240A000104202C24" }; -resource(R_WindowHiddenIcon) archive(, 0x00000000) BBitmap { - "_frame" = rect { 0.0, 0.0, 15.0, 15.0 }, - "_cspace" = 4, - "_bmflags" = 1, - "_rowbytes" = 16, - "_data" = array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FF0F0F0F0F0F0F0F0F0FFFFFFFFFFFFF" - $"FF0F1313131313131300FFFFFFFFFFFF" - $"FF0F131313131313130F0F0F0F0FFFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF0F191919191919191919191900FFFF" - $"FF00000000000000000000000000FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - } +resource(R_WindowHiddenIcon) vector_icon { + $"6E6369660405000578059805C8050A0620585458542C502C505420540A0A2454" + $"24244024402C542C542844284420202020540A042020202C402C40200A04202C" + $"20585458542C0A044024402844284424050A020102202C240A030103202C240A" + $"010101202C240A000100202C240A000104202C24" }; resource(R_ResizeIcon) archive(, 0x00000000) BBitmap { @@ -245,52 +186,26 @@ resource(R_ResizeIcon) archive(, 0x00000000) BBitmap { } }; -resource(R_WindowShownSwitchIcon) archive(, 0x00000000) BBitmap { - "_frame" = rect { 0.0, 0.0, 23.0, 15.0 }, - "_cspace" = 4, - "_bmflags" = 1, - "_rowbytes" = 24, - "_data" = array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0C0C0C0C0C0C0C0C0CFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0CFAFAFAFAFAFAFA00FFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0CF9F9F9F9F9F9F90C0C0C0C0CFFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"FFFF0CFF0C0C0CFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"FFFFFFFFFFFFFFFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"FFFFFFFFFFFFFFFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"0CFF0C0C0C0C0CFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"FFFFFFFFFFFFFFFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"FFFFFFFFFFFFFFFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"FF0CFF0C0C0C0CFFFF0C193F3F3F3F3F3F3F3F3F1900FFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF00000000000000000000000000FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - } +resource(R_WindowShownSwitchIcon) vector_icon { + $"6E63696605050005FF0578020006020000003A0000C000000000004BFFFF43FF" + $"FF9AFFFF65FFFFAF1205C8060A0620585458542C502C505420540A0A24542424" + $"4024402C542C542844284420202020540A042020202C402C40200A04202C2058" + $"5458542C0A0440244028442844240A0450305050305030300C0A030102202C24" + $"0A040103202C240A010103023EC4EC0000000000003EE8BA48800046D1740A02" + $"0101202C240A000100202C240A000104202C240A020105023C00000000000000" + $"003800008D6DB64900000A020105023A00000000000000003800004500004A00" + $"000A02010502380000000000000000380000C000004900000A0201050237FFFF" + $"0000000000003800004300004A00000A0201050237FFFF000000000000380000" + $"4000004A80000A020105023B000000000000000038000042FFFF4A8000" }; -resource(R_WindowHiddenSwitchIcon) archive(, 0x00000000) BBitmap { - "_frame" = rect { 0.0, 0.0, 23.0, 15.0 }, - "_cspace" = 4, - "_bmflags" = 1, - "_rowbytes" = 24, - "_data" = array { - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0C0C0C0C0C0C0C0C0CFFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0C1010101010101000FFFFFFFFFFFF" - $"FFFFFFFFFFFFFFFFFF0C101010101010100C0C0C0C0CFFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FFFF0CFF0C0C0CFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"0CFF0C0C0C0C0CFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FF0CFF0C0C0C0CFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF0C191919191919191919191900FFFF" - $"FFFFFFFFFFFFFFFFFF00000000000000000000000000FFFF" - $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - } +resource(R_WindowHiddenSwitchIcon) vector_icon { + $"6E6369660405000578059805C8050A0620585458542C502C505420540A0A2454" + $"24244024402C542C542844284420202020540A042020202C402C40200A04202C" + $"20585458542C0A0440244028442844240B0A020102202C240A030103202C240A" + $"010101202C240A000100202C240A000104202C240A0101040242000000000000" + $"00003E0000CBC00048E0000A010104023E00000000000000003E0000C8000048" + $"E0000A010104023DFFFF0000000000003E0000C6FFFF49E0000A010104023DFF" + $"FF0000000000003E0000C77FFF4A70000A010104024000000000000000003E00" + $"00C8FFFF49E0000A010104024100000000000000003E0000CAA0004A7000" };