mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-20 19:45:12 +00:00
LibDraw: Add orientation-based offset/size manipulation helpers.
These are useful when doing widgets that can be switched between vertical and horizontal mode, such as GSlider. The idea is that instead of using "x" and "y" directly, you use the "primary" and "secondary" offset/size for the Orientation you're configured in.
This commit is contained in:
parent
26e252b0f8
commit
8ab1923abe
Notes:
sideshowbarker
2024-07-19 13:07:19 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/8ab1923abe4
2 changed files with 73 additions and 0 deletions
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <AK/AKString.h>
|
||||
#include <AK/LogStream.h>
|
||||
#include <LibDraw/Orientation.h>
|
||||
|
||||
class Rect;
|
||||
struct WSAPI_Point;
|
||||
|
@ -68,6 +69,32 @@ public:
|
|||
|
||||
bool is_null() const { return !m_x && !m_y; }
|
||||
|
||||
int primary_offset_for_orientation(Orientation orientation) const
|
||||
{
|
||||
return orientation == Orientation::Vertical ? y() : x();
|
||||
}
|
||||
|
||||
void set_primary_offset_for_orientation(Orientation orientation, int value)
|
||||
{
|
||||
if (orientation == Orientation::Vertical)
|
||||
set_y(value);
|
||||
else
|
||||
set_x(value);
|
||||
}
|
||||
|
||||
int secondary_offset_for_orientation(Orientation orientation) const
|
||||
{
|
||||
return orientation == Orientation::Vertical ? x() : y();
|
||||
}
|
||||
|
||||
void set_secondary_offset_for_orientation(Orientation orientation, int value)
|
||||
{
|
||||
if (orientation == Orientation::Vertical)
|
||||
set_x(value);
|
||||
else
|
||||
set_y(value);
|
||||
}
|
||||
|
||||
private:
|
||||
int m_x { 0 };
|
||||
int m_y { 0 };
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <AK/AKString.h>
|
||||
#include <AK/LogStream.h>
|
||||
#include <LibDraw/Orientation.h>
|
||||
#include <LibDraw/Point.h>
|
||||
#include <LibDraw/Size.h>
|
||||
#include <LibDraw/TextAlignment.h>
|
||||
|
@ -132,6 +133,51 @@ public:
|
|||
&& bottom() >= other.bottom();
|
||||
}
|
||||
|
||||
int primary_offset_for_orientation(Orientation orientation) const { return m_location.primary_offset_for_orientation(orientation); }
|
||||
void set_primary_offset_for_orientation(Orientation orientation, int value) { m_location.set_primary_offset_for_orientation(orientation, value); }
|
||||
int secondary_offset_for_orientation(Orientation orientation) const { return m_location.secondary_offset_for_orientation(orientation); }
|
||||
void set_secondary_offset_for_orientation(Orientation orientation, int value) { m_location.set_secondary_offset_for_orientation(orientation, value); }
|
||||
|
||||
int primary_size_for_orientation(Orientation orientation) const
|
||||
{
|
||||
return orientation == Orientation::Vertical ? height() : width();
|
||||
}
|
||||
|
||||
void set_primary_size_for_orientation(Orientation orientation, int value)
|
||||
{
|
||||
if (orientation == Orientation::Vertical)
|
||||
set_height(value);
|
||||
else
|
||||
set_width(value);
|
||||
}
|
||||
|
||||
int secondary_size_for_orientation(Orientation orientation) const
|
||||
{
|
||||
return orientation == Orientation::Vertical ? width() : height();
|
||||
}
|
||||
|
||||
void set_secondary_size_for_orientation(Orientation orientation, int value)
|
||||
{
|
||||
if (orientation == Orientation::Vertical)
|
||||
set_width(value);
|
||||
else
|
||||
set_height(value);
|
||||
}
|
||||
|
||||
int first_edge_for_orientation(Orientation orientation) const
|
||||
{
|
||||
if (orientation == Orientation::Vertical)
|
||||
return top();
|
||||
return left();
|
||||
}
|
||||
|
||||
int last_edge_for_orientation(Orientation orientation) const
|
||||
{
|
||||
if (orientation == Orientation::Vertical)
|
||||
return bottom();
|
||||
return right();
|
||||
}
|
||||
|
||||
int left() const { return x(); }
|
||||
int right() const { return x() + width() - 1; }
|
||||
int top() const { return y(); }
|
||||
|
|
Loading…
Add table
Reference in a new issue