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
|
with
Interfaces.C.Strings,
System;
use type
Interfaces.C.int,
System.Address;
package body FLTK.Widgets.Valuators.Adjusters is
procedure adjuster_set_draw_hook
(W, D : in System.Address);
pragma Import (C, adjuster_set_draw_hook, "adjuster_set_draw_hook");
procedure adjuster_set_handle_hook
(W, H : in System.Address);
pragma Import (C, adjuster_set_handle_hook, "adjuster_set_handle_hook");
function new_fl_adjuster
(X, Y, W, H : in Interfaces.C.int;
Text : in Interfaces.C.char_array)
return System.Address;
pragma Import (C, new_fl_adjuster, "new_fl_adjuster");
procedure free_fl_adjuster
(A : in System.Address);
pragma Import (C, free_fl_adjuster, "free_fl_adjuster");
function fl_adjuster_is_soft
(A : in System.Address)
return Interfaces.C.int;
pragma Import (C, fl_adjuster_is_soft, "fl_adjuster_is_soft");
procedure fl_adjuster_set_soft
(A : in System.Address;
T : in Interfaces.C.int);
pragma Import (C, fl_adjuster_set_soft, "fl_adjuster_set_soft");
procedure fl_adjuster_draw
(W : in System.Address);
pragma Import (C, fl_adjuster_draw, "fl_adjuster_draw");
function fl_adjuster_handle
(W : in System.Address;
E : in Interfaces.C.int)
return Interfaces.C.int;
pragma Import (C, fl_adjuster_handle, "fl_adjuster_handle");
procedure Finalize
(This : in out Adjuster) is
begin
if This.Void_Ptr /= System.Null_Address and then
This in Adjuster'Class
then
free_fl_adjuster (This.Void_Ptr);
This.Void_Ptr := System.Null_Address;
end if;
Finalize (Valuator (This));
end Finalize;
package body Forge is
function Create
(X, Y, W, H : in Integer;
Text : in String)
return Adjuster is
begin
return This : Adjuster do
This.Void_Ptr := new_fl_adjuster
(Interfaces.C.int (X),
Interfaces.C.int (Y),
Interfaces.C.int (W),
Interfaces.C.int (H),
Interfaces.C.To_C (Text));
fl_widget_set_user_data
(This.Void_Ptr,
Widget_Convert.To_Address (This'Unchecked_Access));
adjuster_set_draw_hook (This.Void_Ptr, Draw_Hook'Address);
adjuster_set_handle_hook (This.Void_Ptr, Handle_Hook'Address);
end return;
end Create;
end Forge;
function Is_Soft
(This : in Adjuster)
return Boolean is
begin
return fl_adjuster_is_soft (This.Void_Ptr) /= 0;
end Is_Soft;
procedure Set_Soft
(This : in out Adjuster;
To : in Boolean) is
begin
fl_adjuster_set_soft (This.Void_Ptr, Boolean'Pos (To));
end Set_Soft;
procedure Draw
(This : in out Adjuster) is
begin
fl_adjuster_draw (This.Void_Ptr);
end Draw;
function Handle
(This : in out Adjuster;
Event : in Event_Kind)
return Event_Outcome is
begin
return Event_Outcome'Val
(fl_adjuster_handle (This.Void_Ptr, Event_Kind'Pos (Event)));
end Handle;
end FLTK.Widgets.Valuators.Adjusters;
|