Simple GUI Library
circle.cpp
Go to the documentation of this file.
1/**
2 * @author Nikita Mochalov (github.com/tralf-strues)
3 * @file circle.cpp
4 * @date 2021-12-08
5 *
6 * @copyright Copyright (c) 2021
7 */
8
10
11using namespace Sgl;
12
13Circle::Circle(int32_t radius, const Border* border) : m_Radius(radius)
14{
15 setBorder(border);
16}
17
18int32_t Circle::getRadius() const { return m_Radius; }
19void Circle::setRadius(int32_t radius) { m_Radius = radius; }
20
21void Circle::render(const Sml::Rectangle<int32_t>& targetRegion)
22{
23 renderShadow(targetRegion);
24
25 Sml::Circle circlePrimitive = Sml::Circle(targetRegion.pos + getLayoutPos() + m_Radius* Sml::Vec2i(1, 1),
26 m_Radius + 1);
27
28 Sml::Renderer::getInstance().setColor(getFillColor());
29 Sml::renderFilledCircle(circlePrimitive);
30
31 if (getBorder() != nullptr)
32 {
33 Sml::Renderer::getInstance().setColor(getBorder()->getColor());
34 Sml::renderCircle(circlePrimitive);
35 }
36}
37
38int32_t Circle::computePrefWidth(int32_t height) const { return 2 * m_Radius + 1; }
39int32_t Circle::computePrefHeight(int32_t width) const { return 2 * m_Radius + 1; }