diff options
Diffstat (limited to 'body/fltk-widgets-groups-windows-double-cairo.adb')
-rw-r--r-- | body/fltk-widgets-groups-windows-double-cairo.adb | 23 |
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 |