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