1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:07:35 +00:00

LibGfx: Add missing TextAlignment::BottomLeft

This commit is contained in:
Linus Groh 2021-05-21 01:03:02 +01:00 committed by Andreas Kling
parent 8cbdcffd05
commit 9dd3203cc6
6 changed files with 19 additions and 5 deletions

View file

@ -353,11 +353,12 @@ T* Object::find_descendant_of_type_named(String const& name) requires IsBaseOf<O
#define REGISTER_TEXT_ALIGNMENT_PROPERTY(property_name, getter, setter) \
REGISTER_ENUM_PROPERTY( \
property_name, getter, setter, Gfx::TextAlignment, \
{ Gfx::TextAlignment::TopLeft, "TopLeft" }, \
{ Gfx::TextAlignment::CenterLeft, "CenterLeft" }, \
{ Gfx::TextAlignment::Center, "Center" }, \
{ Gfx::TextAlignment::CenterLeft, "CenterLeft" }, \
{ Gfx::TextAlignment::CenterRight, "CenterRight" }, \
{ Gfx::TextAlignment::TopLeft, "TopLeft" }, \
{ Gfx::TextAlignment::TopRight, "TopRight" }, \
{ Gfx::TextAlignment::BottomLeft, "BottomLeft" }, \
{ Gfx::TextAlignment::BottomRight, "BottomRight" })
#define REGISTER_FONT_WEIGHT_PROPERTY(property_name, getter, setter) \

View file

@ -1229,6 +1229,7 @@ void draw_text_line(const IntRect& a_rect, const TextType& text, const Font& fon
switch (alignment) {
case TextAlignment::TopLeft:
case TextAlignment::CenterLeft:
case TextAlignment::BottomLeft:
break;
case TextAlignment::TopRight:
case TextAlignment::CenterRight:
@ -1501,6 +1502,9 @@ void do_draw_text(const IntRect& rect, const TextType& text, const Font& font, T
case TextAlignment::Center:
bounding_rect.center_within(rect);
break;
case TextAlignment::BottomLeft:
bounding_rect.set_location({ rect.x(), (rect.bottom() + 1) - bounding_rect.height() });
break;
case TextAlignment::BottomRight:
bounding_rect.set_location({ (rect.right() + 1) - bounding_rect.width(), (rect.bottom() + 1) - bounding_rect.height() });
break;

View file

@ -114,6 +114,10 @@ void Rect<T>::align_within(const Rect<T>& other, TextAlignment alignment)
set_x(other.x() + other.width() - width());
center_vertically_within(other);
return;
case TextAlignment::BottomLeft:
set_x(other.x());
set_y(other.y() + other.height() - height());
return;
case TextAlignment::BottomRight:
set_x(other.x() + other.width() - width());
set_y(other.y() + other.height() - height());

View file

@ -12,11 +12,12 @@
namespace Gfx {
#define GFX_ENUMERATE_TEXT_ALIGNMENTS(M) \
M(TopLeft) \
M(CenterLeft) \
M(Center) \
M(CenterLeft) \
M(CenterRight) \
M(TopLeft) \
M(TopRight) \
M(BottomLeft) \
M(BottomRight)
enum class TextAlignment {