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