Deskbar: Made the leaf scale with the font size

* It's now a vector icon as well.
* Vertical mode doesn't look that good anymore with higher font sizes,
  but I didn't understand how to do it properly.

Change-Id: I0eed0e2873b270c349dfd3af117cfcb751e590a1
Reviewed-on: https://review.haiku-os.org/671
Reviewed-by: Stephan Aßmus <[email protected]>
This commit is contained in:
Axel Dörfler
2018-11-06 00:05:42 +00:00
committed by waddlesplash
parent b791e997bf
commit 419bc0a2ca
5 changed files with 43 additions and 197 deletions
+21 -2
View File
@@ -36,9 +36,12 @@ All rights reserved.
#include "BarMenuBar.h"
#include <algorithm>
#include <Bitmap.h>
#include <ControlLook.h>
#include <Debug.h>
#include <IconUtils.h>
#include <NodeInfo.h>
#include "icons.h"
@@ -108,8 +111,24 @@ TBarMenuBar::TBarMenuBar(BRect frame, const char* name, TBarView* barView)
TDeskbarMenu* beMenu = new TDeskbarMenu(barView);
TBarWindow::SetDeskbarMenu(beMenu);
fDeskbarMenuItem = new TBarMenuTitle(0.0f, 0.0f,
AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_LeafLogoBitmap), beMenu);
BBitmap* icon = NULL;
size_t dataSize;
const void* data = AppResSet()->FindResource(B_VECTOR_ICON_TYPE,
R_LeafLogoBitmap, &dataSize);
if (data != NULL) {
// Scale bitmap according to font size
float width = std::max(63.f, ceilf(63 * be_plain_font->Size() / 12.f));
float height = std::max(22.f, ceilf(22 * be_plain_font->Size() / 12.f));
icon = new BBitmap(BRect(0, 0, width - 1, height - 1), B_RGBA32);
if (icon->InitCheck() != B_OK
|| BIconUtils::GetVectorIcon((const uint8*)data, dataSize, icon)
!= B_OK) {
delete icon;
icon = NULL;
}
}
fDeskbarMenuItem = new TBarMenuTitle(0.0f, 0.0f, icon, beMenu);
AddItem(fDeskbarMenuItem);
}
+3 -1
View File
@@ -122,7 +122,9 @@ TBarMenuTitle::DrawContent()
iconRect.OffsetTo(frame.LeftTop());
float widthOffset = rintf((frame.Width() - iconRect.Width()) / 2);
float heightOffset = rintf((frame.Height() - iconRect.Height()) / 2);
float heightOffset = 0;
if (frame.Height() > iconRect.Height() + 2)
heightOffset = rintf((frame.Height() - iconRect.Height()) / 2);
iconRect.OffsetBy(widthOffset - 1.0f, heightOffset + 2.0f);
menu->DrawBitmapAsync(fIcon, iconRect);
+1 -1
View File
@@ -395,7 +395,7 @@ TBarView::PlaceDeskbarMenu()
BRect menuFrame(Bounds());
if (fVertical) {
width = static_cast<TBarApp*>(be_app)->Settings()->width;
height = kMenuBarHeight;
height = 4 + fReplicantTray->MaxReplicantHeight();
menuFrame.bottom = menuFrame.top + height;
} else {
width = gMinimumWindowWidth;
+6 -4
View File
@@ -106,10 +106,12 @@ TExpandoMenuBar::TExpandoMenuBar(TBarView* barView, bool vertical)
// top or bottom mode, add deskbar menu and sep for menubar tracking
// consistency
const BBitmap* logoBitmap = AppResSet()->FindBitmap(B_MESSAGE_TYPE,
R_LeafLogoBitmap);
if (logoBitmap != NULL)
fDeskbarMenuWidth = logoBitmap->Bounds().Width() + 16;
// TODO: this is broken code
fDeskbarMenuWidth = 63 + 16;
// const BBitmap* logoBitmap = AppResSet()->FindBitmap(B_MESSAGE_TYPE,
// R_LeafLogoBitmap);
// if (logoBitmap != NULL)
// fDeskbarMenuWidth = logoBitmap->Bounds().Width() + 16;
}
+12 -189
View File
@@ -1,195 +1,18 @@
#include "icons.h"
resource(R_LeafLogoBitmap) archive(, 0x00000000) BBitmap {
"_frame" = rect { 0.0, 0.0, 62.0, 22.0 },
"_cspace" = 8200,
"_bmflags" = 0,
"_rowbytes" = 252,
"_data" = array {
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000180000002"
$"8080000280000002000000000000000000000000FF000001000000008B401344"
$"8D3E13778E3F1395904015AE914114C0924315CE934315DD944515E3964616DC"
$"974716CD984717BE9A4817A99B4A188A9C48185F9F4D1738AA55181500000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"000000000000000000000000FF00000180000002808000020000000000000000"
$"00000000000000008C3F13358D3E1531000000008E401458914114FF964415FF"
$"9A4716FF9D4817FF9F4A17FFA04B17FF9F4B17FF9F4C18FFA24D18FFA54F19FF"
$"A65019FFA75119FFA44F19FFA9521AFFA24F19E99F4F184A0000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"FF0000018080000280800002000000000000000000000000853D14198D3E1262"
$"8E4013AE904214F99142156100000000954515D6A34C18FF9A4817FF9C4A17FF"
$"9C4B18FF9E4C18FE9F4E18FDA14E19FEA24F19FEA35019FEA45119FDA5521AFC"
$"A6521AFBAF571CFFA7531AF1A5511952AA550003000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000018080000280800002"
$"0000000000000000000000008E4014349042148C924214D9944415FF9B4816FF"
$"A64D18FF994916469B491B1CA04C18FF9F4D18FDA14F18FAA34F19FCA45119FD"
$"A6511AFEA7521AFEA8541BFFA9551BFFAB551BFEAF581CFFB15A1DFFB25A1DFF"
$"AE591CF2B0581C37000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"00000000000000000000000080000002AA550003000000000000000000000001"
$"91431548934315A7934315EF9C4816FF9F4A17FF9D4A17FF9C4A17FBAA521AFF"
$"9F4E1758A251183FB0561BFFA7521AFCA9541BFFAA551BFFAC561BFFAD571CFF"
$"AF581CFFB0591DFFB15A1DFFB45C1DFFB35B1DEDB45D1DECBC611FFFB35D1D68"
$"00000000AA550003AA5500030000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"FF00000180800002FF00000100000000000000009445154A954516B9964515FA"
$"A04B17FFA04C18FF9F4C18FFA04D18FCA34F19FBA4511AFAB2581CFFA8541BAD"
$"AB561C77B85D1EFFAE581CFCB05A1DFFB25B1DFFB45C1EFFB55D1EFFB75E1EFF"
$"B85F1FFFB9601FFDC16420FFBB621FCBB9611F3ABB612047FF80000200000000"
$"AA55000300000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"00000000FF000001800000028080000280800002FF0000010000000080800002"
$"0000000000000000934617219746179D974716FBA34D18FFA24D18FFA04E19FF"
$"A34F19FBA5511AFCA7531AFFAA551BFFAC571CFFB0591CFFB0591DF8B35C1DE3"
$"B85E1EFFB75E1EFEB9601FFFBA611FFFBC6220FFBD6320FFBF6420FFC06521FF"
$"C16621FFC16621FCCA6B23FFC66A237400000000000000018080000200000000"
$"00000000FF000001000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000018080000280800002"
$"8080000200000000000000000000000000000000AA55000300000000994D1A0A"
$"9948176E9A4A17E1A54F19FFA44F19FFA34F19FEA65119FBA8541AFDAB561BFF"
$"AD581CFFB0591DFFB25B1DFFB55D1EFFB85E1EFEBB611FFFC06420FFBE6320FE"
$"C06520FFC16621FFC36721FFC46822FFC66922FFC76A22FFC86B23FFC96B22FD"
$"CB6D23FFCF6F24FFC868225300000000BF804004000000000000000000000000"
$"0000000080000002800000020000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000008080000280800002000000000000000000000000"
$"00000000000000008E471C129E49181500000000994916469D4C18CEA34E19FF"
$"A9521AFFA6521AFFA9531AFBAB551BFEAE581CFFB15A1DFFB35C1DFFB65E1EFF"
$"B9601FFFBB621FFFBE6320FFC06521FFC36621FEC56822FEC66A22FFC86B23FF"
$"CA6C23FFCB6D23FFCC6E24FFCE6F24FFCF6F24FFD06F24FED17024FDDD7827FF"
$"D170257400000000BF8040040000000000000000000000000000000000000000"
$"00000000FF000001800000028000000280000002000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"FF00000180800002000000000000000000000000893B140D8F44144094431579"
$"964616A5994816E39A48166A99660005A14E19EAB0561BFFA9541BFFAB551BFC"
$"AD581CFDB15A1DFFB35C1DFFB65E1EFFB9601FFFBC6220FFBF6420FFC26621FF"
$"C46822FFC76A22FFC96B23FFCB6D23FFCC6E24FFCF6F24FFD07024FFD27125FF"
$"D37225FFD47325FFD57426FFD57426FFD57526FBE67D29FFD77525A400000000"
$"00000000FF000001000000000000000000000000000000006F21085C70200010"
$"000000000000000000000000FF00000180000002800000028000000280000002"
$"FF00000100000000000000000000000000000000000000008000000280800002"
$"00000000000000008D43142691421480944415CC964516F79F4B17FFA14D18FF"
$"B6581CFFA24F187EA8531B84B85C1DFFAC571CFAB0591CFCB35C1DFFB65E1EFF"
$"B9601FFFBC6320FFBF6520FFC26721FFC56922FFC86B22FFCA6C23FFCD6E24FF"
$"CF7024FFD17125FFD37225FFD57325FFD67426FFD77526FFD97626FFDA7727FF"
$"DB7827FFDB7827FEDB7827FAEA802AFFDC7927CCC6711C0900000000BF804004"
$"00000000000000000000000000000000000000006F2109E86F2208DB6F230865"
$"6C1D0A1A00000000000000000000000000000000000000000000000180000002"
$"80800002555500035555000380800002AA550003000000000000000094430D13"
$"93431586944415E79D4917FFA24C18FFA24E18FFA34F19FFA45019FEAC551BFF"
$"AA561BC7AF581CEEB45C1DFFB55E1EFDB9601FFFBC6220FFBF6420FFC26721FF"
$"C56922FFC86B23FFCB6D23FFCE6F24FFD07124FFD37225FFD57426FFD77526FF"
$"D97626FFDA7727FFDC7927FFDD7A27FFDE7A28FFDF7B28FFE07B28FFE17C28FD"
$"E17C29FBED832BFFE07C28EAE3782B2400000000CC6633050000000000000000"
$"000000000000000000000000000000006F2208B5752409FF79260AFF71250AEC"
$"73270BA474280B5A78260F220000000000000000000000000000000000000000"
$"000000000000000000000000000000000000000094431645954516D39E4A17FF"
$"A14C18FFA04D18FFA24F19FDA5511AFCA9541AFCAC571BFDB0591CFEB55D1EFF"
$"B9601FFFBB611FFEBE6420FFC16621FFC56922FFC86B23FFCB6D23FFCE6F24FF"
$"D17125FFD47325FFD67426FFD87626FFDA7727FFDC7927FFDE7A28FFDF7B28FF"
$"E07C28FFE27C28FCE37D28FCE37E29FDE47E29FDE67E29FCE68029FEF4872CFF"
$"E57F2AEFE680293E00000000FF80400400000000000000000000000000000000"
$"000000000000000000000000661A000A6F22093C73240A8574270ACB75290BFB"
$"7B2D0DFF792D0DF27C300EC680330E92823410628638113B873810208833110F"
$"6633000500000000000000009545176F974717F8A34D18FFA04D18FFA34F19FC"
$"A6521AFCAA541BFEAD581CFFB15A1DFFB55D1EFFB8601FFFBD6320FFC06520FE"
$"C46821FFC76A22FFCA6C23FFCE6F24FFD17125FFD47325FFD67526FFD97626FF"
$"DB7827FFDD7927FFDF7B28FFE17C28FFE27D29FFE47E29FFE57F29FFE9812AFF"
$"EC832BFFEB822AFFEB822BFFEA822AFFEE842BFFF88A2DFFEA822BCCE6802734"
$"00000000AA550003FF0000010000000000000000000000000000000000000000"
$"000000000000000000000000000000000000000099330005772B0B2F792D0D65"
$"7C300EA07F320FD1823510F1863811FE883B12FC8C3E13EF8F4114DD934315CE"
$"964615C09A4917C7A74F19FFA55019FFA2501AFAA7531AFCAA551BFFAE581CFF"
$"B25B1DFFB65E1EFFB9601FFFBD6320FFC16621FFC56822FEC96B23FFCC6E24FF"
$"D07024FFD37225FFD67426FFD87626FFDB7827FFDD7A28FFE07B28FFE27D29FF"
$"E37E29FFE57F29FFE7802AFFE8812AFFE9822AFFEB832BFFEA832BF8EF852BFF"
$"F98B2DFFF78A2DFFF98B2DFFF1872CFFEC842B93DD88220F00000000FFFF0001"
$"FFFF000100000000000000000000000000000000000000000000000000000000"
$"0000000055000003FF0000010000000000000000000000000000000000000000"
$"8E391C0986361426883B11498A3D136D8F3F148D934315A7964616B99A4917C4"
$"9E4B18C2A24F19C5AB551BFFAD571CFFAE581CFCB25B1DFEB75E1EFFBA611FFF"
$"BE6420FFC26721FFC66A22FFCA6C23FFCE6F24FFD17125FFD47325FFD77526FF"
$"DA7727FFDD7927FFDF7B28FFE27D29FFE47E29FFE67F29FFE7802AFFE9822AFF"
$"EA832BFFEC832BFFED842BFFEE852BFDF68A2DFFF0862CCBEE872D5BEF842C5D"
$"EE852B6BF0862C74F0872B530000000000000000FF800002FFFF000100000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"00000000FF000001550000035500000380000002000000000000000000000000"
$"000000000000000000000000000000000000000000000000AA550003AA550003"
$"FF000001AD571C89B95F1EFFBC611FFFBA611FFCBE6420FDC36721FFC76A22FF"
$"CB6D23FFCF6F24FFD27225FFD67426FFD97626FFDC7827FFDE7A28FFE17C28FF"
$"E37E29FFE57F29FFE7802AFFEA822AFFEB832BFFEC842BFFEE852BFFEF862CFF"
$"F0872CFFF2872CFFF3892CFEF5892DFFF4892CF8F68B2D8FFA8C2D33FFAA5503"
$"000000000000000000000000FFAA5503FFFF0001000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000180000002AA550003AA55000355550003"
$"FF00000100000000000000000000000000000000000000000000000000000000"
$"00000000B8611F6CBE6420F9CE6D23FFC76A22FFCB6D23FCD07024FDD37225FF"
$"D77526FFDA7727FFDD7927FFDF7B28FFE27D29FFE47F29FFE7802AFFE9812AFF"
$"EB832BFFED852BFEEE852BFDF0862CFFF2882CFFF3892DFFF4892DFFF58A2DFF"
$"F68B2DFFF68B2DFFF78B2EFCF88C2EFFFF9932FFF78B2DECFA8D2B2F00000000"
$"FF800002FF550003000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"00000000000000000000000000000000000000000000000000000000FF000001"
$"80800002AA550003AA550003AA550003AA550003AA5500038040000400000000"
$"00000000C46A2341CB6D23D3DC7727FFD97626FFD77426FEDB7726FCDD7927FD"
$"E07B28FEE37E29FFE67F29FFE8812AFFEA822AFFEC842BFFEE852BFFF0862CFF"
$"F68A2DFFF58A2DFFF58A2DFCF68B2EFCF68B2DFDF78B2DFDF88C2DFDF98D2EFC"
$"F98C2EFDFA8D2EFFFF9631FFFA8D2EEDF98C2F5200000000BF804004FF800002"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"000000000000000000000000000000000000000000000000AA55000300000000"
$"00000000CC732614D474258FDA7726F6EB812AFFE77F29FFE47E29FFE67F29FD"
$"E9822BFCEB832BFCED842BFDEE862BFEF1872CFEF3892CFEF58A2DFEF68A2DF5"
$"FF912FFFFF9230FFFD8F2FFFFB8E2EFFFB8E2EFFFD8F2FFFFF902FFFFF9531FF"
$"FF9731FFFC8F2FCAF98E2D2D0000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"000000000000000000000000000000000000000000000000FF80000280800002"
$"0000000000000000DC7B283AE27E29A8E6802AF5F6892DFFF6892DFFF3882CFF"
$"F2872CFFF2882CFFF3892CFEF58A2DFEF78B2EFBFF912FFFF88C2EBCFB8D2E86"
$"FB8E2FE6FF9230FFFF9731FFFF9832FFFF9732FFFF9330FFFE902FE2FD8F2F82"
$"FF88330F00000000FF800002FFFF000100000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"000000000000000000000000000000000000000000000000FFFF0001AA550003"
$"000000000000000000000000E9822839ED832B8EEE862BD4F2882CFAFE8F2FFF"
$"FF9230FFFF9330FFFF9430FFFF9330FFFF9731FFFF9130FFFF912F51F6922E1C"
$"FF8F2F5DFF903085FF913094FF902F88FF92315EFF94311F0000000000000000"
$"FF80000280800002000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"00000000000000000000000000000000000000000000000000000000AA550003"
$"FFFF0001000000000000000000000000FF862813F4892E43F68B2E75F98C2D9E"
$"F98D2DB9FB8E2FC9FD8F2ED2FE8F2ECBFE902ECBFF902F910000000000000000"
$"000000000000000000000000000000000000000000000000FFAA0003FFFF0001"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"0000000000000000000000000000000000000000000000000000000000000000"
$"00000000"
}
resource(R_LeafLogoBitmap) #'VICN' array {
$"6E6369660102010602438798C0E5A13DF937406BAE4D330E4CA0420000AAFFFF"
$"00337F010216C676C7BCC676C7BCCDE4CEECDD2DCFB2D596D105DBF0CEC5DAD9"
$"CCB5DB59CDA2E352D196EA2CC98EE790CB83E947C8D3E65EC72EE82DC964E8B0"
$"C781EC54C75DEA32C760EDACC61DF0EEC3A2EFB0C520F275C1CDF601BD33F468"
$"BF49F4FCBC92F462BB37F4C7BC01F552BB76F736BB8DF646BB93F879B921FBD3"
$"B6F6FA7BB79CF63725E9D3B656EF07B542E819B7D5E796BCFDE824B9C7E67FBB"
$"8DE6A6B743E602B9C1E2FCB86CDBFCBBA2DF6DBA00DAA7BC42D578BF61D75FBE"
$"A3D491C0BFD330C351D3CDC211D327C229D30FBFD4D2FAC106CCC4C0D3C565C6"
$"0EC952C285BCFAC614B3A0C121B38EC270B3A0C121B373C436B373C436B373C4"
$"36C67BC7BFBDF1C83CC67BC7BF010A000100023CB85D0000000000003CB85D3E"
$"FEBEC1A530"
};
resource(R_LargeNewGroupIcon) archive(, 0x00000000) BBitmap {