All checks were successful
Build and test / build (push) Successful in 1m56s
Why are command-line utilities stored in "apps"? And why are apps like "editor" or "terminal" top-level directories? Command-line utilities now go in "utils". GUI stuff now goes in "gui". This includes: libui -> gui/libui, wind -> gui/wind, GUI apps -> gui/apps, editor&terminal -> gui/apps... System services go in "system".
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
/**
|
|
* @file Alignment.cpp
|
|
* @author apio (cloudapio.eu)
|
|
* @brief UI component alignment.
|
|
*
|
|
* @copyright Copyright (c) 2023, the Luna authors.
|
|
*
|
|
*/
|
|
|
|
#include <ui/Alignment.h>
|
|
|
|
namespace ui
|
|
{
|
|
Rect align(Rect container, Rect contained, VerticalAlignment valign, HorizontalAlignment halign)
|
|
{
|
|
Rect result;
|
|
result.width = contained.width;
|
|
result.height = contained.height;
|
|
result.pos.y = container.pos.y;
|
|
result.pos.x = container.pos.x;
|
|
|
|
switch (valign)
|
|
{
|
|
case VerticalAlignment::Top: break;
|
|
case VerticalAlignment::Center: result.pos.y += (container.height - contained.height) / 2; break;
|
|
case VerticalAlignment::Bottom: result.pos.y += container.height - contained.height; break;
|
|
default: break;
|
|
}
|
|
|
|
switch (halign)
|
|
{
|
|
case HorizontalAlignment::Left: break;
|
|
case HorizontalAlignment::Center: result.pos.x += (container.width - contained.width) / 2; break;
|
|
case HorizontalAlignment::Right: result.pos.x += container.width - contained.width; break;
|
|
default: break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
}
|