diff --git a/libs/ui/include/psemek/ui/triangle_shape.hpp b/libs/ui/include/psemek/ui/triangle_shape.hpp new file mode 100644 index 00000000..7a5253df --- /dev/null +++ b/libs/ui/include/psemek/ui/triangle_shape.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include + +#include + +namespace psemek::ui +{ + + struct triangle_shape + : shape + { + geom::triangle> triangle{{{0.f, 0.f}, {0.f, 0.f}, {0.f, 0.f}}}; + + triangle_shape() = default; + + triangle_shape(geom::triangle> triangle) + : triangle{triangle} + {} + + bool contains(geom::point const & point) const override; + geom::box bbox() const override; + }; + +} diff --git a/libs/ui/source/triangle_shape.cpp b/libs/ui/source/triangle_shape.cpp new file mode 100644 index 00000000..22c87e65 --- /dev/null +++ b/libs/ui/source/triangle_shape.cpp @@ -0,0 +1,22 @@ +#include + +#include + +namespace psemek::ui +{ + + bool triangle_shape::contains(geom::point const & point) const + { + return geom::contains(triangle, point); + } + + geom::box triangle_shape::bbox() const + { + geom::box b; + b |= triangle[0]; + b |= triangle[1]; + b |= triangle[2]; + return b; + } + +}