From 764f8ba647d6cb506983b338fce2bf389e4f83d4 Mon Sep 17 00:00:00 2001 From: zwim <36999612+zwim@users.noreply.github.com> Date: Wed, 6 Mar 2024 16:49:09 +0100 Subject: [PATCH 1/2] bump base: Use Bresenham's algorithm and anti-aliasing for rounded corners --- base | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base b/base index 8f5f38d73..ab2828199 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit 8f5f38d732bba170abdae5df015f9f4b475fac6e +Subproject commit ab2828199a6811bac3326f013bbb7051a8d1f73a From 58b3367d180dd46c0c9781b6067bf8b7f0cee2d0 Mon Sep 17 00:00:00 2001 From: zwim <36999612+zwim@users.noreply.github.com> Date: Mon, 26 Feb 2024 19:51:01 +0100 Subject: [PATCH 2/2] anti alias rounded corners in UI --- frontend/apps/filemanager/filemanagermenu.lua | 9 +++++++++ .../ui/widget/container/framecontainer.lua | 18 ++++++++++++------ .../ui/widget/container/inputcontainer.lua | 2 +- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index 34888217b..329fcf719 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -624,6 +624,15 @@ To: end, }) end + table.insert(self.menu_items.developer_options.sub_item_table, { + text = _("Anti-alias rounded corners"), + checked_func = function() + return G_reader_settings:nilOrTrue("anti_alias_ui") + end, + callback = function() + G_reader_settings:flipNilOrTrue("anti_alias_ui") + end, + }) --- @note: Currently, only Kobo implements this quirk if Device:hasEinkScreen() and Device:isKobo() then table.insert(self.menu_items.developer_options.sub_item_table, { diff --git a/frontend/ui/widget/container/framecontainer.lua b/frontend/ui/widget/container/framecontainer.lua index 9e0652d1e..855684f6f 100644 --- a/frontend/ui/widget/container/framecontainer.lua +++ b/frontend/ui/widget/container/framecontainer.lua @@ -96,7 +96,7 @@ function FrameContainer:paintTo(bb, x, y) if not self.dimen then self.dimen = Geom:new{ x = x, y = y, - w = my_size.w, h = my_size.h + w = my_size.w, h = my_size.h, } else self.dimen.x = x @@ -110,11 +110,16 @@ function FrameContainer:paintTo(bb, x, y) shift_x = container_width - my_size.w end - --- @todo get rid of margin here? 13.03 2013 (houqp) if self.background then - bb:paintRoundedRect(x, y, - container_width, container_height, - self.background, self.radius) + if not self.radius or not self.bordersize then + bb:paintRoundedRect(x, y, + container_width, container_height, + self.background, self.radius) + else + bb:paintRoundedRect(x, y, + container_width, container_height, + self.background, self.radius + self.bordersize) + end end if self.stripe_width and self.stripe_color and not self.stripe_over then -- (No support for radius when hatched/stripe) @@ -130,10 +135,11 @@ function FrameContainer:paintTo(bb, x, y) self.inner_bordersize, self.color, self.radius) end if self.bordersize > 0 then + local anti_alias = G_reader_settings:nilOrTrue("anti_alias_ui") bb:paintBorder(x + self.margin, y + self.margin, container_width - self.margin * 2, container_height - self.margin * 2, - self.bordersize, self.color, self.radius) + self.bordersize, self.color, self.radius, anti_alias) end if self[1] then self[1]:paintTo(bb, diff --git a/frontend/ui/widget/container/inputcontainer.lua b/frontend/ui/widget/container/inputcontainer.lua index 2f4957335..9ae27e42d 100644 --- a/frontend/ui/widget/container/inputcontainer.lua +++ b/frontend/ui/widget/container/inputcontainer.lua @@ -74,7 +74,7 @@ function InputContainer:paintTo(bb, x, y) local content_size = self[1]:getSize() self.dimen = Geom:new{ x = x, y = y, - w = content_size.w, h = content_size.h + w = content_size.w, h = content_size.h, } else self.dimen.x = x