SPARK  0.1.0
A general purpose game engine written in C++.
Loading...
Searching...
No Matches
Viewport.h
1#pragma once
2
3#include "spark/render/Export.h"
4
5#include "spark/math/Rectangle.h"
6
7#include <memory>
8
9namespace spark::render
10{
14 class SPARK_RENDER_EXPORT IViewport
15 {
16 public:
17 virtual ~IViewport() noexcept = default;
18
23 [[nodiscard]] virtual math::Rectangle<float> rectangle() const noexcept = 0;
24
29 virtual void setRectangle(const math::Rectangle<float>& rectangle) noexcept = 0;
30
35 [[nodiscard]] virtual float minDepth() const noexcept = 0;
36
41 virtual void setMinDepth(float min_depth) noexcept = 0;
42
47 [[nodiscard]] virtual float maxDepth() const noexcept = 0;
48
53 virtual void setMaxDepth(float max_depth) noexcept = 0;
54 };
55
59 class SPARK_RENDER_EXPORT Viewport final : public IViewport
60 {
61 public:
68 explicit Viewport(const math::Rectangle<float>& rectangle = {}, float min_depth = 0.0f, float max_depth = 1.0f) noexcept;
69 ~Viewport() noexcept override;
70
71 Viewport(const Viewport& other) = delete;
72 Viewport(Viewport&& other) noexcept;
73 Viewport& operator=(const Viewport& other) = delete;
74 Viewport& operator=(Viewport&& other) noexcept;
75
77 [[nodiscard]] math::Rectangle<float> rectangle() const noexcept override;
78
80 void setRectangle(const math::Rectangle<float>& rectangle) noexcept override;
81
83 [[nodiscard]] float minDepth() const noexcept override;
84
86 void setMinDepth(float min_depth) noexcept override;
87
89 [[nodiscard]] float maxDepth() const noexcept override;
90
92 void setMaxDepth(float max_depth) noexcept override;
93
94 private:
95 struct Impl;
96 std::unique_ptr<Impl> m_impl;
97 };
98}
Represents a rectangle in 2D space.
Definition Rectangle.h:15
Interface representing a viewport.
Definition Viewport.h:15
virtual math::Rectangle< float > rectangle() const noexcept=0
Gets the rectangle defining the dimensions of the viewport.
Implementation of IViewport.
Definition Viewport.h:60
Definition Viewport.cpp:6