1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 | --------------------------------------------------------------------------------------------------------------------
-- This source code is subject to the Zlib license, see the LICENCE file in the root of this directory.
--------------------------------------------------------------------------------------------------------------------
-- SDL.Video.Renderers
--
-- Renderer.
--------------------------------------------------------------------------------------------------------------------
with Ada.Finalization;
private with SDL.C_Pointers;
with SDL.Video.Palettes;
with SDL.Video.Rectangles;
with SDL.Video.Textures;
with SDL.Video.Windows;
package SDL.Video.Renderers is
pragma Preelaborate;
-- TODO: Finish this.
Renderer_Error : exception;
type Renderer_Flags is mod 2 ** 32 with
Convention => C;
Default_Renderer_Flags : constant Renderer_Flags := 16#0000_0000#;
Software : constant Renderer_Flags := 16#0000_0001#;
Accelerated : constant Renderer_Flags := 16#0000_0002#;
Present_V_Sync : constant Renderer_Flags := 16#0000_0004#;
Target_Texture : constant Renderer_Flags := 16#0000_0008#;
type Renderer_Flip is (None, Horizontal, Vertical, Both);
-- SDL_RendererInfo
function Total_Drivers return Positive with
Inline => True;
-- SDL_GetRenderDriverInfo
type Renderer is new Ada.Finalization.Limited_Controlled with private;
Null_Renderer : constant Renderer;
overriding
procedure Finalize (Self : in out Renderer);
function Get_Blend_Mode (Self : in Renderer) return Blend_Modes;
procedure Set_Blend_Mode (Self : in out Renderer; Mode : in Blend_Modes);
function Get_Draw_Colour (Self : in Renderer) return SDL.Video.Palettes.Colour;
procedure Set_Draw_Colour (Self : in out Renderer; Colour : in SDL.Video.Palettes.Colour);
-- SDL_GetRendererInfo
procedure Clear (Self : in out Renderer);
procedure Copy
(Self : in out Renderer;
Copy_From : in SDL.Video.Textures.Texture);
procedure Copy
(Self : in out Renderer;
Copy_From : in SDL.Video.Textures.Texture;
From : in SDL.Video.Rectangles.Rectangle;
To : in SDL.Video.Rectangles.Rectangle);
procedure Copy
(Self : in out Renderer;
Copy_From : in SDL.Video.Textures.Texture;
To : in SDL.Video.Rectangles.Rectangle);
procedure Copy
(Self : in out Renderer;
Copy_From : in SDL.Video.Textures.Texture;
From : in SDL.Video.Rectangles.Rectangle;
To : in SDL.Video.Rectangles.Rectangle;
Angle : in Long_Float;
Centre : in SDL.Video.Rectangles.Point;
Flip : in Renderer_Flip);
procedure Draw (Self : in out Renderer; Line : in SDL.Video.Rectangles.Line_Segment);
procedure Draw (Self : in out Renderer; Lines : in SDL.Video.Rectangles.Line_Arrays);
procedure Draw (Self : in out Renderer; Point : in SDL.Video.Rectangles.Point);
procedure Draw (Self : in out Renderer; Points : in SDL.Video.Rectangles.Point_Arrays);
procedure Draw (Self : in out Renderer; Rectangle : in SDL.Video.Rectangles.Rectangle);
procedure Draw (Self : in out Renderer; Rectangles : in SDL.Video.Rectangles.Rectangle_Arrays);
procedure Fill (Self : in out Renderer; Rectangle : in SDL.Video.Rectangles.Rectangle);
procedure Fill (Self : in out Renderer; Rectangles : in SDL.Video.Rectangles.Rectangle_Arrays);
procedure Get_Clip (Self : in Renderer; Rectangle : out SDL.Video.Rectangles.Rectangle);
procedure Set_Clip (Self : in out Renderer; Rectangle : in SDL.Video.Rectangles.Rectangle);
procedure Get_Logical_Size (Self : in Renderer; Size : out SDL.Sizes);
procedure Set_Logical_Size (Self : in out Renderer; Size : in SDL.Sizes);
procedure Get_Scale (Self : in Renderer; X, Y : out Float);
procedure Set_Scale (Self : in out Renderer; X, Y : in Float);
procedure Get_Viewport (Self : in Renderer; Rectangle : out SDL.Video.Rectangles.Rectangle);
procedure Set_Viewport (Self : in out Renderer; Rectangle : in SDL.Video.Rectangles.Rectangle);
procedure Present (Self : in Renderer);
-- SDL_RenderReadPixels
function Supports_Targets (Self : in Renderer) return Boolean;
procedure Set_Target (Self : in out Renderer; Target : in SDL.Video.Textures.Texture);
function Get_Renderer (Window : in SDL.Video.Windows.Window) return Renderer;
private
type Renderer is new Ada.Finalization.Limited_Controlled with
record
Internal : SDL.C_Pointers.Renderer_Pointer := null;
Owns : Boolean := True; -- Does this Window type own the Internal data?
end record;
function Get_Internal_Renderer (Self : in Renderer) return SDL.C_Pointers.Renderer_Pointer with
Export => True,
Convention => Ada;
Null_Renderer : constant Renderer := (Ada.Finalization.Limited_Controlled with
Internal => null,
Owns => True);
end SDL.Video.Renderers;
|