aboutsummaryrefslogtreecommitdiff
path: root/body/fltk-widgets-groups-windows-double-cairo.adb
diff options
context:
space:
mode:
Diffstat (limited to 'body/fltk-widgets-groups-windows-double-cairo.adb')
-rw-r--r--body/fltk-widgets-groups-windows-double-cairo.adb23
1 files changed, 17 insertions, 6 deletions
diff --git a/body/fltk-widgets-groups-windows-double-cairo.adb b/body/fltk-widgets-groups-windows-double-cairo.adb
index 897c206..1560c20 100644
--- a/body/fltk-widgets-groups-windows-double-cairo.adb
+++ b/body/fltk-widgets-groups-windows-double-cairo.adb
@@ -23,6 +23,8 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is
-- Functions From C --
------------------------
+ -- Allocation --
+
function new_fl_cairo_window
(W, H : in Interfaces.C.int)
return Storage.Integer_Address;
@@ -37,6 +39,8 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is
+ -- Cairo Callback --
+
procedure fl_cairo_window_set_draw_cb
(W, F : in Storage.Integer_Address);
pragma Import (C, fl_cairo_window_set_draw_cb, "fl_cairo_window_set_draw_cb");
@@ -45,6 +49,8 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is
+ -- Drawing, Events --
+
procedure fl_cairo_window_draw
(W : in Storage.Integer_Address);
pragma Import (C, fl_cairo_window_draw, "fl_cairo_window_draw");
@@ -75,9 +81,9 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is
procedure Cairo_Draw_Hook
(C_Addr, Cairo_Addr : in Storage.Integer_Address)
is
- Ada_Addr : System.Address :=
+ Ada_Addr : constant System.Address :=
Storage.To_Address (fl_widget_get_user_data (C_Addr));
- Ada_Object : access Cairo_Window'Class :=
+ Ada_Object : constant access Cairo_Window'Class :=
Cairo_Convert.To_Pointer (Ada_Addr);
begin
pragma Assert (Ada_Object /= null);
@@ -85,7 +91,8 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is
Ada_Object.My_Func (Cairo_Window (Ada_Object.all), Storage.To_Address (Cairo_Addr));
end if;
exception
- when Chk.Assertion_Error => raise Internal_FLTK_Error;
+ when Chk.Assertion_Error => raise Internal_FLTK_Error with
+ "Fl_Cairo_Window draw hook received Widget with no user_data reference back to Ada";
end Cairo_Draw_Hook;
@@ -222,9 +229,11 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is
- ------------------------
- -- Cairo Window API --
- ------------------------
+ -----------------------
+ -- API Subprograms --
+ -----------------------
+
+ -- Cairo Callback --
procedure Set_Cairo_Draw
(This : in out Cairo_Window;
@@ -236,6 +245,8 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is
+ -- Drawing --
+
procedure Draw
(This : in out Cairo_Window) is
begin