le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
quad.hpp
Go to the documentation of this file.
1#pragma once
2#include "le2d/geometry.hpp"
3#include <kvf/color.hpp>
4#include <kvf/rect.hpp>
5
6namespace le::shape {
8class IQuad : public IGeometry {
9 public:
10 static constexpr std::size_t vertex_count_v{4};
11
12 static constexpr auto default_size_v = glm::vec2{default_length_v};
13
14 explicit(false) IQuad(glm::vec2 const size = default_size_v) { create(size); }
15
16 [[nodiscard]] auto get_vertices() const -> std::span<Vertex const> final { return m_vertices; }
17
18 void create(glm::vec2 size = default_size_v);
19 void create(kvf::Rect<> const& rect, kvf::UvRect const& uv = kvf::uv_rect_v, kvf::Color color = kvf::white_v);
20
21 [[nodiscard]] auto get_rect() const -> kvf::Rect<>;
22 [[nodiscard]] auto get_uv() const -> kvf::UvRect;
23 [[nodiscard]] auto get_size() const -> glm::vec2 { return get_rect().size(); }
24 [[nodiscard]] auto get_origin() const -> glm::vec2 { return get_rect().center(); }
25
26 private:
27 std::array<Vertex, vertex_count_v> m_vertices{};
28};
29
31class Quad : public IQuad {
32 public:
33 static constexpr auto indices_v = std::array{0u, 1u, 2u, 2u, 3u, 0u};
34
35 using IQuad::IQuad;
36
37 [[nodiscard]] auto get_indices() const -> std::span<std::uint32_t const> final { return indices_v; }
38 [[nodiscard]] auto get_topology() const -> vk::PrimitiveTopology final { return vk::PrimitiveTopology::eTriangleList; }
39};
40
42class LineRect : public IQuad {
43 public:
44 static constexpr auto indices_v = std::array{0u, 1u, 2u, 3u, 0u};
45
46 using IQuad::IQuad;
47
48 [[nodiscard]] auto get_indices() const -> std::span<std::uint32_t const> final { return indices_v; }
49 [[nodiscard]] auto get_topology() const -> vk::PrimitiveTopology final { return vk::PrimitiveTopology::eLineStrip; }
50};
51} // namespace le::shape
Interface for drawable geometry.
Definition geometry.hpp:9
static constexpr auto default_length_v
Definition geometry.hpp:11
Interface for Quad Geometry.
Definition quad.hpp:8
auto get_rect() const -> kvf::Rect<>
static constexpr std::size_t vertex_count_v
Definition quad.hpp:10
static constexpr auto default_size_v
Definition quad.hpp:12
auto get_vertices() const -> std::span< Vertex const > final
Definition quad.hpp:16
auto get_uv() const -> kvf::UvRect
auto get_origin() const -> glm::vec2
Definition quad.hpp:24
auto get_size() const -> glm::vec2
Definition quad.hpp:23
void create(kvf::Rect<> const &rect, kvf::UvRect const &uv=kvf::uv_rect_v, kvf::Color color=kvf::white_v)
void create(glm::vec2 size=default_size_v)
Line rectangle Geometry. (Quad outline.)
Definition quad.hpp:42
static constexpr auto indices_v
Definition quad.hpp:44
auto get_indices() const -> std::span< std::uint32_t const > final
Definition quad.hpp:48
auto get_topology() const -> vk::PrimitiveTopology final
Definition quad.hpp:49
Quad Geometry.
Definition quad.hpp:31
static constexpr auto indices_v
Definition quad.hpp:33
auto get_indices() const -> std::span< std::uint32_t const > final
Definition quad.hpp:37
auto get_topology() const -> vk::PrimitiveTopology final
Definition quad.hpp:38
Definition texture.hpp:9
Definition circle.hpp:7
Drawable vertex.
Definition vertex.hpp:7