9#include "sml/graphics_wrapper/primitives.h"
14 Border::Border(int32_t thickness, Sml::Color color)
15 : m_Thickness(thickness), m_Color(color) {}
17 Border::Border(
const Insets& thickness, Sml::Color color)
18 : m_Thickness(thickness), m_Color(color) {}
21 const Insets& Border::getThickness()
const
26 Sml::Color Border::getColor()
const
31 void Border::encloseArea(
const Border* border,
const Sml::Rectangle<int32_t>& targetRegion)
33 if (border ==
nullptr) {
return; }
35 Sml::Rectangle<int32_t> topBorder{targetRegion.pos, targetRegion.width, border->getThickness().top};
36 Sml::Rectangle<int32_t> leftBorder{targetRegion.pos, border->getThickness().left, targetRegion.height};
38 Sml::Rectangle<int32_t> bottomBorder;
39 bottomBorder.pos.x = targetRegion.pos.x;
40 bottomBorder.pos.y = targetRegion.pos.y + targetRegion.height - border->getThickness().bottom;
41 bottomBorder.width = targetRegion.width;
42 bottomBorder.height = border->getThickness().bottom;
44 Sml::Rectangle<int32_t> rightBorder;
45 rightBorder.pos.x = targetRegion.pos.x + targetRegion.width - border->getThickness().right;
46 rightBorder.pos.y = targetRegion.pos.y;
47 rightBorder.width = border->getThickness().right;
48 rightBorder.height = targetRegion.height;
50 Sml::Renderer::getInstance().setColor(border->getColor());
52 if (border->getThickness().top > 0)
54 Sml::renderFilledRect(topBorder);
57 if (border->getThickness().right > 0)
59 Sml::renderFilledRect(rightBorder);
62 if (border->getThickness().bottom > 0)
64 Sml::renderFilledRect(bottomBorder);
67 if (border->getThickness().left > 0)
69 Sml::renderFilledRect(leftBorder);