Advertisement
kolbka_

Untitled

Dec 5th, 2021
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1.  
  2.  
  3. #ifndef BALL_ICON_H
  4. #define BALL_ICON_H
  5. #include "abstract_widgets.h"
  6. namespace widgets {
  7. struct ball_icon final : widget {
  8. private:
  9. int cur_radius;
  10.  
  11. public:
  12. explicit ball_icon(int radius_) : cur_radius(radius_) {
  13. }
  14. [[nodiscard]] int width() const final {
  15. return 2 * cur_radius + 1;
  16. }
  17. [[nodiscard]] int height() const final {
  18. return 2 * cur_radius + 1;
  19. }
  20. ball_icon *child_at(int x, int y) final {
  21. if ((cur_radius - x) * (cur_radius - x) +
  22. (cur_radius - y) * (cur_radius - y) <=
  23. cur_radius * cur_radius) {
  24. return this;
  25. }
  26. return nullptr;
  27. }
  28. [[nodiscard]] int radius() const {
  29. return this->cur_radius;
  30. }
  31. void radius(int new_radius) {
  32. this->cur_radius = new_radius;
  33. }
  34. };
  35.  
  36. inline auto make_ball_icon(int radius) {
  37. return std::make_unique<ball_icon>(radius);
  38. }
  39. } // namespace widgets
  40. #endif
  41.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement