summaryrefslogtreecommitdiff
path: root/spec/fltk-event.ads
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2025-01-21 21:04:54 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2025-01-21 21:04:54 +1300
commitb4438b2fbe895694be98e6e8426103deefc51448 (patch)
tree760d86cd7c06420a91dad102cc9546aee73146fc /spec/fltk-event.ads
parenta4703a65b015140cd4a7a985db66264875ade734 (diff)
Split public API and private implementation files into different directories
Diffstat (limited to 'spec/fltk-event.ads')
-rw-r--r--spec/fltk-event.ads267
1 files changed, 267 insertions, 0 deletions
diff --git a/spec/fltk-event.ads b/spec/fltk-event.ads
new file mode 100644
index 0000000..3b0dec9
--- /dev/null
+++ b/spec/fltk-event.ads
@@ -0,0 +1,267 @@
+
+
+-- Programmed by Jedidiah Barber
+-- Released into the public domain
+
+
+with
+
+ FLTK.Widgets.Groups.Windows;
+
+private with
+
+ Ada.Containers.Vectors,
+ System.Address_To_Access_Conversions;
+
+
+package FLTK.Event is
+
+
+ type Event_Handler is access function
+ (Event : in Event_Kind)
+ return Event_Outcome;
+
+ -- type Event_Dispatch is access function
+ -- (Event : in Event_Kind;
+ -- Win : access FLTK.Widgets.Groups.Windows.Window'Class)
+ -- return Event_Outcome;
+
+
+
+
+ procedure Add_Handler
+ (Func : in Event_Handler);
+
+ procedure Remove_Handler
+ (Func : in Event_Handler);
+
+ -- function Get_Dispatch
+ -- return Event_Dispatch;
+
+ -- procedure Set_Dispatch
+ -- (Func : in Event_Dispatch);
+
+ -- function Default_Dispatch
+ -- (Event : in Event_Kind;
+ -- Win : access FLTK.Widgets.Groups.Windows.Window'Class)
+ -- return Event_Outcome;
+
+
+
+
+ function Get_Grab
+ return access FLTK.Widgets.Groups.Windows.Window'Class;
+
+ procedure Set_Grab
+ (To : in FLTK.Widgets.Groups.Windows.Window'Class);
+
+ procedure Release_Grab;
+
+ function Get_Pushed
+ return access FLTK.Widgets.Widget'Class;
+
+ procedure Set_Pushed
+ (To : in FLTK.Widgets.Widget'Class);
+
+ function Get_Below_Mouse
+ return access FLTK.Widgets.Widget'Class;
+
+ procedure Set_Below_Mouse
+ (To : in FLTK.Widgets.Widget'Class);
+
+ function Get_Focus
+ return access FLTK.Widgets.Widget'Class;
+
+ procedure Set_Focus
+ (To : in FLTK.Widgets.Widget'Class);
+
+
+
+
+ function Compose
+ (Del : out Natural)
+ return Boolean;
+
+ procedure Compose_Reset;
+
+ function Text
+ return String;
+
+ function Text_Length
+ return Natural;
+
+
+
+
+ function Last
+ return Event_Kind;
+
+ function Last_Modifier
+ return Modifier;
+
+ function Last_Modifier
+ (Had : in Modifier)
+ return Boolean;
+
+
+
+
+ function Mouse_X
+ return Integer;
+
+ function Mouse_X_Root
+ return Integer;
+
+ function Mouse_Y
+ return Integer;
+
+ function Mouse_Y_Root
+ return Integer;
+
+ function Mouse_DX
+ return Integer;
+
+ function Mouse_DY
+ return Integer;
+
+ procedure Get_Mouse
+ (X, Y : out Integer);
+
+ function Is_Click
+ return Boolean;
+
+ function Is_Multi_Click
+ return Boolean;
+
+ procedure Set_Clicks
+ (To : in Natural);
+
+ function Last_Button
+ return Mouse_Button;
+
+ function Mouse_Left
+ return Boolean;
+
+ function Mouse_Middle
+ return Boolean;
+
+ function Mouse_Right
+ return Boolean;
+
+ function Is_Inside
+ (X, Y, W, H : in Integer)
+ return Boolean;
+
+
+
+
+ function Last_Key
+ return Keypress;
+
+ function Original_Last_Key
+ return Keypress;
+
+ function Pressed_During
+ (Key : in Keypress)
+ return Boolean;
+
+ function Key_Now
+ (Key : in Keypress)
+ return Boolean;
+
+ function Key_Ctrl
+ return Boolean;
+
+ function Key_Alt
+ return Boolean;
+
+ function Key_Command
+ return Boolean;
+
+ function Key_Shift
+ return Boolean;
+
+
+private
+
+
+ package Widget_Convert is new System.Address_To_Access_Conversions
+ (FLTK.Widgets.Widget'Class);
+ package Window_Convert is new System.Address_To_Access_Conversions
+ (FLTK.Widgets.Groups.Windows.Window'Class);
+
+
+ package Handler_Vectors is new Ada.Containers.Vectors
+ (Index_Type => Positive, Element_Type => Event_Handler);
+
+
+ Handlers : Handler_Vectors.Vector := Handler_Vectors.Empty_Vector;
+ -- Current_Dispatch : Event_Dispatch := null;
+
+
+ function fl_widget_get_user_data
+ (W : in Storage.Integer_Address)
+ return Storage.Integer_Address;
+ pragma Import (C, fl_widget_get_user_data, "fl_widget_get_user_data");
+ pragma Inline (fl_widget_get_user_data);
+
+
+
+
+ pragma Inline (Add_Handler);
+ pragma Inline (Remove_Handler);
+ -- pragma Inline (Get_Dispatch);
+ -- pragma Inline (Set_Dispatch);
+ -- pragma Inline (Default_Dispatch);
+
+
+ pragma Inline (Get_Grab);
+ pragma Inline (Set_Grab);
+ pragma Inline (Release_Grab);
+ pragma Inline (Get_Pushed);
+ pragma Inline (Set_Pushed);
+ pragma Inline (Get_Below_Mouse);
+ pragma Inline (Set_Below_Mouse);
+ pragma Inline (Get_Focus);
+ pragma Inline (Set_Focus);
+
+
+ pragma Inline (Compose);
+ pragma Inline (Compose_Reset);
+ pragma Inline (Text);
+ pragma Inline (Text_Length);
+
+
+ pragma Inline (Last);
+ pragma Inline (Last_Modifier);
+
+
+ pragma Inline (Mouse_X);
+ pragma Inline (Mouse_X_Root);
+ pragma Inline (Mouse_Y);
+ pragma Inline (Mouse_Y_Root);
+ pragma Inline (Mouse_DX);
+ pragma Inline (Mouse_DY);
+ pragma Inline (Get_Mouse);
+ pragma Inline (Is_Click);
+ pragma Inline (Is_Multi_Click);
+ pragma Inline (Set_Clicks);
+ pragma Inline (Last_Button);
+ pragma Inline (Mouse_Left);
+ pragma Inline (Mouse_Middle);
+ pragma Inline (Mouse_Right);
+ pragma Inline (Is_Inside);
+
+
+ pragma Inline (Last_Key);
+ pragma Inline (Original_Last_Key);
+ pragma Inline (Pressed_During);
+ pragma Inline (Key_Now);
+ pragma Inline (Key_Ctrl);
+ pragma Inline (Key_Alt);
+ pragma Inline (Key_Command);
+ pragma Inline (Key_Shift);
+
+
+end FLTK.Event;
+