// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once #include #include #include #include "Common.hpp" #include "Item.hpp" #include "Style.hpp" namespace gui { class Arc : public Item { public: class ShapeParams { public: ShapeParams &setCenterPoint(Point _center) noexcept; ShapeParams &setRadius(Length _radius) noexcept; ShapeParams &setStartAngle(trigonometry::Degrees _angle) noexcept; ShapeParams &setSweepAngle(trigonometry::Degrees _angle) noexcept; ShapeParams &setBorderColor(Color _color) noexcept; ShapeParams &setPenWidth(std::uint8_t _width) noexcept; ShapeParams &setFocusPenWidth(std::uint8_t _width) noexcept; private: Point center; Length radius{0U}; trigonometry::Degrees start{0U}; trigonometry::Degrees sweep{0U}; Color borderColor; std::uint8_t penWidth{1U}; std::uint8_t focusPenWidth{style::window::default_border_focus_w}; friend class Arc; }; Arc(Item *parent, const ShapeParams ¶ms); void setCenter(Point point) noexcept; void setStartAngle(trigonometry::Degrees angle) noexcept; void setSweepAngle(trigonometry::Degrees angle) noexcept; trigonometry::Degrees getSweepAngle() const noexcept; trigonometry::Degrees getStartAngle() const noexcept; void buildDrawListImplementation(std::list &commands) override; protected: Arc(Item *parent, Point _center, Length _radius, trigonometry::Degrees _start, trigonometry::Degrees _sweep, Color _color, std::uint8_t _penWidth, std::uint8_t _focusPenWidth); Point center; Length radius; trigonometry::Degrees start; trigonometry::Degrees sweep; Color color; std::uint8_t penWidth; std::uint8_t focusPenWidth; }; } // namespace gui