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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
--~with Raylib;
--~use Raylib;
procedure Window is
type colour_range is range 0 .. 2 ** 32 - 1;
--
--~type Rectangle is record x, y, width, height : float; end record with convention => c_pass_by_copy;
--~type Vector_2D is record x, y : float; end record with convention => c_pass_by_copy;
--~type Texture is record id : natural; width, height, mipmaps, format : integer; end record with convention => c_pass_by_copy;
--~type Font is record baseSize, glyphCount, glyphPadding : integer; id : Texture; recs, glyphs : access integer; end record with convention => c_pass_by_copy;
--
type Vector_2D is record
X : Float := 0.0;
Y : Float := 0.0;
end record with Convention => C_Pass_By_Copy;
type Rectangle is record
X : Float := 0.0;
Y : Float := 0.0;
Width : Float := 0.0;
Height : Float := 0.0;
end record with Convention => C_Pass_By_Copy;
No_Rectangle : Rectangle;
type Texture is record
Id : Natural := 0;
Width : Integer := 0;
Height : Integer := 0;
Mipmaps : Integer := 1;
Format : Integer := 3;
end record with Convention => C_Pass_By_Copy;
No_Texture : Texture;
type Glyph_Info is record
Value : Integer := 0;
Offset_X : Integer := 0;
Offset_Y : Integer := 0;
Advance_X : Integer := 0;
Data : access Integer := null;
end record with Convention => C_Pass_By_Copy;
type Font is record
Base_Size : Integer := 0;
Glyph_Count : Integer := 0;
Glyph_Padding : Integer := 0;
Data : Texture := No_Texture;
Rectangles : access Rectangle := null;
Glyphs : access Glyph_Info := null;
end record with Convention => C_Pass_By_Copy;
--
procedure Open_Window (width, height : in integer; title : in string) with import => true, convention => c, external_name => "InitWindow";
procedure Close_Window with import => true, convention => c, external_name => "CloseWindow";
procedure Begin_Drawing with import => true, convention => c, external_name => "BeginDrawing";
procedure End_Drawing with import => true, convention => c, external_name => "EndDrawing";
--
procedure Clear_Background (pallete : in colour_range) with import => true, convention => c, external_name => "ClearBackground";
procedure Set_Target_FPS (framerate : in integer) with import => true, convention => c, external_name => "SetTargetFPS";
function Window_Should_Close return Boolean with import => true, convention => c, external_name => "WindowShouldClose";
--
function Get_Screen_Width return integer with import => true, convention => c, external_name => "GetScreenWidth";
function Get_Screen_Height return integer with import => true, convention => c, external_name => "GetScreenHeight";
--
function Load_Texture (file_path : in string) return Texture with import => true, convention => c, external_name => "LoadTexture";
--
procedure Unload_Texture (data : in Texture) with import => true, convention => c, external_name => "UnloadTexture";
--
--~procedure Draw_Texture_Pro (data : in Texture; s, d : in rectangle; o : in Vector_2D; rotation : in float; tint : in colour_range) with import => true, convention => c, external_name => "DrawTexturePro";
procedure Draw_Text_Pro (data : in Font; text : in string; p, o : in Vector_2D; r, t, s : in float; tint : in colour_range) with import => true, convention => c, external_name => "DrawTextPro";
procedure Draw_Line (x1, y1, x2, y2 : in integer; tint : in colour_range) with import => true, convention => c, external_name => "DrawLine";
--
type Color_Range is range 0 .. 2**8 - 1;
type Index_Range is range 0 .. 2**16 - 1;
type Color is record
R : Color_Range := 255;
G : Color_Range := 255;
B : Color_Range := 255;
A : Color_Range := 255;
end record with Convention => C_Pass_By_Copy;
White : constant Color := (255, 255, 255, 255);
procedure Draw_Texture_Pro (
Data : Texture := No_Texture;
Source : Rectangle := No_Rectangle;
Destination : Rectangle := No_Rectangle;
Origin : Vector_2D := (0.0, 0.0);
Rotation : Float := 0.0;
--~Tint : Colour_range := 16#FFFFFFFF#
Tint : Color := White
) with
Import => True,
Convention => C,
External_Name => "DrawTexturePro";
--
function Get_Font_Default return Font with
Import => True,
Convention => C,
External_Name => "GetFontDefault";
Text : String := "Heyo world!" & Character'Val (0);
Dragdown : Texture;
X : Integer := 120;
Y : Integer := 120;
procedure Draw (Data : Texture) is
begin
Draw_Texture_Pro (Data, (0.0, 0.0, 420.0, 420.0), (200.0, 0.0, 420.0, 420.0), (0.0, 0.0), 0.0, (240, 240, 240, 255));
--~Draw_Texture_Pro (Data, (0.0, 0.0, 420.0, 420.0), (200.0, 0.0, 420.0, 420.0), (0.0, 0.0), 0.0, 16#CCCCCCCC#);
end Draw;
begin
Open_Window (720, 360, "Heyo Raylib!" & Character'Val (0));
--~Set_Exit_Key (Key_Q); -- Default is Key_Escape
Set_Target_FPS (72); -- Default is 60
Dragdown := Load_Texture ("./texture.png" & Character'Val (0));
Main_Loop: loop
exit when Window_Should_Close;
--
Begin_Drawing;
--
Clear_Background (16#FFFFCCFF#);
--
--~Draw_Texture (Dragdown, (Get_Screen_Width - Dragdown.Width) / 2, (Get_Screen_Height - Dragdown.Height) / 2);
--~Draw_Texture (Dragdown, 100, 100, 16#FFFFFFFF#);
Draw_Texture_Pro (Dragdown, (0.0, 0.0, 420.0, 420.0), (200.0, 0.0, 420.0, 420.0), (0.0, 0.0), 0.0, White);
--~Draw_Texture_Pro (Dragdown, (0.0, 0.0, 420.0, 420.0), (100.0, 0.0, 42.0, 42.0), (0.0, 0.0), 0.0, 16#FFFFFFFF#);
Draw (Dragdown);
--~Data : Texture := No_Texture;
--~Source : Rectangle := No_Rectangle;
--~Destination : Rectangle := No_Rectangle;
--~Origin : Vector_2D := (0.0, 0.0);
--~Rotation : Float := 0.0;
--~Tint : Color := White
--~Draw_Text ("Heyo world!" & Character'Val (0), 30, 30, 32, 16#FFCCCCFF#);
--~Draw_Text (Text, 30, 30, 32, 16#FFCCCCFF#);
Draw_Text_Pro (Get_Font_Default, Text, (90.0, 90.0), (9.0, 9.0), 0.0, 32.0, 4.0, 16#FF2222FF#);
--~Draw_FPS (60, 60);
Draw_Line (0, 0, 300, 300, 16#FFCCCCFF#);
--~Draw_Rectangle (120, 120, 30, 60, 16#FFCCCCFF#);
--~Draw_FPS (X, Y);
--~if Is_Key_Pressed (Key_W) then Y := Y - 10; end if;
--~if Is_Key_Pressed (Key_S) then Y := Y + 10; end if;
--~if Is_Key_Pressed (Key_A) then X := X - 10; end if;
--~if Is_Key_Pressed (Key_D) then X := X + 10; end if;
--
End_Drawing;
end loop Main_Loop;
Unload_Texture (Dragdown);
Close_Window;
end Window;
|