From 874a2a7287b256f25454f58b14a6594f33337d51 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 25 Aug 2022 16:45:48 -0400 Subject: [PATCH] BControlLook: Introduce ComposeIconSize(). This takes an int32 (e.g. B_MINI_ICON or another constant) and then returns a BSize scaled appropriately, the same as ComposeSpacing() does already for the *_SPACING constants. This will be used to replace icon size computations throughout the tree. --- headers/os/interface/ControlLook.h | 1 + src/kits/interface/ControlLook.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/headers/os/interface/ControlLook.h b/headers/os/interface/ControlLook.h index 9ad9343d00..9ba32efb93 100644 --- a/headers/os/interface/ControlLook.h +++ b/headers/os/interface/ControlLook.h @@ -102,6 +102,7 @@ public: virtual float DefaultItemSpacing() const = 0; static float ComposeSpacing(float spacing); + static BSize ComposeIconSize(int32 size); virtual uint32 Flags(BControl* control) const = 0; diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index 557059efaa..db5521efa6 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -45,6 +45,18 @@ BControlLook::ComposeSpacing(float spacing) } +BSize +BControlLook::ComposeIconSize(int32 size) +{ + float scale = be_plain_font->Size() / 12.0f; + if (scale < 1.0f) + scale = 1.0f; + + const int32 scaled = size * scale; + return BSize(scaled - 1, scaled - 1); +} + + void BControlLook::DrawLabel(BView* view, const char* label, const BBitmap* icon, BRect rect, const BRect& updateRect, const rgb_color& base, uint32 flags,