]> git.localhorst.tv Git - orbi.git/blob - src/graphics/Canvas.h
rotatable arm for character entities
[orbi.git] / src / graphics / Canvas.h
1 #ifndef ORBI_CANVAS_H_
2 #define ORBI_CANVAS_H_
3
4 #include "Color.h"
5 #include "Rect.h"
6 #include "Texture.h"
7 #include "Vector.h"
8
9 #include <string>
10 #include <SDL.h>
11
12
13 namespace orbi {
14
15 class Canvas {
16
17 public:
18         Canvas() : canv(nullptr) { }
19         Canvas(SDL_Window *win, int index, Uint32 flags);
20         ~Canvas();
21
22         Canvas(Canvas &&);
23         Canvas &operator =(Canvas &&);
24
25         Canvas(const Canvas &) = delete;
26         Canvas &operator =(const Canvas &) = delete;
27
28 public:
29         Vector<int> Size() const;
30
31         void Present();
32
33         Texture CreateStaticTexture(Vector<int> size);
34         Texture LoadTexture(const char *file);
35         Texture LoadTexture(const std::string &file) {
36                 return LoadTexture(file.c_str());
37         }
38
39         void Copy(Texture &, Vector<int> to);
40         void Copy(Texture &, Rect<int> clip, Vector<int> to);
41
42         void SetColor(Color);
43
44         void Fill();
45         void Outline();
46
47         void Line(Vector<int> from, Vector<int> to);
48         void FillRect(Rect<int>);
49         void OutlineRect(Rect<int>);
50         void OutlineRectRot(Rect<float>, Vector<float> origin, float rot);
51
52         void FillRect(Vector<int> pos, Vector<int> size) {
53                 FillRect(Rect<int>(pos, size));
54         }
55         void OutlineRect(Vector<int> pos, Vector<int> size) {
56                 OutlineRect(Rect<int>(pos, size));
57         }
58
59         void Dot(Vector<int> pos);
60         void Cross(Vector<int> pos, int extent);
61         void Arrow(Vector<int> from, Vector<int> to);
62         void Triangle(Vector<int>, Vector<int>, Vector<int>);
63         void Quad(Vector<int>, Vector<int>, Vector<int>, Vector<int>);
64
65         void Grid(Vector<int> pos, Vector<int> size, Vector<int> step);
66         void Grid(Vector<int> pos, Vector<int> size, Vector<float> step);
67
68         void Grid2(Vector<int> pos, Vector<int> size, Vector<int> step,
69                         Vector<int> n, Color, Color);
70         void Grid2(Vector<int> pos, Vector<int> size, Vector<float> step,
71                         Vector<int> n, Color, Color);
72
73 private:
74         SDL_Renderer *canv;
75
76 };
77
78 }
79
80 #endif