From e93b9bbc02e2791f3a35b6f077fcbb8514c28aed Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Sun, 12 Jan 2025 01:14:58 +1300 Subject: Refactored draw/handle methods in Widgets hierarchy, improved docs, added a few minor method bindings here and there --- doc/fl_adjuster.html | 58 +++- doc/fl_box.html | 36 +- doc/fl_browser.html | 6 +- doc/fl_button.html | 88 ++++- doc/fl_cairo_window.html | 10 - doc/fl_chart.html | 48 +-- doc/fl_check_button.html | 22 +- doc/fl_choice.html | 40 ++- doc/fl_clock.html | 26 +- doc/fl_clock_output.html | 72 ++-- doc/fl_color_chooser.html | 98 +++--- doc/fl_counter.html | 68 ++-- doc/fl_dial.html | 68 +++- doc/fl_display_device.html | 18 +- doc/fl_double_window.html | 63 ++-- doc/fl_file_chooser.html | 80 ++--- doc/fl_file_input.html | 2 +- doc/fl_fill_dial.html | 22 +- doc/fl_fill_slider.html | 22 +- doc/fl_float_input.html | 2 +- doc/fl_gl_window.html | 84 +++-- doc/fl_group.html | 110 ++++-- doc/fl_help_view.html | 48 ++- doc/fl_hor_fill_slider.html | 22 +- doc/fl_hor_nice_slider.html | 22 +- doc/fl_hor_slider.html | 22 +- doc/fl_hor_value_slider.html | 22 +- doc/fl_input_.html | 2 +- doc/fl_input_choice.html | 86 ++--- doc/fl_int_input.html | 2 +- doc/fl_light_button.html | 34 +- doc/fl_line_dial.html | 22 +- doc/fl_menu_.html | 109 ++++-- doc/fl_menu_bar.html | 34 +- doc/fl_menu_button.html | 38 ++- doc/fl_menu_window.html | 27 +- doc/fl_multiline_input.html | 2 +- doc/fl_multiline_output.html | 2 +- doc/fl_nice_slider.html | 22 +- doc/fl_output.html | 2 +- doc/fl_overlay_window.html | 53 ++- doc/fl_pack.html | 61 ++-- doc/fl_progress.html | 44 +-- doc/fl_radio_button.html | 22 +- doc/fl_radio_light_button.html | 22 +- doc/fl_radio_round_button.html | 22 +- doc/fl_repeat_button.html | 17 +- doc/fl_return_button.html | 34 +- doc/fl_roller.html | 34 +- doc/fl_round_button.html | 22 +- doc/fl_round_clock.html | 31 +- doc/fl_scroll.html | 71 +++- doc/fl_scrollbar.html | 36 +- doc/fl_secret_input.html | 2 +- doc/fl_simple_counter.html | 22 +- doc/fl_single_window.html | 32 +- doc/fl_slider.html | 78 ++++- doc/fl_spinner.html | 59 +++- doc/fl_surface_device.html | 40 +-- doc/fl_tabs.html | 48 ++- doc/fl_text_display.html | 56 ++- doc/fl_text_editor.html | 379 ++++++++++++--------- doc/fl_tile.html | 21 +- doc/fl_toggle_button.html | 22 +- doc/fl_valuator.html | 112 ++++-- doc/fl_value_input.html | 87 +++-- doc/fl_value_output.html | 52 +-- doc/fl_value_slider.html | 36 +- doc/fl_widget.html | 2 +- doc/fl_window.html | 176 ++++++++-- doc/fl_wizard.html | 42 ++- progress.txt | 2 +- src/c_fl_adjuster.cpp | 82 +++-- src/c_fl_adjuster.h | 20 +- src/c_fl_box.cpp | 73 ++-- src/c_fl_box.h | 14 +- src/c_fl_browser.cpp | 7 + src/c_fl_browser.h | 3 + src/c_fl_button.cpp | 84 +++-- src/c_fl_button.h | 13 +- src/c_fl_cairo_window.cpp | 2 - src/c_fl_chart.cpp | 69 ++-- src/c_fl_chart.h | 19 +- src/c_fl_check_button.cpp | 70 ++-- src/c_fl_check_button.h | 10 +- src/c_fl_choice.cpp | 69 ++-- src/c_fl_choice.h | 19 +- src/c_fl_clock.cpp | 69 ++-- src/c_fl_clock.h | 20 +- src/c_fl_clock_output.cpp | 83 ++--- src/c_fl_clock_output.h | 21 +- src/c_fl_color_chooser.cpp | 93 +++-- src/c_fl_color_chooser.h | 47 ++- src/c_fl_counter.cpp | 76 ++--- src/c_fl_counter.h | 22 +- src/c_fl_dial.cpp | 109 +++--- src/c_fl_dial.h | 31 +- src/c_fl_double_window.cpp | 77 ++--- src/c_fl_double_window.h | 22 +- src/c_fl_fill_dial.cpp | 69 ++-- src/c_fl_fill_dial.h | 13 +- src/c_fl_fill_slider.cpp | 69 ++-- src/c_fl_fill_slider.h | 19 +- src/c_fl_gl_window.cpp | 73 ++-- src/c_fl_gl_window.h | 20 +- src/c_fl_group.cpp | 69 ++-- src/c_fl_group.h | 19 +- src/c_fl_help_view.cpp | 89 +++-- src/c_fl_help_view.h | 19 +- src/c_fl_hor_fill_slider.cpp | 69 ++-- src/c_fl_hor_fill_slider.h | 19 +- src/c_fl_hor_nice_slider.cpp | 69 ++-- src/c_fl_hor_nice_slider.h | 19 +- src/c_fl_hor_value_slider.cpp | 69 ++-- src/c_fl_hor_value_slider.h | 19 +- src/c_fl_horizontal_slider.cpp | 69 ++-- src/c_fl_horizontal_slider.h | 19 +- src/c_fl_input_choice.cpp | 114 +++---- src/c_fl_input_choice.h | 54 ++- src/c_fl_label.cpp | 1 - src/c_fl_label.h | 6 - src/c_fl_light_button.cpp | 70 ++-- src/c_fl_light_button.h | 13 +- src/c_fl_line_dial.cpp | 69 ++-- src/c_fl_line_dial.h | 13 +- src/c_fl_menu.cpp | 56 +-- src/c_fl_menu.h | 21 +- src/c_fl_menu_bar.cpp | 70 ++-- src/c_fl_menu_bar.h | 13 +- src/c_fl_menu_button.cpp | 69 ++-- src/c_fl_menu_button.h | 10 +- src/c_fl_menu_window.cpp | 70 ++-- src/c_fl_menu_window.h | 19 +- src/c_fl_nice_slider.cpp | 69 ++-- src/c_fl_nice_slider.h | 19 +- src/c_fl_overlay_window.cpp | 87 +++-- src/c_fl_overlay_window.h | 19 +- src/c_fl_pack.cpp | 69 ++-- src/c_fl_pack.h | 19 +- src/c_fl_progress.cpp | 70 ++-- src/c_fl_progress.h | 19 +- src/c_fl_radio_button.cpp | 70 ++-- src/c_fl_radio_button.h | 13 +- src/c_fl_radio_light_button.cpp | 70 ++-- src/c_fl_radio_light_button.h | 13 +- src/c_fl_radio_round_button.cpp | 71 ++-- src/c_fl_radio_round_button.h | 13 +- src/c_fl_repeat_button.cpp | 75 ++-- src/c_fl_repeat_button.h | 14 +- src/c_fl_return_button.cpp | 70 ++-- src/c_fl_return_button.h | 13 +- src/c_fl_roller.cpp | 69 ++-- src/c_fl_roller.h | 13 +- src/c_fl_round_button.cpp | 70 ++-- src/c_fl_round_button.h | 13 +- src/c_fl_round_clock.cpp | 71 ++-- src/c_fl_round_clock.h | 24 +- src/c_fl_scroll.cpp | 70 ++-- src/c_fl_scroll.h | 19 +- src/c_fl_scrollbar.cpp | 70 ++-- src/c_fl_scrollbar.h | 10 +- src/c_fl_simple_counter.cpp | 69 ++-- src/c_fl_simple_counter.h | 13 +- src/c_fl_single_window.cpp | 77 ++--- src/c_fl_single_window.h | 22 +- src/c_fl_slider.cpp | 107 +++--- src/c_fl_slider.h | 28 +- src/c_fl_spinner.cpp | 77 ++--- src/c_fl_spinner.h | 22 +- src/c_fl_tabs.cpp | 82 +++-- src/c_fl_tabs.h | 20 +- src/c_fl_text_display.cpp | 82 +++-- src/c_fl_text_display.h | 22 +- src/c_fl_text_editor.cpp | 70 ++-- src/c_fl_text_editor.h | 19 +- src/c_fl_tile.cpp | 73 ++-- src/c_fl_tile.h | 18 +- src/c_fl_toggle_button.cpp | 70 ++-- src/c_fl_toggle_button.h | 13 +- src/c_fl_type.h | 20 -- src/c_fl_valuator.cpp | 92 +++-- src/c_fl_valuator.h | 25 +- src/c_fl_value_input.cpp | 106 +++--- src/c_fl_value_input.h | 46 ++- src/c_fl_value_output.cpp | 89 +++-- src/c_fl_value_output.h | 37 +- src/c_fl_value_slider.cpp | 86 +++-- src/c_fl_value_slider.h | 33 +- src/c_fl_widget.cpp | 13 + src/c_fl_widget.h | 5 + src/c_fl_window.cpp | 70 ++-- src/c_fl_window.h | 19 +- src/c_fl_wizard.cpp | 70 ++-- src/c_fl_wizard.h | 19 +- src/fltk-widgets-boxes.adb | 79 +++-- src/fltk-widgets-boxes.ads | 10 + src/fltk-widgets-buttons-enter.adb | 45 +-- src/fltk-widgets-buttons-enter.ads | 4 + src/fltk-widgets-buttons-light-check.adb | 49 +-- src/fltk-widgets-buttons-light-check.ads | 19 +- src/fltk-widgets-buttons-light-radio.adb | 55 ++- src/fltk-widgets-buttons-light-radio.ads | 19 +- src/fltk-widgets-buttons-light-round-radio.adb | 55 ++- src/fltk-widgets-buttons-light-round-radio.ads | 19 +- src/fltk-widgets-buttons-light-round.adb | 55 ++- src/fltk-widgets-buttons-light-round.ads | 19 +- src/fltk-widgets-buttons-light.adb | 45 +-- src/fltk-widgets-buttons-light.ads | 4 + src/fltk-widgets-buttons-radio.adb | 55 ++- src/fltk-widgets-buttons-radio.ads | 19 +- src/fltk-widgets-buttons-repeat.adb | 59 ++-- src/fltk-widgets-buttons-repeat.ads | 12 +- src/fltk-widgets-buttons-toggle.adb | 55 ++- src/fltk-widgets-buttons-toggle.ads | 19 +- src/fltk-widgets-buttons.adb | 46 ++- src/fltk-widgets-buttons.ads | 12 + src/fltk-widgets-charts.adb | 50 +-- src/fltk-widgets-charts.ads | 10 +- src/fltk-widgets-clocks-updated-round.adb | 74 ++-- src/fltk-widgets-clocks-updated-round.ads | 23 +- src/fltk-widgets-clocks-updated.adb | 67 ++-- src/fltk-widgets-clocks-updated.ads | 12 +- src/fltk-widgets-clocks.adb | 52 ++- src/fltk-widgets-clocks.ads | 10 +- src/fltk-widgets-groups-browsers-textline.adb | 22 ++ src/fltk-widgets-groups-browsers-textline.ads | 9 + src/fltk-widgets-groups-color_choosers.adb | 128 ++++--- src/fltk-widgets-groups-color_choosers.ads | 45 +-- src/fltk-widgets-groups-help_views.adb | 65 ++-- src/fltk-widgets-groups-help_views.ads | 16 +- src/fltk-widgets-groups-input_choices.adb | 67 ++-- src/fltk-widgets-groups-input_choices.ads | 17 +- src/fltk-widgets-groups-packed.adb | 80 +++-- src/fltk-widgets-groups-packed.ads | 22 +- src/fltk-widgets-groups-scrolls.adb | 43 ++- src/fltk-widgets-groups-scrolls.ads | 4 + src/fltk-widgets-groups-spinners.adb | 66 ++-- src/fltk-widgets-groups-spinners.ads | 15 +- src/fltk-widgets-groups-tabbed.adb | 55 ++- src/fltk-widgets-groups-tabbed.ads | 8 + ...k-widgets-groups-text_displays-text_editors.adb | 56 +-- ...k-widgets-groups-text_displays-text_editors.ads | 8 +- src/fltk-widgets-groups-text_displays.adb | 53 +-- src/fltk-widgets-groups-text_displays.ads | 13 +- src/fltk-widgets-groups-tiled.adb | 63 ++-- src/fltk-widgets-groups-tiled.ads | 11 +- src/fltk-widgets-groups-windows-double-cairo.adb | 20 +- src/fltk-widgets-groups-windows-double-cairo.ads | 9 +- src/fltk-widgets-groups-windows-double-overlay.adb | 92 ++--- src/fltk-widgets-groups-windows-double-overlay.ads | 40 +-- src/fltk-widgets-groups-windows-double.adb | 77 +++-- src/fltk-widgets-groups-windows-double.ads | 18 +- src/fltk-widgets-groups-windows-opengl.adb | 56 +-- src/fltk-widgets-groups-windows-opengl.ads | 16 +- src/fltk-widgets-groups-windows-single-menu.adb | 63 ++-- src/fltk-widgets-groups-windows-single-menu.ads | 18 +- src/fltk-widgets-groups-windows-single.adb | 68 ++-- src/fltk-widgets-groups-windows-single.ads | 14 +- src/fltk-widgets-groups-windows.adb | 45 +-- src/fltk-widgets-groups-windows.ads | 4 + src/fltk-widgets-groups-wizards.adb | 50 +-- src/fltk-widgets-groups-wizards.ads | 10 +- src/fltk-widgets-groups.adb | 43 ++- src/fltk-widgets-groups.ads | 4 + src/fltk-widgets-inputs-text-whole_number.adb | 4 +- src/fltk-widgets-inputs-text-whole_number.ads | 4 +- src/fltk-widgets-menus-choices.adb | 48 +-- src/fltk-widgets-menus-choices.ads | 6 +- src/fltk-widgets-menus-menu_bars.adb | 43 ++- src/fltk-widgets-menus-menu_bars.ads | 4 + src/fltk-widgets-menus-menu_buttons.adb | 31 +- src/fltk-widgets-menus-menu_buttons.ads | 6 +- src/fltk-widgets-menus.adb | 63 ++-- src/fltk-widgets-menus.ads | 14 +- src/fltk-widgets-progress_bars.adb | 49 ++- src/fltk-widgets-progress_bars.ads | 10 +- src/fltk-widgets-valuators-adjusters.adb | 55 ++- src/fltk-widgets-valuators-adjusters.ads | 8 + src/fltk-widgets-valuators-counters-simple.adb | 55 ++- src/fltk-widgets-valuators-counters-simple.ads | 19 +- src/fltk-widgets-valuators-counters.adb | 72 ++-- src/fltk-widgets-valuators-counters.ads | 10 +- src/fltk-widgets-valuators-dials-fill.adb | 53 ++- src/fltk-widgets-valuators-dials-fill.ads | 19 +- src/fltk-widgets-valuators-dials-line.adb | 53 ++- src/fltk-widgets-valuators-dials-line.ads | 19 +- src/fltk-widgets-valuators-dials.adb | 168 ++++++--- src/fltk-widgets-valuators-dials.ads | 36 +- src/fltk-widgets-valuators-rollers.adb | 43 ++- src/fltk-widgets-valuators-rollers.ads | 4 + src/fltk-widgets-valuators-sliders-fill.adb | 55 ++- src/fltk-widgets-valuators-sliders-fill.ads | 19 +- src/fltk-widgets-valuators-sliders-horizontal.adb | 55 ++- src/fltk-widgets-valuators-sliders-horizontal.ads | 19 +- ...k-widgets-valuators-sliders-horizontal_fill.adb | 55 ++- ...k-widgets-valuators-sliders-horizontal_fill.ads | 19 +- ...k-widgets-valuators-sliders-horizontal_nice.adb | 55 ++- ...k-widgets-valuators-sliders-horizontal_nice.ads | 19 +- src/fltk-widgets-valuators-sliders-nice.adb | 55 ++- src/fltk-widgets-valuators-sliders-nice.ads | 19 +- src/fltk-widgets-valuators-sliders-scrollbars.adb | 29 +- src/fltk-widgets-valuators-sliders-scrollbars.ads | 4 + ...-widgets-valuators-sliders-value-horizontal.adb | 65 ++-- ...-widgets-valuators-sliders-value-horizontal.ads | 33 +- src/fltk-widgets-valuators-sliders-value.adb | 45 +-- src/fltk-widgets-valuators-sliders-value.ads | 4 + src/fltk-widgets-valuators-sliders.adb | 166 ++++++--- src/fltk-widgets-valuators-sliders.ads | 33 +- src/fltk-widgets-valuators-value_inputs.adb | 63 ++-- src/fltk-widgets-valuators-value_inputs.ads | 13 + src/fltk-widgets-valuators-value_outputs.adb | 45 +-- src/fltk-widgets-valuators-value_outputs.ads | 4 + src/fltk-widgets-valuators.adb | 102 ++++-- src/fltk-widgets-valuators.ads | 25 +- 314 files changed, 6790 insertions(+), 6509 deletions(-) delete mode 100644 src/c_fl_type.h diff --git a/doc/fl_adjuster.html b/doc/fl_adjuster.html index 957a82c..9f67d97 100644 --- a/doc/fl_adjuster.html +++ b/doc/fl_adjuster.html @@ -46,7 +46,7 @@ - + +
Functions and Procedures
Constructors
@@ -55,11 +55,47 @@ Fl_Adjuster(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Adjuster;
 
+ + + + + + + + + + + + + + + + +
Functions and Procedures
+int soft() const;
+
+function Is_Soft
+       (This : in Adjuster)
+    return Boolean;
+
+void soft(int s);
+
+procedure Set_Soft
+       (This : in out Adjuster;
+        To   : in     Boolean);
+
+ + + + + + - - - - - diff --git a/doc/fl_box.html b/doc/fl_box.html index b18e479..566105a 100644 --- a/doc/fl_box.html +++ b/doc/fl_box.html @@ -23,6 +23,7 @@ +
Protected Functions and Procedures
 void draw();
@@ -84,23 +120,11 @@ function Handle
 
   
-void soft(int s);
-
-procedure Set_Soft
-       (This : in out Adjuster;
-        To   : in     Boolean);
-
-int soft() const;
+void value_damage();
 
-function Is_Soft
-       (This : in Adjuster)
-    return Boolean;
+procedure Value_Damage
+       (This : in out Adjuster);
 
Fl_Box FLTK.Widgets.Boxes
@@ -39,25 +40,46 @@   Box_Reference + - + + + + + + +
Functions and Procedures
Constructors
-Fl_Box (int X, int Y, int W, int H, const char *l=0);
+Fl_Box(Fl_Boxtype b, int X, int Y, int W, int H, const char *l);
+
+function Create
+       (Kind       : in Box_Kind;
+        X, Y, W, H : in Integer;
+        Text       : in String := "")
+    return Box;
+
+Fl_Box(int X, int Y, int W, int H, const char *l=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Box;
 
+ + + + + + +
Functions and Procedures
 virtual int handle(int);
@@ -70,6 +92,13 @@ function Handle
 
+ + + + + + +
Protected Functions and Procedures
 void draw();
@@ -79,6 +108,7 @@ procedure Draw
        (This : in out Box);
 
diff --git a/doc/fl_browser.html b/doc/fl_browser.html index f06f1e9..0b0a290 100644 --- a/doc/fl_browser.html +++ b/doc/fl_browser.html @@ -428,7 +428,11 @@ function Number_Of_Lines
 void size(int W, int H);
 
-Falls through to Fl_Widget::size(int, int) anyway so binding unnecessary. +
+procedure Resize
+       (This : in out Textline_Browser;
+        W, H : in     Integer);
+
diff --git a/doc/fl_button.html b/doc/fl_button.html index b074f3b..c95ebb4 100644 --- a/doc/fl_button.html +++ b/doc/fl_button.html @@ -41,7 +41,7 @@ -   + int State @@ -50,7 +50,21 @@ - + + + + + + + +
Functions and Procedures
Static Protected Attributes
+static Fl_Widget_Tracker * key_release_tracker = 0;
+
Intentionally left unbound.
+ + + + + +
Constructors
@@ -59,16 +73,23 @@ Fl_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Button;
 
+ + + + + + - + @@ -97,24 +118,14 @@ procedure Set_Down_Box - + - - - - - - + @@ -133,7 +144,7 @@ function Handle - + @@ -172,7 +183,7 @@ procedure Set_Shortcut - + @@ -200,6 +211,47 @@ function Get_State
Functions and Procedures
 int clear();
 
See int value();See value / Set_State.
 Fl_Color down_color() const;
 
 See selection_color / Get_Selection_Color from Fl_Widget.
 void down_color(unsigned c);
 
 
-virtual void draw();
-
-procedure Draw
-       (This : in out Button);
-
See selection_color / Set_Selection_Color from Fl_Widget.
 int set();
 
See int value();See value / Set_State.
 void shortcut(const char *s);
 
See void shortcut(int s);See shortcut / Set_Shortcut.
+ + + + + + + + + +
Static Protected Functions and Procedures
+static void key_release_timeout(void *);
+
Intentionally left unbound.
+ + + + + + + + + + + + + + + + +
Protected Functions and Procedures
+virtual void draw();
+
+procedure Draw
+       (This : in out Button);
+
+void simulate_key_action();
+
+procedure Simulate_Key_Action
+       (This : in out Button);
+
+ + diff --git a/doc/fl_cairo_window.html b/doc/fl_cairo_window.html index dadfbb3..d6243aa 100644 --- a/doc/fl_cairo_window.html +++ b/doc/fl_cairo_window.html @@ -91,16 +91,6 @@ function Create - - - - - - - - + + +
Functions and Procedures
 
-function Handle
-       (This  : in out Cairo_Window;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
 void set_draw_cb(cairo_draw_cb cb);
diff --git a/doc/fl_chart.html b/doc/fl_chart.html
index aaaa30b..be2099b 100644
--- a/doc/fl_chart.html
+++ b/doc/fl_chart.html
@@ -46,7 +46,7 @@
 
 
 
-  
+  
 
+
Functions and Procedures
Constructors
@@ -55,11 +55,18 @@ Fl_Chart(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Chart;
 
+ + + + + + - - - - - - - - - -
Functions and Procedures
 void add(double val, const char *str=0, unsigned col=0);
@@ -129,26 +136,6 @@ procedure Clear
 
   
-void draw();
-
-procedure Draw
-       (This : in out Chart);
-
 
-function Handle
-       (This  : in out Chart;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
 void insert(int ind, double val, const char *str=0, unsigned col=0);
 
@@ -288,6 +275,23 @@ procedure Set_Text_Size
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Chart);
+
+ + diff --git a/doc/fl_check_button.html b/doc/fl_check_button.html index 4fea930..46da8fb 100644 --- a/doc/fl_check_button.html +++ b/doc/fl_check_button.html @@ -45,7 +45,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -54,29 +54,11 @@ Fl_Check_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Check_Button;
 
 
-procedure Draw
-       (This : in out Check_Button);
-
 
-function Handle
-       (This  : in out Check_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_choice.html b/doc/fl_choice.html index f75d9db..9f83a30 100644 --- a/doc/fl_choice.html +++ b/doc/fl_choice.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -55,20 +55,17 @@ Fl_Choice(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Choice;
 
-void draw();
-
-procedure Draw
-       (This : in out Choice);
-
+ + + + + - + @@ -127,6 +124,23 @@ procedure Set_Chosen
Functions and Procedures
@@ -83,9 +80,9 @@ function Handle
   
 Get the index into the Fl_Menu_Item array and do a manual lookup.
-function Chosen
+function Get_Chosen
        (This : in Choice)
     return FLTK.Menu_Items.Menu_Item_Reference;
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Choice);
+
+ + diff --git a/doc/fl_clock.html b/doc/fl_clock.html index 2772e83..c648133 100644 --- a/doc/fl_clock.html +++ b/doc/fl_clock.html @@ -45,7 +45,7 @@ - + @@ -67,27 +67,17 @@ Fl_Clock(uchar t, int X, int Y, int W, int H, const char *L); function Create (Kind : in Box_Kind; X, Y, W, H : in Integer; - Text : in String) + Text : in String := "") return Updated_Clock; - - - - +
Functions and Procedures
Constructors
@@ -54,7 +54,7 @@ Fl_Clock(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Updated_Clock;
 
 
-procedure Draw
-       (This : in out Updated_Clock);
-
-
 
-procedure Draw
-       (This       : in out Clock;
-        X, Y, W, H : in     Integer);
-
+ - + - + - + - + @@ -65,7 +65,7 @@
Functions and Procedures
diff --git a/doc/fl_clock_output.html b/doc/fl_clock_output.html
index 9fa7bd4..115e6d3 100644
--- a/doc/fl_clock_output.html
+++ b/doc/fl_clock_output.html
@@ -41,22 +41,22 @@
   
 int Hour
 int Minute
 int Second
 ulong Time_Value
- + - - - - +
Functions and Procedures
Constructors
@@ -74,41 +74,17 @@ Fl_Clock_Output(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Clock;
 
-void draw();
-
-procedure Draw
-       (This : in out Clock);
-
- -
-void draw(int X, int Y, int W, int H);
-
-
-procedure Draw
-       (This       : in out Clock;
-        X, Y, W, H : in     Integer);
-
- - -  -
-function Handle
-       (This  : in out Clock;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
- + + +
Functions and Procedures
@@ -181,6 +157,34 @@ function Get_Time
 
+ + + + + + + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Clock);
+
+void draw(int X, int Y, int W, int H);
+
+procedure Draw
+       (This       : in out Clock;
+        X, Y, W, H : in     Integer);
+
+ + diff --git a/doc/fl_color_chooser.html b/doc/fl_color_chooser.html index c599d7e..d031806 100644 --- a/doc/fl_color_chooser.html +++ b/doc/fl_color_chooser.html @@ -26,6 +26,9 @@ +

Note:

+See Fl_Ask for related symbols that are not members of the Fl_Color_Chooser class.

+ @@ -42,7 +45,7 @@ - + @@ -51,7 +54,7 @@
 int Color_Mode
- + +
Functions and Procedures
Constructors
@@ -60,44 +63,57 @@ Fl_Color_Chooser(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Color_Chooser;
 
+ + + + + + - - - - - +
Static Functions and Procedures
-double b() const;
+static void hsv2rgb(double H, double S, double V,
+    double &R, double &G, double &B);
 
-function Get_Blue
-       (This : in Color_Chooser)
-    return Long_Float;
+procedure HSV_To_RGB
+       (H, S, V : in     Long_Float;
+        R, G, B :    out Long_Float);
 
 
-function Color_Was_Changed
-       (This : in Color_Chooser)
-    return Boolean;
+static void rgb2hsv(double R, double G, double B,
+    double &H, double &S, double &V);
 
 
-procedure Clear_Changed
-       (This : in out Color_Chooser);
+procedure RGB_To_HSV
+       (R, G, B : in     Long_Float;
+        H, S, V :    out Long_Float);
 
+ + + + + + - + @@ -112,16 +128,6 @@ function Get_Green - - - - - @@ -185,6 +196,11 @@ int rgb(double R, double G, double B); procedure Set_RGB (This : in out Color_Chooser; R, G, B : in Long_Float); + +function Set_RGB + (This : in out Color_Chooser; + R, G, B : in Long_Float) + return Boolean; @@ -210,28 +226,6 @@ function Get_Value - - - - - - - - - -
Functions and Procedures
 
-procedure Draw
-       (This : in out Color_Chooser);
+double b() const;
+
+function Get_Blue
+       (This : in Color_Chooser)
+    return Long_Float;
 
 
-function Handle
-       (This  : in out Color_Chooser;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
 int hsv(double H, double S, double V);
@@ -130,6 +136,11 @@ int hsv(double H, double S, double V);
 procedure Set_HSV
        (This    : in out Color_Chooser;
         H, S, V : in     Long_Float);
+
+function Set_HSV
+       (This    : in out Color_Chooser;
+        H, S, V : in     Long_Float)
+    return Boolean;
 
-static void hsv2rgb(double H, double S, double V, double &R, double &G, double &B);
-
-procedure HSV_To_RGB
-       (H, S, V : in     Long_Float;
-        R, G, B :    out Long_Float);
-
-static void rgb2hsv(double R, double G, double B, double &H, double &S, double &V);
-
-procedure RGB_To_HSV
-       (R, G, B : in     Long_Float;
-        H, S, V :    out Long_Float);
-
diff --git a/doc/fl_counter.html b/doc/fl_counter.html index bf5bfc3..43e7d92 100644 --- a/doc/fl_counter.html +++ b/doc/fl_counter.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -55,20 +55,17 @@ Fl_Counter(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Counter;
 
-void draw();
-
-procedure Draw
-       (This : in out Counter);
-
+ + + + + + + + + + - - - - - @@ -114,7 +115,7 @@ void step(double a, double b); void step(double a); @@ -122,12 +123,12 @@ procedure Set_Step @@ -200,6 +201,23 @@ procedure Set_Text_Size
Functions and Procedures
@@ -82,6 +79,15 @@ function Handle
 
Keep manual track of whatever you set lstep to.
+function Get_Long_Step
+       (This : in Counter)
+    return Long_Float;
+
 void lstep(double a);
@@ -94,19 +100,14 @@ procedure Set_Long_Step
   
 
-function Get_Long_Step
-       (This : in Counter)
-    return Long_Float;
+double step() const;
 
-void step(double a, double b);
+function Get_Step
+       (This : in Counter)
+    return Long_Float;
 
 
-procedure Set_Step
+procedure Set_Step_Top
        (This : in out Counter;
         To   : in     Long_Float);
 
-double step() const;
+void step(double a, double b);
 
-function Get_Step
-       (This : in Counter)
-    return Long_Float;
+procedure Set_Step_Both
+       (This        : in out Counter;
+        Short, Long : in     Long_Float);
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Counter);
+
+ + diff --git a/doc/fl_dial.html b/doc/fl_dial.html index dea5313..64eb6c3 100644 --- a/doc/fl_dial.html +++ b/doc/fl_dial.html @@ -42,7 +42,7 @@ -   + uchar Dial_Kind @@ -51,7 +51,7 @@ - + +
Functions and Procedures
Constructors
@@ -60,11 +60,18 @@ Fl_Dial(int x, int y, int w, int h, const char *l=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Dial;
 
+ + + + + + - - - - - - + - +
Functions and Procedures
 short angle1() const;
@@ -122,16 +129,6 @@ procedure Set_Angles
 
   
-void draw();
-
-procedure Draw
-       (This : in out Dial);
-
 int handle(int);
 
@@ -143,7 +140,7 @@ function Handle
   
See type() methods for Fl_WidgetSee type method for Fl_Widget.
 function Get_Dial_Type
        (This : in Dial)
@@ -152,7 +149,7 @@ function Get_Dial_Type
   
See type() methods for Fl_WidgetSee type method for Fl_Widget.
 procedure Set_Dial_Type
        (This : in out Dial;
@@ -163,6 +160,47 @@ procedure Set_Dial_Type
 
+ + + + + + + + + + + + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Dial);
+
+void draw(int X, int Y, int W, int H);
+
+procedure Draw
+       (This       : in out Dial;
+        X, Y, W, H : in     Integer);
+
+int handle(int event, int X, int Y, int W, int H);
+
+function Handle
+       (This       : in out Dial;
+        Event      : in     Event_Kind;
+        X, Y, W, H : in     Integer)
+    return Event_Outcome;
+
+ + diff --git a/doc/fl_display_device.html b/doc/fl_display_device.html index 190a901..cd4e27d 100644 --- a/doc/fl_display_device.html +++ b/doc/fl_display_device.html @@ -78,13 +78,16 @@ function Create - + + -
Functions and Procedures
Static Functions and Procedures
-const char * class_name();
+static Fl_Display_Device * display_device();
+
+function Get_Platform_Display
+    return Display_Device_Reference;
 
Deprecated, use runtime tag checks instead.
@@ -92,16 +95,13 @@ const char * class_name(); - + - +
Static Functions and Procedures
Functions and Procedures
-static Fl_Display_Device * display_device();
-
-function Get_Platform_Display
-    return Display_Device_Reference;
+const char * class_name();
 
Deprecated, use runtime tag checks instead.
diff --git a/doc/fl_double_window.html b/doc/fl_double_window.html index b93635b..6c61c93 100644 --- a/doc/fl_double_window.html +++ b/doc/fl_double_window.html @@ -39,14 +39,28 @@   Double_Window_Reference + + + + + + + + + + + +
Protected Attributes
+char force_doublebuffering_;
+
Intentionally left unbound.
- + @@ -67,18 +81,17 @@ Fl_Double_Window(int X, int Y, int W, int H, const char *L=0); - - - - +
Functions and Procedures
Constructors
@@ -55,7 +69,7 @@ Fl_Double_Window(int W, int H, const char *L=0);
 
 function Create
        (W, H : in Integer;
-        Text : in String)
+        Text : in String := "")
     return Double_Window;
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Double_Window;
 
 
-procedure Draw
-       (This : in out Double_Window);
-
+ + + + + - - - - - - + @@ -137,6 +144,20 @@ void show(int a, char **b);
Functions and Procedures
@@ -90,16 +103,6 @@ procedure Flush
 
 
-function Handle
-       (This  : in out Double_Window;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
 void hide();
@@ -114,7 +117,11 @@ procedure Hide
 
 void resize(int,int,int,int);
 
 
+procedure Resize
+       (This       : in out Double_Window;
+        X, Y, W, H : in     Integer);
+
+ + + + + + + + + +
Protected Functions and Procedures
+void flush(int eraseoverlay);
+
 
+ + diff --git a/doc/fl_file_chooser.html b/doc/fl_file_chooser.html index 06dab72..15b1380 100644 --- a/doc/fl_file_chooser.html +++ b/doc/fl_file_chooser.html @@ -63,46 +63,6 @@ See Fl_Ask for related symbols that are not members of the Fl_File_Chooser class - - - - - - - - - - - - - - - - - - -
Attributes
-Fl_Button * newButton;
-
-function New_Button
-       (This : in out File_Chooser)
-    return FLTK.Widgets.Buttons.Button_Reference;
-
-Fl_Check_Button * previewButton;
-
-function Preview_Button
-       (This : in out File_Chooser)
-    return FLTK.Widgets.Buttons.Light.Check.Check_Button_Reference;
-
-Fl_Check_Button * showHiddenButton;
-
-function Show_Hidden_Button
-       (This : in out File_Chooser)
-    return FLTK.Widgets.Buttons.Light.Check.Check_Button_Reference;
-
- - - @@ -305,6 +265,46 @@ Sort_Method : not null FLTK.Filenames.Compare_Function := +
Static Attributes
+ + + + + + + + + + + + + + + + + +
Attributes
+Fl_Button * newButton;
+
+function New_Button
+       (This : in out File_Chooser)
+    return FLTK.Widgets.Buttons.Button_Reference;
+
+Fl_Check_Button * previewButton;
+
+function Preview_Button
+       (This : in out File_Chooser)
+    return FLTK.Widgets.Buttons.Light.Check.Check_Button_Reference;
+
+Fl_Check_Button * showHiddenButton;
+
+function Show_Hidden_Button
+       (This : in out File_Chooser)
+    return FLTK.Widgets.Buttons.Light.Check.Check_Button_Reference;
+
+ + + diff --git a/doc/fl_file_input.html b/doc/fl_file_input.html index b319f2e..89abfea 100644 --- a/doc/fl_file_input.html +++ b/doc/fl_file_input.html @@ -55,7 +55,7 @@ Fl_File_Input(int X, int Y, int W, int H, const char *L=0); diff --git a/doc/fl_fill_dial.html b/doc/fl_fill_dial.html index 12c96e7..f2419eb 100644 --- a/doc/fl_fill_dial.html +++ b/doc/fl_fill_dial.html @@ -46,7 +46,7 @@
Constructors
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return File_Input;
 
- + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Fill_Dial(int X, int Y, int W, int H, const char *L);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Fill_Dial;
 
 
-procedure Draw
-       (This : in out Fill_Dial);
-
 
-function Handle
-       (This  : in out Fill_Dial;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_fill_slider.html b/doc/fl_fill_slider.html index 804d026..f559b6b 100644 --- a/doc/fl_fill_slider.html +++ b/doc/fl_fill_slider.html @@ -46,7 +46,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Fill_Slider(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Fill_Slider;
 
 
-procedure Draw
-       (This : in out Fill_Slider);
-
 
-function Handle
-       (This  : in out Fill_Slider;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_float_input.html b/doc/fl_float_input.html index b43f0b2..747cfe7 100644 --- a/doc/fl_float_input.html +++ b/doc/fl_float_input.html @@ -55,7 +55,7 @@ Fl_Float_Input(int X, int Y, int W, int H, const char *L=0);
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Float_Input;
 
diff --git a/doc/fl_gl_window.html b/doc/fl_gl_window.html index 50364dc..b213406 100644 --- a/doc/fl_gl_window.html +++ b/doc/fl_gl_window.html @@ -42,7 +42,7 @@ -   + int Mode_Mask @@ -51,25 +51,29 @@ - + + - @@ -78,38 +82,41 @@ function Can_Do
Static Functions and Procedures
Constructors
-static int can_do(const int *m);
+Fl_Gl_Window(int W, int H, const char *l=0);
+
+function Create
+       (W, H : in Integer;
+        Text : in String := "")
+    return GL_Window;
 
-Not applicable due to not being part of the public stable API -
-static int can_do(int m);
+Fl_Gl_Window(int X, int Y, int W, int H, const char *l=0);
 
-function Can_Do
-       (Mask : in Mode_Mask)
-    return Boolean;
+function Create
+       (X, Y, W, H : in Integer;
+        Text       : in String := "")
+    return GL_Window;
 
- + - + +
Functions and Procedures
Static Functions and Procedures
-Fl_Gl_Window(int W, int H, const char *l=0);
-
-function Create
-       (W, H : in Integer;
-        Text : in String := "")
-    return GL_Window;
+static int can_do(const int *m);
 
+Not applicable due to not being part of the public stable API. +
-Fl_Gl_Window(int X, int Y, int W, int H, const char *l=0);
+static int can_do(int m);
 
-function Create
-       (X, Y, W, H : in Integer;
-        Text       : in String := "")
-    return GL_Window;
+function Can_Do
+       (Mask : in Mode_Mask)
+    return Boolean;
 
+ + + + + + @@ -227,7 +234,7 @@ procedure Hide_Overlay void invalidate(); @@ -267,7 +274,7 @@ function Get_Mode int mode(const int *a); @@ -339,9 +346,11 @@ procedure Redraw_Overlay - + @@ -391,6 +400,23 @@ procedure Set_Valid
Functions and Procedures
 virtual Fl_Gl_Window * as_gl_window();
 
-Use view conversion and tag membership tests instead +Use view conversion and tag membership tests instead.
-Use Set_Valid instead +Use valid / Set_Valid instead.
-Not applicable due to not being part of the public stable API +Not applicable due to not being part of the public stable API.
 void resize(int, int, int, int);
 
-Use Resize/Reposition from FLTK.Widgets instead -
+procedure Resize
+       (This       : in out GL_Window;
+        X, Y, W, H : in     Integer);
+
+ + + + + + + + + +
Protected Functions and Procedures
+virtual void draw();
+
+procedure Draw
+       (This : in out GL_Window);
+
+ + diff --git a/doc/fl_group.html b/doc/fl_group.html index b191856..da6f604 100644 --- a/doc/fl_group.html +++ b/doc/fl_group.html @@ -42,12 +42,12 @@ -   + int Index -   + int Extended_Index @@ -61,7 +61,7 @@ - + +
Functions and Procedures
Constructors
@@ -70,11 +70,45 @@ Fl_Group(int, int, int, int, const char *=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Group;
 
+ + + + + + + + + + + + + + + + +
Static Functions and Procedures
+static Fl_Group * current();
+
+function Get_Current
+    return access Group'Class;
+
+static void current(Fl_Group *g);
+
+procedure Set_Current
+       (To : in Group'Class);
+
+ + + + + + - - - - - @@ -218,6 +243,7 @@ void end(); + + + + + + + + +
Functions and Procedures
 Fl_Widget *& _ddfdesign_kludge();
@@ -85,6 +119,7 @@ Fl_Widget *& _ddfdesign_kludge();
   
 void add(Fl_Widget &);
+
 void add(Fl_Widget *o);
 
@@ -200,16 +235,6 @@ unsigned int clip_children();
 
   
-void draw();
-
-procedure Draw
-       (This : in out Group);
-
 void end();
 
 
 int find(const Fl_Widget *) const;
+
 int find(const Fl_Widget &o) const;
 
@@ -311,6 +337,7 @@ procedure Remove
   
 void remove(Fl_Widget &);
+
 void remove(Fl_Widget *o);
 
@@ -322,7 +349,19 @@ procedure Remove
 
   
+Fl_Widget * resizable() const;
+
+function Get_Resizable
+       (This : in Group)
+    return access Widget'Class;
+
 void resizable(Fl_Widget &o);
+
 void resizable(Fl_Widget *o);
 
@@ -334,40 +373,61 @@ procedure Set_Resizable
 
   
-Fl_Widget * resizable() const;
+void resize(int, int, int, int);
 
 
+ + + + + + + + + + + + + + + + + +
Protected Functions and Procedures
-function Get_Resizable
-       (This : in Group)
-    return access Widget'Class;
+void draw();
+
+procedure Draw
+       (This : in out Group);
 
-void resize(int, int, int, int);
+void draw_child(Fl_Widget &widget) const;
 
 
-static Fl_Group * current();
+void draw_children();
 
 
-function Get_Current
-    return access Group'Class;
+void draw_outside_label(const Fl_Widget &widget) const;
 
 
-static void current(Fl_Group *g);
+int * sizes();
 
 
-procedure Set_Current
-       (To : in Group'Class);
+void update_child(Fl_Widget &widget) const;
 
 
diff --git a/doc/fl_help_view.html b/doc/fl_help_view.html index 1431ab2..fed45e0 100644 --- a/doc/fl_help_view.html +++ b/doc/fl_help_view.html @@ -42,12 +42,12 @@ -   + int Position -   + int Extended_Position @@ -64,7 +64,7 @@ Errors -   + int Load_Help_Error @@ -73,7 +73,7 @@ - + +
Functions and Procedures
Constructors
@@ -87,6 +87,13 @@ function Create
 
+ + + + + + - - - - - - + @@ -394,6 +395,23 @@ procedure Set_Content
Functions and Procedures
 void clear_selection();
@@ -110,16 +117,6 @@ function Current_Directory
 
   
-void draw();
-
-procedure Draw
-       (This : in out Help_View);
-
 const char * filename() const;
 
@@ -202,7 +199,11 @@ procedure Load
 
 void resize(int, int, int, int);
 
 
+procedure Resize
+       (This       : in out Help_View;
+        X, Y, W, H : in     Integer);
+
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Help_View);
+
+ + diff --git a/doc/fl_hor_fill_slider.html b/doc/fl_hor_fill_slider.html index 4fbc112..ca8d484 100644 --- a/doc/fl_hor_fill_slider.html +++ b/doc/fl_hor_fill_slider.html @@ -46,7 +46,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Hor_Fill_Slider(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Horizontal_Fill_Slider;
 
 
-procedure Draw
-       (This : in out Horizontal_Fill_Slider);
-
 
-function Handle
-       (This  : in out Horizontal_Fill_Slider;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_hor_nice_slider.html b/doc/fl_hor_nice_slider.html index 00347c8..5bf60d6 100644 --- a/doc/fl_hor_nice_slider.html +++ b/doc/fl_hor_nice_slider.html @@ -46,7 +46,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Hor_Nice_Slider(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Horizontal_Nice_Slider;
 
 
-procedure Draw
-       (This : in out Horizontal_Nice_Slider);
-
 
-function Handle
-       (This  : in out Horizontal_Nice_Slider;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_hor_slider.html b/doc/fl_hor_slider.html index 0c3fe08..2b65336 100644 --- a/doc/fl_hor_slider.html +++ b/doc/fl_hor_slider.html @@ -46,7 +46,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Hor_Slider(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Horizontal_Slider;
 
 
-procedure Draw
-       (This : in out Horizontal_Slider);
-
 
-function Handle
-       (This  : in out Horizontal_Slider;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_hor_value_slider.html b/doc/fl_hor_value_slider.html index 1a1a9fe..d9aea6a 100644 --- a/doc/fl_hor_value_slider.html +++ b/doc/fl_hor_value_slider.html @@ -46,7 +46,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Hor_Value_Slider(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Hor_Value_Slider;
 
 
-procedure Draw
-       (This : in out Hor_Value_Slider);
-
 
-function Handle
-       (This  : in out Hor_Value_Slider;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_input_.html b/doc/fl_input_.html index 582f0c6..01e1e57 100644 --- a/doc/fl_input_.html +++ b/doc/fl_input_.html @@ -70,7 +70,7 @@ Fl_Input_(int, int, int, int, const char*=0);
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Input;
 
diff --git a/doc/fl_input_choice.html b/doc/fl_input_choice.html index ebd1d9c..9afac9e 100644 --- a/doc/fl_input_choice.html +++ b/doc/fl_input_choice.html @@ -46,7 +46,36 @@ - + + + + + + + + + + + + +
Functions and Procedures
Attributes
+Fl_Input * input();
+
+function Text_Field
+       (This : in out Input_Choice)
+    return FLTK.Widgets.Inputs.Text.Text_Input_Reference;
+
+Fl_Menu_Button * menubutton();
+
+function Button_Menu
+       (This : in out Input_Choice)
+    return FLTK.Widgets.Menus.Menu_Buttons.Menu_Button_Reference;
+
+ + + + + +
Constructors
@@ -55,16 +84,23 @@ Fl_Input_Choice(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Input_Choice;
 
+ + + + + + - + @@ -120,35 +156,6 @@ procedure Set_Down_Box - - - - - - - - - - - - - - - - - - - - diff --git a/doc/fl_int_input.html b/doc/fl_int_input.html index fa9b9c9..eca4ea0 100644 --- a/doc/fl_int_input.html +++ b/doc/fl_int_input.html @@ -55,7 +55,7 @@ Fl_Int_Input(int X, int Y, int W, int H, const char *L=0); diff --git a/doc/fl_light_button.html b/doc/fl_light_button.html index aa83dc4..25d57e1 100644 --- a/doc/fl_light_button.html +++ b/doc/fl_light_button.html @@ -45,7 +45,7 @@
Functions and Procedures
 void add(const char *s);
 
Use Menu_Button insteadUse menubutton / Button_Menu instead.
 
-procedure Draw
-       (This : in out Input_Choice);
-
 
-function Handle
-       (This  : in out Input_Choice;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
-Fl_Input * input();
-
-function Text_Field
-       (This : in out Input_Choice)
-    return FLTK.Widgets.Inputs.Text.Text_Input_Reference;
-
 const Fl_Menu_Item * menu();
@@ -165,20 +172,13 @@ void menu(const Fl_Menu_Item *m);
 
   
-Fl_Menu_Button * menubutton();
-
-function Button_Menu
-       (This : in out Input_Choice)
-    return FLTK.Widgets.Menus.Menu_Buttons.Menu_Button_Reference;
+void resize(int X, int Y, int W, int H);
 
-void resize(int X, int Y, int W, int H);
+procedure Resize
+       (This       : in out Input_Choice;
+        X, Y, W, H : in     Integer);
 
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Integer_Input;
 
- + +
Functions and Procedures
Constructors
@@ -54,30 +54,44 @@ Fl_Light_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Light_Button;
 
+ + + + + + +
Functions and Procedures
-void draw();
+int handle(int);
 
-procedure Draw
-       (This : in out Light_Button);
+function Handle
+       (This  : in out Light_Button;
+        Event : in     Event_Kind)
+    return Event_Outcome;
 
+ + + + + + diff --git a/doc/fl_line_dial.html b/doc/fl_line_dial.html index ece07bb..da3b740 100644 --- a/doc/fl_line_dial.html +++ b/doc/fl_line_dial.html @@ -46,7 +46,7 @@
Protected Functions and Procedures
-int handle(int);
+void draw();
 
-function Handle
-       (This  : in out Light_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
+procedure Draw
+       (This : in out Light_Button);
 
- + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Line_Dial(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Line_Dial;
 
 
-procedure Draw
-       (This : in out Line_Dial);
-
 
-function Handle
-       (This  : in out Line_Dial;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_menu_.html b/doc/fl_menu_.html index ac54a35..5f93e0f 100644 --- a/doc/fl_menu_.html +++ b/doc/fl_menu_.html @@ -42,12 +42,12 @@ -   + int Index -   + int Extended_Index @@ -61,7 +61,49 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functions and Procedures
Protected Attributes
+uchar alloc;
+
Intentionally left unbound.
+uchar down_box_;
+
Intentionally left unbound.
+Fl_Color textcolor_;
+
Intentionally left unbound.
+Fl_Font textfont_;
+
Intentionally left unbound.
+Fl_Fontsize textsize_;
+
Intentionally left unbound.
+ + + + + +
Constructors
@@ -70,14 +112,22 @@ Fl_Menu_(int, int, int, int, const char *=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Menu;
 
+ + + + + + @@ -153,22 +204,14 @@ procedure Set_Down_Box - + - - - - - - + @@ -255,16 +298,6 @@ procedure Make_Global - - - - - @@ -325,7 +360,8 @@ function Item @@ -595,6 +631,21 @@ procedure Set_Chosen
Functions and Procedures
-int add(const char *, int shortcut, Fl_Callback *, void *=0, int=0);
+int add(const char *, int shortcut, Fl_Callback *,
+    void *=0, int=0);
 
 procedure Add
@@ -91,7 +141,8 @@ procedure Add
 
   
-int add(const char *a, const char *b, Fl_Callback *c, void *d=0, int e=0);
+int add(const char *a, const char *b, Fl_Callback *c,
+    void *d=0, int e=0);
 
 
 Fl_Color down_color() const;
 
 See selection_color / Get_Selection_Color from Fl_Widget.
 void down_color(unsigned c);
 
 
 
-procedure Draw
-       (This : in out Menu) is null;
-
See selection_color / Set_Selection_Color from Fl_Widget.
 
-function Handle
-       (This  : in out Menu;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
 
 function Has_Item
        (This  : in Menu;
         Place : in Index)
@@ -283,7 +316,8 @@ function Has_Item
 
   
-int insert(int index, const char *, int shortcut, Fl_Callback *, void *=0, int=0);
+int insert(int index, const char *, int shortcut,
+    Fl_Callback *, void *=0, int=0);
 
 procedure Insert
@@ -298,7 +332,8 @@ procedure Insert
 
   
-int insert(int index, const char *a, const char *b, Fl_Callback *c, void *d=0, int e=0);
+int insert(int index, const char *a, const char *b,
+    Fl_Callback *c, void *d=0, int e=0);
 
 
-int item_pathname(char *name, int namelen, const Fl_Menu_Item *finditem=0) const;
+int item_pathname(char *name, int namelen,
+    const Fl_Menu_Item *finditem=0) const;
 
 
+ + + + + + + + + +
Protection Functions and Procedures
+int item_pathname_(char *name, int namelen,
+    const Fl_Menu_Item *finditem, const Fl_Menu_Item *menu=0) const;
+
Intentionally left unbound.
+ + diff --git a/doc/fl_menu_bar.html b/doc/fl_menu_bar.html index ec1b37b..fc21bf7 100644 --- a/doc/fl_menu_bar.html +++ b/doc/fl_menu_bar.html @@ -46,7 +46,7 @@ - + +
Functions and Procedures
Constructors
@@ -55,30 +55,44 @@ Fl_Menu_Bar(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Menu_Bar;
 
+ + + + + + +
Functions and Procedures
-void draw();
+int handle(int);
 
-procedure Draw
-       (This : in out Menu_Bar);
+function Handle
+       (This  : in out Menu_Bar;
+        Event : in     Event_Kind)
+    return Event_Outcome;
 
+ + + + + + diff --git a/doc/fl_menu_button.html b/doc/fl_menu_button.html index 17dfa20..e0fbeaa 100644 --- a/doc/fl_menu_button.html +++ b/doc/fl_menu_button.html @@ -51,7 +51,7 @@
Protected Functions and Procedures
-int handle(int);
+void draw();
 
-function Handle
-       (This  : in out Menu_Bar;
-        Event : in     Event_Kind)
-    return Event_Outcome;
+procedure Draw
+       (This : in out Menu_Bar);
 
- + - - - - +
Functions and Procedures
Constructors
@@ -60,20 +60,17 @@ Fl_Menu_Button(int, int, int, int, const char *=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Menu_Button;
 
-void draw();
-
-procedure Draw
-       (This : in out Menu_Button);
-
+ + + + + - +
Functions and Procedures
@@ -99,7 +96,7 @@ function Popup
   
 Use the type method in Fl_Widget with the popup_buttons enum.
 procedure Set_Popup_Kind
        (This : in out Menu_Button;
@@ -110,6 +107,23 @@ procedure Set_Popup_Kind
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Menu_Button);
+
+ + diff --git a/doc/fl_menu_window.html b/doc/fl_menu_window.html index e08ba53..523c1d5 100644 --- a/doc/fl_menu_window.html +++ b/doc/fl_menu_window.html @@ -46,7 +46,7 @@ - + +
Functions and Procedures
Constructors
@@ -72,6 +72,13 @@ function Create
 
+ + + + + + - - - - - - - - - - diff --git a/doc/fl_multiline_output.html b/doc/fl_multiline_output.html index e4fa771..eacab31 100644 --- a/doc/fl_multiline_output.html +++ b/doc/fl_multiline_output.html @@ -55,7 +55,7 @@ Fl_Multiline_Output(int X, int Y, int W, int H, const char *L=0); diff --git a/doc/fl_nice_slider.html b/doc/fl_nice_slider.html index 188c673..c2931be 100644 --- a/doc/fl_nice_slider.html +++ b/doc/fl_nice_slider.html @@ -46,7 +46,7 @@
Functions and Procedures
 void clear_overlay();
@@ -79,14 +86,6 @@ void clear_overlay();
 
See set_overlay();
 
-procedure Draw
-       (This : in out Menu_Window);
-
 void erase();
@@ -104,16 +103,6 @@ procedure Flush
 
 
-function Handle
-       (This  : in out Menu_Window;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
 void hide();
diff --git a/doc/fl_multiline_input.html b/doc/fl_multiline_input.html
index 25067e6..fe1af2f 100644
--- a/doc/fl_multiline_input.html
+++ b/doc/fl_multiline_input.html
@@ -55,7 +55,7 @@ Fl_Multiline_Input(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Multiline_Input;
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Multiline_Output;
 
- + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Nice_Slider(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Nice_Slider;
 
 
-procedure Draw
-       (This : in out Nice_Slider);
-
 
-function Handle
-       (This  : in out Nice_Slider;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_output.html b/doc/fl_output.html index 2af1279..7d42bfb 100644 --- a/doc/fl_output.html +++ b/doc/fl_output.html @@ -55,7 +55,7 @@ Fl_Output(int X, int Y, int W, int H, const char *L=0);
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Output;
 
diff --git a/doc/fl_overlay_window.html b/doc/fl_overlay_window.html index dd36675..ac86aac 100644 --- a/doc/fl_overlay_window.html +++ b/doc/fl_overlay_window.html @@ -46,7 +46,7 @@ - + +
Functions and Procedures
Constructors
@@ -72,6 +72,13 @@ function Create
 
+ + + + + + - - - - - - + + + + + + +
Functions and Procedures
 int can_do_overlay();
@@ -85,16 +92,6 @@ function Can_Do_Overlay
 
   
-virtual void draw_overlay()=0;
-
-procedure Draw_Overlay
-       (This : in out Overlay_Window) is null;
-
 void flush();
 
@@ -127,16 +124,16 @@ procedure Redraw_Overlay
 
 void resize(int, int, int, int);
 
-Use Resize/Reposition from FLTK.Widgets instead -
+procedure Resize
+       (This       : in out Overlay_Window;
+        X, Y, W, H : in     Integer);
+
 void show();
-
-void show(int a, char **b);
 
 procedure Show
@@ -144,6 +141,30 @@ procedure Show
 
+void show(int a, char **b);
+
 
+ + + + + + + + + + +
Protected Functions and Procedures
+virtual void draw_overlay()=0;
+
+procedure Draw_Overlay
+       (This : in out Overlay_Window);
+
(Will raise Program_Error if not overridden.)
diff --git a/doc/fl_pack.html b/doc/fl_pack.html index 0c05789..583ee08 100644 --- a/doc/fl_pack.html +++ b/doc/fl_pack.html @@ -43,7 +43,7 @@ enum { VERTICAL = 0, HORIZONTAL = 1 } -   + Pack_Kind @@ -51,7 +51,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -60,36 +60,27 @@ Fl_Pack(int x, int y, int w, int h, const char *l=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Packed_Group;
 
-void draw();
-
-procedure Draw
-       (This : in out Packed_Group);
-
+ - -  -
-function Handle
-       (This  : in out Packed_Group;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
- + + + - + @@ -114,6 +105,32 @@ procedure Set_Spacing + + + + + +
Functions and Procedures
 uchar horizontal() const;
 
 
+function Get_Pack_Type
+       (This : in Packed_Group)
+    return Pack_Kind;
+
See type method for Fl_Widget.
+procedure Set_Pack_Type
+       (This : in out Packed_Group;
+        Kind : in     Pack_Kind);
+
+ + + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Packed_Group);
+
diff --git a/doc/fl_progress.html b/doc/fl_progress.html index 4b3961c..398c5c5 100644 --- a/doc/fl_progress.html +++ b/doc/fl_progress.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -55,30 +55,17 @@ Fl_Progress(int x, int y, int w, int h, const char *l=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Progress_Bar;
 
-virtual void draw();
-
-procedure Draw
-       (This : in out Progress_Bar);
-
+ - -  -
-function Handle
-       (This  : in out Progress_Bar;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
- + + +
Functions and Procedures
@@ -149,6 +136,23 @@ function Get_Value
 
+ + + + + + + + + +
Protected Functions and Procedures
+virtual void draw();
+
+procedure Draw
+       (This : in out Progress_Bar);
+
+ + diff --git a/doc/fl_radio_button.html b/doc/fl_radio_button.html index 0d9150e..cf81c39 100644 --- a/doc/fl_radio_button.html +++ b/doc/fl_radio_button.html @@ -45,7 +45,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -54,29 +54,11 @@ Fl_Radio_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Radio_Button;
 
 
-procedure Draw
-       (This : in out Radio_Button);
-
 
-function Handle
-       (This  : in out Radio_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_radio_light_button.html b/doc/fl_radio_light_button.html index 618e584..946fc2c 100644 --- a/doc/fl_radio_light_button.html +++ b/doc/fl_radio_light_button.html @@ -45,7 +45,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -54,29 +54,11 @@ Fl_Radio_Light_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Radio_Light_Button;
 
 
-procedure Draw
-       (This : in out Radio_Light_Button);
-
 
-function Handle
-       (This  : in out Radio_Light_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_radio_round_button.html b/doc/fl_radio_round_button.html index 143d99d..df1971c 100644 --- a/doc/fl_radio_round_button.html +++ b/doc/fl_radio_round_button.html @@ -45,7 +45,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -54,29 +54,11 @@ Fl_Radio_Round_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Radio_Round_Button;
 
 
-procedure Draw
-       (This : in out Radio_Round_Button);
-
 
-function Handle
-       (This  : in out Radio_Round_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_repeat_button.html b/doc/fl_repeat_button.html index 18290c5..d5f7bc1 100644 --- a/doc/fl_repeat_button.html +++ b/doc/fl_repeat_button.html @@ -45,7 +45,7 @@ - + +
Functions and Procedures
Constructors
@@ -54,15 +54,24 @@ Fl_Repeat_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Repeat_Button;
 
+ + + + + + - + diff --git a/doc/fl_return_button.html b/doc/fl_return_button.html index c4dde58..43469eb 100644 --- a/doc/fl_return_button.html +++ b/doc/fl_return_button.html @@ -45,7 +45,7 @@
Functions and Procedures
 
-procedure Draw
+void deactivate();
+
+procedure Deactivate
        (This : in out Repeat_Button);
 
- + +
Functions and Procedures
Constructors
@@ -54,30 +54,44 @@ Fl_Return_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Enter_Button;
 
+ + + + + + +
Functions and Procedures
-void draw();
+int handle(int);
 
-procedure Draw
-       (This : in out Enter_Button);
+function Handle
+       (This  : in out Enter_Button;
+        Event : in     Event_Kind)
+    return Event_Outcome;
 
+ + + + + + diff --git a/doc/fl_roller.html b/doc/fl_roller.html index e0e09ac..597ebe3 100644 --- a/doc/fl_roller.html +++ b/doc/fl_roller.html @@ -46,7 +46,7 @@
Protected Functions and Procedures
-int handle(int);
+void draw();
 
-function Handle
-       (This  : in out Enter_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
+procedure Draw
+       (This : in out Enter_Button);
 
- + +
Functions and Procedures
Constructors
@@ -55,30 +55,44 @@ Fl_Roller(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Roller;
 
+ + + + + + +
Functions and Procedures
-void draw();
+int handle(int);
 
-procedure Draw
-       (This : in out Roller);
+function Handle
+       (This  : in out Roller;
+        Event : in     Event_Kind)
+    return Event_Outcome;
 
+ + + + + + diff --git a/doc/fl_round_button.html b/doc/fl_round_button.html index 298e33b..9a3deb1 100644 --- a/doc/fl_round_button.html +++ b/doc/fl_round_button.html @@ -45,7 +45,7 @@
Protected Functions and Procedures
-int handle(int);
+void draw();
 
-function Handle
-       (This  : in out Roller;
-        Event : in     Event_Kind)
-    return Event_Outcome;
+procedure Draw
+       (This : in out Roller);
 
- + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -54,29 +54,11 @@ Fl_Round_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Round_Button;
 
 
-procedure Draw
-       (This : in out Round_Button);
-
 
-function Handle
-       (This  : in out Round_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_round_clock.html b/doc/fl_round_clock.html index 26ba3ca..bbb06bb 100644 --- a/doc/fl_round_clock.html +++ b/doc/fl_round_clock.html @@ -46,7 +46,7 @@ - + - - - - - - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,38 +55,11 @@ Fl_Round_Clock(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Round_Clock;
 
 
-procedure Draw
-       (This : in out Round_Clock);
-
 
-procedure Draw
-       (This       : in out Clock;
-        X, Y, W, H : in     Integer);
-
 
-function Handle
-       (This  : in out Round_Clock;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_scroll.html b/doc/fl_scroll.html index aab79c9..697fc9b 100644 --- a/doc/fl_scroll.html +++ b/doc/fl_scroll.html @@ -51,36 +51,54 @@ - + + + + + + +
Functions and Procedures
Attributes
-Fl_Scroll(int X, int Y, int W, int H, const char *L=0);
+Fl_Scrollbar hscrollbar;
 
 
-function Create
-       (X, Y, W, H : in Integer;
-        Text       : in String)
-    return Scroll;
+Fl_Scrollbar scrollbar;
 
 
+ + + + + + +
Constructors
-void clear();
+Fl_Scroll(int X, int Y, int W, int H, const char *L=0);
 
-procedure Clear
-       (This : in out Scroll);
+function Create
+       (X, Y, W, H : in Integer;
+        Text       : in String := "")
+    return Scroll;
 
+ + + + + + @@ -171,6 +189,37 @@ procedure Set_Type
Functions and Procedures
-void draw();
+void clear();
 
-procedure Draw
+procedure Clear
        (This : in out Scroll);
 
+ + + + + + + + + + + + + + + + + + + +
Protected Functions and Procedures
+void bbox(int &, int &, int &, int &);
+
 
+void draw();
+
+procedure Draw
+       (This : in out Scroll);
+
+void recalc_scrollbars(Scrollinfo &si);
+
 
+ + diff --git a/doc/fl_scrollbar.html b/doc/fl_scrollbar.html index b58c34c..67db2f8 100644 --- a/doc/fl_scrollbar.html +++ b/doc/fl_scrollbar.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -55,20 +55,17 @@ Fl_Scrollbar(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Scrollbar;
 
-void draw();
-
-procedure Draw
-       (This : in out Scrollbar);
-
+ + + + +
Functions and Procedures
@@ -143,6 +140,23 @@ procedure Set_All
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Scrollbar);
+
+ + diff --git a/doc/fl_secret_input.html b/doc/fl_secret_input.html index 79e8eaf..6d6504c 100644 --- a/doc/fl_secret_input.html +++ b/doc/fl_secret_input.html @@ -55,7 +55,7 @@ Fl_Secret_Input(int X, int Y, int W, int H, const char *L=0);
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Secret_Input;
 
diff --git a/doc/fl_simple_counter.html b/doc/fl_simple_counter.html index 195ebb1..de14c6c 100644 --- a/doc/fl_simple_counter.html +++ b/doc/fl_simple_counter.html @@ -46,7 +46,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -55,29 +55,11 @@ Fl_Simple_Counter(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Simple_Counter;
 
 
-procedure Draw
-       (This : in out Simple_Counter);
-
 
-function Handle
-       (This  : in out Simple_Counter;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_single_window.html b/doc/fl_single_window.html index 1fee0a0..4fb76b2 100644 --- a/doc/fl_single_window.html +++ b/doc/fl_single_window.html @@ -46,7 +46,7 @@ - + @@ -67,18 +67,17 @@ Fl_Single_Window(int X, int Y, int W, int H, const char *L=0); - - - - +
Functions and Procedures
Constructors
@@ -55,7 +55,7 @@ Fl_Single_Window(int W, int H, const char *L=0);
 
 function Create
        (W, H : in Integer;
-        Text : in String)
+        Text : in String := "")
     return Single_Window;
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Single_Window;
 
 
-procedure Draw
-       (This : in out Single_Window);
-
+ + + + + - - - - - diff --git a/doc/fl_slider.html b/doc/fl_slider.html index 7ccd2a1..3b99b86 100644 --- a/doc/fl_slider.html +++ b/doc/fl_slider.html @@ -42,7 +42,7 @@ - + @@ -51,7 +51,7 @@
Functions and Procedures
@@ -91,20 +90,13 @@ procedure Flush
   
 
-function Handle
-       (This  : in out Single_Window;
-        Event : in     Event_Kind)
-    return Event_Outcome;
+int make_current();
 
-int make_current();
+procedure Make_Current
+       (This : in out Single_Window);
 
 
 uchar Slider_Kind
- + @@ -69,9 +69,22 @@ function Create - + +
Functions and Procedures
Constructors
@@ -60,7 +60,7 @@ Fl_Slider(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Slider;
 
 Fl_Slider(uchar t, int X, int Y, int W, int H, const char *L);
 
 
+function Create
+       (Kind       : in Slider_Kind;
+        X, Y, W, H : in Integer;
+        Text       : in String := "")
+    return Slider;
+
+ + + + + + - - - - - - + - +
Functions and Procedures
 void bounds(double a, double b);
@@ -85,16 +98,6 @@ procedure Set_Bounds
 
   
-void draw();
-
-procedure Draw
-       (This : in out Slider);
-
 int handle(int);
 
@@ -159,12 +162,12 @@ void slider_size(double v);
 
 procedure Set_Slide_Size
        (This : in out Slider;
-        To   : in     Float);
+        To   : in     Long_Float);
 
See type() methods for Fl_WidgetSee type method for Fl_Widget.
 function Get_Slider_Type
        (This : in Slider)
@@ -173,7 +176,7 @@ function Get_Slider_Type
   
See type() methods for Fl_WidgetSee type method for Fl_Widget.
 procedure Set_Slider_Type
        (This : in out Slider;
@@ -184,6 +187,47 @@ procedure Set_Slider_Type
 
+ + + + + + + + + + + + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Slider);
+
+void draw(int, int, int, int);
+
+procedure Draw
+       (This       : in out Slider;
+        X, Y, W, H : in     Integer);
+
+int handle(int, int, int, int, int);
+
+function Handle
+       (This       : in out Slider;
+        Event      : in     Event_Kind;
+        X, Y, W, H : in     Integer)
+    return Event_Outcome;
+
+ + diff --git a/doc/fl_spinner.html b/doc/fl_spinner.html index 180937e..179a144 100644 --- a/doc/fl_spinner.html +++ b/doc/fl_spinner.html @@ -46,7 +46,35 @@ - + + + + + + + + + + + + + + + + + +
Functions and Procedures
Protected Attributes
+Fl_Repeat_Button down_button_;
+
 
+Fl_Input input_;
+
 
+Fl_Repeat_Button up_button_;
+
 
+ + + + + +
Constructors
@@ -55,11 +83,18 @@ Fl_Spinner(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Spinner;
 
+ + + + + + - - - - - - + @@ -171,11 +198,11 @@ procedure Set_Minimum - + - + - + diff --git a/doc/fl_surface_device.html b/doc/fl_surface_device.html index bb9cbe2..aec76d5 100644 --- a/doc/fl_surface_device.html +++ b/doc/fl_surface_device.html @@ -77,6 +77,26 @@ function Create +
Functions and Procedures
 void color(Fl_Color v);
@@ -82,14 +117,6 @@ function Get_Background_Color
 
 
-procedure Draw
-       (This : in out Spinner);
-
 const char * format();
@@ -142,7 +169,7 @@ procedure Set_Maximum
 
 double maxinum() const;
 
 Deprecated spelling mistake, use maximum / Get_Maximum instead.
 double mininum() const;
 
 Deprecated spelling mistake, use minimum / Get_Minimum instead.
 Use a combination of minimum and maximum to get the values.
 procedure Get_Range
        (This     : in     Spinner;
@@ -198,7 +225,11 @@ procedure Set_Range
 
 void resize(int X, int Y, int W, int H);
 
 
+procedure Resize
+       (This       : in out Spinner;
+        X, Y, W, H : in     Integer);
+
+ + + + + + + +
Static Functions and Procedures
+static Fl_Surface_Device * surface();
+
+function Get_Current
+    return Surface_Device_Reference;
+
+function Get_Original
+    return Surface_Device_Reference;
+
+ + + @@ -126,26 +146,6 @@ procedure Set_Current
Functions and Procedures
- - - - - - - - - -
Static Functions and Procedures
-static Fl_Surface_Device * surface();
-
-function Get_Current
-    return Surface_Device_Reference;
-
-function Get_Original
-    return Surface_Device_Reference;
-
- - diff --git a/doc/fl_tabs.html b/doc/fl_tabs.html index cb9ea4c..16595ed 100644 --- a/doc/fl_tabs.html +++ b/doc/fl_tabs.html @@ -46,7 +46,7 @@ - + +
Functions and Procedures
Constructors
@@ -55,11 +55,18 @@ Fl_Tabs(int, int, int, int, const char *=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Tabbed_Group;
 
+ + + + + + - - - - -
Functions and Procedures
 void client_area(int &rx, int &ry, int &rw, int &rh, int tabh=0);
@@ -74,16 +81,6 @@ procedure Get_Client_Area
 
   
-void draw();
-
-procedure Draw
-       (This : in out Tabbed_Group);
-
 int handle(int);
 
@@ -153,6 +150,33 @@ function Get_Which
 
+ + + + + + + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Tabbed_Group);
+
+void redraw_tabs();
+
+procedure Redraw_Tabs
+       (This : in out Tabbed_Group);
+
+ + diff --git a/doc/fl_text_display.html b/doc/fl_text_display.html index e77307a..9dd9ff9 100644 --- a/doc/fl_text_display.html +++ b/doc/fl_text_display.html @@ -86,7 +86,20 @@ - + + + + + + +
Functions and Procedures
Protected Attributes
+Too many to list. None that look suited for public API usage. +
+ + + + + +
Constructors
@@ -100,6 +113,13 @@ function Create
 
+ + + + + + - - - - -
Functions and Procedures
 void buffer(Fl_Text_Buffer *buf);
@@ -183,16 +203,6 @@ procedure Set_Cursor_Style
 
   
-virtual void draw();
-
-procedure Draw
-       (This : in out Text_Display);
-
 virtual int handle(int e);
 
@@ -819,6 +829,30 @@ function X_To_Col
 
+ + + + +
Static Protected Functions and Procedures
+ + + + + + + + + + + +
Protected Functions and Procedures
+virtual void draw();
+
+procedure Draw
+       (This : in out Text_Display);
+
+ + diff --git a/doc/fl_text_editor.html b/doc/fl_text_editor.html index 35a7d90..79c9488 100644 --- a/doc/fl_text_editor.html +++ b/doc/fl_text_editor.html @@ -71,196 +71,40 @@ - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Functions and Procedures
-Fl_Text_Editor(int X, int Y, int W, int H, const char *L=0);
-
-function Create
-       (X, Y, W, H : in Integer;
-        Text       : in String)
-    return Text_Editor;
-
Static Protected Attributes
-void add_default_key_bindings(Key_Binding **list);
+static Key_Binding * global_key_bindings;
 
 
-void add_key_binding(int key, int state, Key_Func f, Key_Binding **list);
-
-procedure Add_Key_Binding
-       (This : in out Text_Editor;
-        Bind : in     Key_Binding);
-
-void add_key_binding(int key, int state, Key_Func f);
-
-procedure Add_Key_Binding
-       (This : in out Text_Editor;
-        Key  : in     Key_Combo;
-        Func : in     Key_Func);
-
 
-procedure Add_Key_Bindings
-       (This : in out Text_Editor;
-        List : in     Key_Binding_List);
-
-Key_Func bound_key_function(int key, int state, Key_Binding *list) const;
-
 
-Key_Func bound_key_function(int key, int state) const;
-
-function Get_Bound_Key_Function
-       (This : in Text_Editor;
-        Key  : in Key_Combo)
-    return Key_Func;
-
-void default_key_function(Key_Func f);
-
-procedure Set_Default_Key_Function
-       (This : in out Text_Editor;
-        Func : in     Default_Key_Func);
-
 
-function Get_Default_Key_Function
-       (This : in Text_Editor)
-    return Default_Key_Func;
-
 
-procedure Draw
-       (This : in out Text_Editor);
-
-virtual int handle(int e);
-
-function Handle
-       (This  : in out Text_Editor;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
- -
-void insert_mode(int b);
-
-
-procedure Set_Insert_Mode
-       (This : in out Text_Editor;
-        To   : in     Insert_Mode);
-
- - -
-int insert_mode();
-
-
-function Get_Insert_Mode
-       (This : in Text_Editor)
-    return Insert_Mode;
-
- - -
-void remove_all_key_bindings(Key_Binding **list);
-
-
-procedure Remove_Key_Bindings
-       (This : in out Text_Editor;
-        List : in     Key_Binding_List);
-
- + + - - - - +
Constructors
-void remove_all_key_bindings();
+Fl_Text_Editor(int X, int Y, int W, int H, const char *L=0);
 
-procedure Remove_All_Key_Bindings
-       (This : in out Text_Editor);
+function Create
+       (X, Y, W, H : in Integer;
+        Text       : in String := "")
+    return Text_Editor;
 
-void remove_key_binding(int key, int state, Key_Binding **list);
-
-procedure Remove_Key_Binding
-       (This : in out Text_Editor;
-        Bind : in     Key_Binding);
-
- -
-void remove_key_binding(int key, int state);
-
-
-procedure Remove_Key_Binding
-       (This : in out Text_Editor;
-        Key  : in     Key_Combo);
-
- - -
-void tab_nav(int val);
-
-TBA - - -
-int tab_nav() const;
-
-TBA - + +
Static Functions and Procedures
@@ -570,6 +414,203 @@ procedure KF_Up
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Functions and Procedures
+void add_default_key_bindings(Key_Binding **list);
+
 
+void add_key_binding(int key, int state, Key_Func f, Key_Binding **list);
+
+procedure Add_Key_Binding
+       (This : in out Text_Editor;
+        Bind : in     Key_Binding);
+
+void add_key_binding(int key, int state, Key_Func f);
+
+procedure Add_Key_Binding
+       (This : in out Text_Editor;
+        Key  : in     Key_Combo;
+        Func : in     Key_Func);
+
 
+procedure Add_Key_Bindings
+       (This : in out Text_Editor;
+        List : in     Key_Binding_List);
+
+Key_Func bound_key_function(int key, int state, Key_Binding *list) const;
+
 
+Key_Func bound_key_function(int key, int state) const;
+
+function Get_Bound_Key_Function
+       (This : in Text_Editor;
+        Key  : in Key_Combo)
+    return Key_Func;
+
+void default_key_function(Key_Func f);
+
+procedure Set_Default_Key_Function
+       (This : in out Text_Editor;
+        Func : in     Default_Key_Func);
+
 
+function Get_Default_Key_Function
+       (This : in Text_Editor)
+    return Default_Key_Func;
+
+virtual int handle(int e);
+
+function Handle
+       (This  : in out Text_Editor;
+        Event : in     Event_Kind)
+    return Event_Outcome;
+
+void insert_mode(int b);
+
+procedure Set_Insert_Mode
+       (This : in out Text_Editor;
+        To   : in     Insert_Mode);
+
+int insert_mode();
+
+function Get_Insert_Mode
+       (This : in Text_Editor)
+    return Insert_Mode;
+
+void remove_all_key_bindings(Key_Binding **list);
+
+procedure Remove_Key_Bindings
+       (This : in out Text_Editor;
+        List : in     Key_Binding_List);
+
+void remove_all_key_bindings();
+
+procedure Remove_All_Key_Bindings
+       (This : in out Text_Editor);
+
+void remove_key_binding(int key, int state, Key_Binding **list);
+
+procedure Remove_Key_Binding
+       (This : in out Text_Editor;
+        Bind : in     Key_Binding);
+
+void remove_key_binding(int key, int state);
+
+procedure Remove_Key_Binding
+       (This : in out Text_Editor;
+        Key  : in     Key_Combo);
+
+void tab_nav(int val);
+
TBA
+int tab_nav() const;
+
TBA
+ + + + + + + + + + + + + + + + +
Protected Functions and Procedures
+int handle_key();
+
 
+void maybe_do_callback();
+
 
+ + diff --git a/doc/fl_tile.html b/doc/fl_tile.html index 191492a..675a3a6 100644 --- a/doc/fl_tile.html +++ b/doc/fl_tile.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -60,13 +60,12 @@ function Create
 
 
-procedure Draw
-       (This : in out Tiled_Group);
-
+ + + + + - +
Functions and Procedures
@@ -96,7 +95,11 @@ procedure Position
 
 void resize(int X, int Y, int W, int H);
 
 
+procedure Resize
+       (This       : in out Tiled_Group;
+        X, Y, W, H : in     Integer);
+
diff --git a/doc/fl_toggle_button.html b/doc/fl_toggle_button.html index 17d3354..6d71762 100644 --- a/doc/fl_toggle_button.html +++ b/doc/fl_toggle_button.html @@ -45,7 +45,7 @@ - + - - - - - - - - - -
Functions and Procedures
Constructors
@@ -54,29 +54,11 @@ Fl_Toggle_Button(int X, int Y, int W, int H, const char *L=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Toggle_Button;
 
 
-procedure Draw
-       (This : in out Toggle_Button);
-
 
-function Handle
-       (This  : in out Toggle_Button;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
diff --git a/doc/fl_valuator.html b/doc/fl_valuator.html index 20877e3..c6965a2 100644 --- a/doc/fl_valuator.html +++ b/doc/fl_valuator.html @@ -46,7 +46,7 @@ - + +
Functions and Procedures
Constructors
@@ -55,11 +55,18 @@ Fl_Valuator(int X, int Y, int W, int H, const char *L);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Valuator;
 
+ + + + + + - - - - - + - - + @@ -210,7 +216,7 @@ void step(double a, int b); void step(double s); @@ -218,12 +224,12 @@ procedure Set_Step @@ -252,6 +258,72 @@ procedure Set_Value
Functions and Procedures
 void bounds(double a, double b);
@@ -90,16 +97,6 @@ virtual int format(char *);
 
 
 
-function Handle
-       (This  : in out Valuator;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
 double increment(double, int);
@@ -193,16 +190,25 @@ function Round
 
   
-void step(int a);
+double step() const;
+
+function Get_Step
+       (This : in Valuator)
+    return Long_Float;
 
 
 void step(double a, int b);
 
 
+procedure Set_Step
+       (This   : in out Valuator;
+        Top    : in     Long_Float;
+        Bottom : in     Integer);
+
-procedure Set_Step
+procedure Set_Step_Top
        (This : in out Valuator;
         To   : in     Long_Float);
 
-double step() const;
+void step(int a);
 
-function Get_Step
-       (This : in Valuator)
-    return Long_Float;
+procedure Set_Step_Bottom
+       (This : in out Valuator;
+        To   : in     Integer);
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Protected Functions and Procedures
+void handle_drag(double newvalue);
+
Intentionally left unbound.
+void handle_push();
+
Intentionally left unbound.
+void handle_release();
+
Intentionally left unbound.
+int horizontal() const;
+
Intentionally left unbound.
+double previous_value() const;
+
Intentionally left unbound.
+void set_value(double v);
+
Intentionally left unbound.
+double softclamp(double);
+
Intentionally left unbound.
+virtual void value_damage();
+
+procedure Value_Damage
+       (This : in out Valuator);
+
+ + diff --git a/doc/fl_value_input.html b/doc/fl_value_input.html index 3f84cee..778d37e 100644 --- a/doc/fl_value_input.html +++ b/doc/fl_value_input.html @@ -46,7 +46,25 @@ - + + + + + + + +
Functions and Procedures
Attributes
+Fl_Input input;
+
+function Text_Field
+       (This : in Value_Input)
+    return FLTK.Widgets.Inputs.Text.Text_Input_Reference;
+
+ + + + + +
Constructors
@@ -55,11 +73,18 @@ Fl_Value_Input(int x, int y, int w, int h, const char *l=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Value_Input;
 
+ + + + + + - - - - - - - - - - @@ -146,23 +154,23 @@ procedure Set_Shortcut @@ -235,6 +243,23 @@ procedure Set_Text_Size
Functions and Procedures
 Fl_Color cursor_color() const;
@@ -84,16 +109,6 @@ procedure Set_Cursor_Color
 
   
-void draw();
-
-procedure Draw
-       (This : in out Value_Input);
-
 int handle(int);
 
@@ -106,20 +121,13 @@ function Handle
 
   
-Fl_Input input;
-
-function Text_Field
-       (This : in Value_Input)
-    return FLTK.Widgets.Inputs.Text.Text_Input_Reference;
+void resize(int, int, int, int);
 
-void resize(int, int, int, int);
+procedure Resize
+       (This       : in out Value_Input;
+        X, Y, W, H : in     Integer);
 
 
-void soft(char s);
+char soft() const;
 
-procedure Set_Soft
-       (This : in out Value_Input;
-        To   : in     Boolean);
+function Is_Soft
+       (This : in Value_Input)
+    return Boolean;
 
-char soft() const;
+void soft(char s);
 
-function Is_Soft
-       (This : in Value_Input)
-    return Boolean;
+procedure Set_Soft
+       (This : in out Value_Input;
+        To   : in     Boolean);
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Value_Input);
+
+ + diff --git a/doc/fl_value_output.html b/doc/fl_value_output.html index ccf05c1..bb30970 100644 --- a/doc/fl_value_output.html +++ b/doc/fl_value_output.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -55,20 +55,17 @@ Fl_Value_Output(int x, int y, int w, int h, const char *l=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Value_Output;
 
-void draw();
-
-procedure Draw
-       (This : in out Value_Output);
-
+ + + + + @@ -173,6 +170,23 @@ procedure Set_Text_Size
Functions and Procedures
@@ -84,23 +81,23 @@ function Handle
 
   
-void soft(char s);
+char soft() const;
 
-procedure Set_Soft
-       (This : in out Value_Output;
-        To   : in     Boolean);
+function Is_Soft
+       (This : in Value_Output)
+    return Boolean;
 
-char soft() const;
+void soft(char s);
 
-function Is_Soft
-       (This : in Value_Output)
-    return Boolean;
+procedure Set_Soft
+       (This : in out Value_Output;
+        To   : in     Boolean);
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Value_Output);
+
+ + diff --git a/doc/fl_value_slider.html b/doc/fl_value_slider.html index 0b1fd97..80bdf33 100644 --- a/doc/fl_value_slider.html +++ b/doc/fl_value_slider.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -55,20 +55,17 @@ Fl_Value_Slider(int x, int y, int w, int h, const char *l=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Value_Slider;
 
-void draw();
-
-procedure Draw
-       (This : in out Value_Slider);
-
+ + + + +
Functions and Procedures
@@ -151,6 +148,23 @@ procedure Set_Text_Size
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
+procedure Draw
+       (This : in out Value_Slider);
+
+ + diff --git a/doc/fl_widget.html b/doc/fl_widget.html index a5e0e7c..88b8aad 100644 --- a/doc/fl_widget.html +++ b/doc/fl_widget.html @@ -65,7 +65,7 @@ Fl_Widget(int x, int y, int w, int h, const char *label=0L);
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Widget;
 
diff --git a/doc/fl_window.html b/doc/fl_window.html index 5dd6b3b..9b39c93 100644 --- a/doc/fl_window.html +++ b/doc/fl_window.html @@ -56,7 +56,35 @@ - + + + + + + + +
Functions and Procedures
Static Protected Attributes
+static Fl_Window * current_;
+
Intentionally left unbound.
+ + + + + + + + + + + +
Protected Attributes
+shape_data_type * shape_data_;
+
Intentionally left unbound.
+ + + + + @@ -77,11 +105,73 @@ Fl_Window(int x, int y, int w, int h, const char *title=0); +
Constructors
@@ -65,7 +93,7 @@ Fl_Window(int w, int h, const char *title=0);
 
 function Create
        (W, H : in Integer;
-        Text : in String)
+        Text : in String := "")
     return Window;
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Window;
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Static Functions and Procedures
+static Fl_Window * current();
+
+function Last_Made_Current
+    return access Window'Class;
+
+static void default_callback(Fl_Window *, void *v);
+
 
+static void default_icon(const Fl_RGB_Image *);
+
+procedure Set_Default_Icon
+       (Pic : in out FLTK.Images.RGB.RGB_Image'Class);
+
+static void default_icons(const Fl_RGB_Image *[], int);
+
 
+static const char * default_xclass();
+
 
+static void default_xclass(const char *);
+
 
+ + + + + + - - - - - - - - - - - - - - -
Functions and Procedures
 virtual Fl_Window * as_window();
@@ -138,16 +228,6 @@ void copy_label(const char *a);
 
   
-static Fl_Window * current();
-
-function Last_Made_Current
-    return access Window'Class;
-
 void cursor(Fl_Cursor);
 
@@ -218,26 +298,6 @@ void default_cursor(Fl_Cursor c, Fl_Color, Fl_Color=FL_WHITE);
 
   
-static void default_icon(const Fl_RGB_Image *);
-
-procedure Set_Default_Icon
-       (Pic : in out FLTK.Images.RGB.RGB_Image'Class);
-
-virtual void draw();
-
-procedure Draw
-       (This : in out Window);
-
 void free_position();
 
@@ -336,6 +396,7 @@ procedure Hotspot
   
 void hotspot(const Fl_Widget *, int offscreen=0);
+
 void hotspot(const Fl_Widget &p, int offscreen=0);
 
@@ -533,6 +594,7 @@ void set_tooltip_window();
   
 void shape(const Fl_Image *img);
+
 void shape(const Fl_Image &b);
 
@@ -572,7 +634,8 @@ function Is_Shown
 
   
-void size_range(int minw, int minh, int maxw=0, int maxh=0, int dw=0, int dh=0, int aspect=0);
+void size_range(int minw, int minh, int maxw=0, int maxh=0,
+    int dw=0, int dh=0, int aspect=0);
 
 procedure Set_Size_Range
@@ -639,6 +702,51 @@ function Get_Y_Root
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Protected Functions and Procedures
+virtual void draw();
+
+procedure Draw
+       (This : in out Window);
+
+virtual void flush();
+
 
+int force_position() const;
+
 
+void force_position(int force);
+
 
+void free_icons();
+
 
+ + diff --git a/doc/fl_wizard.html b/doc/fl_wizard.html index 0fad60a..bcee170 100644 --- a/doc/fl_wizard.html +++ b/doc/fl_wizard.html @@ -46,7 +46,7 @@ - + - - - - +
Functions and Procedures
Constructors
@@ -55,28 +55,17 @@ Fl_Wizard(int, int, int, int, const char *=0);
 
 function Create
        (X, Y, W, H : in Integer;
-        Text       : in String)
+        Text       : in String := "")
     return Wizard;
 
 
-procedure Draw
-       (This : in out Wizard);
-
- -  -
-function Handle
-       (This  : in out Wizard;
-        Event : in     Event_Kind)
-    return Event_Outcome;
-
- + + + +
Functions and Procedures
@@ -123,6 +112,23 @@ procedure Set_Visible
 
+ + + + + + + + + +
Protected Functions and Procedures
+void draw();
+
(Actually private in 1.3)
+procedure Draw
+       (This : in out Wizard);
+
+ + diff --git a/progress.txt b/progress.txt index 8fb0db6..08a5f31 100644 --- a/progress.txt +++ b/progress.txt @@ -171,7 +171,7 @@ Fl_Device_Plugin Fl_Plugin Fl_Plugin_Manager -(XForms legacy compatibility) +(XForms legacy compatibility) (why did I bind Fl_Chart/Fl_Clock then?) Fl_FormsBitmap Fl_FormsPixmap Fl_FormsText diff --git a/src/c_fl_adjuster.cpp b/src/c_fl_adjuster.cpp index e57bbea..1b9db8e 100644 --- a/src/c_fl_adjuster.cpp +++ b/src/c_fl_adjuster.cpp @@ -6,62 +6,54 @@ #include #include "c_fl_adjuster.h" -#include "c_fl_type.h" -class My_Adjuster : public Fl_Adjuster { - public: - using Fl_Adjuster::Fl_Adjuster; - friend void adjuster_set_draw_hook(ADJUSTER a, void * d); - friend void fl_adjuster_draw(ADJUSTER a); - friend void adjuster_set_handle_hook(ADJUSTER a, void * h); - friend int fl_adjuster_handle(ADJUSTER a, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Non-friend protected access + +class Friend_Adjuster : Fl_Adjuster { +public: + using Fl_Adjuster::value_damage; }; -void My_Adjuster::draw() { - (*draw_hook)(this->user_data()); -} -void My_Adjuster::real_draw() { - Fl_Adjuster::draw(); -} -int My_Adjuster::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Adjuster::real_handle(int e) { - return Fl_Adjuster::handle(e); -} +// Attaching all relevant hooks and friends -void adjuster_set_draw_hook(ADJUSTER a, void * d) { - reinterpret_cast(a)->draw_hook = reinterpret_cast(d); -} +class My_Adjuster : public Fl_Adjuster { +public: + using Fl_Adjuster::Fl_Adjuster; -void fl_adjuster_draw(ADJUSTER a) { - reinterpret_cast(a)->real_draw(); -} + friend void fl_adjuster_draw(ADJUSTER a); + friend int fl_adjuster_handle(ADJUSTER a, int e); -void adjuster_set_handle_hook(ADJUSTER a, void * h) { - reinterpret_cast(a)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Adjuster::draw() { + widget_draw_hook(this->user_data()); } -int fl_adjuster_handle(ADJUSTER a, int e) { - return reinterpret_cast(a)->real_handle(e); +int My_Adjuster::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + ADJUSTER new_fl_adjuster(int x, int y, int w, int h, char* label) { My_Adjuster *a = new My_Adjuster(x, y, w, h, label); return a; @@ -82,3 +74,19 @@ void fl_adjuster_set_soft(ADJUSTER a, int t) { reinterpret_cast(a)->soft(t); } + + + +void fl_adjuster_value_damage(ADJUSTER a) { + (reinterpret_cast(a)->*(&Friend_Adjuster::value_damage))(); +} + +void fl_adjuster_draw(ADJUSTER a) { + reinterpret_cast(a)->Fl_Adjuster::draw(); +} + +int fl_adjuster_handle(ADJUSTER a, int e) { + return reinterpret_cast(a)->Fl_Adjuster::handle(e); +} + + diff --git a/src/c_fl_adjuster.h b/src/c_fl_adjuster.h index f2fb0a4..fbaa5ec 100644 --- a/src/c_fl_adjuster.h +++ b/src/c_fl_adjuster.h @@ -8,30 +8,22 @@ #define FL_ADJUSTER_GUARD - - typedef void* ADJUSTER; - - -extern "C" void adjuster_set_draw_hook(ADJUSTER a, void * d); -extern "C" void fl_adjuster_draw(ADJUSTER a); -extern "C" void adjuster_set_handle_hook(ADJUSTER a, void * h); -extern "C" int fl_adjuster_handle(ADJUSTER a, int e); - - - - extern "C" ADJUSTER new_fl_adjuster(int x, int y, int w, int h, char* label); extern "C" void free_fl_adjuster(ADJUSTER a); - - extern "C" int fl_adjuster_is_soft(ADJUSTER a); extern "C" void fl_adjuster_set_soft(ADJUSTER a, int t); +extern "C" void fl_adjuster_value_damage(ADJUSTER a); +extern "C" void fl_adjuster_draw(ADJUSTER a); +extern "C" int fl_adjuster_handle(ADJUSTER a, int e); + + #endif + diff --git a/src/c_fl_box.cpp b/src/c_fl_box.cpp index ec1a5de..67b4e0b 100644 --- a/src/c_fl_box.cpp +++ b/src/c_fl_box.cpp @@ -6,68 +6,67 @@ #include #include "c_fl_box.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Box : public Fl_Box { - public: - using Fl_Box::Fl_Box; - friend void box_set_draw_hook(BOX n, void * d); - friend void fl_box_draw(BOX n); - friend void box_set_handle_hook(BOX n, void * h); - friend int fl_box_handle(BOX n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Box::Fl_Box; + + friend void fl_box_draw(BOX n); + friend int fl_box_handle(BOX n, int e); + + void draw(); + int handle(int e); }; void My_Box::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Box::real_draw() { - Fl_Box::draw(); + widget_draw_hook(this->user_data()); } int My_Box::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Box::real_handle(int e) { - return Fl_Box::handle(e); -} -void box_set_draw_hook(BOX n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} -void fl_box_draw(BOX n) { - reinterpret_cast(n)->real_draw(); + +// Flattened C API + +BOX new_fl_box(int x, int y, int w, int h, char* label) { + My_Box *b = new My_Box(x, y, w, h, label); + return b; } -void box_set_handle_hook(BOX n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +BOX new_fl_box2(int k, int x, int y, int w, int h, char * label) { + My_Box *b = new My_Box(static_cast(k), x, y, w, h, label); + return b; } -int fl_box_handle(BOX n, int e) { - return reinterpret_cast(n)->real_handle(e); +void free_fl_box(BOX b) { + delete reinterpret_cast(b); } -BOX new_fl_box(int x, int y, int w, int h, char* label) { - My_Box *b = new My_Box(x, y, w, h, label); - return b; +void fl_box_draw(BOX n) { + reinterpret_cast(n)->Fl_Box::draw(); } -void free_fl_box(BOX b) { - delete reinterpret_cast(b); +int fl_box_handle(BOX n, int e) { + return reinterpret_cast(n)->Fl_Box::handle(e); } + diff --git a/src/c_fl_box.h b/src/c_fl_box.h index b538a6e..5143c3f 100644 --- a/src/c_fl_box.h +++ b/src/c_fl_box.h @@ -8,24 +8,18 @@ #define FL_BOX_GUARD - - typedef void* BOX; +extern "C" BOX new_fl_box(int x, int y, int w, int h, char * label); +extern "C" BOX new_fl_box2(int k, int x, int y, int w, int h, char * label); +extern "C" void free_fl_box(BOX b); -extern "C" void box_set_draw_hook(BOX n, void * d); extern "C" void fl_box_draw(BOX n); -extern "C" void box_set_handle_hook(BOX n, void * h); extern "C" int fl_box_handle(BOX n, int e); - - -extern "C" BOX new_fl_box(int x, int y, int w, int h, char * label); -extern "C" void free_fl_box(BOX b); - - #endif + diff --git a/src/c_fl_browser.cpp b/src/c_fl_browser.cpp index 8bd7c96..0a29e22 100644 --- a/src/c_fl_browser.cpp +++ b/src/c_fl_browser.cpp @@ -336,6 +336,13 @@ void fl_browser_hide(BROWSER b) { +void fl_browser_set_size(BROWSER b, int w, int h) { + reinterpret_cast(b)->size(w, h); +} + + + + void fl_browser_set_icon(BROWSER b, int l, void * c) { reinterpret_cast(b)->icon(l, reinterpret_cast(c)); } diff --git a/src/c_fl_browser.h b/src/c_fl_browser.h index f1603bc..2729303 100644 --- a/src/c_fl_browser.h +++ b/src/c_fl_browser.h @@ -59,6 +59,9 @@ extern "C" void fl_browser_show(BROWSER b); extern "C" void fl_browser_hide(BROWSER b); +extern "C" void fl_browser_set_size(BROWSER b, int w, int h); + + extern "C" void fl_browser_set_icon(BROWSER b, int l, void * c); extern "C" void fl_browser_remove_icon(BROWSER b, int l); diff --git a/src/c_fl_button.cpp b/src/c_fl_button.cpp index 07d5c64..1cff342 100644 --- a/src/c_fl_button.cpp +++ b/src/c_fl_button.cpp @@ -6,7 +6,6 @@ #include #include "c_fl_button.h" -#include "c_fl_type.h" @@ -26,57 +25,50 @@ void fl_button_extra_final(void * adaobj) { -class My_Button : public Fl_Button { - public: - using Fl_Button::Fl_Button; - friend void button_set_draw_hook(BUTTON b, void * d); - friend void fl_button_draw(BUTTON b); - friend void button_set_handle_hook(BUTTON b, void * h); - friend int fl_button_handle(BUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Non-friend protected access + +class Friend_Button : Fl_Button { +public: + using Fl_Button::simulate_key_action; }; -void My_Button::draw() { - (*draw_hook)(this->user_data()); -} -void My_Button::real_draw() { - Fl_Button::draw(); -} -int My_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Button::real_handle(int e) { - return Fl_Button::handle(e); -} +// Attaching all relevant hooks and friends -void button_set_draw_hook(BUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +class My_Button : public Fl_Button { +public: + using Fl_Button::Fl_Button; -void fl_button_draw(BUTTON b) { - reinterpret_cast(b)->real_draw(); -} + friend void fl_button_draw(BUTTON b); + friend int fl_button_handle(BUTTON b, int e); + + void draw(); + int handle(int e); +}; -void button_set_handle_hook(BUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_button_handle(BUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + BUTTON new_fl_button(int x, int y, int w, int h, char* label) { My_Button *b = new My_Button(x, y, w, h, label); return b; @@ -121,3 +113,21 @@ void fl_button_set_shortcut(BUTTON b, int k) { } + + +void fl_button_draw(BUTTON b) { + reinterpret_cast(b)->Fl_Button::draw(); +} + +int fl_button_handle(BUTTON b, int e) { + return reinterpret_cast(b)->Fl_Button::handle(e); +} + + + + +void fl_button_simulate_key_action(BUTTON b) { + (reinterpret_cast(b)->*(&Friend_Button::simulate_key_action))(); +} + + diff --git a/src/c_fl_button.h b/src/c_fl_button.h index 9c3ecad..f644a50 100644 --- a/src/c_fl_button.h +++ b/src/c_fl_button.h @@ -15,12 +15,6 @@ extern "C" void fl_button_extra_final(void * adaobj); typedef void* BUTTON; -extern "C" void button_set_draw_hook(BUTTON b, void * d); -extern "C" void fl_button_draw(BUTTON b); -extern "C" void button_set_handle_hook(BUTTON b, void * h); -extern "C" int fl_button_handle(BUTTON b, int e); - - extern "C" BUTTON new_fl_button(int x, int y, int w, int h, char* label); extern "C" void free_fl_button(BUTTON b); @@ -36,6 +30,13 @@ extern "C" int fl_button_get_shortcut(BUTTON b); extern "C" void fl_button_set_shortcut(BUTTON b, int k); +extern "C" void fl_button_draw(BUTTON b); +extern "C" int fl_button_handle(BUTTON b, int e); + + +extern "C" void fl_button_simulate_key_action(BUTTON b); + + #endif diff --git a/src/c_fl_cairo_window.cpp b/src/c_fl_cairo_window.cpp index 59b03ed..39f3031 100644 --- a/src/c_fl_cairo_window.cpp +++ b/src/c_fl_cairo_window.cpp @@ -38,8 +38,6 @@ public: friend void fl_cairo_window_draw(CAIROWINDOW w); int handle(int e); - -protected: void draw(); }; diff --git a/src/c_fl_chart.cpp b/src/c_fl_chart.cpp index c3667a2..56bfb80 100644 --- a/src/c_fl_chart.cpp +++ b/src/c_fl_chart.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_chart.h" -#include "c_fl_type.h" -class My_Chart : public Fl_Chart { - public: - using Fl_Chart::Fl_Chart; - friend void chart_set_draw_hook(CHART n, void * d); - friend void fl_chart_draw(CHART n); - friend void chart_set_handle_hook(CHART n, void * h); - friend int fl_chart_handle(CHART n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Chart::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Chart::real_draw() { - Fl_Chart::draw(); -} -int My_Chart::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Chart::real_handle(int e) { - return Fl_Chart::handle(e); -} -void chart_set_draw_hook(CHART n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_chart_draw(CHART n) { - reinterpret_cast(n)->real_draw(); -} +class My_Chart : public Fl_Chart { +public: + using Fl_Chart::Fl_Chart; + + friend void fl_chart_draw(CHART n); + friend int fl_chart_handle(CHART n, int e); + + void draw(); + int handle(int e); +}; -void chart_set_handle_hook(CHART n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +void My_Chart::draw() { + widget_draw_hook(this->user_data()); } -int fl_chart_handle(CHART n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Chart::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + CHART new_fl_chart(int x, int y, int w, int h, char* label) { My_Chart *b = new My_Chart(x, y, w, h, label); return b; @@ -156,3 +138,14 @@ void fl_chart_set_textsize(CHART b, int s) { } + + +void fl_chart_draw(CHART n) { + reinterpret_cast(n)->Fl_Chart::draw(); +} + +int fl_chart_handle(CHART n, int e) { + return reinterpret_cast(n)->Fl_Chart::handle(e); +} + + diff --git a/src/c_fl_chart.h b/src/c_fl_chart.h index ec0e034..bd524c3 100644 --- a/src/c_fl_chart.h +++ b/src/c_fl_chart.h @@ -8,27 +8,13 @@ #define FL_CHART_GUARD - - typedef void* CHART; - - -extern "C" void chart_set_draw_hook(CHART n, void * d); -extern "C" void fl_chart_draw(CHART n); -extern "C" void chart_set_handle_hook(CHART n, void * h); -extern "C" int fl_chart_handle(CHART n, int e); - - - - extern "C" CHART new_fl_chart(int x, int y, int w, int h, char * label); extern "C" void free_fl_chart(CHART b); - - extern "C" void fl_chart_add(CHART b, double v, char * s, unsigned int c); extern "C" void fl_chart_insert(CHART b, int i, double v, char * s, unsigned int c); extern "C" void fl_chart_replace(CHART b, int i, double v, char * s, unsigned int c); @@ -55,5 +41,10 @@ extern "C" int fl_chart_get_textsize(CHART b); extern "C" void fl_chart_set_textsize(CHART b, int s); +extern "C" void fl_chart_draw(CHART n); +extern "C" int fl_chart_handle(CHART n, int e); + + #endif + diff --git a/src/c_fl_check_button.cpp b/src/c_fl_check_button.cpp index 964c889..2eb61a1 100644 --- a/src/c_fl_check_button.cpp +++ b/src/c_fl_check_button.cpp @@ -6,7 +6,6 @@ #include #include "c_fl_check_button.h" -#include "c_fl_type.h" @@ -27,57 +26,40 @@ void fl_check_button_extra_final(void * adaobj) { -class My_Check_Button : public Fl_Check_Button { - public: - using Fl_Check_Button::Fl_Check_Button; - friend void check_button_set_draw_hook(CHECKBUTTON b, void * d); - friend void fl_check_button_draw(CHECKBUTTON b); - friend void check_button_set_handle_hook(CHECKBUTTON b, void * h); - friend int fl_check_button_handle(CHECKBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Check_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Check_Button::real_draw() { - Fl_Check_Button::draw(); -} -int My_Check_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Check_Button::real_handle(int e) { - return Fl_Check_Button::handle(e); -} -void check_button_set_draw_hook(CHECKBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_check_button_draw(CHECKBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Check_Button : public Fl_Check_Button { +public: + using Fl_Check_Button::Fl_Check_Button; + + friend void fl_check_button_draw(CHECKBUTTON b); + friend int fl_check_button_handle(CHECKBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void check_button_set_handle_hook(CHECKBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Check_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_check_button_handle(CHECKBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Check_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + CHECKBUTTON new_fl_check_button(int x, int y, int w, int h, char* label) { My_Check_Button *b = new My_Check_Button(x, y, w, h, label); return b; @@ -87,3 +69,15 @@ void free_fl_check_button(CHECKBUTTON b) { delete reinterpret_cast(b); } + + + +void fl_check_button_draw(CHECKBUTTON b) { + reinterpret_cast(b)->Fl_Check_Button::draw(); +} + +int fl_check_button_handle(CHECKBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Check_Button::handle(e); +} + + diff --git a/src/c_fl_check_button.h b/src/c_fl_check_button.h index 2c25387..cfa6bff 100644 --- a/src/c_fl_check_button.h +++ b/src/c_fl_check_button.h @@ -16,16 +16,14 @@ extern "C" void fl_check_button_extra_final(void * adaobj); typedef void* CHECKBUTTON; -extern "C" void check_button_set_draw_hook(CHECKBUTTON b, void * d); -extern "C" void fl_check_button_draw(CHECKBUTTON b); -extern "C" void check_button_set_handle_hook(CHECKBUTTON b, void * h); -extern "C" int fl_check_button_handle(CHECKBUTTON b, int e); - - extern "C" CHECKBUTTON new_fl_check_button(int x, int y, int w, int h, char* label); extern "C" void free_fl_check_button(CHECKBUTTON b); +extern "C" void fl_check_button_draw(CHECKBUTTON b); +extern "C" int fl_check_button_handle(CHECKBUTTON b, int e); + + #endif diff --git a/src/c_fl_choice.cpp b/src/c_fl_choice.cpp index 6d6a472..e8c8374 100644 --- a/src/c_fl_choice.cpp +++ b/src/c_fl_choice.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_choice.h" -#include "c_fl_type.h" -class My_Choice : public Fl_Choice { - public: - using Fl_Choice::Fl_Choice; - friend void choice_set_draw_hook(CHOICE n, void * d); - friend void fl_choice_draw(CHOICE n); - friend void choice_set_handle_hook(CHOICE n, void * h); - friend int fl_choice_handle(CHOICE n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Choice::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Choice::real_draw() { - Fl_Choice::draw(); -} -int My_Choice::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Choice::real_handle(int e) { - return Fl_Choice::handle(e); -} -void choice_set_draw_hook(CHOICE n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_choice_draw(CHOICE n) { - reinterpret_cast(n)->real_draw(); -} +class My_Choice : public Fl_Choice { +public: + using Fl_Choice::Fl_Choice; + + friend void fl_choice_draw(CHOICE n); + friend int fl_choice_handle(CHOICE n, int e); + + void draw(); + int handle(int e); +}; -void choice_set_handle_hook(CHOICE n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +void My_Choice::draw() { + widget_draw_hook(this->user_data()); } -int fl_choice_handle(CHOICE n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Choice::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + CHOICE new_fl_choice(int x, int y, int w, int h, char* label) { My_Choice *b = new My_Choice(x, y, w, h, label); return b; @@ -87,3 +69,14 @@ int fl_choice_set_value2(CHOICE c, void * i) { } + + +void fl_choice_draw(CHOICE n) { + reinterpret_cast(n)->Fl_Choice::draw(); +} + +int fl_choice_handle(CHOICE n, int e) { + return reinterpret_cast(n)->Fl_Choice::handle(e); +} + + diff --git a/src/c_fl_choice.h b/src/c_fl_choice.h index 78c8f55..5d076b1 100644 --- a/src/c_fl_choice.h +++ b/src/c_fl_choice.h @@ -8,31 +8,22 @@ #define FL_CHOICE_GUARD - - typedef void* CHOICE; - - -extern "C" void choice_set_draw_hook(CHOICE n, void * d); -extern "C" void fl_choice_draw(CHOICE n); -extern "C" void choice_set_handle_hook(CHOICE n, void * h); -extern "C" int fl_choice_handle(CHOICE n, int e); - - - - extern "C" CHOICE new_fl_choice(int x, int y, int w, int h, char * label); extern "C" void free_fl_choice(CHOICE b); - - extern "C" int fl_choice_value(CHOICE c); extern "C" int fl_choice_set_value(CHOICE c, int p); extern "C" int fl_choice_set_value2(CHOICE c, void * i); +extern "C" void fl_choice_draw(CHOICE n); +extern "C" int fl_choice_handle(CHOICE n, int e); + + #endif + diff --git a/src/c_fl_clock.cpp b/src/c_fl_clock.cpp index 0741726..a7e570e 100644 --- a/src/c_fl_clock.cpp +++ b/src/c_fl_clock.cpp @@ -6,69 +6,50 @@ #include #include "c_fl_clock.h" -#include "c_fl_type.h" -class My_Clock : public Fl_Clock { - public: - using Fl_Clock::Fl_Clock; - friend void clock_set_draw_hook(CLOCK c, void * d); - friend void fl_clock_draw(CLOCK c); - friend void clock_set_handle_hook(CLOCK c, void * h); - friend int fl_clock_handle(CLOCK c, int e); - friend void fl_clock_draw2(CLOCK c, int x, int y, int w, int h); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Clock::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Clock::real_draw() { - Fl_Clock::draw(); -} -int My_Clock::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Clock::real_handle(int e) { - return Fl_Clock::handle(e); -} -void clock_set_draw_hook(CLOCK c, void * d) { - reinterpret_cast(c)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_clock_draw(CLOCK c) { - reinterpret_cast(c)->real_draw(); -} +class My_Clock : public Fl_Clock { +public: + using Fl_Clock::Fl_Clock; -void clock_set_handle_hook(CLOCK c, void * h) { - reinterpret_cast(c)->handle_hook = reinterpret_cast(h); + friend void fl_clock_draw(CLOCK c); + friend int fl_clock_handle(CLOCK c, int e); + + void draw(); + int handle(int e); +}; + +void My_Clock::draw() { + widget_draw_hook(this->user_data()); } -int fl_clock_handle(CLOCK c, int e) { - return reinterpret_cast(c)->real_handle(e); +int My_Clock::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + CLOCK new_fl_clock(int x, int y, int w, int h, char* label) { My_Clock *c = new My_Clock(x, y, w, h, label); return c; } -CLOCK new_fl_clock2(uchar k, int x, int y, int w, int h, char* label) { +CLOCK new_fl_clock2(unsigned char k, int x, int y, int w, int h, char* label) { My_Clock *c = new My_Clock(k,x,y,w,h,label); return c; } @@ -80,8 +61,12 @@ void free_fl_clock(CLOCK c) { -void fl_clock_draw2(CLOCK c, int x, int y, int w, int h) { - reinterpret_cast(c)->Fl_Clock::draw(x,y,w,h); +void fl_clock_draw(CLOCK c) { + reinterpret_cast(c)->Fl_Clock::draw(); +} + +int fl_clock_handle(CLOCK c, int e) { + return reinterpret_cast(c)->Fl_Clock::handle(e); } diff --git a/src/c_fl_clock.h b/src/c_fl_clock.h index bda955f..4b07d7e 100644 --- a/src/c_fl_clock.h +++ b/src/c_fl_clock.h @@ -8,30 +8,18 @@ #define FL_CLOCK_GUARD - - typedef void* CLOCK; - - -extern "C" void clock_set_draw_hook(CLOCK c, void * d); -extern "C" void fl_clock_draw(CLOCK c); -extern "C" void clock_set_handle_hook(CLOCK c, void * h); -extern "C" int fl_clock_handle(CLOCK c, int e); - - - - extern "C" CLOCK new_fl_clock(int x, int y, int w, int h, char* label); -extern "C" CLOCK new_fl_clock2(uchar k, int x, int y, int w, int h, char* label); +extern "C" CLOCK new_fl_clock2(unsigned char k, int x, int y, int w, int h, char* label); extern "C" void free_fl_clock(CLOCK c); - - -extern "C" void fl_clock_draw2(CLOCK c, int x, int y, int w, int h); +extern "C" void fl_clock_draw(CLOCK c); +extern "C" int fl_clock_handle(CLOCK c, int e); #endif + diff --git a/src/c_fl_clock_output.cpp b/src/c_fl_clock_output.cpp index b2a6546..91aaae4 100644 --- a/src/c_fl_clock_output.cpp +++ b/src/c_fl_clock_output.cpp @@ -6,63 +6,55 @@ #include #include "c_fl_clock_output.h" -#include "c_fl_type.h" -class My_Clock_Output : public Fl_Clock_Output { - public: - using Fl_Clock_Output::Fl_Clock_Output; - friend void clock_output_set_draw_hook(CLOCK_OUTPUT c, void * d); - friend void fl_clock_output_draw(CLOCK_OUTPUT c); - friend void clock_output_set_handle_hook(CLOCK_OUTPUT c, void * h); - friend int fl_clock_output_handle(CLOCK_OUTPUT c, int e); - friend void fl_clock_output_draw2(CLOCK_OUTPUT c, int x, int y, int w, int h); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Non-friend protected access + +class Friend_Clock_Output : Fl_Clock_Output { +public: + // Really only needed for the (int,int,int,int) version + using Fl_Clock_Output::draw; }; -void My_Clock_Output::draw() { - (*draw_hook)(this->user_data()); -} -void My_Clock_Output::real_draw() { - Fl_Clock_Output::draw(); -} -int My_Clock_Output::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Clock_Output::real_handle(int e) { - return Fl_Clock_Output::handle(e); -} +// Attaching all relevant hooks and friends -void clock_output_set_draw_hook(CLOCK_OUTPUT c, void * d) { - reinterpret_cast(c)->draw_hook = reinterpret_cast(d); -} +class My_Clock_Output : public Fl_Clock_Output { +public: + using Fl_Clock_Output::Fl_Clock_Output; -void fl_clock_output_draw(CLOCK_OUTPUT c) { - reinterpret_cast(c)->real_draw(); -} + friend void fl_clock_output_draw(CLOCK_OUTPUT c); + friend int fl_clock_output_handle(CLOCK_OUTPUT c, int e); + + void draw(); + int handle(int e); +}; -void clock_output_set_handle_hook(CLOCK_OUTPUT c, void * h) { - reinterpret_cast(c)->handle_hook = reinterpret_cast(h); +void My_Clock_Output::draw() { + widget_draw_hook(this->user_data()); } -int fl_clock_output_handle(CLOCK_OUTPUT c, int e) { - return reinterpret_cast(c)->real_handle(e); +int My_Clock_Output::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + CLOCK_OUTPUT new_fl_clock_output(int x, int y, int w, int h, char* label) { My_Clock_Output *c = new My_Clock_Output(x, y, w, h, label); return c; @@ -88,11 +80,11 @@ int fl_clock_output_get_second(CLOCK_OUTPUT c) { } -ulong fl_clock_output_get_value(CLOCK_OUTPUT c) { +unsigned long fl_clock_output_get_value(CLOCK_OUTPUT c) { return reinterpret_cast(c)->Fl_Clock_Output::value(); } -void fl_clock_output_set_value(CLOCK_OUTPUT c, ulong v) { +void fl_clock_output_set_value(CLOCK_OUTPUT c, unsigned long v) { reinterpret_cast(c)->Fl_Clock_Output::value(v); } @@ -103,8 +95,17 @@ void fl_clock_output_set_value2(CLOCK_OUTPUT c, int h, int m, int s) { +void fl_clock_output_draw(CLOCK_OUTPUT c) { + reinterpret_cast(c)->Fl_Clock_Output::draw(); +} + void fl_clock_output_draw2(CLOCK_OUTPUT c, int x, int y, int w, int h) { - reinterpret_cast(c)->Fl_Clock_Output::draw(x,y,w,h); + void (Fl_Clock_Output::*mydraw)(int,int,int,int) = &Friend_Clock_Output::draw; + (reinterpret_cast(c)->*mydraw)(x, y, w, h); +} + +int fl_clock_output_handle(CLOCK_OUTPUT c, int e) { + return reinterpret_cast(c)->Fl_Clock_Output::handle(e); } diff --git a/src/c_fl_clock_output.h b/src/c_fl_clock_output.h index 15c383f..6adb98d 100644 --- a/src/c_fl_clock_output.h +++ b/src/c_fl_clock_output.h @@ -8,39 +8,28 @@ #define FL_CLOCK_OUTPUT_GUARD - - typedef void* CLOCK_OUTPUT; - - -extern "C" void clock_output_set_draw_hook(CLOCK_OUTPUT c, void * d); -extern "C" void fl_clock_output_draw(CLOCK_OUTPUT c); -extern "C" void clock_output_set_handle_hook(CLOCK_OUTPUT c, void * h); -extern "C" int fl_clock_output_handle(CLOCK_OUTPUT c, int e); - - - - extern "C" CLOCK_OUTPUT new_fl_clock_output(int x, int y, int w, int h, char* label); extern "C" void free_fl_clock_output(CLOCK_OUTPUT c); - - extern "C" int fl_clock_output_get_hour(CLOCK_OUTPUT c); extern "C" int fl_clock_output_get_minute(CLOCK_OUTPUT c); extern "C" int fl_clock_output_get_second(CLOCK_OUTPUT c); -extern "C" ulong fl_clock_output_get_value(CLOCK_OUTPUT c); -extern "C" void fl_clock_output_set_value(CLOCK_OUTPUT c, ulong v); +extern "C" unsigned long fl_clock_output_get_value(CLOCK_OUTPUT c); +extern "C" void fl_clock_output_set_value(CLOCK_OUTPUT c, unsigned long v); extern "C" void fl_clock_output_set_value2(CLOCK_OUTPUT c, int h, int m, int s); +extern "C" void fl_clock_output_draw(CLOCK_OUTPUT c); extern "C" void fl_clock_output_draw2(CLOCK_OUTPUT c, int x, int y, int w, int h); +extern "C" int fl_clock_output_handle(CLOCK_OUTPUT c, int e); #endif + diff --git a/src/c_fl_color_chooser.cpp b/src/c_fl_color_chooser.cpp index 8846a90..171155d 100644 --- a/src/c_fl_color_chooser.cpp +++ b/src/c_fl_color_chooser.cpp @@ -6,106 +6,88 @@ #include #include "c_fl_color_chooser.h" -#include "c_fl_type.h" -class My_Color_Chooser : public Fl_Color_Chooser { - public: - using Fl_Color_Chooser::Fl_Color_Chooser; - friend void color_chooser_set_draw_hook(COLOR_CHOOSER n, void * d); - friend void fl_color_chooser_draw(COLOR_CHOOSER n); - friend void color_chooser_set_handle_hook(COLOR_CHOOSER n, void * h); - friend int fl_color_chooser_handle(COLOR_CHOOSER n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Color_Chooser::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Color_Chooser::real_draw() { - Fl_Color_Chooser::draw(); -} -int My_Color_Chooser::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Color_Chooser::real_handle(int e) { - return Fl_Color_Chooser::handle(e); -} -void color_chooser_set_draw_hook(COLOR_CHOOSER n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_color_chooser_draw(COLOR_CHOOSER n) { - reinterpret_cast(n)->real_draw(); -} +class My_Color_Chooser : public Fl_Color_Chooser { +public: + using Fl_Color_Chooser::Fl_Color_Chooser; + + friend void fl_color_chooser_draw(COLORCHOOSER n); + friend int fl_color_chooser_handle(COLORCHOOSER n, int e); -void color_chooser_set_handle_hook(COLOR_CHOOSER n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Color_Chooser::draw() { + widget_draw_hook(this->user_data()); } -int fl_color_chooser_handle(COLOR_CHOOSER n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Color_Chooser::handle(int e) { + return widget_handle_hook(this->user_data(), e); } -COLOR_CHOOSER new_fl_color_chooser(int x, int y, int w, int h, char* label) { +// Flattened C API + +COLORCHOOSER new_fl_color_chooser(int x, int y, int w, int h, char* label) { My_Color_Chooser *n = new My_Color_Chooser(x, y, w, h, label); return n; } -void free_fl_color_chooser(COLOR_CHOOSER n) { +void free_fl_color_chooser(COLORCHOOSER n) { delete reinterpret_cast(n); } -double fl_color_chooser_r(COLOR_CHOOSER n) { +double fl_color_chooser_r(COLORCHOOSER n) { return reinterpret_cast(n)->r(); } -double fl_color_chooser_g(COLOR_CHOOSER n) { +double fl_color_chooser_g(COLORCHOOSER n) { return reinterpret_cast(n)->g(); } -double fl_color_chooser_b(COLOR_CHOOSER n) { +double fl_color_chooser_b(COLORCHOOSER n) { return reinterpret_cast(n)->b(); } -int fl_color_chooser_rgb(COLOR_CHOOSER n, int r, int g, int b) { +int fl_color_chooser_rgb(COLORCHOOSER n, int r, int g, int b) { return reinterpret_cast(n)->rgb(r,g,b); } -double fl_color_chooser_hue(COLOR_CHOOSER n) { +double fl_color_chooser_hue(COLORCHOOSER n) { return reinterpret_cast(n)->hue(); } -double fl_color_chooser_saturation(COLOR_CHOOSER n) { +double fl_color_chooser_saturation(COLORCHOOSER n) { return reinterpret_cast(n)->saturation(); } -double fl_color_chooser_value(COLOR_CHOOSER n) { +double fl_color_chooser_value(COLORCHOOSER n) { return reinterpret_cast(n)->value(); } -int fl_color_chooser_hsv(COLOR_CHOOSER n, int h, int s, int v) { +int fl_color_chooser_hsv(COLORCHOOSER n, int h, int s, int v) { return reinterpret_cast(n)->hsv(h,s,v); } @@ -123,12 +105,23 @@ void fl_color_chooser_rgb2hsv(double r, double g, double b, double &h, double &s -int fl_color_chooser_get_mode(COLOR_CHOOSER n) { +int fl_color_chooser_get_mode(COLORCHOOSER n) { return reinterpret_cast(n)->mode(); } -void fl_color_chooser_set_mode(COLOR_CHOOSER n, int m) { +void fl_color_chooser_set_mode(COLORCHOOSER n, int m) { reinterpret_cast(n)->mode(m); } + + +void fl_color_chooser_draw(COLORCHOOSER n) { + reinterpret_cast(n)->Fl_Color_Chooser::draw(); +} + +int fl_color_chooser_handle(COLORCHOOSER n, int e) { + return reinterpret_cast(n)->Fl_Color_Chooser::handle(e); +} + + diff --git a/src/c_fl_color_chooser.h b/src/c_fl_color_chooser.h index b3e4cfb..22f9bc7 100644 --- a/src/c_fl_color_chooser.h +++ b/src/c_fl_color_chooser.h @@ -8,46 +8,39 @@ #define FL_COLOR_CHOOSER_GUARD +typedef void* COLORCHOOSER; -typedef void* COLOR_CHOOSER; +extern "C" COLORCHOOSER new_fl_color_chooser(int x, int y, int w, int h, char* label); +extern "C" void free_fl_color_chooser(COLORCHOOSER n); +extern "C" double fl_color_chooser_r(COLORCHOOSER n); +extern "C" double fl_color_chooser_g(COLORCHOOSER n); +extern "C" double fl_color_chooser_b(COLORCHOOSER n); +extern "C" int fl_color_chooser_rgb(COLORCHOOSER n, int r, int g, int b); -extern "C" void color_chooser_set_draw_hook(COLOR_CHOOSER n, void * d); -extern "C" void fl_color_chooser_draw(COLOR_CHOOSER n); -extern "C" void color_chooser_set_handle_hook(COLOR_CHOOSER n, void * h); -extern "C" int fl_color_chooser_handle(COLOR_CHOOSER n, int e); +extern "C" double fl_color_chooser_hue(COLORCHOOSER n); +extern "C" double fl_color_chooser_saturation(COLORCHOOSER n); +extern "C" double fl_color_chooser_value(COLORCHOOSER n); +extern "C" int fl_color_chooser_hsv(COLORCHOOSER n, int h, int s, int v); +extern "C" void fl_color_chooser_hsv2rgb + (double h, double s, double v, double &r, double &g, double &b); +extern "C" void fl_color_chooser_rgb2hsv + (double r, double g, double b, double &h, double &s, double &v); -extern "C" COLOR_CHOOSER new_fl_color_chooser(int x, int y, int w, int h, char* label); -extern "C" void free_fl_color_chooser(COLOR_CHOOSER n); +extern "C" int fl_color_chooser_get_mode(COLORCHOOSER n); +extern "C" void fl_color_chooser_set_mode(COLORCHOOSER n, int m); - - -extern "C" double fl_color_chooser_r(COLOR_CHOOSER n); -extern "C" double fl_color_chooser_g(COLOR_CHOOSER n); -extern "C" double fl_color_chooser_b(COLOR_CHOOSER n); -extern "C" int fl_color_chooser_rgb(COLOR_CHOOSER n, int r, int g, int b); - - -extern "C" double fl_color_chooser_hue(COLOR_CHOOSER n); -extern "C" double fl_color_chooser_saturation(COLOR_CHOOSER n); -extern "C" double fl_color_chooser_value(COLOR_CHOOSER n); -extern "C" int fl_color_chooser_hsv(COLOR_CHOOSER n, int h, int s, int v); - - -extern "C" void fl_color_chooser_hsv2rgb(double h, double s, double v, double &r, double &g, double &b); -extern "C" void fl_color_chooser_rgb2hsv(double r, double g, double b, double &h, double &s, double &v); - - -extern "C" int fl_color_chooser_get_mode(COLOR_CHOOSER n); -extern "C" void fl_color_chooser_set_mode(COLOR_CHOOSER n, int m); +extern "C" void fl_color_chooser_draw(COLORCHOOSER n); +extern "C" int fl_color_chooser_handle(COLORCHOOSER n, int e); #endif + diff --git a/src/c_fl_counter.cpp b/src/c_fl_counter.cpp index c91d927..df8130e 100644 --- a/src/c_fl_counter.cpp +++ b/src/c_fl_counter.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_counter.h" -#include "c_fl_type.h" -class My_Counter : public Fl_Counter { - public: - using Fl_Counter::Fl_Counter; - friend void counter_set_draw_hook(COUNTER c, void * d); - friend void fl_counter_draw(COUNTER c); - friend void counter_set_handle_hook(COUNTER c, void * h); - friend int fl_counter_handle(COUNTER c, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Counter::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Counter::real_draw() { - Fl_Counter::draw(); -} -int My_Counter::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Counter::real_handle(int e) { - return Fl_Counter::handle(e); -} -void counter_set_draw_hook(COUNTER c, void * d) { - reinterpret_cast(c)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_counter_draw(COUNTER c) { - reinterpret_cast(c)->real_draw(); -} +class My_Counter : public Fl_Counter { +public: + using Fl_Counter::Fl_Counter; -void counter_set_handle_hook(COUNTER c, void * h) { - reinterpret_cast(c)->handle_hook = reinterpret_cast(h); + friend void fl_counter_draw(COUNTER c); + friend int fl_counter_handle(COUNTER c, int e); + + void draw(); + int handle(int e); +}; + +void My_Counter::draw() { + widget_draw_hook(this->user_data()); } -int fl_counter_handle(COUNTER c, int e) { - return reinterpret_cast(c)->real_handle(e); +int My_Counter::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + COUNTER new_fl_counter(int x, int y, int w, int h, char* label) { My_Counter *c = new My_Counter(x, y, w, h, label); return c; @@ -78,7 +60,7 @@ double fl_counter_get_step(COUNTER c) { return reinterpret_cast(c)->step(); } -void fl_counter_set_step(COUNTER c, double t) { +void fl_counter_set_step_top(COUNTER c, double t) { reinterpret_cast(c)->step(t); } @@ -86,6 +68,10 @@ void fl_counter_set_lstep(COUNTER c, double t) { reinterpret_cast(c)->lstep(t); } +void fl_counter_set_step_both(COUNTER c, double s, double l) { + reinterpret_cast(c)->step(s, l); +} + @@ -113,3 +99,15 @@ void fl_counter_set_textsize(COUNTER c, int t) { reinterpret_cast(c)->textsize(t); } + + + +void fl_counter_draw(COUNTER c) { + reinterpret_cast(c)->Fl_Counter::draw(); +} + +int fl_counter_handle(COUNTER c, int e) { + return reinterpret_cast(c)->Fl_Counter::handle(e); +} + + diff --git a/src/c_fl_counter.h b/src/c_fl_counter.h index 8fdd7ba..b5b4a8b 100644 --- a/src/c_fl_counter.h +++ b/src/c_fl_counter.h @@ -8,30 +8,17 @@ #define FL_COUNTER_GUARD - - typedef void* COUNTER; - - -extern "C" void counter_set_draw_hook(COUNTER c, void * d); -extern "C" void fl_counter_draw(COUNTER c); -extern "C" void counter_set_handle_hook(COUNTER c, void * h); -extern "C" int fl_counter_handle(COUNTER c, int e); - - - - extern "C" COUNTER new_fl_counter(int x, int y, int w, int h, char* label); extern "C" void free_fl_counter(COUNTER c); - - extern "C" double fl_counter_get_step(COUNTER c); -extern "C" void fl_counter_set_step(COUNTER c, double t); +extern "C" void fl_counter_set_step_top(COUNTER c, double t); extern "C" void fl_counter_set_lstep(COUNTER c, double t); +extern "C" void fl_counter_set_step_both(COUNTER c, double s, double l); extern "C" unsigned int fl_counter_get_textcolor(COUNTER c); @@ -42,5 +29,10 @@ extern "C" int fl_counter_get_textsize(COUNTER c); extern "C" void fl_counter_set_textsize(COUNTER c, int t); +extern "C" void fl_counter_draw(COUNTER c); +extern "C" int fl_counter_handle(COUNTER c, int e); + + #endif + diff --git a/src/c_fl_dial.cpp b/src/c_fl_dial.cpp index a2f0bdc..8e32820 100644 --- a/src/c_fl_dial.cpp +++ b/src/c_fl_dial.cpp @@ -6,62 +6,56 @@ #include #include "c_fl_dial.h" -#include "c_fl_type.h" -class My_Dial : public Fl_Dial { - public: - using Fl_Dial::Fl_Dial; - friend void dial_set_draw_hook(DIAL v, void * d); - friend void fl_dial_draw(DIAL v); - friend void dial_set_handle_hook(DIAL v, void * h); - friend int fl_dial_handle(DIAL v, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Non-friend protected access + +class Friend_Dial : Fl_Dial { +public: + // Really only needed for the (int,int,int,int) versions + using Fl_Dial::draw; + using Fl_Dial::handle; }; -void My_Dial::draw() { - (*draw_hook)(this->user_data()); -} -void My_Dial::real_draw() { - Fl_Dial::draw(); -} -int My_Dial::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Dial::real_handle(int e) { - return Fl_Dial::handle(e); -} +// Attaching all relevant hooks and friends -void dial_set_draw_hook(DIAL v, void * d) { - reinterpret_cast(v)->draw_hook = reinterpret_cast(d); -} +class My_Dial : public Fl_Dial { +public: + using Fl_Dial::Fl_Dial; -void fl_dial_draw(DIAL v) { - reinterpret_cast(v)->real_draw(); -} + friend void fl_dial_draw(DIAL v); + friend int fl_dial_handle(DIAL v, int e); + + void draw(); + int handle(int e); +}; -void dial_set_handle_hook(DIAL v, void * h) { - reinterpret_cast(v)->handle_hook = reinterpret_cast(h); +void My_Dial::draw() { + widget_draw_hook(this->user_data()); } -int fl_dial_handle(DIAL v, int e) { - return reinterpret_cast(v)->real_handle(e); +int My_Dial::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + DIAL new_fl_dial(int x, int y, int w, int h, char* label) { My_Dial *v = new My_Dial(x, y, w, h, label); return v; @@ -74,34 +68,45 @@ void free_fl_dial(DIAL v) { -int fl_dial_get_type(DIAL v) { - return reinterpret_cast(v)->type(); +short fl_dial_get_angle1(DIAL v) { + return reinterpret_cast(v)->angle1(); } -void fl_dial_set_type(DIAL v, int t) { - reinterpret_cast(v)->type(t); +void fl_dial_set_angle1(DIAL v, short t) { + reinterpret_cast(v)->angle1(t); } +short fl_dial_get_angle2(DIAL v) { + return reinterpret_cast(v)->angle2(); +} +void fl_dial_set_angle2(DIAL v, short t) { + reinterpret_cast(v)->angle2(t); +} - -int fl_dial_get_angle1(DIAL v) { - return reinterpret_cast(v)->angle1(); +void fl_dial_set_angles(DIAL v, short a, short b) { + reinterpret_cast(v)->angles(a,b); } -void fl_dial_set_angle1(DIAL v, int t) { - reinterpret_cast(v)->angle1(t); + + + +void fl_dial_draw(DIAL v) { + reinterpret_cast(v)->Fl_Dial::draw(); } -int fl_dial_get_angle2(DIAL v) { - return reinterpret_cast(v)->angle2(); +void fl_dial_draw2(DIAL v, int x, int y, int w, int h) { + void (Fl_Dial::*mydraw)(int,int,int,int) = &Friend_Dial::draw; + (reinterpret_cast(v)->*mydraw)(x, y, w, h); } -void fl_dial_set_angle2(DIAL v, int t) { - reinterpret_cast(v)->angle2(t); +int fl_dial_handle(DIAL v, int e) { + return reinterpret_cast(v)->Fl_Dial::handle(e); } -void fl_dial_set_angles(DIAL v, int a, int b) { - reinterpret_cast(v)->angles(a,b); +int fl_dial_handle2(DIAL v, int e, int x, int y, int w, int h) { + int (Fl_Dial::*myhandle)(int,int,int,int,int) = &Friend_Dial::handle; + return (reinterpret_cast(v)->*myhandle)(e, x, y, w, h); } + diff --git a/src/c_fl_dial.h b/src/c_fl_dial.h index e703365..b642abd 100644 --- a/src/c_fl_dial.h +++ b/src/c_fl_dial.h @@ -8,37 +8,26 @@ #define FL_DIAL_GUARD - - typedef void* DIAL; - - -extern "C" void dial_set_draw_hook(DIAL v, void * d); -extern "C" void fl_dial_draw(DIAL v); -extern "C" void dial_set_handle_hook(DIAL v, void * h); -extern "C" int fl_dial_handle(DIAL v, int e); - - - - extern "C" DIAL new_fl_dial(int x, int y, int w, int h, char* label); extern "C" void free_fl_dial(DIAL v); +extern "C" short fl_dial_get_angle1(DIAL v); +extern "C" void fl_dial_set_angle1(DIAL v, short t); +extern "C" short fl_dial_get_angle2(DIAL v); +extern "C" void fl_dial_set_angle2(DIAL v, short t); +extern "C" void fl_dial_set_angles(DIAL v, short a, short b); -extern "C" int fl_dial_get_type(DIAL v); -extern "C" void fl_dial_set_type(DIAL v, int t); - - -extern "C" int fl_dial_get_angle1(DIAL v); -extern "C" void fl_dial_set_angle1(DIAL v, int t); -extern "C" int fl_dial_get_angle2(DIAL v); -extern "C" void fl_dial_set_angle2(DIAL v, int t); -extern "C" void fl_dial_set_angles(DIAL v, int a, int b); +extern "C" void fl_dial_draw(DIAL v); +extern "C" void fl_dial_draw2(DIAL v, int x, int y, int w, int h); +extern "C" int fl_dial_handle(DIAL v, int e); +extern "C" int fl_dial_handle2(DIAL v, int e, int x, int y, int w, int h); #endif + diff --git a/src/c_fl_double_window.cpp b/src/c_fl_double_window.cpp index 210f28a..ac949d9 100644 --- a/src/c_fl_double_window.cpp +++ b/src/c_fl_double_window.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_double_window.h" -#include "c_fl_type.h" -class My_Double_Window : public Fl_Double_Window { - public: - using Fl_Double_Window::Fl_Double_Window; - friend void double_window_set_draw_hook(DOUBLEWINDOW n, void * d); - friend void fl_double_window_draw(DOUBLEWINDOW n); - friend void double_window_set_handle_hook(DOUBLEWINDOW n, void * h); - friend int fl_double_window_handle(DOUBLEWINDOW n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Double_Window::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Double_Window::real_draw() { - Fl_Double_Window::draw(); -} -int My_Double_Window::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Double_Window::real_handle(int e) { - return Fl_Double_Window::handle(e); -} -void double_window_set_draw_hook(DOUBLEWINDOW n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_double_window_draw(DOUBLEWINDOW n) { - reinterpret_cast(n)->real_draw(); -} +class My_Double_Window : public Fl_Double_Window { +public: + using Fl_Double_Window::Fl_Double_Window; + + friend void fl_double_window_draw(DOUBLEWINDOW n); + friend int fl_double_window_handle(DOUBLEWINDOW n, int e); -void double_window_set_handle_hook(DOUBLEWINDOW n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Double_Window::draw() { + widget_draw_hook(this->user_data()); } -int fl_double_window_handle(DOUBLEWINDOW n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Double_Window::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + DOUBLEWINDOW new_fl_double_window(int x, int y, int w, int h, char* label) { My_Double_Window *d = new My_Double_Window(x, y, w, h, label); return d; @@ -91,3 +73,22 @@ void fl_double_window_flush(DOUBLEWINDOW d) { reinterpret_cast(d)->flush(); } + + + +void fl_double_window_resize(DOUBLEWINDOW d, int x, int y, int w, int h) { + reinterpret_cast(d)->resize(x, y, w, h); +} + + + + +void fl_double_window_draw(DOUBLEWINDOW n) { + reinterpret_cast(n)->Fl_Double_Window::draw(); +} + +int fl_double_window_handle(DOUBLEWINDOW n, int e) { + return reinterpret_cast(n)->Fl_Double_Window::handle(e); +} + + diff --git a/src/c_fl_double_window.h b/src/c_fl_double_window.h index 765fba4..d518381 100644 --- a/src/c_fl_double_window.h +++ b/src/c_fl_double_window.h @@ -8,32 +8,26 @@ #define FL_DOUBLE_WINDOW_GUARD - - typedef void* DOUBLEWINDOW; - - -extern "C" void double_window_set_draw_hook(DOUBLEWINDOW n, void * d); -extern "C" void fl_double_window_draw(DOUBLEWINDOW n); -extern "C" void double_window_set_handle_hook(DOUBLEWINDOW n, void * h); -extern "C" int fl_double_window_handle(DOUBLEWINDOW n, int e); - - - - extern "C" DOUBLEWINDOW new_fl_double_window(int x, int y, int w, int h, char* label); extern "C" DOUBLEWINDOW new_fl_double_window2(int w, int h, char* label); extern "C" void free_fl_double_window(DOUBLEWINDOW d); - - extern "C" void fl_double_window_show(DOUBLEWINDOW d); extern "C" void fl_double_window_hide(DOUBLEWINDOW d); extern "C" void fl_double_window_flush(DOUBLEWINDOW d); +extern "C" void fl_double_window_resize(DOUBLEWINDOW d, int x, int y, int w, int h); + + +extern "C" void fl_double_window_draw(DOUBLEWINDOW n); +extern "C" int fl_double_window_handle(DOUBLEWINDOW n, int e); + + #endif + diff --git a/src/c_fl_fill_dial.cpp b/src/c_fl_fill_dial.cpp index cba6892..43f0167 100644 --- a/src/c_fl_fill_dial.cpp +++ b/src/c_fl_fill_dial.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_fill_dial.h" -#include "c_fl_type.h" -class My_Fill_Dial : public Fl_Fill_Dial { - public: - using Fl_Fill_Dial::Fl_Fill_Dial; - friend void fill_dial_set_draw_hook(FILL_DIAL v, void * d); - friend void fl_fill_dial_draw(FILL_DIAL v); - friend void fill_dial_set_handle_hook(FILL_DIAL v, void * h); - friend int fl_fill_dial_handle(FILL_DIAL v, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Fill_Dial::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Fill_Dial::real_draw() { - Fl_Fill_Dial::draw(); -} -int My_Fill_Dial::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Fill_Dial::real_handle(int e) { - return Fl_Fill_Dial::handle(e); -} -void fill_dial_set_draw_hook(FILL_DIAL v, void * d) { - reinterpret_cast(v)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_fill_dial_draw(FILL_DIAL v) { - reinterpret_cast(v)->real_draw(); -} +class My_Fill_Dial : public Fl_Fill_Dial { +public: + using Fl_Fill_Dial::Fl_Fill_Dial; + + friend void fl_fill_dial_draw(FILL_DIAL v); + friend int fl_fill_dial_handle(FILL_DIAL v, int e); + + void draw(); + int handle(int e); +}; -void fill_dial_set_handle_hook(FILL_DIAL v, void * h) { - reinterpret_cast(v)->handle_hook = reinterpret_cast(h); +void My_Fill_Dial::draw() { + widget_draw_hook(this->user_data()); } -int fl_fill_dial_handle(FILL_DIAL v, int e) { - return reinterpret_cast(v)->real_handle(e); +int My_Fill_Dial::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + FILL_DIAL new_fl_fill_dial(int x, int y, int w, int h, char* label) { My_Fill_Dial *v = new My_Fill_Dial(x, y, w, h, label); return v; @@ -72,3 +54,14 @@ void free_fl_fill_dial(FILL_DIAL v) { } + + +void fl_fill_dial_draw(FILL_DIAL v) { + reinterpret_cast(v)->Fl_Fill_Dial::draw(); +} + +int fl_fill_dial_handle(FILL_DIAL v, int e) { + return reinterpret_cast(v)->Fl_Fill_Dial::handle(e); +} + + diff --git a/src/c_fl_fill_dial.h b/src/c_fl_fill_dial.h index e40eb66..84ecab8 100644 --- a/src/c_fl_fill_dial.h +++ b/src/c_fl_fill_dial.h @@ -8,24 +8,17 @@ #define FL_FILL_DIAL_GUARD - - typedef void* FILL_DIAL; +extern "C" FILL_DIAL new_fl_fill_dial(int x, int y, int w, int h, char* label); +extern "C" void free_fl_fill_dial(FILL_DIAL v); -extern "C" void fill_dial_set_draw_hook(FILL_DIAL v, void * d); extern "C" void fl_fill_dial_draw(FILL_DIAL v); -extern "C" void fill_dial_set_handle_hook(FILL_DIAL v, void * h); extern "C" int fl_fill_dial_handle(FILL_DIAL v, int e); - - -extern "C" FILL_DIAL new_fl_fill_dial(int x, int y, int w, int h, char* label); -extern "C" void free_fl_fill_dial(FILL_DIAL v); - - #endif + diff --git a/src/c_fl_fill_slider.cpp b/src/c_fl_fill_slider.cpp index d4177e1..d443684 100644 --- a/src/c_fl_fill_slider.cpp +++ b/src/c_fl_fill_slider.cpp @@ -6,69 +6,62 @@ #include #include "c_fl_fill_slider.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Fill_Slider : public Fl_Fill_Slider { - public: - using Fl_Fill_Slider::Fl_Fill_Slider; - friend void fill_slider_set_draw_hook(FILL_SLIDER s, void * d); - friend void fl_fill_slider_draw(FILL_SLIDER s); - friend void fill_slider_set_handle_hook(FILL_SLIDER s, void * h); - friend int fl_fill_slider_handle(FILL_SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Fill_Slider::Fl_Fill_Slider; + + friend void fl_fill_slider_draw(FILLSLIDER s); + friend int fl_fill_slider_handle(FILLSLIDER s, int e); + + void draw(); + int handle(int e); }; void My_Fill_Slider::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Fill_Slider::real_draw() { - Fl_Fill_Slider::draw(); + widget_draw_hook(this->user_data()); } int My_Fill_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Fill_Slider::real_handle(int e) { - return Fl_Fill_Slider::handle(e); -} -void fill_slider_set_draw_hook(FILL_SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} -void fl_fill_slider_draw(FILL_SLIDER s) { - reinterpret_cast(s)->real_draw(); -} -void fill_slider_set_handle_hook(FILL_SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +// Flattened C API + +FILLSLIDER new_fl_fill_slider(int x, int y, int w, int h, char* label) { + My_Fill_Slider *s = new My_Fill_Slider(x, y, w, h, label); + return s; } -int fl_fill_slider_handle(FILL_SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +void free_fl_fill_slider(FILLSLIDER s) { + delete reinterpret_cast(s); } -FILL_SLIDER new_fl_fill_slider(int x, int y, int w, int h, char* label) { - My_Fill_Slider *s = new My_Fill_Slider(x, y, w, h, label); - return s; +void fl_fill_slider_draw(FILLSLIDER s) { + reinterpret_cast(s)->Fl_Fill_Slider::draw(); } -void free_fl_fill_slider(FILL_SLIDER s) { - delete reinterpret_cast(s); +int fl_fill_slider_handle(FILLSLIDER s, int e) { + return reinterpret_cast(s)->Fl_Fill_Slider::handle(e); } diff --git a/src/c_fl_fill_slider.h b/src/c_fl_fill_slider.h index fe60c62..d208d93 100644 --- a/src/c_fl_fill_slider.h +++ b/src/c_fl_fill_slider.h @@ -8,24 +8,17 @@ #define FL_FILL_SLIDER_GUARD +typedef void* FILLSLIDER; -typedef void* FILL_SLIDER; +extern "C" FILLSLIDER new_fl_fill_slider(int x, int y, int w, int h, char* label); +extern "C" void free_fl_fill_slider(FILLSLIDER s); - - -extern "C" void fill_slider_set_draw_hook(FILL_SLIDER s, void * d); -extern "C" void fl_fill_slider_draw(FILL_SLIDER s); -extern "C" void fill_slider_set_handle_hook(FILL_SLIDER s, void * h); -extern "C" int fl_fill_slider_handle(FILL_SLIDER s, int e); - - - - -extern "C" FILL_SLIDER new_fl_fill_slider(int x, int y, int w, int h, char* label); -extern "C" void free_fl_fill_slider(FILL_SLIDER s); +extern "C" void fl_fill_slider_draw(FILLSLIDER s); +extern "C" int fl_fill_slider_handle(FILLSLIDER s, int e); #endif + diff --git a/src/c_fl_gl_window.cpp b/src/c_fl_gl_window.cpp index 534dad6..1bcd616 100644 --- a/src/c_fl_gl_window.cpp +++ b/src/c_fl_gl_window.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_gl_window.h" -#include "c_fl_type.h" -class My_Gl_Window : public Fl_Gl_Window { - public: - using Fl_Gl_Window::Fl_Gl_Window; - friend void gl_window_set_draw_hook(GLWINDOW n, void * d); - friend void fl_gl_window_draw(GLWINDOW n); - friend void gl_window_set_handle_hook(GLWINDOW n, void * h); - friend int fl_gl_window_handle(GLWINDOW n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Gl_Window::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Gl_Window::real_draw() { - Fl_Gl_Window::draw(); -} -int My_Gl_Window::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Gl_Window::real_handle(int e) { - return Fl_Gl_Window::handle(e); -} -void gl_window_set_draw_hook(GLWINDOW n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_gl_window_draw(GLWINDOW n) { - reinterpret_cast(n)->real_draw(); -} +class My_Gl_Window : public Fl_Gl_Window { +public: + using Fl_Gl_Window::Fl_Gl_Window; + + friend void fl_gl_window_draw(GLWINDOW n); + friend int fl_gl_window_handle(GLWINDOW n, int e); + + void draw(); + int handle(int e); +}; -void gl_window_set_handle_hook(GLWINDOW n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +void My_Gl_Window::draw() { + widget_draw_hook(this->user_data()); } -int fl_gl_window_handle(GLWINDOW n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Gl_Window::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + GLWINDOW new_fl_gl_window(int x, int y, int w, int h, char* label) { My_Gl_Window *gw = new My_Gl_Window(x, y, w, h, label); return gw; @@ -110,6 +92,10 @@ float fl_gl_window_pixels_per_unit(GLWINDOW w) { return reinterpret_cast(w)->pixels_per_unit(); } +void fl_gl_window_resize(GLWINDOW gw, int x, int y, int w, int h) { + reinterpret_cast(gw)->resize(x, y, w, h); +} + @@ -184,3 +170,14 @@ void fl_gl_window_swap_buffers(GLWINDOW w) { } + + +void fl_gl_window_draw(GLWINDOW n) { + reinterpret_cast(n)->Fl_Gl_Window::draw(); +} + +int fl_gl_window_handle(GLWINDOW n, int e) { + return reinterpret_cast(n)->Fl_Gl_Window::handle(e); +} + + diff --git a/src/c_fl_gl_window.h b/src/c_fl_gl_window.h index 6d91724..0079008 100644 --- a/src/c_fl_gl_window.h +++ b/src/c_fl_gl_window.h @@ -8,28 +8,14 @@ #define FL_GL_WINDOW_GUARD - - typedef void* GLWINDOW; - - -extern "C" void gl_window_set_draw_hook(GLWINDOW n, void * d); -extern "C" void fl_gl_window_draw(GLWINDOW n); -extern "C" void gl_window_set_handle_hook(GLWINDOW n, void * h); -extern "C" int fl_gl_window_handle(GLWINDOW n, int e); - - - - extern "C" GLWINDOW new_fl_gl_window(int x, int y, int w, int h, char* label); extern "C" GLWINDOW new_fl_gl_window2(int w, int h, char* label); extern "C" void free_fl_gl_window(GLWINDOW w); - - extern "C" void fl_gl_window_show(GLWINDOW w); extern "C" void fl_gl_window_hide(GLWINDOW w); extern "C" void fl_gl_window_hide_overlay(GLWINDOW w); @@ -39,6 +25,7 @@ extern "C" void fl_gl_window_flush(GLWINDOW w); extern "C" int fl_gl_window_pixel_h(GLWINDOW w); extern "C" int fl_gl_window_pixel_w(GLWINDOW w); extern "C" float fl_gl_window_pixels_per_unit(GLWINDOW w); +extern "C" void fl_gl_window_resize(GLWINDOW gw, int x, int y, int w, int h); extern "C" unsigned int fl_gl_window_get_mode(GLWINDOW w); @@ -63,5 +50,10 @@ extern "C" void fl_gl_window_redraw_overlay(GLWINDOW w); extern "C" void fl_gl_window_swap_buffers(GLWINDOW w); +extern "C" void fl_gl_window_draw(GLWINDOW n); +extern "C" int fl_gl_window_handle(GLWINDOW n, int e); + + #endif + diff --git a/src/c_fl_group.cpp b/src/c_fl_group.cpp index f5b0f17..71ae7df 100644 --- a/src/c_fl_group.cpp +++ b/src/c_fl_group.cpp @@ -8,62 +8,44 @@ #include #include "c_fl_group.h" #include "c_fl_widget.h" -#include "c_fl_type.h" -class My_Group : public Fl_Group { - public: - using Fl_Group::Fl_Group; - friend void group_set_draw_hook(GROUP g, void * d); - friend void fl_group_draw(GROUP g); - friend void group_set_handle_hook(GROUP g, void * h); - friend int fl_group_handle(GROUP g, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Group::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Group::real_draw() { - Fl_Group::draw(); -} -int My_Group::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Group::real_handle(int e) { - return Fl_Group::handle(e); -} -void group_set_draw_hook(GROUP g, void * d) { - reinterpret_cast(g)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_group_draw(GROUP g) { - reinterpret_cast(g)->real_draw(); -} +class My_Group : public Fl_Group { +public: + using Fl_Group::Fl_Group; + + friend void fl_group_draw(GROUP g); + friend int fl_group_handle(GROUP g, int e); + + void draw(); + int handle(int e); +}; -void group_set_handle_hook(GROUP g, void * h) { - reinterpret_cast(g)->handle_hook = reinterpret_cast(h); +void My_Group::draw() { + widget_draw_hook(this->user_data()); } -int fl_group_handle(GROUP g, int e) { - return reinterpret_cast(g)->real_handle(e); +int My_Group::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + GROUP new_fl_group(int x, int y, int w, int h, char* label) { My_Group *g = new My_Group(x, y, w, h, label); return g; @@ -157,3 +139,14 @@ void fl_group_set_current(GROUP g) { } + + +void fl_group_draw(GROUP g) { + reinterpret_cast(g)->Fl_Group::draw(); +} + +int fl_group_handle(GROUP g, int e) { + return reinterpret_cast(g)->Fl_Group::handle(e); +} + + diff --git a/src/c_fl_group.h b/src/c_fl_group.h index ab1d7c4..5eaa333 100644 --- a/src/c_fl_group.h +++ b/src/c_fl_group.h @@ -10,27 +10,13 @@ #include "c_fl_widget.h" - - typedef void* GROUP; - - -extern "C" void group_set_draw_hook(GROUP g, void * d); -extern "C" void fl_group_draw(GROUP g); -extern "C" void group_set_handle_hook(GROUP g, void * h); -extern "C" int fl_group_handle(GROUP g, int e); - - - - extern "C" GROUP new_fl_group(int x, int y, int w, int h, char* label); extern "C" void free_fl_group(GROUP g); - - extern "C" void fl_group_end(GROUP g); @@ -59,5 +45,10 @@ extern "C" void * fl_group_get_current(); extern "C" void fl_group_set_current(GROUP g); +extern "C" void fl_group_draw(GROUP g); +extern "C" int fl_group_handle(GROUP g, int e); + + #endif + diff --git a/src/c_fl_help_view.cpp b/src/c_fl_help_view.cpp index 33f1e5f..50d5d58 100644 --- a/src/c_fl_help_view.cpp +++ b/src/c_fl_help_view.cpp @@ -8,70 +8,44 @@ #include #include #include "c_fl_help_view.h" -#include "c_fl_type.h" -class My_Help_View : public Fl_Help_View { - public: - using Fl_Help_View::Fl_Help_View; - friend void help_view_set_draw_hook(HELPVIEW v, void * d); - friend void fl_help_view_draw(HELPVIEW v); - friend void help_view_set_handle_hook(HELPVIEW v, void * h); - friend int fl_help_view_handle(HELPVIEW v, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Help_View::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Help_View::real_draw() { - #if FL_ABI_VERSION >= 10303 - Fl_Help_View::draw(); - #else - Fl_Group::draw(); - #endif -} -int My_Help_View::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Help_View::real_handle(int e) { - #if FL_ABI_VERSION >= 10303 - return Fl_Help_View::handle(e); - #else - return Fl_Group::handle(e); - #endif -} -void help_view_set_draw_hook(HELPVIEW v, void * d) { - reinterpret_cast(v)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_help_view_draw(HELPVIEW v) { - reinterpret_cast(v)->real_draw(); -} +class My_Help_View : public Fl_Help_View { +public: + using Fl_Help_View::Fl_Help_View; + + friend void fl_help_view_draw(HELPVIEW v); + friend int fl_help_view_handle(HELPVIEW v, int e); + + void draw(); + int handle(int e); +}; -void help_view_set_handle_hook(HELPVIEW v, void * h) { - reinterpret_cast(v)->handle_hook = reinterpret_cast(h); +void My_Help_View::draw() { + widget_draw_hook(this->user_data()); } -int fl_help_view_handle(HELPVIEW v, int e) { - return reinterpret_cast(v)->real_handle(e); +int My_Help_View::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + HELPVIEW new_fl_help_view(int x, int y, int w, int h, char * label) { My_Help_View *v = new My_Help_View(x, y, w, h, label); return v; @@ -169,6 +143,10 @@ void fl_help_view_set_size(HELPVIEW v, int w, int h) { reinterpret_cast(v)->size(w, h); } +void fl_help_view_resize(HELPVIEW v, int x, int y, int w, int h) { + reinterpret_cast(v)->resize(x, y, w, h); +} + unsigned int fl_help_view_get_textcolor(HELPVIEW v) { return reinterpret_cast(v)->textcolor(); } @@ -194,3 +172,22 @@ void fl_help_view_set_textsize(HELPVIEW v, int s) { } + + +void fl_help_view_draw(HELPVIEW v) { + #if FL_ABI_VERSION >= 10303 + reinterpret_cast(v)->Fl_Help_View::draw(); + #else + reinterpret_cast(v)->Fl_Group::draw(); + #endif +} + +int fl_help_view_handle(HELPVIEW v, int e) { + #if FL_ABI_VERSION >= 10303 + return reinterpret_cast(v)->Fl_Help_View::handle(e); + #else + return reinterpret_cast(v)->Fl_Group::handle(e); + #endif +} + + diff --git a/src/c_fl_help_view.h b/src/c_fl_help_view.h index b76d907..b16b344 100644 --- a/src/c_fl_help_view.h +++ b/src/c_fl_help_view.h @@ -8,27 +8,13 @@ #define FL_HELP_VIEW_GUARD - - typedef void* HELPVIEW; - - -extern "C" void help_view_set_draw_hook(HELPVIEW v, void * d); -extern "C" void fl_help_view_draw(HELPVIEW v); -extern "C" void help_view_set_handle_hook(HELPVIEW v, void * h); -extern "C" int fl_help_view_handle(HELPVIEW v, int e); - - - - extern "C" HELPVIEW new_fl_help_view(int x, int y, int w, int h, char * label); extern "C" void free_fl_help_view(HELPVIEW v); - - extern "C" void fl_help_view_clear_selection(HELPVIEW v); extern "C" void fl_help_view_select_all(HELPVIEW v); @@ -54,6 +40,7 @@ extern "C" int fl_help_view_get_scrollbar_size(HELPVIEW v); extern "C" void fl_help_view_set_scrollbar_size(HELPVIEW v, int s); extern "C" int fl_help_view_get_size(HELPVIEW v); extern "C" void fl_help_view_set_size(HELPVIEW v, int w, int h); +extern "C" void fl_help_view_resize(HELPVIEW v, int x, int y, int w, int h); extern "C" unsigned int fl_help_view_get_textcolor(HELPVIEW v); extern "C" void fl_help_view_set_textcolor(HELPVIEW v, unsigned int c); extern "C" int fl_help_view_get_textfont(HELPVIEW v); @@ -62,6 +49,10 @@ extern "C" int fl_help_view_get_textsize(HELPVIEW v); extern "C" void fl_help_view_set_textsize(HELPVIEW v, int s); +extern "C" void fl_help_view_draw(HELPVIEW v); +extern "C" int fl_help_view_handle(HELPVIEW v, int e); + + #endif diff --git a/src/c_fl_hor_fill_slider.cpp b/src/c_fl_hor_fill_slider.cpp index f12fbd3..d146698 100644 --- a/src/c_fl_hor_fill_slider.cpp +++ b/src/c_fl_hor_fill_slider.cpp @@ -6,69 +6,62 @@ #include #include "c_fl_hor_fill_slider.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Hor_Fill_Slider : public Fl_Hor_Fill_Slider { - public: - using Fl_Hor_Fill_Slider::Fl_Hor_Fill_Slider; - friend void hor_fill_slider_set_draw_hook(HOR_FILL_SLIDER s, void * d); - friend void fl_hor_fill_slider_draw(HOR_FILL_SLIDER s); - friend void hor_fill_slider_set_handle_hook(HOR_FILL_SLIDER s, void * h); - friend int fl_hor_fill_slider_handle(HOR_FILL_SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Hor_Fill_Slider::Fl_Hor_Fill_Slider; + + friend void fl_hor_fill_slider_draw(HORFILLSLIDER s); + friend int fl_hor_fill_slider_handle(HORFILLSLIDER s, int e); + + void draw(); + int handle(int e); }; void My_Hor_Fill_Slider::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Hor_Fill_Slider::real_draw() { - Fl_Hor_Fill_Slider::draw(); + widget_draw_hook(this->user_data()); } int My_Hor_Fill_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Hor_Fill_Slider::real_handle(int e) { - return Fl_Hor_Fill_Slider::handle(e); -} -void hor_fill_slider_set_draw_hook(HOR_FILL_SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} -void fl_hor_fill_slider_draw(HOR_FILL_SLIDER s) { - reinterpret_cast(s)->real_draw(); -} -void hor_fill_slider_set_handle_hook(HOR_FILL_SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +// Flattened C API + +HORFILLSLIDER new_fl_hor_fill_slider(int x, int y, int w, int h, char* label) { + My_Hor_Fill_Slider *s = new My_Hor_Fill_Slider(x, y, w, h, label); + return s; } -int fl_hor_fill_slider_handle(HOR_FILL_SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +void free_fl_hor_fill_slider(HORFILLSLIDER s) { + delete reinterpret_cast(s); } -HOR_FILL_SLIDER new_fl_hor_fill_slider(int x, int y, int w, int h, char* label) { - My_Hor_Fill_Slider *s = new My_Hor_Fill_Slider(x, y, w, h, label); - return s; +void fl_hor_fill_slider_draw(HORFILLSLIDER s) { + reinterpret_cast(s)->Fl_Hor_Fill_Slider::draw(); } -void free_fl_hor_fill_slider(HOR_FILL_SLIDER s) { - delete reinterpret_cast(s); +int fl_hor_fill_slider_handle(HORFILLSLIDER s, int e) { + return reinterpret_cast(s)->Fl_Hor_Fill_Slider::handle(e); } diff --git a/src/c_fl_hor_fill_slider.h b/src/c_fl_hor_fill_slider.h index 5aa3541..d698a93 100644 --- a/src/c_fl_hor_fill_slider.h +++ b/src/c_fl_hor_fill_slider.h @@ -8,24 +8,17 @@ #define FL_HOR_FILL_SLIDER_GUARD +typedef void* HORFILLSLIDER; -typedef void* HOR_FILL_SLIDER; +extern "C" HORFILLSLIDER new_fl_hor_fill_slider(int x, int y, int w, int h, char* label); +extern "C" void free_fl_hor_fill_slider(HORFILLSLIDER s); - - -extern "C" void hor_fill_slider_set_draw_hook(HOR_FILL_SLIDER s, void * d); -extern "C" void fl_hor_fill_slider_draw(HOR_FILL_SLIDER s); -extern "C" void hor_fill_slider_set_handle_hook(HOR_FILL_SLIDER s, void * h); -extern "C" int fl_hor_fill_slider_handle(HOR_FILL_SLIDER s, int e); - - - - -extern "C" HOR_FILL_SLIDER new_fl_hor_fill_slider(int x, int y, int w, int h, char* label); -extern "C" void free_fl_hor_fill_slider(HOR_FILL_SLIDER s); +extern "C" void fl_hor_fill_slider_draw(HORFILLSLIDER s); +extern "C" int fl_hor_fill_slider_handle(HORFILLSLIDER s, int e); #endif + diff --git a/src/c_fl_hor_nice_slider.cpp b/src/c_fl_hor_nice_slider.cpp index c976e26..e3f828f 100644 --- a/src/c_fl_hor_nice_slider.cpp +++ b/src/c_fl_hor_nice_slider.cpp @@ -6,69 +6,62 @@ #include #include "c_fl_hor_nice_slider.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Hor_Nice_Slider : public Fl_Hor_Nice_Slider { - public: - using Fl_Hor_Nice_Slider::Fl_Hor_Nice_Slider; - friend void hor_nice_slider_set_draw_hook(HOR_NICE_SLIDER s, void * d); - friend void fl_hor_nice_slider_draw(HOR_NICE_SLIDER s); - friend void hor_nice_slider_set_handle_hook(HOR_NICE_SLIDER s, void * h); - friend int fl_hor_nice_slider_handle(HOR_NICE_SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Hor_Nice_Slider::Fl_Hor_Nice_Slider; + + friend void fl_hor_nice_slider_draw(HORNICESLIDER s); + friend int fl_hor_nice_slider_handle(HORNICESLIDER s, int e); + + void draw(); + int handle(int e); }; void My_Hor_Nice_Slider::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Hor_Nice_Slider::real_draw() { - Fl_Hor_Nice_Slider::draw(); + widget_draw_hook(this->user_data()); } int My_Hor_Nice_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Hor_Nice_Slider::real_handle(int e) { - return Fl_Hor_Nice_Slider::handle(e); -} -void hor_nice_slider_set_draw_hook(HOR_NICE_SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} -void fl_hor_nice_slider_draw(HOR_NICE_SLIDER s) { - reinterpret_cast(s)->real_draw(); -} -void hor_nice_slider_set_handle_hook(HOR_NICE_SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +// Flattened C API + +HORNICESLIDER new_fl_hor_nice_slider(int x, int y, int w, int h, char* label) { + My_Hor_Nice_Slider *s = new My_Hor_Nice_Slider(x, y, w, h, label); + return s; } -int fl_hor_nice_slider_handle(HOR_NICE_SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +void free_fl_hor_nice_slider(HORNICESLIDER s) { + delete reinterpret_cast(s); } -HOR_NICE_SLIDER new_fl_hor_nice_slider(int x, int y, int w, int h, char* label) { - My_Hor_Nice_Slider *s = new My_Hor_Nice_Slider(x, y, w, h, label); - return s; +void fl_hor_nice_slider_draw(HORNICESLIDER s) { + reinterpret_cast(s)->Fl_Hor_Nice_Slider::draw(); } -void free_fl_hor_nice_slider(HOR_NICE_SLIDER s) { - delete reinterpret_cast(s); +int fl_hor_nice_slider_handle(HORNICESLIDER s, int e) { + return reinterpret_cast(s)->Fl_Hor_Nice_Slider::handle(e); } diff --git a/src/c_fl_hor_nice_slider.h b/src/c_fl_hor_nice_slider.h index 296f364..a4e3bc1 100644 --- a/src/c_fl_hor_nice_slider.h +++ b/src/c_fl_hor_nice_slider.h @@ -8,24 +8,17 @@ #define FL_HOR_NICE_SLIDER_GUARD +typedef void* HORNICESLIDER; -typedef void* HOR_NICE_SLIDER; +extern "C" HORNICESLIDER new_fl_hor_nice_slider(int x, int y, int w, int h, char* label); +extern "C" void free_fl_hor_nice_slider(HORNICESLIDER s); - - -extern "C" void hor_nice_slider_set_draw_hook(HOR_NICE_SLIDER s, void * d); -extern "C" void fl_hor_nice_slider_draw(HOR_NICE_SLIDER s); -extern "C" void hor_nice_slider_set_handle_hook(HOR_NICE_SLIDER s, void * h); -extern "C" int fl_hor_nice_slider_handle(HOR_NICE_SLIDER s, int e); - - - - -extern "C" HOR_NICE_SLIDER new_fl_hor_nice_slider(int x, int y, int w, int h, char* label); -extern "C" void free_fl_hor_nice_slider(HOR_NICE_SLIDER s); +extern "C" void fl_hor_nice_slider_draw(HORNICESLIDER s); +extern "C" int fl_hor_nice_slider_handle(HORNICESLIDER s, int e); #endif + diff --git a/src/c_fl_hor_value_slider.cpp b/src/c_fl_hor_value_slider.cpp index f91a213..0630b12 100644 --- a/src/c_fl_hor_value_slider.cpp +++ b/src/c_fl_hor_value_slider.cpp @@ -6,69 +6,62 @@ #include #include "c_fl_hor_value_slider.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Hor_Value_Slider : public Fl_Hor_Value_Slider { - public: - using Fl_Hor_Value_Slider::Fl_Hor_Value_Slider; - friend void hor_value_slider_set_draw_hook(HOR_VALUE_SLIDER s, void * d); - friend void fl_hor_value_slider_draw(HOR_VALUE_SLIDER s); - friend void hor_value_slider_set_handle_hook(HOR_VALUE_SLIDER s, void * h); - friend int fl_hor_value_slider_handle(HOR_VALUE_SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Hor_Value_Slider::Fl_Hor_Value_Slider; + + friend void fl_hor_value_slider_draw(HORVALUESLIDER s); + friend int fl_hor_value_slider_handle(HORVALUESLIDER s, int e); + + void draw(); + int handle(int e); }; void My_Hor_Value_Slider::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Hor_Value_Slider::real_draw() { - Fl_Hor_Value_Slider::draw(); + widget_draw_hook(this->user_data()); } int My_Hor_Value_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Hor_Value_Slider::real_handle(int e) { - return Fl_Hor_Value_Slider::handle(e); -} -void hor_value_slider_set_draw_hook(HOR_VALUE_SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} -void fl_hor_value_slider_draw(HOR_VALUE_SLIDER s) { - reinterpret_cast(s)->real_draw(); -} -void hor_value_slider_set_handle_hook(HOR_VALUE_SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +// Flattened C API + +HORVALUESLIDER new_fl_hor_value_slider(int x, int y, int w, int h, char* label) { + My_Hor_Value_Slider *s = new My_Hor_Value_Slider(x, y, w, h, label); + return s; } -int fl_hor_value_slider_handle(HOR_VALUE_SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +void free_fl_hor_value_slider(HORVALUESLIDER s) { + delete reinterpret_cast(s); } -HOR_VALUE_SLIDER new_fl_hor_value_slider(int x, int y, int w, int h, char* label) { - My_Hor_Value_Slider *s = new My_Hor_Value_Slider(x, y, w, h, label); - return s; +void fl_hor_value_slider_draw(HORVALUESLIDER s) { + reinterpret_cast(s)->Fl_Hor_Value_Slider::draw(); } -void free_fl_hor_value_slider(HOR_VALUE_SLIDER s) { - delete reinterpret_cast(s); +int fl_hor_value_slider_handle(HORVALUESLIDER s, int e) { + return reinterpret_cast(s)->Fl_Hor_Value_Slider::handle(e); } diff --git a/src/c_fl_hor_value_slider.h b/src/c_fl_hor_value_slider.h index 09a829c..6257313 100644 --- a/src/c_fl_hor_value_slider.h +++ b/src/c_fl_hor_value_slider.h @@ -8,24 +8,17 @@ #define FL_HOR_VALUE_SLIDER_GUARD +typedef void* HORVALUESLIDER; -typedef void* HOR_VALUE_SLIDER; +extern "C" HORVALUESLIDER new_fl_hor_value_slider(int x, int y, int w, int h, char* label); +extern "C" void free_fl_hor_value_slider(HORVALUESLIDER s); - - -extern "C" void hor_value_slider_set_draw_hook(HOR_VALUE_SLIDER s, void * d); -extern "C" void fl_hor_value_slider_draw(HOR_VALUE_SLIDER s); -extern "C" void hor_value_slider_set_handle_hook(HOR_VALUE_SLIDER s, void * h); -extern "C" int fl_hor_value_slider_handle(HOR_VALUE_SLIDER s, int e); - - - - -extern "C" HOR_VALUE_SLIDER new_fl_hor_value_slider(int x, int y, int w, int h, char* label); -extern "C" void free_fl_hor_value_slider(HOR_VALUE_SLIDER s); +extern "C" void fl_hor_value_slider_draw(HORVALUESLIDER s); +extern "C" int fl_hor_value_slider_handle(HORVALUESLIDER s, int e); #endif + diff --git a/src/c_fl_horizontal_slider.cpp b/src/c_fl_horizontal_slider.cpp index 2e52a68..2856a21 100644 --- a/src/c_fl_horizontal_slider.cpp +++ b/src/c_fl_horizontal_slider.cpp @@ -6,69 +6,62 @@ #include #include "c_fl_horizontal_slider.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Horizontal_Slider : public Fl_Hor_Slider { - public: - using Fl_Hor_Slider::Fl_Hor_Slider; - friend void horizontal_slider_set_draw_hook(HORIZONTAL_SLIDER s, void * d); - friend void fl_horizontal_slider_draw(HORIZONTAL_SLIDER s); - friend void horizontal_slider_set_handle_hook(HORIZONTAL_SLIDER s, void * h); - friend int fl_horizontal_slider_handle(HORIZONTAL_SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Hor_Slider::Fl_Hor_Slider; + + friend void fl_horizontal_slider_draw(HORIZONTALSLIDER s); + friend int fl_horizontal_slider_handle(HORIZONTALSLIDER s, int e); + + void draw(); + int handle(int e); }; void My_Horizontal_Slider::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Horizontal_Slider::real_draw() { - Fl_Hor_Slider::draw(); + widget_draw_hook(this->user_data()); } int My_Horizontal_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Horizontal_Slider::real_handle(int e) { - return Fl_Hor_Slider::handle(e); -} -void horizontal_slider_set_draw_hook(HORIZONTAL_SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} -void fl_horizontal_slider_draw(HORIZONTAL_SLIDER s) { - reinterpret_cast(s)->real_draw(); -} -void horizontal_slider_set_handle_hook(HORIZONTAL_SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +// Flattened C API + +HORIZONTALSLIDER new_fl_horizontal_slider(int x, int y, int w, int h, char* label) { + My_Horizontal_Slider *s = new My_Horizontal_Slider(x, y, w, h, label); + return s; } -int fl_horizontal_slider_handle(HORIZONTAL_SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +void free_fl_horizontal_slider(HORIZONTALSLIDER s) { + delete reinterpret_cast(s); } -HORIZONTAL_SLIDER new_fl_horizontal_slider(int x, int y, int w, int h, char* label) { - My_Horizontal_Slider *s = new My_Horizontal_Slider(x, y, w, h, label); - return s; +void fl_horizontal_slider_draw(HORIZONTALSLIDER s) { + reinterpret_cast(s)->Fl_Hor_Slider::draw(); } -void free_fl_horizontal_slider(HORIZONTAL_SLIDER s) { - delete reinterpret_cast(s); +int fl_horizontal_slider_handle(HORIZONTALSLIDER s, int e) { + return reinterpret_cast(s)->Fl_Hor_Slider::handle(e); } diff --git a/src/c_fl_horizontal_slider.h b/src/c_fl_horizontal_slider.h index 118b834..96dd11a 100644 --- a/src/c_fl_horizontal_slider.h +++ b/src/c_fl_horizontal_slider.h @@ -8,24 +8,17 @@ #define FL_HORIZONTAL_SLIDER_GUARD +typedef void* HORIZONTALSLIDER; -typedef void* HORIZONTAL_SLIDER; +extern "C" HORIZONTALSLIDER new_fl_horizontal_slider(int x, int y, int w, int h, char* label); +extern "C" void free_fl_horizontal_slider(HORIZONTALSLIDER s); - - -extern "C" void horizontal_slider_set_draw_hook(HORIZONTAL_SLIDER s, void * d); -extern "C" void fl_horizontal_slider_draw(HORIZONTAL_SLIDER s); -extern "C" void horizontal_slider_set_handle_hook(HORIZONTAL_SLIDER s, void * h); -extern "C" int fl_horizontal_slider_handle(HORIZONTAL_SLIDER s, int e); - - - - -extern "C" HORIZONTAL_SLIDER new_fl_horizontal_slider(int x, int y, int w, int h, char* label); -extern "C" void free_fl_horizontal_slider(HORIZONTAL_SLIDER s); +extern "C" void fl_horizontal_slider_draw(HORIZONTALSLIDER s); +extern "C" int fl_horizontal_slider_handle(HORIZONTALSLIDER s, int e); #endif + diff --git a/src/c_fl_input_choice.cpp b/src/c_fl_input_choice.cpp index 4418e56..682aed0 100644 --- a/src/c_fl_input_choice.cpp +++ b/src/c_fl_input_choice.cpp @@ -6,146 +6,146 @@ #include #include "c_fl_input_choice.h" -#include "c_fl_type.h" -class My_Input_Choice : public Fl_Input_Choice { - public: - using Fl_Input_Choice::Fl_Input_Choice; - friend void input_choice_set_draw_hook(INPUT_CHOICE n, void * d); - friend void fl_input_choice_draw(INPUT_CHOICE n); - friend void input_choice_set_handle_hook(INPUT_CHOICE n, void * h); - friend int fl_input_choice_handle(INPUT_CHOICE n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Input_Choice::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Input_Choice::real_draw() { - Fl_Input_Choice::draw(); -} -int My_Input_Choice::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Input_Choice::real_handle(int e) { - return Fl_Input_Choice::handle(e); -} -void input_choice_set_draw_hook(INPUT_CHOICE n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_input_choice_draw(INPUT_CHOICE n) { - reinterpret_cast(n)->real_draw(); -} +class My_Input_Choice : public Fl_Input_Choice { +public: + using Fl_Input_Choice::Fl_Input_Choice; + + friend void fl_input_choice_draw(INPUTCHOICE n); + friend int fl_input_choice_handle(INPUTCHOICE n, int e); -void input_choice_set_handle_hook(INPUT_CHOICE n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Input_Choice::draw() { + widget_draw_hook(this->user_data()); } -int fl_input_choice_handle(INPUT_CHOICE n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Input_Choice::handle(int e) { + return widget_handle_hook(this->user_data(), e); } -INPUT_CHOICE new_fl_input_choice(int x, int y, int w, int h, char* label) { +// Flattened C API + +INPUTCHOICE new_fl_input_choice(int x, int y, int w, int h, char* label) { My_Input_Choice *n = new My_Input_Choice(x, y, w, h, label); return n; } -void free_fl_input_choice(INPUT_CHOICE n) { +void free_fl_input_choice(INPUTCHOICE n) { delete reinterpret_cast(n); } -void * fl_input_choice_input(INPUT_CHOICE n) { +void * fl_input_choice_input(INPUTCHOICE n) { return reinterpret_cast(n)->input(); } -void * fl_input_choice_menubutton(INPUT_CHOICE n) { +void * fl_input_choice_menubutton(INPUTCHOICE n) { return reinterpret_cast(n)->menubutton(); } -void fl_input_choice_clear(INPUT_CHOICE n) { +void fl_input_choice_clear(INPUTCHOICE n) { reinterpret_cast(n)->clear(); } -int fl_input_choice_changed(INPUT_CHOICE n) { +int fl_input_choice_changed(INPUTCHOICE n) { return reinterpret_cast(n)->changed(); } -void fl_input_choice_clear_changed(INPUT_CHOICE n) { +void fl_input_choice_clear_changed(INPUTCHOICE n) { reinterpret_cast(n)->clear_changed(); } -void fl_input_choice_set_changed(INPUT_CHOICE n) { +void fl_input_choice_set_changed(INPUTCHOICE n) { reinterpret_cast(n)->set_changed(); } -int fl_input_choice_get_down_box(INPUT_CHOICE n) { +int fl_input_choice_get_down_box(INPUTCHOICE n) { return reinterpret_cast(n)->down_box(); } -void fl_input_choice_set_down_box(INPUT_CHOICE n, int t) { +void fl_input_choice_set_down_box(INPUTCHOICE n, int t) { reinterpret_cast(n)->down_box(static_cast(t)); } -unsigned int fl_input_choice_get_textcolor(INPUT_CHOICE n) { +unsigned int fl_input_choice_get_textcolor(INPUTCHOICE n) { return reinterpret_cast(n)->textcolor(); } -void fl_input_choice_set_textcolor(INPUT_CHOICE n, unsigned int t) { +void fl_input_choice_set_textcolor(INPUTCHOICE n, unsigned int t) { reinterpret_cast(n)->textcolor(t); } -int fl_input_choice_get_textfont(INPUT_CHOICE n) { +int fl_input_choice_get_textfont(INPUTCHOICE n) { return reinterpret_cast(n)->textfont(); } -void fl_input_choice_set_textfont(INPUT_CHOICE n, int t) { +void fl_input_choice_set_textfont(INPUTCHOICE n, int t) { reinterpret_cast(n)->textfont(t); } -int fl_input_choice_get_textsize(INPUT_CHOICE n) { +int fl_input_choice_get_textsize(INPUTCHOICE n) { return reinterpret_cast(n)->textsize(); } -void fl_input_choice_set_textsize(INPUT_CHOICE n, int t) { +void fl_input_choice_set_textsize(INPUTCHOICE n, int t) { reinterpret_cast(n)->textsize(t); } -const char * fl_input_choice_get_value(INPUT_CHOICE n) { +const char * fl_input_choice_get_value(INPUTCHOICE n) { return reinterpret_cast(n)->value(); } -void fl_input_choice_set_value(INPUT_CHOICE n, const char * t) { +void fl_input_choice_set_value(INPUTCHOICE n, const char * t) { reinterpret_cast(n)->value(t); } -void fl_input_choice_set_value2(INPUT_CHOICE n, int t) { +void fl_input_choice_set_value2(INPUTCHOICE n, int t) { reinterpret_cast(n)->value(t); } + + +void fl_input_choice_resize(INPUTCHOICE n, int x, int y, int w, int h) { + reinterpret_cast(n)->resize(x, y, w, h); +} + + + + +void fl_input_choice_draw(INPUTCHOICE n) { + reinterpret_cast(n)->Fl_Input_Choice::draw(); +} + +int fl_input_choice_handle(INPUTCHOICE n, int e) { + return reinterpret_cast(n)->Fl_Input_Choice::handle(e); +} + + diff --git a/src/c_fl_input_choice.h b/src/c_fl_input_choice.h index add7b53..a7ee0c3 100644 --- a/src/c_fl_input_choice.h +++ b/src/c_fl_input_choice.h @@ -8,49 +8,43 @@ #define FL_INPUT_CHOICE_GUARD +typedef void* INPUTCHOICE; -typedef void* INPUT_CHOICE; +extern "C" INPUTCHOICE new_fl_input_choice(int x, int y, int w, int h, char* label); +extern "C" void free_fl_input_choice(INPUTCHOICE n); +extern "C" void * fl_input_choice_input(INPUTCHOICE n); +extern "C" void * fl_input_choice_menubutton(INPUTCHOICE n); -extern "C" void input_choice_set_draw_hook(INPUT_CHOICE n, void * d); -extern "C" void fl_input_choice_draw(INPUT_CHOICE n); -extern "C" void input_choice_set_handle_hook(INPUT_CHOICE n, void * h); -extern "C" int fl_input_choice_handle(INPUT_CHOICE n, int e); +extern "C" void fl_input_choice_clear(INPUTCHOICE n); +extern "C" int fl_input_choice_changed(INPUTCHOICE n); +extern "C" void fl_input_choice_clear_changed(INPUTCHOICE n); +extern "C" void fl_input_choice_set_changed(INPUTCHOICE n); +extern "C" int fl_input_choice_get_down_box(INPUTCHOICE n); +extern "C" void fl_input_choice_set_down_box(INPUTCHOICE n, int t); +extern "C" unsigned int fl_input_choice_get_textcolor(INPUTCHOICE n); +extern "C" void fl_input_choice_set_textcolor(INPUTCHOICE n, unsigned int t); +extern "C" int fl_input_choice_get_textfont(INPUTCHOICE n); +extern "C" void fl_input_choice_set_textfont(INPUTCHOICE n, int t); +extern "C" int fl_input_choice_get_textsize(INPUTCHOICE n); +extern "C" void fl_input_choice_set_textsize(INPUTCHOICE n, int t); +extern "C" const char * fl_input_choice_get_value(INPUTCHOICE n); +extern "C" void fl_input_choice_set_value(INPUTCHOICE n, const char * t); +extern "C" void fl_input_choice_set_value2(INPUTCHOICE n, int t); -extern "C" INPUT_CHOICE new_fl_input_choice(int x, int y, int w, int h, char* label); -extern "C" void free_fl_input_choice(INPUT_CHOICE n); +extern "C" void fl_input_choice_resize(INPUTCHOICE n, int x, int y, int w, int h); - - -extern "C" void * fl_input_choice_input(INPUT_CHOICE n); -extern "C" void * fl_input_choice_menubutton(INPUT_CHOICE n); - - -extern "C" void fl_input_choice_clear(INPUT_CHOICE n); - - -extern "C" int fl_input_choice_changed(INPUT_CHOICE n); -extern "C" void fl_input_choice_clear_changed(INPUT_CHOICE n); -extern "C" void fl_input_choice_set_changed(INPUT_CHOICE n); -extern "C" int fl_input_choice_get_down_box(INPUT_CHOICE n); -extern "C" void fl_input_choice_set_down_box(INPUT_CHOICE n, int t); -extern "C" unsigned int fl_input_choice_get_textcolor(INPUT_CHOICE n); -extern "C" void fl_input_choice_set_textcolor(INPUT_CHOICE n, unsigned int t); -extern "C" int fl_input_choice_get_textfont(INPUT_CHOICE n); -extern "C" void fl_input_choice_set_textfont(INPUT_CHOICE n, int t); -extern "C" int fl_input_choice_get_textsize(INPUT_CHOICE n); -extern "C" void fl_input_choice_set_textsize(INPUT_CHOICE n, int t); -extern "C" const char * fl_input_choice_get_value(INPUT_CHOICE n); -extern "C" void fl_input_choice_set_value(INPUT_CHOICE n, const char * t); -extern "C" void fl_input_choice_set_value2(INPUT_CHOICE n, int t); +extern "C" void fl_input_choice_draw(INPUTCHOICE n); +extern "C" int fl_input_choice_handle(INPUTCHOICE n, int e); #endif + diff --git a/src/c_fl_label.cpp b/src/c_fl_label.cpp index 71b81ba..1fb5579 100644 --- a/src/c_fl_label.cpp +++ b/src/c_fl_label.cpp @@ -7,7 +7,6 @@ #include #include #include "c_fl_label.h" -#include "c_fl_type.h" diff --git a/src/c_fl_label.h b/src/c_fl_label.h index ea69d51..806aa72 100644 --- a/src/c_fl_label.h +++ b/src/c_fl_label.h @@ -8,19 +8,13 @@ #define FL_LABEL_GUARD - - typedef void* LABEL; - - extern "C" LABEL new_fl_label(const char * v, int f, int s, unsigned int h, int k, unsigned int p); extern "C" void free_fl_label(LABEL l); - - extern "C" void fl_label_set_value(LABEL l, const char * v); extern "C" int fl_label_get_font(LABEL l); extern "C" void fl_label_set_font(LABEL l, int f); diff --git a/src/c_fl_light_button.cpp b/src/c_fl_light_button.cpp index ccced36..f8d52a8 100644 --- a/src/c_fl_light_button.cpp +++ b/src/c_fl_light_button.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_light_button.h" -#include "c_fl_type.h" -class My_Light_Button : public Fl_Light_Button { - public: - using Fl_Light_Button::Fl_Light_Button; - friend void light_button_set_draw_hook(LIGHTBUTTON b, void * d); - friend void fl_light_button_draw(LIGHTBUTTON b); - friend void light_button_set_handle_hook(LIGHTBUTTON b, void * h); - friend int fl_light_button_handle(LIGHTBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Light_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Light_Button::real_draw() { - Fl_Light_Button::draw(); -} -int My_Light_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Light_Button::real_handle(int e) { - return Fl_Light_Button::handle(e); -} -void light_button_set_draw_hook(LIGHTBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_light_button_draw(LIGHTBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Light_Button : public Fl_Light_Button { +public: + using Fl_Light_Button::Fl_Light_Button; + + friend void fl_light_button_draw(LIGHTBUTTON b); + friend int fl_light_button_handle(LIGHTBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void light_button_set_handle_hook(LIGHTBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Light_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_light_button_handle(LIGHTBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Light_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + LIGHTBUTTON new_fl_light_button(int x, int y, int w, int h, char* label) { My_Light_Button *b = new My_Light_Button(x, y, w, h, label); return b; @@ -71,3 +53,15 @@ void free_fl_light_button(LIGHTBUTTON b) { delete reinterpret_cast(b); } + + + +void fl_light_button_draw(LIGHTBUTTON b) { + reinterpret_cast(b)->Fl_Light_Button::draw(); +} + +int fl_light_button_handle(LIGHTBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Light_Button::handle(e); +} + + diff --git a/src/c_fl_light_button.h b/src/c_fl_light_button.h index 05aaab3..5d604d2 100644 --- a/src/c_fl_light_button.h +++ b/src/c_fl_light_button.h @@ -8,24 +8,17 @@ #define FL_LIGHT_BUTTON_GUARD - - typedef void* LIGHTBUTTON; +extern "C" LIGHTBUTTON new_fl_light_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_light_button(LIGHTBUTTON b); -extern "C" void light_button_set_draw_hook(LIGHTBUTTON b, void * d); extern "C" void fl_light_button_draw(LIGHTBUTTON b); -extern "C" void light_button_set_handle_hook(LIGHTBUTTON b, void * h); extern "C" int fl_light_button_handle(LIGHTBUTTON b, int e); - - -extern "C" LIGHTBUTTON new_fl_light_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_light_button(LIGHTBUTTON b); - - #endif + diff --git a/src/c_fl_line_dial.cpp b/src/c_fl_line_dial.cpp index 040fa61..cb0727f 100644 --- a/src/c_fl_line_dial.cpp +++ b/src/c_fl_line_dial.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_line_dial.h" -#include "c_fl_type.h" -class My_Line_Dial : public Fl_Line_Dial { - public: - using Fl_Line_Dial::Fl_Line_Dial; - friend void line_dial_set_draw_hook(LINE_DIAL v, void * d); - friend void fl_line_dial_draw(LINE_DIAL v); - friend void line_dial_set_handle_hook(LINE_DIAL v, void * h); - friend int fl_line_dial_handle(LINE_DIAL v, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Line_Dial::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Line_Dial::real_draw() { - Fl_Line_Dial::draw(); -} -int My_Line_Dial::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Line_Dial::real_handle(int e) { - return Fl_Line_Dial::handle(e); -} -void line_dial_set_draw_hook(LINE_DIAL v, void * d) { - reinterpret_cast(v)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_line_dial_draw(LINE_DIAL v) { - reinterpret_cast(v)->real_draw(); -} +class My_Line_Dial : public Fl_Line_Dial { +public: + using Fl_Line_Dial::Fl_Line_Dial; + + friend void fl_line_dial_draw(LINE_DIAL v); + friend int fl_line_dial_handle(LINE_DIAL v, int e); + + void draw(); + int handle(int e); +}; -void line_dial_set_handle_hook(LINE_DIAL v, void * h) { - reinterpret_cast(v)->handle_hook = reinterpret_cast(h); +void My_Line_Dial::draw() { + widget_draw_hook(this->user_data()); } -int fl_line_dial_handle(LINE_DIAL v, int e) { - return reinterpret_cast(v)->real_handle(e); +int My_Line_Dial::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + LINE_DIAL new_fl_line_dial(int x, int y, int w, int h, char* label) { My_Line_Dial *v = new My_Line_Dial(x, y, w, h, label); return v; @@ -72,3 +54,14 @@ void free_fl_line_dial(LINE_DIAL v) { } + + +void fl_line_dial_draw(LINE_DIAL v) { + reinterpret_cast(v)->Fl_Line_Dial::draw(); +} + +int fl_line_dial_handle(LINE_DIAL v, int e) { + return reinterpret_cast(v)->Fl_Line_Dial::handle(e); +} + + diff --git a/src/c_fl_line_dial.h b/src/c_fl_line_dial.h index f28a419..73ffb89 100644 --- a/src/c_fl_line_dial.h +++ b/src/c_fl_line_dial.h @@ -8,24 +8,17 @@ #define FL_LINE_DIAL_GUARD - - typedef void* LINE_DIAL; +extern "C" LINE_DIAL new_fl_line_dial(int x, int y, int w, int h, char* label); +extern "C" void free_fl_line_dial(LINE_DIAL v); -extern "C" void line_dial_set_draw_hook(LINE_DIAL v, void * d); extern "C" void fl_line_dial_draw(LINE_DIAL v); -extern "C" void line_dial_set_handle_hook(LINE_DIAL v, void * h); extern "C" int fl_line_dial_handle(LINE_DIAL v, int e); - - -extern "C" LINE_DIAL new_fl_line_dial(int x, int y, int w, int h, char* label); -extern "C" void free_fl_line_dial(LINE_DIAL v); - - #endif + diff --git a/src/c_fl_menu.cpp b/src/c_fl_menu.cpp index 0b55e5d..8aa82f2 100644 --- a/src/c_fl_menu.cpp +++ b/src/c_fl_menu.cpp @@ -7,41 +7,43 @@ #include #include #include "c_fl_menu.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Menu : public Fl_Menu_ { - public: - using Fl_Menu_::Fl_Menu_; - friend void menu_set_draw_hook(MENU m, void * d); - friend void menu_set_handle_hook(MENU m, void * h); - protected: - void draw(); - int handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Menu_::Fl_Menu_; + + friend void fl_menu_draw(MENU m); + friend int fl_menu_handle(MENU m, int e); + + void draw(); + int handle(int e); }; void My_Menu::draw() { - (*draw_hook)(this->user_data()); + widget_draw_hook(this->user_data()); } int My_Menu::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -void menu_set_draw_hook(MENU m, void * d) { - reinterpret_cast(m)->draw_hook = reinterpret_cast(d); -} - -void menu_set_handle_hook(MENU m, void * h) { - reinterpret_cast(m)->handle_hook = reinterpret_cast(h); -} +// Flattened C API MENU new_fl_menu(int x, int y, int w, int h, char* label) { My_Menu *m = new My_Menu(x, y, w, h, label); @@ -59,7 +61,9 @@ int fl_menu_add(MENU m, const char * t, unsigned long s, void * c, void * u, uns return reinterpret_cast(m)->add(t,s,reinterpret_cast(c),u,f); } -int fl_menu_insert(MENU m, int p, const char * t, unsigned long s, void * c, void * u, unsigned long f) { +int fl_menu_insert(MENU m, int p, const char * t, unsigned long s, + void * c, void * u, unsigned long f) +{ return reinterpret_cast(m)->insert(p,t,s,reinterpret_cast(c),u,f); } @@ -221,4 +225,16 @@ void fl_menu_draw_item(MENU m, int i, int x, int y, int w, int h, int s) { item->draw(x,y,w,h,reinterpret_cast(m),s); } +void fl_menu_draw(MENU m) { + // The Fl_Menu_ draw method doesn't technically exist, so... + (void)(m); + // It is more convenient for this function to exist, however, + // even though it will likely never be called, because it simplifies + // and makes uniform the implementation of the Ada Menu Draw subprogram. +} + +int fl_menu_handle(MENU m, int e) { + return reinterpret_cast(m)->Fl_Menu_::handle(e); +} + diff --git a/src/c_fl_menu.h b/src/c_fl_menu.h index 68463ee..b4265aa 100644 --- a/src/c_fl_menu.h +++ b/src/c_fl_menu.h @@ -8,27 +8,17 @@ #define FL_MENU_GUARD - - typedef void* MENU; - - -extern "C" void menu_set_draw_hook(MENU m, void * d); -extern "C" void menu_set_handle_hook(MENU m, void * h); - - - - extern "C" MENU new_fl_menu(int x, int y, int w, int h, char* label); extern "C" void free_fl_menu(MENU m); - - -extern "C" int fl_menu_add(MENU m, const char * t, unsigned long s, void * c, void * u, unsigned long f); -extern "C" int fl_menu_insert(MENU m, int p, const char * t, unsigned long s, void * c, void * u, unsigned long f); +extern "C" int fl_menu_add(MENU m, const char * t, unsigned long s, + void * c, void * u, unsigned long f); +extern "C" int fl_menu_insert(MENU m, int p, const char * t, unsigned long s, + void * c, void * u, unsigned long f); extern "C" void fl_menu_remove(MENU m, int p); extern "C" void fl_menu_clear(MENU m); @@ -68,7 +58,10 @@ extern "C" const void * fl_menu_pulldown(MENU m, int x, int y, int w, int h, int extern "C" void fl_menu_draw_item(MENU m, int i, int x, int y, int w, int h, int s); +extern "C" void fl_menu_draw(MENU m); +extern "C" int fl_menu_handle(MENU m, int e); #endif + diff --git a/src/c_fl_menu_bar.cpp b/src/c_fl_menu_bar.cpp index ca6797b..1da51e9 100644 --- a/src/c_fl_menu_bar.cpp +++ b/src/c_fl_menu_bar.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_menu_bar.h" -#include "c_fl_type.h" -class My_Menu_Bar : public Fl_Menu_Bar { - public: - using Fl_Menu_Bar::Fl_Menu_Bar; - friend void menu_bar_set_draw_hook(MENUBAR m, void * d); - friend void fl_menu_bar_draw(MENUBAR m); - friend void menu_bar_set_handle_hook(MENUBAR m, void * h); - friend int fl_menu_bar_handle(MENUBAR m, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Menu_Bar::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Menu_Bar::real_draw() { - Fl_Menu_Bar::draw(); -} -int My_Menu_Bar::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Menu_Bar::real_handle(int e) { - return Fl_Menu_Bar::handle(e); -} -void menu_bar_set_draw_hook(MENUBAR m, void * d) { - reinterpret_cast(m)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_menu_bar_draw(MENUBAR m) { - reinterpret_cast(m)->real_draw(); -} +class My_Menu_Bar : public Fl_Menu_Bar { +public: + using Fl_Menu_Bar::Fl_Menu_Bar; + + friend void fl_menu_bar_draw(MENUBAR m); + friend int fl_menu_bar_handle(MENUBAR m, int e); + + void draw(); + int handle(int e); +}; -void menu_bar_set_handle_hook(MENUBAR m, void * h) { - reinterpret_cast(m)->handle_hook = reinterpret_cast(h); +void My_Menu_Bar::draw() { + widget_draw_hook(this->user_data()); } -int fl_menu_bar_handle(MENUBAR m, int e) { - return reinterpret_cast(m)->real_handle(e); +int My_Menu_Bar::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + MENUBAR new_fl_menu_bar(int x, int y, int w, int h, char* label) { My_Menu_Bar *m = new My_Menu_Bar(x, y, w, h, label); return m; @@ -71,3 +53,15 @@ void free_fl_menu_bar(MENUBAR m) { delete reinterpret_cast(m); } + + + +void fl_menu_bar_draw(MENUBAR m) { + reinterpret_cast(m)->Fl_Menu_Bar::draw(); +} + +int fl_menu_bar_handle(MENUBAR m, int e) { + return reinterpret_cast(m)->Fl_Menu_Bar::handle(e); +} + + diff --git a/src/c_fl_menu_bar.h b/src/c_fl_menu_bar.h index 56f7814..ae99467 100644 --- a/src/c_fl_menu_bar.h +++ b/src/c_fl_menu_bar.h @@ -8,24 +8,17 @@ #define FL_MENU_BAR_GUARD - - typedef void* MENUBAR; +extern "C" MENUBAR new_fl_menu_bar(int x, int y, int w, int h, char* label); +extern "C" void free_fl_menu_bar(MENUBAR m); -extern "C" void menu_bar_set_draw_hook(MENUBAR m, void * d); extern "C" void fl_menu_bar_draw(MENUBAR m); -extern "C" void menu_bar_set_handle_hook(MENUBAR m, void * h); extern "C" int fl_menu_bar_handle(MENUBAR m, int e); - - -extern "C" MENUBAR new_fl_menu_bar(int x, int y, int w, int h, char* label); -extern "C" void free_fl_menu_bar(MENUBAR m); - - #endif + diff --git a/src/c_fl_menu_button.cpp b/src/c_fl_menu_button.cpp index fd78df4..4a32ca6 100644 --- a/src/c_fl_menu_button.cpp +++ b/src/c_fl_menu_button.cpp @@ -6,7 +6,6 @@ #include #include "c_fl_menu_button.h" -#include "c_fl_type.h" @@ -27,57 +26,40 @@ void fl_menu_button_extra_final(void * adaobj) { -class My_Menu_Button : public Fl_Menu_Button { - public: - using Fl_Menu_Button::Fl_Menu_Button; - friend void menu_button_set_draw_hook(MENUBUTTON m, void * d); - friend void fl_menu_button_draw(MENUBUTTON m); - friend void menu_button_set_handle_hook(MENUBUTTON m, void * h); - friend int fl_menu_button_handle(MENUBUTTON m, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Menu_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Menu_Button::real_draw() { - Fl_Menu_Button::draw(); -} -int My_Menu_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Menu_Button::real_handle(int e) { - return Fl_Menu_Button::handle(e); -} -void menu_button_set_draw_hook(MENUBUTTON m, void * d) { - reinterpret_cast(m)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_menu_button_draw(MENUBUTTON m) { - reinterpret_cast(m)->real_draw(); -} +class My_Menu_Button : public Fl_Menu_Button { +public: + using Fl_Menu_Button::Fl_Menu_Button; + + friend void fl_menu_button_draw(MENUBUTTON m); + friend int fl_menu_button_handle(MENUBUTTON m, int e); + + void draw(); + int handle(int e); +}; -void menu_button_set_handle_hook(MENUBUTTON m, void * h) { - reinterpret_cast(m)->handle_hook = reinterpret_cast(h); +void My_Menu_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_menu_button_handle(MENUBUTTON m, int e) { - return reinterpret_cast(m)->real_handle(e); +int My_Menu_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + MENUBUTTON new_fl_menu_button(int x, int y, int w, int h, char* label) { My_Menu_Button *m = new My_Menu_Button(x, y, w, h, label); return m; @@ -99,3 +81,14 @@ const void * fl_menu_button_popup(MENUBUTTON m) { } + + +void fl_menu_button_draw(MENUBUTTON m) { + reinterpret_cast(m)->Fl_Menu_Button::draw(); +} + +int fl_menu_button_handle(MENUBUTTON m, int e) { + return reinterpret_cast(m)->Fl_Menu_Button::handle(e); +} + + diff --git a/src/c_fl_menu_button.h b/src/c_fl_menu_button.h index 513f6b0..e0e2b00 100644 --- a/src/c_fl_menu_button.h +++ b/src/c_fl_menu_button.h @@ -16,12 +16,6 @@ extern "C" void fl_menu_button_extra_final(void * adaobj); typedef void* MENUBUTTON; -extern "C" void menu_button_set_draw_hook(MENUBUTTON m, void * d); -extern "C" void fl_menu_button_draw(MENUBUTTON m); -extern "C" void menu_button_set_handle_hook(MENUBUTTON m, void * h); -extern "C" int fl_menu_button_handle(MENUBUTTON m, int e); - - extern "C" MENUBUTTON new_fl_menu_button(int x, int y, int w, int h, char* label); extern "C" void free_fl_menu_button(MENUBUTTON m); @@ -30,6 +24,10 @@ extern "C" void fl_menu_button_type(MENUBUTTON m, unsigned int t); extern "C" const void * fl_menu_button_popup(MENUBUTTON m); +extern "C" void fl_menu_button_draw(MENUBUTTON m); +extern "C" int fl_menu_button_handle(MENUBUTTON m, int e); + + #endif diff --git a/src/c_fl_menu_window.cpp b/src/c_fl_menu_window.cpp index 86e927a..db03028 100644 --- a/src/c_fl_menu_window.cpp +++ b/src/c_fl_menu_window.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_menu_window.h" -#include "c_fl_type.h" -class My_Menu_Window : public Fl_Menu_Window { - public: - using Fl_Menu_Window::Fl_Menu_Window; - friend void menu_window_set_draw_hook(MENUWINDOW n, void * d); - friend void fl_menu_window_draw(MENUWINDOW n); - friend void menu_window_set_handle_hook(MENUWINDOW n, void * h); - friend int fl_menu_window_handle(MENUWINDOW n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Menu_Window::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Menu_Window::real_draw() { - Fl_Menu_Window::draw(); -} -int My_Menu_Window::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Menu_Window::real_handle(int e) { - return Fl_Menu_Window::handle(e); -} -void menu_window_set_draw_hook(MENUWINDOW n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_menu_window_draw(MENUWINDOW n) { - reinterpret_cast(n)->real_draw(); -} +class My_Menu_Window : public Fl_Menu_Window { +public: + using Fl_Menu_Window::Fl_Menu_Window; + + friend void fl_menu_window_draw(MENUWINDOW n); + friend int fl_menu_window_handle(MENUWINDOW n, int e); + + void draw(); + int handle(int e); +}; -void menu_window_set_handle_hook(MENUWINDOW n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +void My_Menu_Window::draw() { + widget_draw_hook(this->user_data()); } -int fl_menu_window_handle(MENUWINDOW n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Menu_Window::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + MENUWINDOW new_fl_menu_window(int x, int y, int w, int h, char* label) { My_Menu_Window *m = new My_Menu_Window(x, y, w, h, label); return m; @@ -106,3 +88,15 @@ unsigned int fl_menu_window_overlay(MENUWINDOW m) { return reinterpret_cast(m)->overlay(); } + + + +void fl_menu_window_draw(MENUWINDOW n) { + reinterpret_cast(n)->Fl_Menu_Window::draw(); +} + +int fl_menu_window_handle(MENUWINDOW n, int e) { + return reinterpret_cast(n)->Fl_Menu_Window::handle(e); +} + + diff --git a/src/c_fl_menu_window.h b/src/c_fl_menu_window.h index d54296b..db8f26f 100644 --- a/src/c_fl_menu_window.h +++ b/src/c_fl_menu_window.h @@ -8,28 +8,14 @@ #define FL_MENU_WINDOW_GUARD - - typedef void* MENUWINDOW; - - -extern "C" void menu_window_set_draw_hook(MENUWINDOW n, void * d); -extern "C" void fl_menu_window_draw(MENUWINDOW n); -extern "C" void menu_window_set_handle_hook(MENUWINDOW n, void * h); -extern "C" int fl_menu_window_handle(MENUWINDOW n, int e); - - - - extern "C" MENUWINDOW new_fl_menu_window(int x, int y, int w, int h, char* label); extern "C" MENUWINDOW new_fl_menu_window2(int w, int h, char* label); extern "C" void free_fl_menu_window(MENUWINDOW m); - - extern "C" void fl_menu_window_show(MENUWINDOW m); extern "C" void fl_menu_window_hide(MENUWINDOW m); extern "C" void fl_menu_window_flush(MENUWINDOW m); @@ -40,5 +26,10 @@ extern "C" void fl_menu_window_clear_overlay(MENUWINDOW m); extern "C" unsigned int fl_menu_window_overlay(MENUWINDOW m); +extern "C" void fl_menu_window_draw(MENUWINDOW n); +extern "C" int fl_menu_window_handle(MENUWINDOW n, int e); + + #endif + diff --git a/src/c_fl_nice_slider.cpp b/src/c_fl_nice_slider.cpp index 819bd45..e4263dd 100644 --- a/src/c_fl_nice_slider.cpp +++ b/src/c_fl_nice_slider.cpp @@ -6,69 +6,62 @@ #include #include "c_fl_nice_slider.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Nice_Slider : public Fl_Nice_Slider { - public: - using Fl_Nice_Slider::Fl_Nice_Slider; - friend void nice_slider_set_draw_hook(NICE_SLIDER s, void * d); - friend void fl_nice_slider_draw(NICE_SLIDER s); - friend void nice_slider_set_handle_hook(NICE_SLIDER s, void * h); - friend int fl_nice_slider_handle(NICE_SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Nice_Slider::Fl_Nice_Slider; + + friend void fl_nice_slider_draw(NICESLIDER s); + friend int fl_nice_slider_handle(NICESLIDER s, int e); + + void draw(); + int handle(int e); }; void My_Nice_Slider::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Nice_Slider::real_draw() { - Fl_Nice_Slider::draw(); + widget_draw_hook(this->user_data()); } int My_Nice_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Nice_Slider::real_handle(int e) { - return Fl_Nice_Slider::handle(e); -} -void nice_slider_set_draw_hook(NICE_SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} -void fl_nice_slider_draw(NICE_SLIDER s) { - reinterpret_cast(s)->real_draw(); -} -void nice_slider_set_handle_hook(NICE_SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +// Flattened C API + +NICESLIDER new_fl_nice_slider(int x, int y, int w, int h, char* label) { + My_Nice_Slider *s = new My_Nice_Slider(x, y, w, h, label); + return s; } -int fl_nice_slider_handle(NICE_SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +void free_fl_nice_slider(NICESLIDER s) { + delete reinterpret_cast(s); } -NICE_SLIDER new_fl_nice_slider(int x, int y, int w, int h, char* label) { - My_Nice_Slider *s = new My_Nice_Slider(x, y, w, h, label); - return s; +void fl_nice_slider_draw(NICESLIDER s) { + reinterpret_cast(s)->Fl_Nice_Slider::draw(); } -void free_fl_nice_slider(NICE_SLIDER s) { - delete reinterpret_cast(s); +int fl_nice_slider_handle(NICESLIDER s, int e) { + return reinterpret_cast(s)->Fl_Nice_Slider::handle(e); } diff --git a/src/c_fl_nice_slider.h b/src/c_fl_nice_slider.h index 79916e6..2da3207 100644 --- a/src/c_fl_nice_slider.h +++ b/src/c_fl_nice_slider.h @@ -8,24 +8,17 @@ #define FL_NICE_SLIDER_GUARD +typedef void* NICESLIDER; -typedef void* NICE_SLIDER; +extern "C" NICESLIDER new_fl_nice_slider(int x, int y, int w, int h, char* label); +extern "C" void free_fl_nice_slider(NICESLIDER s); - - -extern "C" void nice_slider_set_draw_hook(NICE_SLIDER s, void * d); -extern "C" void fl_nice_slider_draw(NICE_SLIDER s); -extern "C" void nice_slider_set_handle_hook(NICE_SLIDER s, void * h); -extern "C" int fl_nice_slider_handle(NICE_SLIDER s, int e); - - - - -extern "C" NICE_SLIDER new_fl_nice_slider(int x, int y, int w, int h, char* label); -extern "C" void free_fl_nice_slider(NICE_SLIDER s); +extern "C" void fl_nice_slider_draw(NICESLIDER s); +extern "C" int fl_nice_slider_handle(NICESLIDER s, int e); #endif + diff --git a/src/c_fl_overlay_window.cpp b/src/c_fl_overlay_window.cpp index be924dc..3ce76a4 100644 --- a/src/c_fl_overlay_window.cpp +++ b/src/c_fl_overlay_window.cpp @@ -6,75 +6,54 @@ #include #include "c_fl_overlay_window.h" -#include "c_fl_type.h" -class My_Overlay_Window : public Fl_Overlay_Window { - public: - using Fl_Overlay_Window::Fl_Overlay_Window; - friend void overlay_window_set_draw_hook(OVERLAYWINDOW w, void * d); - friend void fl_overlay_window_draw(OVERLAYWINDOW w); - friend void overlay_window_set_draw_overlay_hook(OVERLAYWINDOW w, void * d); - friend void overlay_window_set_handle_hook(OVERLAYWINDOW w, void * h); - friend int fl_overlay_window_handle(OVERLAYWINDOW w, int e); - friend OVERLAYWINDOW new_fl_overlay_window(int x, int y, int w, int h, char *label); - friend OVERLAYWINDOW new_fl_overlay_window2(int w, int h, char *label); - protected: - void draw(); - void real_draw(); - void draw_overlay(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - d_hook_p draw_overlay_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Overlay_Window::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Overlay_Window::real_draw() { - Fl_Overlay_Window::draw(); -} +extern "C" void overlay_window_draw_overlay_hook(void * ud); -void My_Overlay_Window::draw_overlay() { - (*draw_overlay_hook)(this->user_data()); -} -int My_Overlay_Window::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Overlay_Window::real_handle(int e) { - return Fl_Overlay_Window::handle(e); -} -void overlay_window_set_draw_hook(OVERLAYWINDOW w, void * d) { - reinterpret_cast(w)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_overlay_window_draw(OVERLAYWINDOW w) { - reinterpret_cast(w)->real_draw(); -} +class My_Overlay_Window : public Fl_Overlay_Window { +public: + using Fl_Overlay_Window::Fl_Overlay_Window; + + friend OVERLAYWINDOW new_fl_overlay_window(int x, int y, int w, int h, char *label); + friend OVERLAYWINDOW new_fl_overlay_window2(int w, int h, char *label); + + friend void fl_overlay_window_draw(OVERLAYWINDOW w); + friend int fl_overlay_window_handle(OVERLAYWINDOW w, int e); -void overlay_window_set_draw_overlay_hook(OVERLAYWINDOW w, void * d) { - reinterpret_cast(w)->draw_overlay_hook = reinterpret_cast(d); + void draw(); + void draw_overlay(); + int handle(int e); +}; + +void My_Overlay_Window::draw() { + widget_draw_hook(this->user_data()); } -void overlay_window_set_handle_hook(OVERLAYWINDOW w, void * h) { - reinterpret_cast(w)->handle_hook = reinterpret_cast(h); +void My_Overlay_Window::draw_overlay() { + overlay_window_draw_overlay_hook(this->user_data()); } -int fl_overlay_window_handle(OVERLAYWINDOW w, int e) { - return reinterpret_cast(w)->real_handle(e); +int My_Overlay_Window::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + OVERLAYWINDOW new_fl_overlay_window(int x, int y, int w, int h, char *label) { My_Overlay_Window *ow = new My_Overlay_Window(x, y, w, h, label); return ow; @@ -96,6 +75,10 @@ int fl_overlay_window_can_do_overlay(OVERLAYWINDOW w) { return reinterpret_cast(w)->can_do_overlay(); } +void fl_overlay_window_resize(OVERLAYWINDOW ow, int x, int y, int w, int h) { + reinterpret_cast(ow)->resize(x, y, w, h); +} + @@ -118,4 +101,12 @@ void fl_overlay_window_redraw_overlay(OVERLAYWINDOW w) { reinterpret_cast(w)->redraw_overlay(); } +void fl_overlay_window_draw(OVERLAYWINDOW w) { + reinterpret_cast(w)->Fl_Overlay_Window::draw(); +} + +int fl_overlay_window_handle(OVERLAYWINDOW w, int e) { + return reinterpret_cast(w)->Fl_Overlay_Window::handle(e); +} + diff --git a/src/c_fl_overlay_window.h b/src/c_fl_overlay_window.h index 132487a..781f074 100644 --- a/src/c_fl_overlay_window.h +++ b/src/c_fl_overlay_window.h @@ -8,30 +8,16 @@ #define FL_OVERLAY_WINDOW_GUARD - - typedef void* OVERLAYWINDOW; - - -extern "C" void overlay_window_set_draw_hook(OVERLAYWINDOW w, void * d); -extern "C" void fl_overlay_window_draw(OVERLAYWINDOW w); -extern "C" void overlay_window_set_draw_overlay_hook(OVERLAYWINDOW w, void * d); -extern "C" void overlay_window_set_handle_hook(OVERLAYWINDOW w, void * h); -extern "C" int fl_overlay_window_handle(OVERLAYWINDOW w, int e); - - - - extern "C" OVERLAYWINDOW new_fl_overlay_window(int x, int y, int w, int h, char *label); extern "C" OVERLAYWINDOW new_fl_overlay_window2(int w, int h, char *label); extern "C" void free_fl_overlay_window(OVERLAYWINDOW w); - - extern "C" int fl_overlay_window_can_do_overlay(OVERLAYWINDOW w); +extern "C" void fl_overlay_window_resize(OVERLAYWINDOW ow, int x, int y, int w, int h); extern "C" void fl_overlay_window_show(OVERLAYWINDOW w); @@ -40,7 +26,10 @@ extern "C" void fl_overlay_window_flush(OVERLAYWINDOW w); extern "C" void fl_overlay_window_redraw_overlay(OVERLAYWINDOW w); +extern "C" void fl_overlay_window_draw(OVERLAYWINDOW w); +extern "C" int fl_overlay_window_handle(OVERLAYWINDOW w, int e); #endif + diff --git a/src/c_fl_pack.cpp b/src/c_fl_pack.cpp index e0a6e9d..2e83b3f 100644 --- a/src/c_fl_pack.cpp +++ b/src/c_fl_pack.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_pack.h" -#include "c_fl_type.h" -class My_Pack : public Fl_Pack { - public: - using Fl_Pack::Fl_Pack; - friend void pack_set_draw_hook(PACK n, void * d); - friend void fl_pack_draw(PACK n); - friend void pack_set_handle_hook(PACK n, void * h); - friend int fl_pack_handle(PACK n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Pack::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Pack::real_draw() { - Fl_Pack::draw(); -} -int My_Pack::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Pack::real_handle(int e) { - return Fl_Pack::handle(e); -} -void pack_set_draw_hook(PACK n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_pack_draw(PACK n) { - reinterpret_cast(n)->real_draw(); -} +class My_Pack : public Fl_Pack { +public: + using Fl_Pack::Fl_Pack; + + friend void fl_pack_draw(PACK n); + friend int fl_pack_handle(PACK n, int e); + + void draw(); + int handle(int e); +}; -void pack_set_handle_hook(PACK n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +void My_Pack::draw() { + widget_draw_hook(this->user_data()); } -int fl_pack_handle(PACK n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Pack::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + PACK new_fl_pack(int x, int y, int w, int h, char* label) { My_Pack *b = new My_Pack(x, y, w, h, label); return b; @@ -83,3 +65,14 @@ void fl_pack_set_spacing(PACK p, int t) { } + + +void fl_pack_draw(PACK n) { + reinterpret_cast(n)->Fl_Pack::draw(); +} + +int fl_pack_handle(PACK n, int e) { + return reinterpret_cast(n)->Fl_Pack::handle(e); +} + + diff --git a/src/c_fl_pack.h b/src/c_fl_pack.h index b424415..a8bfe75 100644 --- a/src/c_fl_pack.h +++ b/src/c_fl_pack.h @@ -8,30 +8,21 @@ #define FL_PACK_GUARD - - typedef void* PACK; - - -extern "C" void pack_set_draw_hook(PACK n, void * d); -extern "C" void fl_pack_draw(PACK n); -extern "C" void pack_set_handle_hook(PACK n, void * h); -extern "C" int fl_pack_handle(PACK n, int e); - - - - extern "C" PACK new_fl_pack(int x, int y, int w, int h, char * label); extern "C" void free_fl_pack(PACK p); - - extern "C" int fl_pack_get_spacing(PACK p); extern "C" void fl_pack_set_spacing(PACK p, int t); +extern "C" void fl_pack_draw(PACK n); +extern "C" int fl_pack_handle(PACK n, int e); + + #endif + diff --git a/src/c_fl_progress.cpp b/src/c_fl_progress.cpp index 2e49643..9c18300 100644 --- a/src/c_fl_progress.cpp +++ b/src/c_fl_progress.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_progress.h" -#include "c_fl_type.h" -class My_Progress : public Fl_Progress { - public: - using Fl_Progress::Fl_Progress; - friend void progress_set_draw_hook(PROGRESS p, void * d); - friend void fl_progress_draw(PROGRESS p); - friend void progress_set_handle_hook(PROGRESS p, void * h); - friend int fl_progress_handle(PROGRESS p, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Progress::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Progress::real_draw() { - Fl_Progress::draw(); -} -int My_Progress::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Progress::real_handle(int e) { - return Fl_Progress::handle(e); -} -void progress_set_draw_hook(PROGRESS p, void * d) { - reinterpret_cast(p)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_progress_draw(PROGRESS p) { - reinterpret_cast(p)->real_draw(); -} +class My_Progress : public Fl_Progress { +public: + using Fl_Progress::Fl_Progress; + + friend void fl_progress_draw(PROGRESS p); + friend int fl_progress_handle(PROGRESS p, int e); + + void draw(); + int handle(int e); +}; -void progress_set_handle_hook(PROGRESS p, void * h) { - reinterpret_cast(p)->handle_hook = reinterpret_cast(h); +void My_Progress::draw() { + widget_draw_hook(this->user_data()); } -int fl_progress_handle(PROGRESS p, int e) { - return reinterpret_cast(p)->real_handle(e); +int My_Progress::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + PROGRESS new_fl_progress(int x, int y, int w, int h, char* label) { My_Progress *p = new My_Progress(x, y, w, h, label); return p; @@ -98,3 +80,15 @@ void fl_progress_set_value(PROGRESS p, float t) { reinterpret_cast(p)->value(t); } + + + +void fl_progress_draw(PROGRESS p) { + reinterpret_cast(p)->Fl_Progress::draw(); +} + +int fl_progress_handle(PROGRESS p, int e) { + return reinterpret_cast(p)->Fl_Progress::handle(e); +} + + diff --git a/src/c_fl_progress.h b/src/c_fl_progress.h index d701806..d75e136 100644 --- a/src/c_fl_progress.h +++ b/src/c_fl_progress.h @@ -8,27 +8,13 @@ #define FL_PROGRESS_GUARD - - typedef void* PROGRESS; - - -extern "C" void progress_set_draw_hook(PROGRESS p, void * d); -extern "C" void fl_progress_draw(PROGRESS p); -extern "C" void progress_set_handle_hook(PROGRESS p, void * h); -extern "C" int fl_progress_handle(PROGRESS p, int e); - - - - extern "C" PROGRESS new_fl_progress(int x, int y, int w, int h, char* label); extern "C" void free_fl_progress(PROGRESS p); - - extern "C" float fl_progress_get_minimum(PROGRESS p); extern "C" void fl_progress_set_minimum(PROGRESS p, float t); extern "C" float fl_progress_get_maximum(PROGRESS p); @@ -37,5 +23,10 @@ extern "C" float fl_progress_get_value(PROGRESS p); extern "C" void fl_progress_set_value(PROGRESS p, float t); +extern "C" void fl_progress_draw(PROGRESS p); +extern "C" int fl_progress_handle(PROGRESS p, int e); + + #endif + diff --git a/src/c_fl_radio_button.cpp b/src/c_fl_radio_button.cpp index d30173e..1813f0d 100644 --- a/src/c_fl_radio_button.cpp +++ b/src/c_fl_radio_button.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_radio_button.h" -#include "c_fl_type.h" -class My_Radio_Button : public Fl_Radio_Button { - public: - using Fl_Radio_Button::Fl_Radio_Button; - friend void radio_button_set_draw_hook(RADIOBUTTON b, void * d); - friend void fl_radio_button_draw(RADIOBUTTON b); - friend void radio_button_set_handle_hook(RADIOBUTTON b, void * h); - friend int fl_radio_button_handle(RADIOBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Radio_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Radio_Button::real_draw() { - Fl_Radio_Button::draw(); -} -int My_Radio_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Radio_Button::real_handle(int e) { - return Fl_Radio_Button::handle(e); -} -void radio_button_set_draw_hook(RADIOBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_radio_button_draw(RADIOBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Radio_Button : public Fl_Radio_Button { +public: + using Fl_Radio_Button::Fl_Radio_Button; + + friend void fl_radio_button_draw(RADIOBUTTON b); + friend int fl_radio_button_handle(RADIOBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void radio_button_set_handle_hook(RADIOBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Radio_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_radio_button_handle(RADIOBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Radio_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + RADIOBUTTON new_fl_radio_button(int x, int y, int w, int h, char* label) { My_Radio_Button *b = new My_Radio_Button(x, y, w, h, label); return b; @@ -71,3 +53,15 @@ void free_fl_radio_button(RADIOBUTTON b) { delete reinterpret_cast(b); } + + + +void fl_radio_button_draw(RADIOBUTTON b) { + reinterpret_cast(b)->Fl_Radio_Button::draw(); +} + +int fl_radio_button_handle(RADIOBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Radio_Button::handle(e); +} + + diff --git a/src/c_fl_radio_button.h b/src/c_fl_radio_button.h index e01e8e2..53bdd57 100644 --- a/src/c_fl_radio_button.h +++ b/src/c_fl_radio_button.h @@ -8,24 +8,17 @@ #define FL_RADIO_BUTTON_GUARD - - typedef void* RADIOBUTTON; +extern "C" RADIOBUTTON new_fl_radio_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_radio_button(RADIOBUTTON b); -extern "C" void radio_button_set_draw_hook(RADIOBUTTON b, void * d); extern "C" void fl_radio_button_draw(RADIOBUTTON b); -extern "C" void radio_button_set_handle_hook(RADIOBUTTON b, void * h); extern "C" int fl_radio_button_handle(RADIOBUTTON b, int e); - - -extern "C" RADIOBUTTON new_fl_radio_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_radio_button(RADIOBUTTON b); - - #endif + diff --git a/src/c_fl_radio_light_button.cpp b/src/c_fl_radio_light_button.cpp index 79ec835..c0a1d90 100644 --- a/src/c_fl_radio_light_button.cpp +++ b/src/c_fl_radio_light_button.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_radio_light_button.h" -#include "c_fl_type.h" -class My_Radio_Light_Button : public Fl_Radio_Light_Button { - public: - using Fl_Radio_Light_Button::Fl_Radio_Light_Button; - friend void radio_light_button_set_draw_hook(RADIOLIGHTBUTTON b, void * d); - friend void fl_radio_light_button_draw(RADIOLIGHTBUTTON b); - friend void radio_light_button_set_handle_hook(RADIOLIGHTBUTTON b, void * h); - friend int fl_radio_light_button_handle(RADIOLIGHTBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Radio_Light_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Radio_Light_Button::real_draw() { - Fl_Radio_Light_Button::draw(); -} -int My_Radio_Light_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Radio_Light_Button::real_handle(int e) { - return Fl_Radio_Light_Button::handle(e); -} -void radio_light_button_set_draw_hook(RADIOLIGHTBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_radio_light_button_draw(RADIOLIGHTBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Radio_Light_Button : public Fl_Radio_Light_Button { +public: + using Fl_Radio_Light_Button::Fl_Radio_Light_Button; + + friend void fl_radio_light_button_draw(RADIOLIGHTBUTTON b); + friend int fl_radio_light_button_handle(RADIOLIGHTBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void radio_light_button_set_handle_hook(RADIOLIGHTBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Radio_Light_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_radio_light_button_handle(RADIOLIGHTBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Radio_Light_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + RADIOLIGHTBUTTON new_fl_radio_light_button(int x, int y, int w, int h, char* label) { My_Radio_Light_Button *b = new My_Radio_Light_Button(x, y, w, h, label); return b; @@ -71,3 +53,15 @@ void free_fl_radio_light_button(RADIOLIGHTBUTTON b) { delete reinterpret_cast(b); } + + + +void fl_radio_light_button_draw(RADIOLIGHTBUTTON b) { + reinterpret_cast(b)->Fl_Radio_Light_Button::draw(); +} + +int fl_radio_light_button_handle(RADIOLIGHTBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Radio_Light_Button::handle(e); +} + + diff --git a/src/c_fl_radio_light_button.h b/src/c_fl_radio_light_button.h index 52d5eab..217bd69 100644 --- a/src/c_fl_radio_light_button.h +++ b/src/c_fl_radio_light_button.h @@ -8,24 +8,17 @@ #define FL_RADIO_LIGHT_BUTTON_GUARD - - typedef void* RADIOLIGHTBUTTON; +extern "C" RADIOLIGHTBUTTON new_fl_radio_light_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_radio_light_button(RADIOLIGHTBUTTON b); -extern "C" void radio_light_button_set_draw_hook(RADIOLIGHTBUTTON b, void * d); extern "C" void fl_radio_light_button_draw(RADIOLIGHTBUTTON b); -extern "C" void radio_light_button_set_handle_hook(RADIOLIGHTBUTTON b, void * h); extern "C" int fl_radio_light_button_handle(RADIOLIGHTBUTTON b, int e); - - -extern "C" RADIOLIGHTBUTTON new_fl_radio_light_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_radio_light_button(RADIOLIGHTBUTTON b); - - #endif + diff --git a/src/c_fl_radio_round_button.cpp b/src/c_fl_radio_round_button.cpp index 006bfd5..5ddaa1f 100644 --- a/src/c_fl_radio_round_button.cpp +++ b/src/c_fl_radio_round_button.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_radio_round_button.h" -#include "c_fl_type.h" -class My_Radio_Round_Button : public Fl_Radio_Round_Button { - public: - using Fl_Radio_Round_Button::Fl_Radio_Round_Button; - friend void radio_round_button_set_draw_hook(RADIOROUNDBUTTON b, void * d); - friend void fl_radio_round_button_draw(RADIOROUNDBUTTON b); - friend void radio_round_button_set_handle_hook(RADIOROUNDBUTTON b, void * h); - friend int fl_radio_round_button_handle(RADIOROUNDBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Radio_Round_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Radio_Round_Button::real_draw() { - Fl_Radio_Round_Button::draw(); -} -int My_Radio_Round_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Radio_Round_Button::real_handle(int e) { - return Fl_Radio_Round_Button::handle(e); -} -void radio_round_button_set_draw_hook(RADIOROUNDBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_radio_round_button_draw(RADIOROUNDBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Radio_Round_Button : public Fl_Radio_Round_Button { +public: + using Fl_Radio_Round_Button::Fl_Radio_Round_Button; + + friend void fl_radio_round_button_draw(RADIOROUNDBUTTON b); + friend int fl_radio_round_button_handle(RADIOROUNDBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void radio_round_button_set_handle_hook(RADIOROUNDBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Radio_Round_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_radio_round_button_handle(RADIOROUNDBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Radio_Round_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + RADIOROUNDBUTTON new_fl_radio_round_button(int x, int y, int w, int h, char* label) { My_Radio_Round_Button *b = new My_Radio_Round_Button(x, y, w, h, label); return b; @@ -71,3 +53,16 @@ void free_fl_radio_round_button(RADIOROUNDBUTTON b) { delete reinterpret_cast(b); } + + + + +void fl_radio_round_button_draw(RADIOROUNDBUTTON b) { + reinterpret_cast(b)->Fl_Radio_Round_Button::draw(); +} + +int fl_radio_round_button_handle(RADIOROUNDBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Radio_Round_Button::handle(e); +} + + diff --git a/src/c_fl_radio_round_button.h b/src/c_fl_radio_round_button.h index 73f0ad7..bea7076 100644 --- a/src/c_fl_radio_round_button.h +++ b/src/c_fl_radio_round_button.h @@ -8,24 +8,17 @@ #define FL_RADIO_ROUND_BUTTON_GUARD - - typedef void* RADIOROUNDBUTTON; +extern "C" RADIOROUNDBUTTON new_fl_radio_round_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_radio_round_button(RADIOROUNDBUTTON b); -extern "C" void radio_round_button_set_draw_hook(RADIOROUNDBUTTON b, void * d); extern "C" void fl_radio_round_button_draw(RADIOROUNDBUTTON b); -extern "C" void radio_round_button_set_handle_hook(RADIOROUNDBUTTON b, void * h); extern "C" int fl_radio_round_button_handle(RADIOROUNDBUTTON b, int e); - - -extern "C" RADIOROUNDBUTTON new_fl_radio_round_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_radio_round_button(RADIOROUNDBUTTON b); - - #endif + diff --git a/src/c_fl_repeat_button.cpp b/src/c_fl_repeat_button.cpp index fbbbf35..7f05235 100644 --- a/src/c_fl_repeat_button.cpp +++ b/src/c_fl_repeat_button.cpp @@ -6,68 +6,69 @@ #include #include "c_fl_repeat_button.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Repeat_Button : public Fl_Repeat_Button { - public: - using Fl_Repeat_Button::Fl_Repeat_Button; - friend void repeat_button_set_draw_hook(REPEATBUTTON b, void * d); - friend void fl_repeat_button_draw(REPEATBUTTON b); - friend void repeat_button_set_handle_hook(REPEATBUTTON b, void * h); - friend int fl_repeat_button_handle(REPEATBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Repeat_Button::Fl_Repeat_Button; + + friend void fl_repeat_button_draw(REPEATBUTTON b); + friend int fl_repeat_button_handle(REPEATBUTTON b, int e); + + void draw(); + int handle(int e); }; void My_Repeat_Button::draw() { - (*draw_hook)(this->user_data()); -} - -void My_Repeat_Button::real_draw() { - Fl_Repeat_Button::draw(); + widget_draw_hook(this->user_data()); } int My_Repeat_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Repeat_Button::real_handle(int e) { - return Fl_Repeat_Button::handle(e); -} -void repeat_button_set_draw_hook(REPEATBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} -void fl_repeat_button_draw(REPEATBUTTON b) { - reinterpret_cast(b)->real_draw(); + +// Flattened C API + +REPEATBUTTON new_fl_repeat_button(int x, int y, int w, int h, char* label) { + My_Repeat_Button *b = new My_Repeat_Button(x, y, w, h, label); + return b; } -void repeat_button_set_handle_hook(REPEATBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void free_fl_repeat_button(REPEATBUTTON b) { + delete reinterpret_cast(b); } -int fl_repeat_button_handle(REPEATBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); + + + +void fl_repeat_button_deactivate(REPEATBUTTON b) { + reinterpret_cast(b)->deactivate(); } -REPEATBUTTON new_fl_repeat_button(int x, int y, int w, int h, char* label) { - My_Repeat_Button *b = new My_Repeat_Button(x, y, w, h, label); - return b; +void fl_repeat_button_draw(REPEATBUTTON b) { + reinterpret_cast(b)->Fl_Repeat_Button::draw(); } -void free_fl_repeat_button(REPEATBUTTON b) { - delete reinterpret_cast(b); +int fl_repeat_button_handle(REPEATBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Repeat_Button::handle(e); } + diff --git a/src/c_fl_repeat_button.h b/src/c_fl_repeat_button.h index fb88e86..5750a60 100644 --- a/src/c_fl_repeat_button.h +++ b/src/c_fl_repeat_button.h @@ -8,24 +8,20 @@ #define FL_REPEAT_BUTTON_GUARD +typedef void* REPEATBUTTON; -typedef void* REPEATBUTTON; +extern "C" REPEATBUTTON new_fl_repeat_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_repeat_button(REPEATBUTTON b); +extern "C" void fl_repeat_button_deactivate(REPEATBUTTON b); -extern "C" void repeat_button_set_draw_hook(REPEATBUTTON b, void * d); extern "C" void fl_repeat_button_draw(REPEATBUTTON b); -extern "C" void repeat_button_set_handle_hook(REPEATBUTTON b, void * h); extern "C" int fl_repeat_button_handle(REPEATBUTTON b, int e); - - -extern "C" REPEATBUTTON new_fl_repeat_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_repeat_button(REPEATBUTTON b); - - #endif + diff --git a/src/c_fl_return_button.cpp b/src/c_fl_return_button.cpp index 85e937d..022685c 100644 --- a/src/c_fl_return_button.cpp +++ b/src/c_fl_return_button.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_return_button.h" -#include "c_fl_type.h" -class My_Return_Button : public Fl_Return_Button { - public: - using Fl_Return_Button::Fl_Return_Button; - friend void return_button_set_draw_hook(RETURNBUTTON b, void * d); - friend void fl_return_button_draw(RETURNBUTTON b); - friend void return_button_set_handle_hook(RETURNBUTTON b, void * h); - friend int fl_return_button_handle(RETURNBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Return_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Return_Button::real_draw() { - Fl_Return_Button::draw(); -} -int My_Return_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Return_Button::real_handle(int e) { - return Fl_Return_Button::handle(e); -} -void return_button_set_draw_hook(RETURNBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_return_button_draw(RETURNBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Return_Button : public Fl_Return_Button { +public: + using Fl_Return_Button::Fl_Return_Button; + + friend void fl_return_button_draw(RETURNBUTTON b); + friend int fl_return_button_handle(RETURNBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void return_button_set_handle_hook(RETURNBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Return_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_return_button_handle(RETURNBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Return_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + RETURNBUTTON new_fl_return_button(int x, int y, int w, int h, char* label) { My_Return_Button *b = new My_Return_Button(x, y, w, h, label); return b; @@ -71,3 +53,15 @@ void free_fl_return_button(RETURNBUTTON b) { delete reinterpret_cast(b); } + + + +void fl_return_button_draw(RETURNBUTTON b) { + reinterpret_cast(b)->Fl_Return_Button::draw(); +} + +int fl_return_button_handle(RETURNBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Return_Button::handle(e); +} + + diff --git a/src/c_fl_return_button.h b/src/c_fl_return_button.h index 2c0c52a..c9f4d62 100644 --- a/src/c_fl_return_button.h +++ b/src/c_fl_return_button.h @@ -8,24 +8,17 @@ #define FL_RETURN_BUTTON_GUARD - - typedef void* RETURNBUTTON; +extern "C" RETURNBUTTON new_fl_return_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_return_button(RETURNBUTTON b); -extern "C" void return_button_set_draw_hook(RETURNBUTTON b, void * d); extern "C" void fl_return_button_draw(RETURNBUTTON b); -extern "C" void return_button_set_handle_hook(RETURNBUTTON b, void * h); extern "C" int fl_return_button_handle(RETURNBUTTON b, int e); - - -extern "C" RETURNBUTTON new_fl_return_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_return_button(RETURNBUTTON b); - - #endif + diff --git a/src/c_fl_roller.cpp b/src/c_fl_roller.cpp index 6a4ebb6..f5c7dd6 100644 --- a/src/c_fl_roller.cpp +++ b/src/c_fl_roller.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_roller.h" -#include "c_fl_type.h" -class My_Roller : public Fl_Roller { - public: - using Fl_Roller::Fl_Roller; - friend void roller_set_draw_hook(ROLLER r, void * d); - friend void fl_roller_draw(ROLLER r); - friend void roller_set_handle_hook(ROLLER r, void * h); - friend int fl_roller_handle(ROLLER r, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Roller::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Roller::real_draw() { - Fl_Roller::draw(); -} -int My_Roller::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Roller::real_handle(int e) { - return Fl_Roller::handle(e); -} -void roller_set_draw_hook(ROLLER r, void * d) { - reinterpret_cast(r)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_roller_draw(ROLLER r) { - reinterpret_cast(r)->real_draw(); -} +class My_Roller : public Fl_Roller { +public: + using Fl_Roller::Fl_Roller; + + friend void fl_roller_draw(ROLLER r); + friend int fl_roller_handle(ROLLER r, int e); + + void draw(); + int handle(int e); +}; -void roller_set_handle_hook(ROLLER r, void * h) { - reinterpret_cast(r)->handle_hook = reinterpret_cast(h); +void My_Roller::draw() { + widget_draw_hook(this->user_data()); } -int fl_roller_handle(ROLLER r, int e) { - return reinterpret_cast(r)->real_handle(e); +int My_Roller::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + ROLLER new_fl_roller(int x, int y, int w, int h, char* label) { My_Roller *r = new My_Roller(x, y, w, h, label); return r; @@ -72,3 +54,14 @@ void free_fl_roller(ROLLER r) { } + + +void fl_roller_draw(ROLLER r) { + reinterpret_cast(r)->Fl_Roller::draw(); +} + +int fl_roller_handle(ROLLER r, int e) { + return reinterpret_cast(r)->Fl_Roller::handle(e); +} + + diff --git a/src/c_fl_roller.h b/src/c_fl_roller.h index b0aa432..a864d71 100644 --- a/src/c_fl_roller.h +++ b/src/c_fl_roller.h @@ -8,24 +8,17 @@ #define FL_ROLLER_GUARD - - typedef void* ROLLER; +extern "C" ROLLER new_fl_roller(int x, int y, int w, int h, char* label); +extern "C" void free_fl_roller(ROLLER r); -extern "C" void roller_set_draw_hook(ROLLER r, void * d); extern "C" void fl_roller_draw(ROLLER r); -extern "C" void roller_set_handle_hook(ROLLER r, void * h); extern "C" int fl_roller_handle(ROLLER r, int e); - - -extern "C" ROLLER new_fl_roller(int x, int y, int w, int h, char* label); -extern "C" void free_fl_roller(ROLLER r); - - #endif + diff --git a/src/c_fl_round_button.cpp b/src/c_fl_round_button.cpp index 41507cf..b7c2d12 100644 --- a/src/c_fl_round_button.cpp +++ b/src/c_fl_round_button.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_round_button.h" -#include "c_fl_type.h" -class My_Round_Button : public Fl_Round_Button { - public: - using Fl_Round_Button::Fl_Round_Button; - friend void round_button_set_draw_hook(ROUNDBUTTON b, void * d); - friend void fl_round_button_draw(ROUNDBUTTON b); - friend void round_button_set_handle_hook(ROUNDBUTTON b, void * h); - friend int fl_round_button_handle(ROUNDBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Round_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Round_Button::real_draw() { - Fl_Round_Button::draw(); -} -int My_Round_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Round_Button::real_handle(int e) { - return Fl_Round_Button::handle(e); -} -void round_button_set_draw_hook(ROUNDBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_round_button_draw(ROUNDBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Round_Button : public Fl_Round_Button { +public: + using Fl_Round_Button::Fl_Round_Button; + + friend void fl_round_button_draw(ROUNDBUTTON b); + friend int fl_round_button_handle(ROUNDBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void round_button_set_handle_hook(ROUNDBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Round_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_round_button_handle(ROUNDBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Round_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + ROUNDBUTTON new_fl_round_button(int x, int y, int w, int h, char* label) { My_Round_Button *b = new My_Round_Button(x, y, w, h, label); return b; @@ -71,3 +53,15 @@ void free_fl_round_button(ROUNDBUTTON b) { delete reinterpret_cast(b); } + + + +void fl_round_button_draw(ROUNDBUTTON b) { + reinterpret_cast(b)->Fl_Round_Button::draw(); +} + +int fl_round_button_handle(ROUNDBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Round_Button::handle(e); +} + + diff --git a/src/c_fl_round_button.h b/src/c_fl_round_button.h index 1b37140..cbbaf9f 100644 --- a/src/c_fl_round_button.h +++ b/src/c_fl_round_button.h @@ -8,24 +8,17 @@ #define FL_ROUND_BUTTON_GUARD - - typedef void* ROUNDBUTTON; +extern "C" ROUNDBUTTON new_fl_round_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_round_button(ROUNDBUTTON b); -extern "C" void round_button_set_draw_hook(ROUNDBUTTON b, void * d); extern "C" void fl_round_button_draw(ROUNDBUTTON b); -extern "C" void round_button_set_handle_hook(ROUNDBUTTON b, void * h); extern "C" int fl_round_button_handle(ROUNDBUTTON b, int e); - - -extern "C" ROUNDBUTTON new_fl_round_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_round_button(ROUNDBUTTON b); - - #endif + diff --git a/src/c_fl_round_clock.cpp b/src/c_fl_round_clock.cpp index 1ce55e7..d2ab087 100644 --- a/src/c_fl_round_clock.cpp +++ b/src/c_fl_round_clock.cpp @@ -6,77 +6,62 @@ #include #include "c_fl_round_clock.h" -#include "c_fl_type.h" -class My_Round_Clock : public Fl_Round_Clock { - public: - using Fl_Round_Clock::Fl_Round_Clock; - friend void round_clock_set_draw_hook(ROUND_CLOCK c, void * d); - friend void fl_round_clock_draw(ROUND_CLOCK c); - friend void round_clock_set_handle_hook(ROUND_CLOCK c, void * h); - friend int fl_round_clock_handle(ROUND_CLOCK c, int e); - friend void fl_round_clock_draw2(ROUND_CLOCK c, int x, int y, int w, int h); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Round_Clock::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Round_Clock::real_draw() { - Fl_Round_Clock::draw(); -} -int My_Round_Clock::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Round_Clock::real_handle(int e) { - return Fl_Round_Clock::handle(e); -} -void round_clock_set_draw_hook(ROUND_CLOCK c, void * d) { - reinterpret_cast(c)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_round_clock_draw(ROUND_CLOCK c) { - reinterpret_cast(c)->real_draw(); -} +class My_Round_Clock : public Fl_Round_Clock { +public: + using Fl_Round_Clock::Fl_Round_Clock; + + friend void fl_round_clock_draw(ROUNDCLOCK c); + friend int fl_round_clock_handle(ROUNDCLOCK c, int e); -void round_clock_set_handle_hook(ROUND_CLOCK c, void * h) { - reinterpret_cast(c)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Round_Clock::draw() { + widget_draw_hook(this->user_data()); } -int fl_round_clock_handle(ROUND_CLOCK c, int e) { - return reinterpret_cast(c)->real_handle(e); +int My_Round_Clock::handle(int e) { + return widget_handle_hook(this->user_data(), e); } -ROUND_CLOCK new_fl_round_clock(int x, int y, int w, int h, char* label) { +// Flattened C API + +ROUNDCLOCK new_fl_round_clock(int x, int y, int w, int h, char* label) { My_Round_Clock *c = new My_Round_Clock(x, y, w, h, label); return c; } -void free_fl_round_clock(ROUND_CLOCK c) { +void free_fl_round_clock(ROUNDCLOCK c) { delete reinterpret_cast(c); } -void fl_round_clock_draw2(ROUND_CLOCK c, int x, int y, int w, int h) { - reinterpret_cast(c)->Fl_Round_Clock::draw(x,y,w,h); +void fl_round_clock_draw(ROUNDCLOCK c) { + reinterpret_cast(c)->Fl_Round_Clock::draw(); +} + +int fl_round_clock_handle(ROUNDCLOCK c, int e) { + return reinterpret_cast(c)->Fl_Round_Clock::handle(e); } diff --git a/src/c_fl_round_clock.h b/src/c_fl_round_clock.h index 60684ad..475a5d0 100644 --- a/src/c_fl_round_clock.h +++ b/src/c_fl_round_clock.h @@ -8,29 +8,17 @@ #define FL_ROUND_CLOCK_GUARD +typedef void* ROUNDCLOCK; -typedef void* ROUND_CLOCK; +extern "C" ROUNDCLOCK new_fl_round_clock(int x, int y, int w, int h, char* label); +extern "C" void free_fl_round_clock(ROUNDCLOCK c); - - -extern "C" void round_clock_set_draw_hook(ROUND_CLOCK c, void * d); -extern "C" void fl_round_clock_draw(ROUND_CLOCK c); -extern "C" void round_clock_set_handle_hook(ROUND_CLOCK c, void * h); -extern "C" int fl_round_clock_handle(ROUND_CLOCK c, int e); - - - - -extern "C" ROUND_CLOCK new_fl_round_clock(int x, int y, int w, int h, char* label); -extern "C" void free_fl_round_clock(ROUND_CLOCK c); - - - - -extern "C" void fl_round_clock_draw2(ROUND_CLOCK c, int x, int y, int w, int h); +extern "C" void fl_round_clock_draw(ROUNDCLOCK c); +extern "C" int fl_round_clock_handle(ROUNDCLOCK c, int e); #endif + diff --git a/src/c_fl_scroll.cpp b/src/c_fl_scroll.cpp index 9c1eabf..ab63827 100644 --- a/src/c_fl_scroll.cpp +++ b/src/c_fl_scroll.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_scroll.h" -#include "c_fl_type.h" -class My_Scroll : public Fl_Scroll { - public: - using Fl_Scroll::Fl_Scroll; - friend void scroll_set_draw_hook(SCROLL s, void * d); - friend void fl_scroll_draw(SCROLL s); - friend void scroll_set_handle_hook(SCROLL s, void * h); - friend int fl_scroll_handle(SCROLL s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Scroll::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Scroll::real_draw() { - Fl_Scroll::draw(); -} -int My_Scroll::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Scroll::real_handle(int e) { - return Fl_Scroll::handle(e); -} -void scroll_set_draw_hook(SCROLL s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_scroll_draw(SCROLL s) { - reinterpret_cast(s)->real_draw(); -} +class My_Scroll : public Fl_Scroll { +public: + using Fl_Scroll::Fl_Scroll; + + friend void fl_scroll_draw(SCROLL s); + friend int fl_scroll_handle(SCROLL s, int e); + + void draw(); + int handle(int e); +}; -void scroll_set_handle_hook(SCROLL s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +void My_Scroll::draw() { + widget_draw_hook(this->user_data()); } -int fl_scroll_handle(SCROLL s, int e) { - return reinterpret_cast(s)->real_handle(e); +int My_Scroll::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + SCROLL new_fl_scroll(int x, int y, int w, int h, char* label) { My_Scroll *s = new My_Scroll(x, y, w, h, label); return s; @@ -108,3 +90,15 @@ int fl_scroll_yposition(SCROLL s) { return reinterpret_cast(s)->yposition(); } + + + +void fl_scroll_draw(SCROLL s) { + reinterpret_cast(s)->Fl_Scroll::draw(); +} + +int fl_scroll_handle(SCROLL s, int e) { + return reinterpret_cast(s)->Fl_Scroll::handle(e); +} + + diff --git a/src/c_fl_scroll.h b/src/c_fl_scroll.h index a4ca175..9bbd749 100644 --- a/src/c_fl_scroll.h +++ b/src/c_fl_scroll.h @@ -8,27 +8,13 @@ #define FL_SCROLL_GUARD - - typedef void* SCROLL; - - -extern "C" void scroll_set_draw_hook(SCROLL s, void * d); -extern "C" void fl_scroll_draw(SCROLL s); -extern "C" void scroll_set_handle_hook(SCROLL s, void * h); -extern "C" int fl_scroll_handle(SCROLL s, int e); - - - - extern "C" SCROLL new_fl_scroll(int x, int y, int w, int h, char* label); extern "C" void free_fl_scroll(SCROLL s); - - extern "C" void fl_scroll_clear(SCROLL s); @@ -42,5 +28,10 @@ extern "C" int fl_scroll_xposition(SCROLL s); extern "C" int fl_scroll_yposition(SCROLL s); +extern "C" void fl_scroll_draw(SCROLL s); +extern "C" int fl_scroll_handle(SCROLL s, int e); + + #endif + diff --git a/src/c_fl_scrollbar.cpp b/src/c_fl_scrollbar.cpp index 848d83f..ae20a25 100644 --- a/src/c_fl_scrollbar.cpp +++ b/src/c_fl_scrollbar.cpp @@ -6,7 +6,6 @@ #include #include "c_fl_scrollbar.h" -#include "c_fl_type.h" @@ -26,57 +25,40 @@ void fl_scrollbar_extra_final(void * adaobj) { -class My_Scrollbar : public Fl_Scrollbar { - public: - using Fl_Scrollbar::Fl_Scrollbar; - friend void scrollbar_set_draw_hook(SCROLLBAR s, void * d); - friend void fl_scrollbar_draw(SCROLLBAR s); - friend void scrollbar_set_handle_hook(SCROLLBAR s, void * h); - friend int fl_scrollbar_handle(SCROLLBAR s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Scrollbar::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Scrollbar::real_draw() { - Fl_Scrollbar::draw(); -} -int My_Scrollbar::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Scrollbar::real_handle(int e) { - return Fl_Scrollbar::handle(e); -} -void scrollbar_set_draw_hook(SCROLLBAR s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_scrollbar_draw(SCROLLBAR s) { - reinterpret_cast(s)->real_draw(); -} +class My_Scrollbar : public Fl_Scrollbar { +public: + using Fl_Scrollbar::Fl_Scrollbar; + + friend void fl_scrollbar_draw(SCROLLBAR s); + friend int fl_scrollbar_handle(SCROLLBAR s, int e); + + void draw(); + int handle(int e); +}; -void scrollbar_set_handle_hook(SCROLLBAR s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); +void My_Scrollbar::draw() { + widget_draw_hook(this->user_data()); } -int fl_scrollbar_handle(SCROLLBAR s, int e) { - return reinterpret_cast(s)->real_handle(e); +int My_Scrollbar::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + SCROLLBAR new_fl_scrollbar(int x, int y, int w, int h, char* label) { My_Scrollbar *s = new My_Scrollbar(x, y, w, h, label); return s; @@ -109,3 +91,15 @@ void fl_scrollbar_set_value2(SCROLLBAR s, int p, int w, int f, int t) { reinterpret_cast(s)->value(p,w,f,t); } + + + +void fl_scrollbar_draw(SCROLLBAR s) { + reinterpret_cast(s)->Fl_Scrollbar::draw(); +} + +int fl_scrollbar_handle(SCROLLBAR s, int e) { + return reinterpret_cast(s)->Fl_Scrollbar::handle(e); +} + + diff --git a/src/c_fl_scrollbar.h b/src/c_fl_scrollbar.h index 6f82143..870f256 100644 --- a/src/c_fl_scrollbar.h +++ b/src/c_fl_scrollbar.h @@ -16,12 +16,6 @@ extern "C" void fl_scrollbar_extra_final(void * adaobj); typedef void* SCROLLBAR; -extern "C" void scrollbar_set_draw_hook(SCROLLBAR s, void * d); -extern "C" void fl_scrollbar_draw(SCROLLBAR s); -extern "C" void scrollbar_set_handle_hook(SCROLLBAR s, void * h); -extern "C" int fl_scrollbar_handle(SCROLLBAR s, int e); - - extern "C" SCROLLBAR new_fl_scrollbar(int x, int y, int w, int h, char* label); extern "C" void free_fl_scrollbar(SCROLLBAR s); @@ -33,6 +27,10 @@ extern "C" void fl_scrollbar_set_value(SCROLLBAR s, int t); extern "C" void fl_scrollbar_set_value2(SCROLLBAR s, int p, int w, int f, int t); +extern "C" void fl_scrollbar_draw(SCROLLBAR s); +extern "C" int fl_scrollbar_handle(SCROLLBAR s, int e); + + #endif diff --git a/src/c_fl_simple_counter.cpp b/src/c_fl_simple_counter.cpp index 6349f09..891a371 100644 --- a/src/c_fl_simple_counter.cpp +++ b/src/c_fl_simple_counter.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_simple_counter.h" -#include "c_fl_type.h" -class My_Simple_Counter : public Fl_Simple_Counter { - public: - using Fl_Simple_Counter::Fl_Simple_Counter; - friend void simple_counter_set_draw_hook(SIMPLE_COUNTER c, void * d); - friend void fl_simple_counter_draw(SIMPLE_COUNTER c); - friend void simple_counter_set_handle_hook(SIMPLE_COUNTER c, void * h); - friend int fl_simple_counter_handle(SIMPLE_COUNTER c, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Simple_Counter::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Simple_Counter::real_draw() { - Fl_Simple_Counter::draw(); -} -int My_Simple_Counter::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Simple_Counter::real_handle(int e) { - return Fl_Simple_Counter::handle(e); -} -void simple_counter_set_draw_hook(SIMPLE_COUNTER c, void * d) { - reinterpret_cast(c)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_simple_counter_draw(SIMPLE_COUNTER c) { - reinterpret_cast(c)->real_draw(); -} +class My_Simple_Counter : public Fl_Simple_Counter { +public: + using Fl_Simple_Counter::Fl_Simple_Counter; + + friend void fl_simple_counter_draw(SIMPLE_COUNTER c); + friend int fl_simple_counter_handle(SIMPLE_COUNTER c, int e); + + void draw(); + int handle(int e); +}; -void simple_counter_set_handle_hook(SIMPLE_COUNTER c, void * h) { - reinterpret_cast(c)->handle_hook = reinterpret_cast(h); +void My_Simple_Counter::draw() { + widget_draw_hook(this->user_data()); } -int fl_simple_counter_handle(SIMPLE_COUNTER c, int e) { - return reinterpret_cast(c)->real_handle(e); +int My_Simple_Counter::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + SIMPLE_COUNTER new_fl_simple_counter(int x, int y, int w, int h, char* label) { My_Simple_Counter *c = new My_Simple_Counter(x, y, w, h, label); return c; @@ -72,3 +54,14 @@ void free_fl_simple_counter(SIMPLE_COUNTER c) { } + + +void fl_simple_counter_draw(SIMPLE_COUNTER c) { + reinterpret_cast(c)->Fl_Simple_Counter::draw(); +} + +int fl_simple_counter_handle(SIMPLE_COUNTER c, int e) { + return reinterpret_cast(c)->Fl_Simple_Counter::handle(e); +} + + diff --git a/src/c_fl_simple_counter.h b/src/c_fl_simple_counter.h index 9451ddd..6c45a89 100644 --- a/src/c_fl_simple_counter.h +++ b/src/c_fl_simple_counter.h @@ -8,24 +8,17 @@ #define FL_SIMPLE_COUNTER_GUARD - - typedef void* SIMPLE_COUNTER; +extern "C" SIMPLE_COUNTER new_fl_simple_counter(int x, int y, int w, int h, char* label); +extern "C" void free_fl_simple_counter(SIMPLE_COUNTER c); -extern "C" void simple_counter_set_draw_hook(SIMPLE_COUNTER c, void * d); extern "C" void fl_simple_counter_draw(SIMPLE_COUNTER c); -extern "C" void simple_counter_set_handle_hook(SIMPLE_COUNTER c, void * h); extern "C" int fl_simple_counter_handle(SIMPLE_COUNTER c, int e); - - -extern "C" SIMPLE_COUNTER new_fl_simple_counter(int x, int y, int w, int h, char* label); -extern "C" void free_fl_simple_counter(SIMPLE_COUNTER c); - - #endif + diff --git a/src/c_fl_single_window.cpp b/src/c_fl_single_window.cpp index 0eb6d1c..4968e46 100644 --- a/src/c_fl_single_window.cpp +++ b/src/c_fl_single_window.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_single_window.h" -#include "c_fl_type.h" -class My_Single_Window : public Fl_Single_Window { - public: - using Fl_Single_Window::Fl_Single_Window; - friend void single_window_set_draw_hook(SINGLEWINDOW n, void * d); - friend void fl_single_window_draw(SINGLEWINDOW n); - friend void single_window_set_handle_hook(SINGLEWINDOW n, void * h); - friend int fl_single_window_handle(SINGLEWINDOW n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Single_Window::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Single_Window::real_draw() { - Fl_Single_Window::draw(); -} -int My_Single_Window::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Single_Window::real_handle(int e) { - return Fl_Single_Window::handle(e); -} -void single_window_set_draw_hook(SINGLEWINDOW n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_single_window_draw(SINGLEWINDOW n) { - reinterpret_cast(n)->real_draw(); -} +class My_Single_Window : public Fl_Single_Window { +public: + using Fl_Single_Window::Fl_Single_Window; + + friend void fl_single_window_draw(SINGLEWINDOW n); + friend int fl_single_window_handle(SINGLEWINDOW n, int e); -void single_window_set_handle_hook(SINGLEWINDOW n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Single_Window::draw() { + widget_draw_hook(this->user_data()); } -int fl_single_window_handle(SINGLEWINDOW n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Single_Window::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + SINGLEWINDOW new_fl_single_window(int x, int y, int w, int h, char* label) { My_Single_Window *sw = new My_Single_Window(x, y, w, h, label); return sw; @@ -87,3 +69,22 @@ void fl_single_window_flush(SINGLEWINDOW w) { reinterpret_cast(w)->flush(); } + + + +void fl_single_window_make_current(SINGLEWINDOW w) { + reinterpret_cast(w)->Fl_Window::make_current(); +} + + + + +void fl_single_window_draw(SINGLEWINDOW n) { + reinterpret_cast(n)->Fl_Single_Window::draw(); +} + +int fl_single_window_handle(SINGLEWINDOW n, int e) { + return reinterpret_cast(n)->Fl_Single_Window::handle(e); +} + + diff --git a/src/c_fl_single_window.h b/src/c_fl_single_window.h index 873498b..3179f5a 100644 --- a/src/c_fl_single_window.h +++ b/src/c_fl_single_window.h @@ -8,31 +8,25 @@ #define FL_SINGLE_WINDOW_GUARD - - typedef void* SINGLEWINDOW; - - -extern "C" void single_window_set_draw_hook(SINGLEWINDOW n, void * d); -extern "C" void fl_single_window_draw(SINGLEWINDOW n); -extern "C" void single_window_set_handle_hook(SINGLEWINDOW n, void * h); -extern "C" int fl_single_window_handle(SINGLEWINDOW n, int e); - - - - extern "C" SINGLEWINDOW new_fl_single_window(int x, int y, int w, int h, char* label); extern "C" SINGLEWINDOW new_fl_single_window2(int x, int y, char* label); extern "C" void free_fl_single_window(SINGLEWINDOW w); - - extern "C" void fl_single_window_show(SINGLEWINDOW w); extern "C" void fl_single_window_flush(SINGLEWINDOW w); +extern "C" void fl_single_window_make_current(SINGLEWINDOW w); + + +extern "C" void fl_single_window_draw(SINGLEWINDOW n); +extern "C" int fl_single_window_handle(SINGLEWINDOW n, int e); + + #endif + diff --git a/src/c_fl_slider.cpp b/src/c_fl_slider.cpp index dc55c90..fcdd32d 100644 --- a/src/c_fl_slider.cpp +++ b/src/c_fl_slider.cpp @@ -6,80 +6,68 @@ #include #include "c_fl_slider.h" -#include "c_fl_type.h" -class My_Slider : public Fl_Slider { - public: - using Fl_Slider::Fl_Slider; - friend void slider_set_draw_hook(SLIDER s, void * d); - friend void fl_slider_draw(SLIDER s); - friend void slider_set_handle_hook(SLIDER s, void * h); - friend int fl_slider_handle(SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Non-friend protected access + +class Friend_Slider : Fl_Slider { +public: + // Really only needed for the (int,int,int,int) versions + using Fl_Slider::draw; + using Fl_Slider::handle; }; -void My_Slider::draw() { - (*draw_hook)(this->user_data()); -} -void My_Slider::real_draw() { - Fl_Slider::draw(); -} -int My_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Slider::real_handle(int e) { - return Fl_Slider::handle(e); -} +// Attaching all relevant hooks and friends -void slider_set_draw_hook(SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} +class My_Slider : public Fl_Slider { +public: + using Fl_Slider::Fl_Slider; -void fl_slider_draw(SLIDER s) { - reinterpret_cast(s)->real_draw(); -} + friend void fl_slider_draw(SLIDER s); + friend int fl_slider_handle(SLIDER s, int e); -void slider_set_handle_hook(SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Slider::draw() { + widget_draw_hook(this->user_data()); } -int fl_slider_handle(SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +int My_Slider::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + SLIDER new_fl_slider(int x, int y, int w, int h, char* label) { My_Slider *s = new My_Slider(x, y, w, h, label); return s; } -void free_fl_slider(SLIDER s) { - delete reinterpret_cast(s); -} - - - - -int fl_slider_get_type(SLIDER s) { - return reinterpret_cast(s)->type(); +SLIDER new_fl_slider2(unsigned char k, int x, int y, int w, int h, char * label) { + My_Slider *s = new My_Slider(k, x, y, w, h, label); + return s; } -void fl_slider_set_type(SLIDER s, int t) { - reinterpret_cast(s)->type(t); +void free_fl_slider(SLIDER s) { + delete reinterpret_cast(s); } @@ -101,7 +89,7 @@ float fl_slider_get_slider_size(SLIDER s) { return reinterpret_cast(s)->slider_size(); } -void fl_slider_set_slider_size(SLIDER s, float t) { +void fl_slider_set_slider_size(SLIDER s, double t) { reinterpret_cast(s)->slider_size(t); } @@ -110,3 +98,24 @@ int fl_slider_scrollvalue(SLIDER s, int p, int z, int f, int t) { } + + +void fl_slider_draw(SLIDER s) { + reinterpret_cast(s)->Fl_Slider::draw(); +} + +void fl_slider_draw2(SLIDER s, int x, int y, int w, int h) { + void (Fl_Slider::*mydraw)(int,int,int,int) = &Friend_Slider::draw; + (reinterpret_cast(s)->*mydraw)(x, y, w, h); +} + +int fl_slider_handle(SLIDER s, int e) { + return reinterpret_cast(s)->Fl_Slider::handle(e); +} + +int fl_slider_handle2(SLIDER s, int e, int x, int y, int w, int h) { + int (Fl_Slider::*myhandle)(int,int,int,int,int) = &Friend_Slider::handle; + return (reinterpret_cast(s)->*myhandle)(e, x, y, w, h); +} + + diff --git a/src/c_fl_slider.h b/src/c_fl_slider.h index d00f9af..63c6ac3 100644 --- a/src/c_fl_slider.h +++ b/src/c_fl_slider.h @@ -8,38 +8,28 @@ #define FL_SLIDER_GUARD - - typedef void* SLIDER; - - -extern "C" void slider_set_draw_hook(SLIDER s, void * d); -extern "C" void fl_slider_draw(SLIDER s); -extern "C" void slider_set_handle_hook(SLIDER s, void * h); -extern "C" int fl_slider_handle(SLIDER s, int e); - - - - extern "C" SLIDER new_fl_slider(int x, int y, int w, int h, char* label); +extern "C" SLIDER new_fl_slider2(unsigned char k, int x, int y, int w, int h, char * label); extern "C" void free_fl_slider(SLIDER s); - - -extern "C" int fl_slider_get_type(SLIDER s); -extern "C" void fl_slider_set_type(SLIDER s, int t); - - extern "C" void fl_slider_set_bounds(SLIDER s, double a, double b); extern "C" int fl_slider_get_slider(SLIDER s); extern "C" void fl_slider_set_slider(SLIDER s, int t); extern "C" float fl_slider_get_slider_size(SLIDER s); -extern "C" void fl_slider_set_slider_size(SLIDER s, float t); +extern "C" void fl_slider_set_slider_size(SLIDER s, double t); extern "C" int fl_slider_scrollvalue(SLIDER s, int p, int z, int f, int t); +extern "C" void fl_slider_draw(SLIDER s); +extern "C" void fl_slider_draw2(SLIDER s, int x, int y, int w, int h); +extern "C" int fl_slider_handle(SLIDER s, int e); +extern "C" int fl_slider_handle2(SLIDER s, int e, int x, int y, int w, int h); + + #endif + diff --git a/src/c_fl_spinner.cpp b/src/c_fl_spinner.cpp index 1556ddc..a09ed17 100644 --- a/src/c_fl_spinner.cpp +++ b/src/c_fl_spinner.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_spinner.h" -#include "c_fl_type.h" -class My_Spinner : public Fl_Spinner { - public: - using Fl_Spinner::Fl_Spinner; - friend void spinner_set_draw_hook(SPINNER n, void * d); - friend void fl_spinner_draw(SPINNER n); - friend void spinner_set_handle_hook(SPINNER n, void * h); - friend int fl_spinner_handle(SPINNER n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Spinner::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Spinner::real_draw() { - Fl_Spinner::draw(); -} -int My_Spinner::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Spinner::real_handle(int e) { - return Fl_Spinner::handle(e); -} -void spinner_set_draw_hook(SPINNER n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all hooks and friends -void fl_spinner_draw(SPINNER n) { - reinterpret_cast(n)->real_draw(); -} +class My_Spinner : public Fl_Spinner { +public: + using Fl_Spinner::Fl_Spinner; + + friend void fl_spinner_draw(SPINNER n); + friend int fl_spinner_handle(SPINNER n, int e); -void spinner_set_handle_hook(SPINNER n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Spinner::draw() { + widget_draw_hook(this->user_data()); } -int fl_spinner_handle(SPINNER n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Spinner::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + SPINNER new_fl_spinner(int x, int y, int w, int h, char* label) { My_Spinner *n = new My_Spinner(x, y, w, h, label); return n; @@ -161,3 +143,22 @@ void fl_spinner_set_value(SPINNER n, double t) { reinterpret_cast(n)->value(t); } + + + +void fl_spinner_resize(SPINNER n, int x, int y, int w, int h) { + reinterpret_cast(n)->resize(x, y, w, h); +} + + + + +void fl_spinner_draw(SPINNER n) { + reinterpret_cast(n)->Fl_Spinner::draw(); +} + +int fl_spinner_handle(SPINNER n, int e) { + return reinterpret_cast(n)->Fl_Spinner::handle(e); +} + + diff --git a/src/c_fl_spinner.h b/src/c_fl_spinner.h index 3fce53c..2c5e97d 100644 --- a/src/c_fl_spinner.h +++ b/src/c_fl_spinner.h @@ -8,27 +8,13 @@ #define FL_SPINNER_GUARD - - typedef void* SPINNER; - - -extern "C" void spinner_set_draw_hook(SPINNER n, void * d); -extern "C" void fl_spinner_draw(SPINNER n); -extern "C" void spinner_set_handle_hook(SPINNER n, void * h); -extern "C" int fl_spinner_handle(SPINNER n, int e); - - - - extern "C" SPINNER new_fl_spinner(int x, int y, int w, int h, char* label); extern "C" void free_fl_spinner(SPINNER n); - - extern "C" unsigned int fl_spinner_get_color(SPINNER n); extern "C" void fl_spinner_set_color(SPINNER n, unsigned int t); extern "C" unsigned int fl_spinner_get_selection_color(SPINNER n); @@ -54,5 +40,13 @@ extern "C" double fl_spinner_get_value(SPINNER n); extern "C" void fl_spinner_set_value(SPINNER n, double t); +extern "C" void fl_spinner_resize(SPINNER n, int x, int y, int w, int h); + + +extern "C" void fl_spinner_draw(SPINNER n); +extern "C" int fl_spinner_handle(SPINNER n, int e); + + #endif + diff --git a/src/c_fl_tabs.cpp b/src/c_fl_tabs.cpp index 2973502..a3e8581 100644 --- a/src/c_fl_tabs.cpp +++ b/src/c_fl_tabs.cpp @@ -6,62 +6,54 @@ #include #include "c_fl_tabs.h" -#include "c_fl_type.h" -class My_Tabs : public Fl_Tabs { - public: - using Fl_Tabs::Fl_Tabs; - friend void tabs_set_draw_hook(TABS t, void * d); - friend void fl_tabs_draw(TABS t); - friend void tabs_set_handle_hook(TABS t, void * h); - friend int fl_tabs_handle(TABS t, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Non-friend protected access + +class Friend_Tabs : Fl_Tabs { +public: + using Fl_Tabs::redraw_tabs; }; -void My_Tabs::draw() { - (*draw_hook)(this->user_data()); -} -void My_Tabs::real_draw() { - Fl_Tabs::draw(); -} -int My_Tabs::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Tabs::real_handle(int e) { - return Fl_Tabs::handle(e); -} +// Attaching all relevant hooks and friends -void tabs_set_draw_hook(TABS t, void * d) { - reinterpret_cast(t)->draw_hook = reinterpret_cast(d); -} +class My_Tabs : public Fl_Tabs { +public: + using Fl_Tabs::Fl_Tabs; -void fl_tabs_draw(TABS t) { - reinterpret_cast(t)->real_draw(); -} + friend void fl_tabs_draw(TABS t); + friend int fl_tabs_handle(TABS t, int e); -void tabs_set_handle_hook(TABS t, void * h) { - reinterpret_cast(t)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Tabs::draw() { + widget_draw_hook(this->user_data()); } -int fl_tabs_handle(TABS t, int e) { - return reinterpret_cast(t)->real_handle(e); +int My_Tabs::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + TABS new_fl_tabs(int x, int y, int w, int h, char* label) { My_Tabs *t = new My_Tabs(x, y, w, h, label); return t; @@ -101,3 +93,19 @@ void * fl_tabs_which(TABS t, int x, int y) { return reinterpret_cast(t)->which(x,y); } + + + +void fl_tabs_draw(TABS t) { + reinterpret_cast(t)->Fl_Tabs::draw(); +} + +void fl_tabs_redraw_tabs(TABS t) { + (reinterpret_cast(t)->*(&Friend_Tabs::redraw_tabs))(); +} + +int fl_tabs_handle(TABS t, int e) { + return reinterpret_cast(t)->Fl_Tabs::handle(e); +} + + diff --git a/src/c_fl_tabs.h b/src/c_fl_tabs.h index 0b205c7..3226b2d 100644 --- a/src/c_fl_tabs.h +++ b/src/c_fl_tabs.h @@ -8,27 +8,13 @@ #define FL_TABS_GUARD - - typedef void* TABS; - - -extern "C" void tabs_set_draw_hook(TABS t, void * d); -extern "C" void fl_tabs_draw(TABS t); -extern "C" void tabs_set_handle_hook(TABS t, void * h); -extern "C" int fl_tabs_handle(TABS t, int e); - - - - extern "C" TABS new_fl_tabs(int x, int y, int w, int h, char* label); extern "C" void free_fl_tabs(TABS t); - - extern "C" void fl_tabs_client_area(TABS t, int * x, int * y, int * w, int * h, int i); @@ -39,5 +25,11 @@ extern "C" void fl_tabs_set_value(TABS t, void * w); extern "C" void * fl_tabs_which(TABS t, int x, int y); +extern "C" void fl_tabs_draw(TABS t); +extern "C" void fl_tabs_redraw_tabs(TABS t); +extern "C" int fl_tabs_handle(TABS t, int e); + + #endif + diff --git a/src/c_fl_text_display.cpp b/src/c_fl_text_display.cpp index 5b507e9..7323049 100644 --- a/src/c_fl_text_display.cpp +++ b/src/c_fl_text_display.cpp @@ -8,62 +8,44 @@ #include #include "c_fl_text_display.h" #include "c_fl_text_buffer.h" -#include "c_fl_type.h" -class My_Text_Display : public Fl_Text_Display { - public: - using Fl_Text_Display::Fl_Text_Display; - friend void text_display_set_draw_hook(TEXTDISPLAY td, void * d); - friend void fl_text_display_draw(TEXTDISPLAY td); - friend void text_display_set_handle_hook(TEXTDISPLAY td, void * h); - friend int fl_text_display_handle(TEXTDISPLAY td, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Text_Display::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Text_Display::real_draw() { - Fl_Text_Display::draw(); -} -int My_Text_Display::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Text_Display::real_handle(int e) { - return Fl_Text_Display::handle(e); -} -void text_display_set_draw_hook(TEXTDISPLAY td, void * d) { - reinterpret_cast(td)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_text_display_draw(TEXTDISPLAY td) { - reinterpret_cast(td)->real_draw(); -} +class My_Text_Display : public Fl_Text_Display { +public: + using Fl_Text_Display::Fl_Text_Display; + + friend void fl_text_display_draw(TEXTDISPLAY td); + friend int fl_text_display_handle(TEXTDISPLAY td, int e); + + void draw(); + int handle(int e); +}; -void text_display_set_handle_hook(TEXTDISPLAY td, void * h) { - reinterpret_cast(td)->handle_hook = reinterpret_cast(h); +void My_Text_Display::draw() { + widget_draw_hook(this->user_data()); } -int fl_text_display_handle(TEXTDISPLAY td, int e) { - return reinterpret_cast(td)->real_handle(e); +int My_Text_Display::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + TEXTDISPLAY new_fl_text_display(int x, int y, int w, int h, char* label) { My_Text_Display *td = new My_Text_Display(x, y, w, h, label); return td; @@ -91,13 +73,18 @@ void fl_text_display_set_buffer(TEXTDISPLAY td, TEXTBUFFER tb) { void fl_text_display_highlight_data(TEXTDISPLAY td, TEXTBUFFER tb, void * st, int len) { reinterpret_cast(td)->highlight_data - (reinterpret_cast(tb), reinterpret_cast(st), len, 0, 0, 0); + (reinterpret_cast(tb), + reinterpret_cast(st), + len, 0, 0, 0); } -void fl_text_display_highlight_data2(TEXTDISPLAY td, TEXTBUFFER tb, void * st, int len, char us, void * cb, void * a) { +void fl_text_display_highlight_data2(TEXTDISPLAY td, TEXTBUFFER tb, void * st, int len, + char us, void * cb, void * a) +{ reinterpret_cast(td)->highlight_data - (reinterpret_cast(tb), reinterpret_cast(st), len, - us, reinterpret_cast(cb), a); + (reinterpret_cast(tb), + reinterpret_cast(st), + len, us, reinterpret_cast(cb), a); } @@ -339,3 +326,14 @@ void fl_text_display_redisplay_range(TEXTDISPLAY td, int s, int f) { } + + +void fl_text_display_draw(TEXTDISPLAY td) { + reinterpret_cast(td)->Fl_Text_Display::draw(); +} + +int fl_text_display_handle(TEXTDISPLAY td, int e) { + return reinterpret_cast(td)->Fl_Text_Display::handle(e); +} + + diff --git a/src/c_fl_text_display.h b/src/c_fl_text_display.h index ceb7f64..ece9a6a 100644 --- a/src/c_fl_text_display.h +++ b/src/c_fl_text_display.h @@ -10,33 +10,20 @@ #include "c_fl_text_buffer.h" - - typedef void* TEXTDISPLAY; - - -extern "C" void text_display_set_draw_hook(TEXTDISPLAY td, void * d); -extern "C" void fl_text_display_draw(TEXTDISPLAY td); -extern "C" void text_display_set_handle_hook(TEXTDISPLAY td, void * h); -extern "C" int fl_text_display_handle(TEXTDISPLAY td, int e); - - - - extern "C" TEXTDISPLAY new_fl_text_display(int x, int y, int w, int h, char* label); extern "C" void free_fl_text_display(TEXTDISPLAY td); - - extern "C" TEXTBUFFER fl_text_display_get_buffer(TEXTDISPLAY td); extern "C" void fl_text_display_set_buffer(TEXTDISPLAY td, TEXTBUFFER tb); extern "C" void fl_text_display_highlight_data(TEXTDISPLAY td, TEXTBUFFER tb, void * st, int len); -extern "C" void fl_text_display_highlight_data2(TEXTDISPLAY td, TEXTBUFFER tb, void * st, int len, char us, void * cb, void * a); +extern "C" void fl_text_display_highlight_data2(TEXTDISPLAY td, TEXTBUFFER tb, void * st, int len, + char us, void * cb, void * a); extern "C" double fl_text_display_col_to_x(TEXTDISPLAY td, double c); @@ -111,5 +98,10 @@ extern "C" void fl_text_display_set_scrollbar_width(TEXTDISPLAY td, int w); extern "C" void fl_text_display_redisplay_range(TEXTDISPLAY td, int s, int f); +extern "C" void fl_text_display_draw(TEXTDISPLAY td); +extern "C" int fl_text_display_handle(TEXTDISPLAY td, int e); + + #endif + diff --git a/src/c_fl_text_editor.cpp b/src/c_fl_text_editor.cpp index 41729bd..8c33afa 100644 --- a/src/c_fl_text_editor.cpp +++ b/src/c_fl_text_editor.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_text_editor.h" -#include "c_fl_type.h" -class My_Text_Editor : public Fl_Text_Editor { - public: - using Fl_Text_Editor::Fl_Text_Editor; - friend void text_editor_set_draw_hook(TEXTEDITOR te, void * d); - friend void fl_text_editor_draw(TEXTEDITOR te); - friend void text_editor_set_handle_hook(TEXTEDITOR te, void * h); - friend int fl_text_editor_handle(TEXTEDITOR te, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Text_Editor::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Text_Editor::real_draw() { - Fl_Text_Editor::draw(); -} -int My_Text_Editor::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Text_Editor::real_handle(int e) { - return Fl_Text_Editor::handle(e); -} -void text_editor_set_draw_hook(TEXTEDITOR te, void * d) { - reinterpret_cast(te)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_text_editor_draw(TEXTEDITOR te) { - reinterpret_cast(te)->real_draw(); -} +class My_Text_Editor : public Fl_Text_Editor { +public: + using Fl_Text_Editor::Fl_Text_Editor; + + friend void fl_text_editor_draw(TEXTEDITOR te); + friend int fl_text_editor_handle(TEXTEDITOR te, int e); + + void draw(); + int handle(int e); +}; -void text_editor_set_handle_hook(TEXTEDITOR te, void * h) { - reinterpret_cast(te)->handle_hook = reinterpret_cast(h); +void My_Text_Editor::draw() { + widget_draw_hook(this->user_data()); } -int fl_text_editor_handle(TEXTEDITOR te, int e) { - return reinterpret_cast(te)->real_handle(e); +int My_Text_Editor::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + TEXTEDITOR new_fl_text_editor(int x, int y, int w, int h, char* label) { My_Text_Editor *te = new My_Text_Editor(x, y, w, h, label); return te; @@ -305,3 +287,15 @@ void fl_text_editor_set_insert_mode(TEXTEDITOR te, int i) { // reinterpret_cast(te)->tab_nav(t); //} + + + +void fl_text_editor_draw(TEXTEDITOR te) { + reinterpret_cast(te)->Fl_Text_Editor::draw(); +} + +int fl_text_editor_handle(TEXTEDITOR te, int e) { + return reinterpret_cast(te)->Fl_Text_Editor::handle(e); +} + + diff --git a/src/c_fl_text_editor.h b/src/c_fl_text_editor.h index 80bd4ff..305b04b 100644 --- a/src/c_fl_text_editor.h +++ b/src/c_fl_text_editor.h @@ -8,27 +8,13 @@ #define FL_TEXT_EDITOR_GUARD - - typedef void* TEXTEDITOR; - - -extern "C" void text_editor_set_draw_hook(TEXTEDITOR te, void * d); -extern "C" void fl_text_editor_draw(TEXTEDITOR te); -extern "C" void text_editor_set_handle_hook(TEXTEDITOR te, void * h); -extern "C" int fl_text_editor_handle(TEXTEDITOR te, int e); - - - - extern "C" TEXTEDITOR new_fl_text_editor(int x, int y, int w, int h, char* label); extern "C" void free_fl_text_editor(TEXTEDITOR te); - - extern "C" void fl_text_editor_default(TEXTEDITOR te, int k); @@ -100,5 +86,10 @@ extern "C" void fl_text_editor_set_insert_mode(TEXTEDITOR te, int i); //extern "C" void fl_text_editor_set_tab_nav(TEXTEDITOR te, int t); +extern "C" void fl_text_editor_draw(TEXTEDITOR te); +extern "C" int fl_text_editor_handle(TEXTEDITOR te, int e); + + #endif + diff --git a/src/c_fl_tile.cpp b/src/c_fl_tile.cpp index 3214502..2708d55 100644 --- a/src/c_fl_tile.cpp +++ b/src/c_fl_tile.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_tile.h" -#include "c_fl_type.h" -class My_Tile : public Fl_Tile { - public: - using Fl_Tile::Fl_Tile; - friend void tile_set_draw_hook(TILE n, void * d); - friend void fl_tile_draw(TILE n); - friend void tile_set_handle_hook(TILE n, void * h); - friend int fl_tile_handle(TILE n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Tile::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Tile::real_draw() { - Fl_Tile::draw(); -} -int My_Tile::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Tile::real_handle(int e) { - return Fl_Tile::handle(e); -} -void tile_set_draw_hook(TILE n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_tile_draw(TILE n) { - reinterpret_cast(n)->real_draw(); -} +class My_Tile : public Fl_Tile { +public: + using Fl_Tile::Fl_Tile; + + friend void fl_tile_draw(TILE n); + friend int fl_tile_handle(TILE n, int e); + + void draw(); + int handle(int e); +}; -void tile_set_handle_hook(TILE n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +void My_Tile::draw() { + widget_draw_hook(this->user_data()); } -int fl_tile_handle(TILE n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Tile::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + TILE new_fl_tile(int x, int y, int w, int h, char* label) { My_Tile *b = new My_Tile(x, y, w, h, label); return b; @@ -78,4 +60,19 @@ void fl_tile_position(TILE t, int ox, int oy, int nx, int ny) { reinterpret_cast(t)->position(ox,oy,nx,ny); } +void fl_tile_resize(TILE t, int x, int y, int w, int h) { + reinterpret_cast(t)->resize(x, y, w, h); +} + + + + +void fl_tile_draw(TILE n) { + reinterpret_cast(n)->Fl_Tile::draw(); +} + +int fl_tile_handle(TILE n, int e) { + return reinterpret_cast(n)->Fl_Tile::handle(e); +} + diff --git a/src/c_fl_tile.h b/src/c_fl_tile.h index 773375f..3254558 100644 --- a/src/c_fl_tile.h +++ b/src/c_fl_tile.h @@ -8,29 +8,21 @@ #define FL_TILE_GUARD - - typedef void* TILE; - - -extern "C" void tile_set_draw_hook(TILE n, void * d); -extern "C" void fl_tile_draw(TILE n); -extern "C" void tile_set_handle_hook(TILE n, void * h); -extern "C" int fl_tile_handle(TILE n, int e); - - - - extern "C" TILE new_fl_tile(int x, int y, int w, int h, char * label); extern "C" void free_fl_tile(TILE t); +extern "C" void fl_tile_position(TILE t, int ox, int oy, int nx, int ny); +extern "C" void fl_tile_resize(TILE t, int x, int y, int w, int h); -extern "C" void fl_tile_position(TILE t, int ox, int oy, int nx, int ny); +extern "C" void fl_tile_draw(TILE n); +extern "C" int fl_tile_handle(TILE n, int e); #endif + diff --git a/src/c_fl_toggle_button.cpp b/src/c_fl_toggle_button.cpp index a6195af..631fc21 100644 --- a/src/c_fl_toggle_button.cpp +++ b/src/c_fl_toggle_button.cpp @@ -6,62 +6,44 @@ #include #include "c_fl_toggle_button.h" -#include "c_fl_type.h" -class My_Toggle_Button : public Fl_Toggle_Button { - public: - using Fl_Toggle_Button::Fl_Toggle_Button; - friend void toggle_button_set_draw_hook(TOGGLEBUTTON b, void * d); - friend void fl_toggle_button_draw(TOGGLEBUTTON b); - friend void toggle_button_set_handle_hook(TOGGLEBUTTON b, void * h); - friend int fl_toggle_button_handle(TOGGLEBUTTON b, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Toggle_Button::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Toggle_Button::real_draw() { - Fl_Toggle_Button::draw(); -} -int My_Toggle_Button::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Toggle_Button::real_handle(int e) { - return Fl_Toggle_Button::handle(e); -} -void toggle_button_set_draw_hook(TOGGLEBUTTON b, void * d) { - reinterpret_cast(b)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_toggle_button_draw(TOGGLEBUTTON b) { - reinterpret_cast(b)->real_draw(); -} +class My_Toggle_Button : public Fl_Toggle_Button { +public: + using Fl_Toggle_Button::Fl_Toggle_Button; + + friend void fl_toggle_button_draw(TOGGLEBUTTON b); + friend int fl_toggle_button_handle(TOGGLEBUTTON b, int e); + + void draw(); + int handle(int e); +}; -void toggle_button_set_handle_hook(TOGGLEBUTTON b, void * h) { - reinterpret_cast(b)->handle_hook = reinterpret_cast(h); +void My_Toggle_Button::draw() { + widget_draw_hook(this->user_data()); } -int fl_toggle_button_handle(TOGGLEBUTTON b, int e) { - return reinterpret_cast(b)->real_handle(e); +int My_Toggle_Button::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + TOGGLEBUTTON new_fl_toggle_button(int x, int y, int w, int h, char* label) { My_Toggle_Button *b = new My_Toggle_Button(x, y, w, h, label); return b; @@ -71,3 +53,15 @@ void free_fl_toggle_button(TOGGLEBUTTON b) { delete reinterpret_cast(b); } + + + +void fl_toggle_button_draw(TOGGLEBUTTON b) { + reinterpret_cast(b)->Fl_Toggle_Button::draw(); +} + +int fl_toggle_button_handle(TOGGLEBUTTON b, int e) { + return reinterpret_cast(b)->Fl_Toggle_Button::handle(e); +} + + diff --git a/src/c_fl_toggle_button.h b/src/c_fl_toggle_button.h index a8a3379..bdb86b1 100644 --- a/src/c_fl_toggle_button.h +++ b/src/c_fl_toggle_button.h @@ -8,24 +8,17 @@ #define FL_TOGGLE_BUTTON_GUARD - - typedef void* TOGGLEBUTTON; +extern "C" TOGGLEBUTTON new_fl_toggle_button(int x, int y, int w, int h, char* label); +extern "C" void free_fl_toggle_button(TOGGLEBUTTON b); -extern "C" void toggle_button_set_draw_hook(TOGGLEBUTTON b, void * d); extern "C" void fl_toggle_button_draw(TOGGLEBUTTON b); -extern "C" void toggle_button_set_handle_hook(TOGGLEBUTTON b, void * h); extern "C" int fl_toggle_button_handle(TOGGLEBUTTON b, int e); - - -extern "C" TOGGLEBUTTON new_fl_toggle_button(int x, int y, int w, int h, char* label); -extern "C" void free_fl_toggle_button(TOGGLEBUTTON b); - - #endif + diff --git a/src/c_fl_type.h b/src/c_fl_type.h deleted file mode 100644 index 0d449c7..0000000 --- a/src/c_fl_type.h +++ /dev/null @@ -1,20 +0,0 @@ - - -// Programmed by Jedidiah Barber -// Released into the public domain - - -#ifndef FL_TYPE_GUARD -#define FL_TYPE_GUARD - - -typedef void (d_hook)(void*); -typedef d_hook* d_hook_p; - - -typedef int (h_hook)(void*,int); -typedef h_hook* h_hook_p; - - -#endif - diff --git a/src/c_fl_valuator.cpp b/src/c_fl_valuator.cpp index 3ee95c5..f70e6dd 100644 --- a/src/c_fl_valuator.cpp +++ b/src/c_fl_valuator.cpp @@ -6,53 +6,55 @@ #include #include "c_fl_valuator.h" -#include "c_fl_type.h" -class My_Valuator : public Fl_Valuator { - public: - using Fl_Valuator::Fl_Valuator; - friend void valuator_set_draw_hook(VALUATOR v, void * d); - friend void valuator_set_handle_hook(VALUATOR v, void * h); - friend int fl_valuator_handle(VALUATOR v, int e); - friend VALUATOR new_fl_valuator(int x, int y, int w, int h, char* label); - protected: - void draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Non-friend protected access + +class Friend_Valuator : Fl_Valuator { +public: + using Fl_Valuator::value_damage; }; -void My_Valuator::draw() { - (*draw_hook)(this->user_data()); -} -int My_Valuator::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Valuator::real_handle(int e) { - return Fl_Valuator::handle(e); -} -void valuator_set_draw_hook(VALUATOR v, void * d) { - reinterpret_cast(v)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends + +class My_Valuator : public Fl_Valuator { +public: + using Fl_Valuator::Fl_Valuator; + friend VALUATOR new_fl_valuator(int x, int y, int w, int h, char* label); -void valuator_set_handle_hook(VALUATOR v, void * h) { - reinterpret_cast(v)->handle_hook = reinterpret_cast(h); + friend void fl_valuator_draw(VALUATOR v); + friend int fl_valuator_handle(VALUATOR v, int e); + + void draw(); + int handle(int e); +}; + +void My_Valuator::draw() { + widget_draw_hook(this->user_data()); } -int fl_valuator_handle(VALUATOR v, int e) { - return reinterpret_cast(v)->real_handle(e); +int My_Valuator::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + VALUATOR new_fl_valuator(int x, int y, int w, int h, char* label) { My_Valuator *v = new My_Valuator(x, y, w, h, label); return v; @@ -100,10 +102,18 @@ double fl_valuator_get_step(VALUATOR v) { return reinterpret_cast(v)->step(); } -void fl_valuator_set_step(VALUATOR v, double t) { +void fl_valuator_set_step_top(VALUATOR v, double t) { reinterpret_cast(v)->step(t); } +void fl_valuator_set_step_bottom(VALUATOR v, int b) { + reinterpret_cast(v)->step(b); +} + +void fl_valuator_set_step(VALUATOR v, double t, int b) { + reinterpret_cast(v)->step(t, b); +} + double fl_valuator_get_value(VALUATOR v) { return reinterpret_cast(v)->value(); } @@ -124,3 +134,23 @@ void fl_valuator_range(VALUATOR v, double a, double b) { reinterpret_cast(v)->range(a,b); } + + + +void fl_valuator_value_damage(VALUATOR v) { + (reinterpret_cast(v)->*(&Friend_Valuator::value_damage))(); +} + +void fl_valuator_draw(VALUATOR v) { + // The Fl_Valuator draw method doesn't technically exist, so... + (void)(v); + // It is more convenient for this function to exist, however, + // even though it will likely never be called, because it simplifies + // and makes uniform the implementation of the Ada Valuator Draw subprogram. +} + +int fl_valuator_handle(VALUATOR v, int e) { + return reinterpret_cast(v)->Fl_Valuator::handle(e); +} + + diff --git a/src/c_fl_valuator.h b/src/c_fl_valuator.h index 7bbb831..e3c6959 100644 --- a/src/c_fl_valuator.h +++ b/src/c_fl_valuator.h @@ -8,39 +8,26 @@ #define FL_VALUATOR_GUARD - - typedef void* VALUATOR; - - -extern "C" void valuator_set_draw_hook(VALUATOR v, void * d); -extern "C" void valuator_set_handle_hook(VALUATOR v, void * h); -extern "C" int fl_valuator_handle(VALUATOR v, int e); - - - - extern "C" VALUATOR new_fl_valuator(int x, int y, int w, int h, char* label); extern "C" void free_fl_valuator(VALUATOR v); - - extern "C" double fl_valuator_clamp(VALUATOR v, double a); extern "C" double fl_valuator_round(VALUATOR v, double a); extern "C" double fl_valuator_increment(VALUATOR v, double a, int s); - - extern "C" double fl_valuator_get_minimum(VALUATOR v); extern "C" void fl_valuator_set_minimum(VALUATOR v, double t); extern "C" double fl_valuator_get_maximum(VALUATOR v); extern "C" void fl_valuator_set_maximum(VALUATOR v, double t); extern "C" double fl_valuator_get_step(VALUATOR v); -extern "C" void fl_valuator_set_step(VALUATOR v, double t); +extern "C" void fl_valuator_set_step_top(VALUATOR v, double t); +extern "C" void fl_valuator_set_step_bottom(VALUATOR v, int b); +extern "C" void fl_valuator_set_step(VALUATOR v, double t, int b); extern "C" double fl_valuator_get_value(VALUATOR v); extern "C" void fl_valuator_set_value(VALUATOR v, double t); extern "C" void fl_valuator_bounds(VALUATOR v, double a, double b); @@ -48,5 +35,11 @@ extern "C" void fl_valuator_precision(VALUATOR v, int s); extern "C" void fl_valuator_range(VALUATOR v, double a, double b); +extern "C" void fl_valuator_value_damage(VALUATOR v); +extern "C" void fl_valuator_draw(VALUATOR v); +extern "C" int fl_valuator_handle(VALUATOR v, int e); + + #endif + diff --git a/src/c_fl_value_input.cpp b/src/c_fl_value_input.cpp index c2910c2..37273a7 100644 --- a/src/c_fl_value_input.cpp +++ b/src/c_fl_value_input.cpp @@ -6,136 +6,136 @@ #include #include "c_fl_value_input.h" -#include "c_fl_type.h" -class My_Value_Input : public Fl_Value_Input { - public: - using Fl_Value_Input::Fl_Value_Input; - friend void value_input_set_draw_hook(VALUE_INPUT a, void * d); - friend void fl_value_input_draw(VALUE_INPUT a); - friend void value_input_set_handle_hook(VALUE_INPUT a, void * h); - friend int fl_value_input_handle(VALUE_INPUT a, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Value_Input::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Value_Input::real_draw() { - Fl_Value_Input::draw(); -} -int My_Value_Input::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Value_Input::real_handle(int e) { - return Fl_Value_Input::handle(e); -} -void value_input_set_draw_hook(VALUE_INPUT a, void * d) { - reinterpret_cast(a)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_value_input_draw(VALUE_INPUT a) { - reinterpret_cast(a)->real_draw(); -} +class My_Value_Input : public Fl_Value_Input { +public: + using Fl_Value_Input::Fl_Value_Input; + + friend void fl_value_input_draw(VALUEINPUT a); + friend int fl_value_input_handle(VALUEINPUT a, int e); -void value_input_set_handle_hook(VALUE_INPUT a, void * h) { - reinterpret_cast(a)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Value_Input::draw() { + widget_draw_hook(this->user_data()); } -int fl_value_input_handle(VALUE_INPUT a, int e) { - return reinterpret_cast(a)->real_handle(e); +int My_Value_Input::handle(int e) { + return widget_handle_hook(this->user_data(), e); } -VALUE_INPUT new_fl_value_input(int x, int y, int w, int h, char* label) { +// Flattened C API + +VALUEINPUT new_fl_value_input(int x, int y, int w, int h, char* label) { My_Value_Input *a = new My_Value_Input(x, y, w, h, label); return a; } -void free_fl_value_input(VALUE_INPUT a) { +void free_fl_value_input(VALUEINPUT a) { delete reinterpret_cast(a); } -void * fl_value_input_get_input(VALUE_INPUT v) { +void * fl_value_input_get_input(VALUEINPUT v) { return &(reinterpret_cast(v)->input); } -unsigned int fl_value_input_get_cursor_color(VALUE_INPUT v) { +unsigned int fl_value_input_get_cursor_color(VALUEINPUT v) { return reinterpret_cast(v)->cursor_color(); } -void fl_value_input_set_cursor_color(VALUE_INPUT v, unsigned int c) { +void fl_value_input_set_cursor_color(VALUEINPUT v, unsigned int c) { reinterpret_cast(v)->cursor_color(c); } -int fl_value_input_get_shortcut(VALUE_INPUT v) { +int fl_value_input_get_shortcut(VALUEINPUT v) { return reinterpret_cast(v)->Fl_Value_Input::shortcut(); } -void fl_value_input_set_shortcut(VALUE_INPUT v, int k) { +void fl_value_input_set_shortcut(VALUEINPUT v, int k) { reinterpret_cast(v)->Fl_Value_Input::shortcut(k); } -int fl_value_input_is_soft(VALUE_INPUT a) { +int fl_value_input_is_soft(VALUEINPUT a) { return reinterpret_cast(a)->soft(); } -void fl_value_input_set_soft(VALUE_INPUT a, int t) { +void fl_value_input_set_soft(VALUEINPUT a, int t) { reinterpret_cast(a)->soft(t); } -unsigned int fl_value_input_get_text_color(VALUE_INPUT v) { +unsigned int fl_value_input_get_text_color(VALUEINPUT v) { return reinterpret_cast(v)->textcolor(); } -void fl_value_input_set_text_color(VALUE_INPUT v, unsigned int c) { +void fl_value_input_set_text_color(VALUEINPUT v, unsigned int c) { reinterpret_cast(v)->textcolor(static_cast(c)); } -int fl_value_input_get_text_font(VALUE_INPUT v) { +int fl_value_input_get_text_font(VALUEINPUT v) { return reinterpret_cast(v)->textfont(); } -void fl_value_input_set_text_font(VALUE_INPUT v, int f) { +void fl_value_input_set_text_font(VALUEINPUT v, int f) { reinterpret_cast(v)->textfont(static_cast(f)); } -int fl_value_input_get_text_size(VALUE_INPUT v) { +int fl_value_input_get_text_size(VALUEINPUT v) { return reinterpret_cast(v)->textsize(); } -void fl_value_input_set_text_size(VALUE_INPUT v, int s) { +void fl_value_input_set_text_size(VALUEINPUT v, int s) { reinterpret_cast(v)->textsize(static_cast(s)); } + + +void fl_value_input_resize(VALUEINPUT v, int x, int y, int w, int h) { + reinterpret_cast(v)->resize(x, y, w, h); +} + + + + +void fl_value_input_draw(VALUEINPUT a) { + reinterpret_cast(a)->Fl_Value_Input::draw(); +} + +int fl_value_input_handle(VALUEINPUT a, int e) { + return reinterpret_cast(a)->Fl_Value_Input::handle(e); +} + + diff --git a/src/c_fl_value_input.h b/src/c_fl_value_input.h index 0111207..f9eeff2 100644 --- a/src/c_fl_value_input.h +++ b/src/c_fl_value_input.h @@ -8,49 +8,43 @@ #define FL_VALUE_INPUT_GUARD +typedef void* VALUEINPUT; -typedef void* VALUE_INPUT; +extern "C" VALUEINPUT new_fl_value_input(int x, int y, int w, int h, char* label); +extern "C" void free_fl_value_input(VALUEINPUT a); +extern "C" void * fl_value_input_get_input(VALUEINPUT v); -extern "C" void value_input_set_draw_hook(VALUE_INPUT a, void * d); -extern "C" void fl_value_input_draw(VALUE_INPUT a); -extern "C" void value_input_set_handle_hook(VALUE_INPUT a, void * h); -extern "C" int fl_value_input_handle(VALUE_INPUT a, int e); +extern "C" unsigned int fl_value_input_get_cursor_color(VALUEINPUT v); +extern "C" void fl_value_input_set_cursor_color(VALUEINPUT v, unsigned int c); +extern "C" int fl_value_input_get_shortcut(VALUEINPUT v); +extern "C" void fl_value_input_set_shortcut(VALUEINPUT v, int k); -extern "C" VALUE_INPUT new_fl_value_input(int x, int y, int w, int h, char* label); -extern "C" void free_fl_value_input(VALUE_INPUT a); +extern "C" int fl_value_input_is_soft(VALUEINPUT a); +extern "C" void fl_value_input_set_soft(VALUEINPUT a, int t); +extern "C" unsigned int fl_value_input_get_text_color(VALUEINPUT v); +extern "C" void fl_value_input_set_text_color(VALUEINPUT v, unsigned int c); +extern "C" int fl_value_input_get_text_font(VALUEINPUT v); +extern "C" void fl_value_input_set_text_font(VALUEINPUT v, int f); +extern "C" int fl_value_input_get_text_size(VALUEINPUT v); +extern "C" void fl_value_input_set_text_size(VALUEINPUT v, int s); -extern "C" void * fl_value_input_get_input(VALUE_INPUT v); +extern "C" void fl_value_input_resize(VALUEINPUT v, int x, int y, int w, int h); -extern "C" unsigned int fl_value_input_get_cursor_color(VALUE_INPUT v); -extern "C" void fl_value_input_set_cursor_color(VALUE_INPUT v, unsigned int c); - - -extern "C" int fl_value_input_get_shortcut(VALUE_INPUT v); -extern "C" void fl_value_input_set_shortcut(VALUE_INPUT v, int k); - - -extern "C" int fl_value_input_is_soft(VALUE_INPUT a); -extern "C" void fl_value_input_set_soft(VALUE_INPUT a, int t); - - -extern "C" unsigned int fl_value_input_get_text_color(VALUE_INPUT v); -extern "C" void fl_value_input_set_text_color(VALUE_INPUT v, unsigned int c); -extern "C" int fl_value_input_get_text_font(VALUE_INPUT v); -extern "C" void fl_value_input_set_text_font(VALUE_INPUT v, int f); -extern "C" int fl_value_input_get_text_size(VALUE_INPUT v); -extern "C" void fl_value_input_set_text_size(VALUE_INPUT v, int s); +extern "C" void fl_value_input_draw(VALUEINPUT a); +extern "C" int fl_value_input_handle(VALUEINPUT a, int e); #endif + diff --git a/src/c_fl_value_output.cpp b/src/c_fl_value_output.cpp index 3faa25f..b7cc1d6 100644 --- a/src/c_fl_value_output.cpp +++ b/src/c_fl_value_output.cpp @@ -6,107 +6,100 @@ #include #include "c_fl_value_output.h" -#include "c_fl_type.h" -class My_Value_Output : public Fl_Value_Output { - public: - using Fl_Value_Output::Fl_Value_Output; - friend void value_output_set_draw_hook(VALUE_OUTPUT a, void * d); - friend void fl_value_output_draw(VALUE_OUTPUT a); - friend void value_output_set_handle_hook(VALUE_OUTPUT a, void * h); - friend int fl_value_output_handle(VALUE_OUTPUT a, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Value_Output::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Value_Output::real_draw() { - Fl_Value_Output::draw(); -} -int My_Value_Output::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Value_Output::real_handle(int e) { - return Fl_Value_Output::handle(e); -} -void value_output_set_draw_hook(VALUE_OUTPUT a, void * d) { - reinterpret_cast(a)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_value_output_draw(VALUE_OUTPUT a) { - reinterpret_cast(a)->real_draw(); -} +class My_Value_Output : public Fl_Value_Output { +public: + using Fl_Value_Output::Fl_Value_Output; + + friend void fl_value_output_draw(VALUEOUTPUT a); + friend int fl_value_output_handle(VALUEOUTPUT a, int e); -void value_output_set_handle_hook(VALUE_OUTPUT a, void * h) { - reinterpret_cast(a)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Value_Output::draw() { + widget_draw_hook(this->user_data()); } -int fl_value_output_handle(VALUE_OUTPUT a, int e) { - return reinterpret_cast(a)->real_handle(e); +int My_Value_Output::handle(int e) { + return widget_handle_hook(this->user_data(), e); } -VALUE_OUTPUT new_fl_value_output(int x, int y, int w, int h, char* label) { +// Flattened C API + +VALUEOUTPUT new_fl_value_output(int x, int y, int w, int h, char* label) { My_Value_Output *a = new My_Value_Output(x, y, w, h, label); return a; } -void free_fl_value_output(VALUE_OUTPUT a) { +void free_fl_value_output(VALUEOUTPUT a) { delete reinterpret_cast(a); } -int fl_value_output_is_soft(VALUE_OUTPUT a) { +int fl_value_output_is_soft(VALUEOUTPUT a) { return reinterpret_cast(a)->soft(); } -void fl_value_output_set_soft(VALUE_OUTPUT a, int t) { +void fl_value_output_set_soft(VALUEOUTPUT a, int t) { reinterpret_cast(a)->soft(t); } -unsigned int fl_value_output_get_text_color(VALUE_OUTPUT v) { +unsigned int fl_value_output_get_text_color(VALUEOUTPUT v) { return reinterpret_cast(v)->textcolor(); } -void fl_value_output_set_text_color(VALUE_OUTPUT v, unsigned int c) { +void fl_value_output_set_text_color(VALUEOUTPUT v, unsigned int c) { reinterpret_cast(v)->textcolor(static_cast(c)); } -int fl_value_output_get_text_font(VALUE_OUTPUT v) { +int fl_value_output_get_text_font(VALUEOUTPUT v) { return reinterpret_cast(v)->textfont(); } -void fl_value_output_set_text_font(VALUE_OUTPUT v, int f) { +void fl_value_output_set_text_font(VALUEOUTPUT v, int f) { reinterpret_cast(v)->textfont(static_cast(f)); } -int fl_value_output_get_text_size(VALUE_OUTPUT v) { +int fl_value_output_get_text_size(VALUEOUTPUT v) { return reinterpret_cast(v)->textsize(); } -void fl_value_output_set_text_size(VALUE_OUTPUT v, int s) { +void fl_value_output_set_text_size(VALUEOUTPUT v, int s) { reinterpret_cast(v)->textsize(static_cast(s)); } + + +void fl_value_output_draw(VALUEOUTPUT a) { + reinterpret_cast(a)->Fl_Value_Output::draw(); +} + +int fl_value_output_handle(VALUEOUTPUT a, int e) { + return reinterpret_cast(a)->Fl_Value_Output::handle(e); +} + + diff --git a/src/c_fl_value_output.h b/src/c_fl_value_output.h index f835674..e333ff8 100644 --- a/src/c_fl_value_output.h +++ b/src/c_fl_value_output.h @@ -8,38 +8,29 @@ #define FL_VALUE_OUTPUT_GUARD +typedef void* VALUEOUTPUT; -typedef void* VALUE_OUTPUT; +extern "C" VALUEOUTPUT new_fl_value_output(int x, int y, int w, int h, char* label); +extern "C" void free_fl_value_output(VALUEOUTPUT a); +extern "C" int fl_value_output_is_soft(VALUEOUTPUT a); +extern "C" void fl_value_output_set_soft(VALUEOUTPUT a, int t); -extern "C" void value_output_set_draw_hook(VALUE_OUTPUT a, void * d); -extern "C" void fl_value_output_draw(VALUE_OUTPUT a); -extern "C" void value_output_set_handle_hook(VALUE_OUTPUT a, void * h); -extern "C" int fl_value_output_handle(VALUE_OUTPUT a, int e); +extern "C" unsigned int fl_value_output_get_text_color(VALUEOUTPUT v); +extern "C" void fl_value_output_set_text_color(VALUEOUTPUT v, unsigned int c); +extern "C" int fl_value_output_get_text_font(VALUEOUTPUT v); +extern "C" void fl_value_output_set_text_font(VALUEOUTPUT v, int f); +extern "C" int fl_value_output_get_text_size(VALUEOUTPUT v); +extern "C" void fl_value_output_set_text_size(VALUEOUTPUT v, int s); - - -extern "C" VALUE_OUTPUT new_fl_value_output(int x, int y, int w, int h, char* label); -extern "C" void free_fl_value_output(VALUE_OUTPUT a); - - - - -extern "C" int fl_value_output_is_soft(VALUE_OUTPUT a); -extern "C" void fl_value_output_set_soft(VALUE_OUTPUT a, int t); - - -extern "C" unsigned int fl_value_output_get_text_color(VALUE_OUTPUT v); -extern "C" void fl_value_output_set_text_color(VALUE_OUTPUT v, unsigned int c); -extern "C" int fl_value_output_get_text_font(VALUE_OUTPUT v); -extern "C" void fl_value_output_set_text_font(VALUE_OUTPUT v, int f); -extern "C" int fl_value_output_get_text_size(VALUE_OUTPUT v); -extern "C" void fl_value_output_set_text_size(VALUE_OUTPUT v, int s); +extern "C" void fl_value_output_draw(VALUEOUTPUT a); +extern "C" int fl_value_output_handle(VALUEOUTPUT a, int e); #endif + diff --git a/src/c_fl_value_slider.cpp b/src/c_fl_value_slider.cpp index 5fd9d02..b79d7f5 100644 --- a/src/c_fl_value_slider.cpp +++ b/src/c_fl_value_slider.cpp @@ -6,95 +6,89 @@ #include #include "c_fl_value_slider.h" -#include "c_fl_type.h" -class My_Value_Slider : public Fl_Value_Slider { - public: - using Fl_Value_Slider::Fl_Value_Slider; - friend void value_slider_set_draw_hook(VALUE_SLIDER s, void * d); - friend void fl_value_slider_draw(VALUE_SLIDER s); - friend void value_slider_set_handle_hook(VALUE_SLIDER s, void * h); - friend int fl_value_slider_handle(VALUE_SLIDER s, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Value_Slider::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Value_Slider::real_draw() { - Fl_Value_Slider::draw(); -} -int My_Value_Slider::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Value_Slider::real_handle(int e) { - return Fl_Value_Slider::handle(e); -} -void value_slider_set_draw_hook(VALUE_SLIDER s, void * d) { - reinterpret_cast(s)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_value_slider_draw(VALUE_SLIDER s) { - reinterpret_cast(s)->real_draw(); -} +class My_Value_Slider : public Fl_Value_Slider { +public: + using Fl_Value_Slider::Fl_Value_Slider; + + friend void fl_value_slider_draw(VALUESLIDER s); + friend int fl_value_slider_handle(VALUESLIDER s, int e); -void value_slider_set_handle_hook(VALUE_SLIDER s, void * h) { - reinterpret_cast(s)->handle_hook = reinterpret_cast(h); + void draw(); + int handle(int e); +}; + +void My_Value_Slider::draw() { + widget_draw_hook(this->user_data()); } -int fl_value_slider_handle(VALUE_SLIDER s, int e) { - return reinterpret_cast(s)->real_handle(e); +int My_Value_Slider::handle(int e) { + return widget_handle_hook(this->user_data(), e); } -VALUE_SLIDER new_fl_value_slider(int x, int y, int w, int h, char* label) { +// Flattened C API + +VALUESLIDER new_fl_value_slider(int x, int y, int w, int h, char* label) { My_Value_Slider *s = new My_Value_Slider(x, y, w, h, label); return s; } -void free_fl_value_slider(VALUE_SLIDER s) { +void free_fl_value_slider(VALUESLIDER s) { delete reinterpret_cast(s); } -unsigned int fl_value_slider_get_textcolor(VALUE_SLIDER s) { +unsigned int fl_value_slider_get_textcolor(VALUESLIDER s) { return reinterpret_cast(s)->textcolor(); } -void fl_value_slider_set_textcolor(VALUE_SLIDER s, unsigned int t) { +void fl_value_slider_set_textcolor(VALUESLIDER s, unsigned int t) { reinterpret_cast(s)->textcolor(t); } -int fl_value_slider_get_textfont(VALUE_SLIDER s) { +int fl_value_slider_get_textfont(VALUESLIDER s) { return reinterpret_cast(s)->textfont(); } -void fl_value_slider_set_textfont(VALUE_SLIDER s, int t) { +void fl_value_slider_set_textfont(VALUESLIDER s, int t) { reinterpret_cast(s)->textfont(t); } -int fl_value_slider_get_textsize(VALUE_SLIDER s) { +int fl_value_slider_get_textsize(VALUESLIDER s) { return reinterpret_cast(s)->textsize(); } -void fl_value_slider_set_textsize(VALUE_SLIDER s, int t) { +void fl_value_slider_set_textsize(VALUESLIDER s, int t) { reinterpret_cast(s)->textsize(t); } + + + +void fl_value_slider_draw(VALUESLIDER s) { + reinterpret_cast(s)->Fl_Value_Slider::draw(); +} + +int fl_value_slider_handle(VALUESLIDER s, int e) { + return reinterpret_cast(s)->Fl_Value_Slider::handle(e); +} + + diff --git a/src/c_fl_value_slider.h b/src/c_fl_value_slider.h index 78e4459..b07a827 100644 --- a/src/c_fl_value_slider.h +++ b/src/c_fl_value_slider.h @@ -8,34 +8,25 @@ #define FL_VALUE_SLIDER_GUARD +typedef void* VALUESLIDER; -typedef void* VALUE_SLIDER; +extern "C" VALUESLIDER new_fl_value_slider(int x, int y, int w, int h, char* label); +extern "C" void free_fl_value_slider(VALUESLIDER s); +extern "C" unsigned int fl_value_slider_get_textcolor(VALUESLIDER s); +extern "C" void fl_value_slider_set_textcolor(VALUESLIDER s, unsigned int t); +extern "C" int fl_value_slider_get_textfont(VALUESLIDER s); +extern "C" void fl_value_slider_set_textfont(VALUESLIDER s, int t); +extern "C" int fl_value_slider_get_textsize(VALUESLIDER s); +extern "C" void fl_value_slider_set_textsize(VALUESLIDER s, int t); -extern "C" void value_slider_set_draw_hook(VALUE_SLIDER s, void * d); -extern "C" void fl_value_slider_draw(VALUE_SLIDER s); -extern "C" void value_slider_set_handle_hook(VALUE_SLIDER s, void * h); -extern "C" int fl_value_slider_handle(VALUE_SLIDER s, int e); - - - - -extern "C" VALUE_SLIDER new_fl_value_slider(int x, int y, int w, int h, char* label); -extern "C" void free_fl_value_slider(VALUE_SLIDER s); - - - - -extern "C" unsigned int fl_value_slider_get_textcolor(VALUE_SLIDER s); -extern "C" void fl_value_slider_set_textcolor(VALUE_SLIDER s, unsigned int t); -extern "C" int fl_value_slider_get_textfont(VALUE_SLIDER s); -extern "C" void fl_value_slider_set_textfont(VALUE_SLIDER s, int t); -extern "C" int fl_value_slider_get_textsize(VALUE_SLIDER s); -extern "C" void fl_value_slider_set_textsize(VALUE_SLIDER s, int t); +extern "C" void fl_value_slider_draw(VALUESLIDER s); +extern "C" int fl_value_slider_handle(VALUESLIDER s, int e); #endif + diff --git a/src/c_fl_widget.cpp b/src/c_fl_widget.cpp index 61e5a96..db7312d 100644 --- a/src/c_fl_widget.cpp +++ b/src/c_fl_widget.cpp @@ -55,6 +55,8 @@ int My_Widget::handle(int e) { +// Flattened C API + WIDGET new_fl_widget(int x, int y, int w, int h, char* label) { My_Widget *wd = new My_Widget(x, y, w, h, label); return wd; @@ -340,6 +342,17 @@ void fl_widget_set_deimage(WIDGET w, void * img) { +unsigned char fl_widget_get_type(WIDGET w) { + return reinterpret_cast(w)->type(); +} + +void fl_widget_set_type(WIDGET w, unsigned char t) { + reinterpret_cast(w)->type(t); +} + + + + int fl_widget_damage(WIDGET w) { return reinterpret_cast(w)->damage(); } diff --git a/src/c_fl_widget.h b/src/c_fl_widget.h index 669ccda..9634ba4 100644 --- a/src/c_fl_widget.h +++ b/src/c_fl_widget.h @@ -97,6 +97,10 @@ extern "C" void fl_widget_set_image(WIDGET w, void * img); extern "C" void fl_widget_set_deimage(WIDGET w, void * img); +extern "C" unsigned char fl_widget_get_type(WIDGET w); +extern "C" void fl_widget_set_type(WIDGET w, unsigned char t); + + extern "C" int fl_widget_damage(WIDGET w); extern "C" void fl_widget_set_damage(WIDGET w, int t); extern "C" void fl_widget_set_damage2(WIDGET w, int t, int x, int y, int d, int h); @@ -109,3 +113,4 @@ extern "C" int fl_widget_handle(WIDGET w, int e); #endif + diff --git a/src/c_fl_window.cpp b/src/c_fl_window.cpp index eb54557..37c8a44 100644 --- a/src/c_fl_window.cpp +++ b/src/c_fl_window.cpp @@ -7,62 +7,44 @@ #include #include #include "c_fl_window.h" -#include "c_fl_type.h" -class My_Window : public Fl_Window { - public: - using Fl_Window::Fl_Window; - friend void window_set_draw_hook(WINDOW n, void * d); - friend void fl_window_draw(WINDOW n); - friend void window_set_handle_hook(WINDOW n, void * h); - friend int fl_window_handle(WINDOW n, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; -}; +// Exports from Ada -void My_Window::draw() { - (*draw_hook)(this->user_data()); -} +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); -void My_Window::real_draw() { - Fl_Window::draw(); -} -int My_Window::handle(int e) { - return (*handle_hook)(this->user_data(), e); -} -int My_Window::real_handle(int e) { - return Fl_Window::handle(e); -} -void window_set_draw_hook(WINDOW n, void * d) { - reinterpret_cast(n)->draw_hook = reinterpret_cast(d); -} +// Attaching all relevant hooks and friends -void fl_window_draw(WINDOW n) { - reinterpret_cast(n)->real_draw(); -} +class My_Window : public Fl_Window { +public: + using Fl_Window::Fl_Window; + + friend void fl_window_draw(WINDOW n); + friend int fl_window_handle(WINDOW n, int e); + + void draw(); + int handle(int e); +}; -void window_set_handle_hook(WINDOW n, void * h) { - reinterpret_cast(n)->handle_hook = reinterpret_cast(h); +void My_Window::draw() { + widget_draw_hook(this->user_data()); } -int fl_window_handle(WINDOW n, int e) { - return reinterpret_cast(n)->real_handle(e); +int My_Window::handle(int e) { + return widget_handle_hook(this->user_data(), e); } +// Flattened C API + WINDOW new_fl_window(int x, int y, int w, int h, char* label) { My_Window *n = new My_Window(x, y, w, h, label); return n; @@ -249,3 +231,15 @@ int fl_window_get_decorated_h(WINDOW n) { return reinterpret_cast(n)->decorated_h(); } + + + +void fl_window_draw(WINDOW n) { + reinterpret_cast(n)->Fl_Window::draw(); +} + +int fl_window_handle(WINDOW n, int e) { + return reinterpret_cast(n)->Fl_Window::handle(e); +} + + diff --git a/src/c_fl_window.h b/src/c_fl_window.h index 4a544f1..f17051e 100644 --- a/src/c_fl_window.h +++ b/src/c_fl_window.h @@ -8,28 +8,14 @@ #define FL_WINDOW_GUARD - - typedef void* WINDOW; - - -extern "C" void window_set_draw_hook(WINDOW n, void * d); -extern "C" void fl_window_draw(WINDOW n); -extern "C" void window_set_handle_hook(WINDOW n, void * h); -extern "C" int fl_window_handle(WINDOW n, int e); - - - - extern "C" WINDOW new_fl_window(int x, int y, int w, int h, char* label); extern "C" WINDOW new_fl_window2(int w, int h, char* label); extern "C" void free_fl_window(WINDOW n); - - extern "C" void fl_window_show(WINDOW n); extern "C" void fl_window_hide(WINDOW n); extern "C" int fl_window_shown(WINDOW n); @@ -80,5 +66,10 @@ extern "C" int fl_window_get_decorated_w(WINDOW n); extern "C" int fl_window_get_decorated_h(WINDOW n); +extern "C" void fl_window_draw(WINDOW n); +extern "C" int fl_window_handle(WINDOW n, int e); + + #endif + diff --git a/src/c_fl_wizard.cpp b/src/c_fl_wizard.cpp index 1aeb0e5..d826ca6 100644 --- a/src/c_fl_wizard.cpp +++ b/src/c_fl_wizard.cpp @@ -6,34 +6,37 @@ #include #include "c_fl_wizard.h" -#include "c_fl_type.h" +// Exports from Ada + +extern "C" void widget_draw_hook(void * ud); +extern "C" int widget_handle_hook(void * ud, int e); + + + + +// Attaching all relevant hooks and friends + class My_Wizard : public Fl_Wizard { - public: - using Fl_Wizard::Fl_Wizard; - friend void wizard_set_draw_hook(WIZARD w, void * d); - friend void fl_wizard_draw(WIZARD w); - friend void wizard_set_handle_hook(WIZARD w, void * h); - friend int fl_wizard_handle(WIZARD w, int e); - protected: - void draw(); - void real_draw(); - int handle(int e); - int real_handle(int e); - d_hook_p draw_hook; - h_hook_p handle_hook; +public: + using Fl_Wizard::Fl_Wizard; + + friend void fl_wizard_draw(WIZARD w); + friend int fl_wizard_handle(WIZARD w, int e); + + void draw(); + void real_draw(); + int handle(int e); }; void My_Wizard::draw() { - (*draw_hook)(this->user_data()); + widget_draw_hook(this->user_data()); } void My_Wizard::real_draw() { - //Fl_Wizard::draw(); - // required because of Fl_Wizard::draw() being private // probably a bug in FLTK? Fl_Widget *kid = value(); @@ -50,31 +53,13 @@ void My_Wizard::real_draw() { } int My_Wizard::handle(int e) { - return (*handle_hook)(this->user_data(), e); + return widget_handle_hook(this->user_data(), e); } -int My_Wizard::real_handle(int e) { - return Fl_Wizard::handle(e); -} - -void wizard_set_draw_hook(WIZARD w, void * d) { - reinterpret_cast(w)->draw_hook = reinterpret_cast(d); -} - -void fl_wizard_draw(WIZARD w) { - reinterpret_cast(w)->real_draw(); -} - -void wizard_set_handle_hook(WIZARD w, void * h) { - reinterpret_cast(w)->handle_hook = reinterpret_cast(h); -} - -int fl_wizard_handle(WIZARD w, int e) { - return reinterpret_cast(w)->real_handle(e); -} +// Flattened C API WIZARD new_fl_wizard(int x, int y, int w, int h, char* label) { My_Wizard *g = new My_Wizard(x, y, w, h, label); @@ -108,3 +93,14 @@ void fl_wizard_set_visible(WIZARD w, void * i) { } + + +void fl_wizard_draw(WIZARD w) { + reinterpret_cast(w)->real_draw(); +} + +int fl_wizard_handle(WIZARD w, int e) { + return reinterpret_cast(w)->Fl_Wizard::handle(e); +} + + diff --git a/src/c_fl_wizard.h b/src/c_fl_wizard.h index f119eb8..fb710ec 100644 --- a/src/c_fl_wizard.h +++ b/src/c_fl_wizard.h @@ -8,27 +8,13 @@ #define FL_WIZARD_GUARD - - typedef void* WIZARD; - - -extern "C" void wizard_set_draw_hook(WIZARD w, void * d); -extern "C" void fl_wizard_draw(WIZARD w); -extern "C" void wizard_set_handle_hook(WIZARD w, void * h); -extern "C" int fl_wizard_handle(WIZARD w, int e); - - - - extern "C" WIZARD new_fl_wizard(int x, int y, int w, int h, char* label); extern "C" void free_fl_wizard(WIZARD w); - - extern "C" void fl_wizard_next(WIZARD w); extern "C" void fl_wizard_prev(WIZARD w); @@ -37,5 +23,10 @@ extern "C" void * fl_wizard_get_visible(WIZARD w); extern "C" void fl_wizard_set_visible(WIZARD w, void * i); +extern "C" void fl_wizard_draw(WIZARD w); +extern "C" int fl_wizard_handle(WIZARD w, int e); + + #endif + diff --git a/src/fltk-widgets-boxes.adb b/src/fltk-widgets-boxes.adb index a506fd3..7b4c848 100644 --- a/src/fltk-widgets-boxes.adb +++ b/src/fltk-widgets-boxes.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Boxes is - procedure box_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, box_set_draw_hook, "box_set_draw_hook"); - pragma Inline (box_set_draw_hook); - - procedure box_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, box_set_handle_hook, "box_set_handle_hook"); - pragma Inline (box_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_box (X, Y, W, H : in Interfaces.C.int; @@ -32,6 +23,13 @@ package body FLTK.Widgets.Boxes is pragma Import (C, new_fl_box, "new_fl_box"); pragma Inline (new_fl_box); + function new_fl_box2 + (K, X, Y, W, H : in Interfaces.C.int; + Text : in Interfaces.C.char_array) + return Storage.Integer_Address; + pragma Import (C, new_fl_box2, "new_fl_box2"); + pragma Inline (new_fl_box2); + procedure free_fl_box (B : in Storage.Integer_Address); pragma Import (C, free_fl_box, "free_fl_box"); @@ -55,6 +53,10 @@ package body FLTK.Widgets.Boxes is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Box) is begin @@ -75,6 +77,10 @@ package body FLTK.Widgets.Boxes is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Box; X, Y, W, H : in Integer; @@ -84,6 +90,14 @@ package body FLTK.Widgets.Boxes is end Extra_Init; + procedure Initialize + (This : in out Box) is + begin + This.Draw_Ptr := fl_box_draw'Address; + This.Handle_Ptr := fl_box_handle'Address; + end Initialize; + + package body Forge is function Create @@ -93,14 +107,31 @@ package body FLTK.Widgets.Boxes is begin return This : Box do This.Void_Ptr := new_fl_box - (Interfaces.C.int (X), - Interfaces.C.int (Y), - Interfaces.C.int (W), - Interfaces.C.int (H), - Interfaces.C.To_C (Text)); + (Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H), + Interfaces.C.To_C (Text)); + Extra_Init (This, X, Y, W, H, Text); + end return; + end Create; + + + function Create + (Kind : in Box_Kind; + X, Y, W, H : in Integer; + Text : in String := "") + return Box is + begin + return This : Box do + This.Void_Ptr := new_fl_box2 + (Box_Kind'Pos (Kind), + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H), + Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - box_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - box_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -109,10 +140,14 @@ package body FLTK.Widgets.Boxes is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Draw (This : in out Box) is begin - fl_box_draw (This.Void_Ptr); + Widget (This).Draw; end Draw; @@ -121,10 +156,10 @@ package body FLTK.Widgets.Boxes is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_box_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Widget (This).Handle (Event); end Handle; end FLTK.Widgets.Boxes; + diff --git a/src/fltk-widgets-boxes.ads b/src/fltk-widgets-boxes.ads index f710011..b0a03dc 100644 --- a/src/fltk-widgets-boxes.ads +++ b/src/fltk-widgets-boxes.ads @@ -22,6 +22,12 @@ package FLTK.Widgets.Boxes is Text : in String := "") return Box; + function Create + (Kind : in Box_Kind; + X, Y, W, H : in Integer; + Text : in String := "") + return Box; + end Forge; @@ -41,6 +47,9 @@ private type Box is new Widget with null record; + overriding procedure Initialize + (This : in out Box); + overriding procedure Finalize (This : in out Box); @@ -61,3 +70,4 @@ private end FLTK.Widgets.Boxes; + diff --git a/src/fltk-widgets-buttons-enter.adb b/src/fltk-widgets-buttons-enter.adb index 20ce598..0053e53 100644 --- a/src/fltk-widgets-buttons-enter.adb +++ b/src/fltk-widgets-buttons-enter.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Enter is - procedure return_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, return_button_set_draw_hook, "return_button_set_draw_hook"); - pragma Inline (return_button_set_draw_hook); - - procedure return_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, return_button_set_handle_hook, "return_button_set_handle_hook"); - pragma Inline (return_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_return_button (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Buttons.Enter is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Enter_Button) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Buttons.Enter is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Enter_Button; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Buttons.Enter is end Extra_Init; + procedure Initialize + (This : in out Enter_Button) is + begin + This.Draw_Ptr := fl_return_button_draw'Address; + This.Handle_Ptr := fl_return_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,10 +106,6 @@ package body FLTK.Widgets.Buttons.Enter is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - return_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - return_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -111,10 +114,14 @@ package body FLTK.Widgets.Buttons.Enter is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Draw (This : in out Enter_Button) is begin - fl_return_button_draw (This.Void_Ptr); + Button (This).Draw; end Draw; @@ -123,10 +130,10 @@ package body FLTK.Widgets.Buttons.Enter is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_return_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Button (This).Handle (Event); end Handle; end FLTK.Widgets.Buttons.Enter; + diff --git a/src/fltk-widgets-buttons-enter.ads b/src/fltk-widgets-buttons-enter.ads index a8dbc11..0180628 100644 --- a/src/fltk-widgets-buttons-enter.ads +++ b/src/fltk-widgets-buttons-enter.ads @@ -44,6 +44,9 @@ private type Enter_Button is new Button with null record; + overriding procedure Initialize + (This : in out Enter_Button); + overriding procedure Finalize (This : in out Enter_Button); @@ -64,3 +67,4 @@ private end FLTK.Widgets.Buttons.Enter; + diff --git a/src/fltk-widgets-buttons-light-check.adb b/src/fltk-widgets-buttons-light-check.adb index d1596e0..e565461 100644 --- a/src/fltk-widgets-buttons-light-check.adb +++ b/src/fltk-widgets-buttons-light-check.adb @@ -16,19 +16,6 @@ package body FLTK.Widgets.Buttons.Light.Check is -- Functions From C -- ------------------------ - procedure check_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, check_button_set_draw_hook, "check_button_set_draw_hook"); - pragma Inline (check_button_set_draw_hook); - - procedure check_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, check_button_set_handle_hook, "check_button_set_handle_hook"); - pragma Inline (check_button_set_handle_hook); - - - - function new_fl_check_button (X, Y, W, H : in Interfaces.C.int; Text : in Interfaces.C.char_array) @@ -136,6 +123,14 @@ package body FLTK.Widgets.Buttons.Light.Check is end Extra_Init; + procedure Initialize + (This : in out Check_Button) is + begin + This.Draw_Ptr := fl_check_button_draw'Address; + This.Handle_Ptr := fl_check_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -151,38 +146,12 @@ package body FLTK.Widgets.Buttons.Light.Check is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - check_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - check_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - ----------------------- - -- API Subprograms -- - ----------------------- - - procedure Draw - (This : in out Check_Button) is - begin - fl_check_button_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Check_Button; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_check_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Buttons.Light.Check; + diff --git a/src/fltk-widgets-buttons-light-check.ads b/src/fltk-widgets-buttons-light-check.ads index a4f6767..b54d0af 100644 --- a/src/fltk-widgets-buttons-light-check.ads +++ b/src/fltk-widgets-buttons-light-check.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Buttons.Light.Check is end Forge; - - - procedure Draw - (This : in out Check_Button); - - function Handle - (This : in out Check_Button; - Event : in Event_Kind) - return Event_Outcome; - - private type Check_Button is new Light_Button with null record; + overriding procedure Initialize + (This : in out Check_Button); + overriding procedure Finalize (This : in out Check_Button); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Buttons.Light.Check; + diff --git a/src/fltk-widgets-buttons-light-radio.adb b/src/fltk-widgets-buttons-light-radio.adb index c7ba63f..754131d 100644 --- a/src/fltk-widgets-buttons-light-radio.adb +++ b/src/fltk-widgets-buttons-light-radio.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Light.Radio is - procedure radio_light_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, radio_light_button_set_draw_hook, "radio_light_button_set_draw_hook"); - pragma Inline (radio_light_button_set_draw_hook); - - procedure radio_light_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, radio_light_button_set_handle_hook, "radio_light_button_set_handle_hook"); - pragma Inline (radio_light_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_radio_light_button (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Buttons.Light.Radio is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Radio_Light_Button) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Buttons.Light.Radio is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Radio_Light_Button; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Buttons.Light.Radio is end Extra_Init; + procedure Initialize + (This : in out Radio_Light_Button) is + begin + This.Draw_Ptr := fl_radio_light_button_draw'Address; + This.Handle_Ptr := fl_radio_light_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Buttons.Light.Radio is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - radio_light_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - radio_light_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Radio_Light_Button) is - begin - fl_radio_light_button_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Radio_Light_Button; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_radio_light_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Buttons.Light.Radio; + diff --git a/src/fltk-widgets-buttons-light-radio.ads b/src/fltk-widgets-buttons-light-radio.ads index e8cfcb8..5120106 100644 --- a/src/fltk-widgets-buttons-light-radio.ads +++ b/src/fltk-widgets-buttons-light-radio.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Buttons.Light.Radio is end Forge; - - - procedure Draw - (This : in out Radio_Light_Button); - - function Handle - (This : in out Radio_Light_Button; - Event : in Event_Kind) - return Event_Outcome; - - private type Radio_Light_Button is new Light_Button with null record; + overriding procedure Initialize + (This : in out Radio_Light_Button); + overriding procedure Finalize (This : in out Radio_Light_Button); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Buttons.Light.Radio; + diff --git a/src/fltk-widgets-buttons-light-round-radio.adb b/src/fltk-widgets-buttons-light-round-radio.adb index 1f1e3f8..f2c7ed8 100644 --- a/src/fltk-widgets-buttons-light-round-radio.adb +++ b/src/fltk-widgets-buttons-light-round-radio.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Light.Round.Radio is - procedure radio_round_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, radio_round_button_set_draw_hook, "radio_round_button_set_draw_hook"); - pragma Inline (radio_round_button_set_draw_hook); - - procedure radio_round_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, radio_round_button_set_handle_hook, "radio_round_button_set_handle_hook"); - pragma Inline (radio_round_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_radio_round_button (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Buttons.Light.Round.Radio is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Radio_Round_Button) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Buttons.Light.Round.Radio is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Radio_Round_Button; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Buttons.Light.Round.Radio is end Extra_Init; + procedure Initialize + (This : in out Radio_Round_Button) is + begin + This.Draw_Ptr := fl_radio_round_button_draw'Address; + This.Handle_Ptr := fl_radio_round_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Buttons.Light.Round.Radio is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - radio_round_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - radio_round_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Radio_Round_Button) is - begin - fl_radio_round_button_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Radio_Round_Button; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_radio_round_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Buttons.Light.Round.Radio; + diff --git a/src/fltk-widgets-buttons-light-round-radio.ads b/src/fltk-widgets-buttons-light-round-radio.ads index e16964e..f46f179 100644 --- a/src/fltk-widgets-buttons-light-round-radio.ads +++ b/src/fltk-widgets-buttons-light-round-radio.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Buttons.Light.Round.Radio is end Forge; - - - procedure Draw - (This : in out Radio_Round_Button); - - function Handle - (This : in out Radio_Round_Button; - Event : in Event_Kind) - return Event_Outcome; - - private type Radio_Round_Button is new Round_Button with null record; + overriding procedure Initialize + (This : in out Radio_Round_Button); + overriding procedure Finalize (This : in out Radio_Round_Button); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Buttons.Light.Round.Radio; + diff --git a/src/fltk-widgets-buttons-light-round.adb b/src/fltk-widgets-buttons-light-round.adb index 9730413..2e358ea 100644 --- a/src/fltk-widgets-buttons-light-round.adb +++ b/src/fltk-widgets-buttons-light-round.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Light.Round is - procedure round_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, round_button_set_draw_hook, "round_button_set_draw_hook"); - pragma Inline (round_button_set_draw_hook); - - procedure round_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, round_button_set_handle_hook, "round_button_set_handle_hook"); - pragma Inline (round_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_round_button (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Buttons.Light.Round is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Round_Button) is begin @@ -74,6 +69,10 @@ package body FLTK.Widgets.Buttons.Light.Round is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Round_Button; X, Y, W, H : in Integer; @@ -83,6 +82,14 @@ package body FLTK.Widgets.Buttons.Light.Round is end Extra_Init; + procedure Initialize + (This : in out Round_Button) is + begin + This.Draw_Ptr := fl_round_button_draw'Address; + This.Handle_Ptr := fl_round_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -98,34 +105,12 @@ package body FLTK.Widgets.Buttons.Light.Round is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - round_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - round_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Round_Button) is - begin - fl_round_button_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Round_Button; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_round_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Buttons.Light.Round; + diff --git a/src/fltk-widgets-buttons-light-round.ads b/src/fltk-widgets-buttons-light-round.ads index 443cf60..606b11d 100644 --- a/src/fltk-widgets-buttons-light-round.ads +++ b/src/fltk-widgets-buttons-light-round.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Buttons.Light.Round is end Forge; - - - procedure Draw - (This : in out Round_Button); - - function Handle - (This : in out Round_Button; - Event : in Event_Kind) - return Event_Outcome; - - private type Round_Button is new Light_Button with null record; + overriding procedure Initialize + (This : in out Round_Button); + overriding procedure Finalize (This : in out Round_Button); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Buttons.Light.Round; + diff --git a/src/fltk-widgets-buttons-light.adb b/src/fltk-widgets-buttons-light.adb index 6ab55bb..41b7bd0 100644 --- a/src/fltk-widgets-buttons-light.adb +++ b/src/fltk-widgets-buttons-light.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Light is - procedure light_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, light_button_set_draw_hook, "light_button_set_draw_hook"); - pragma Inline (light_button_set_draw_hook); - - procedure light_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, light_button_set_handle_hook, "light_button_set_handle_hook"); - pragma Inline (light_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_light_button (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Buttons.Light is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Light_Button) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Buttons.Light is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Light_Button; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Buttons.Light is end Extra_Init; + procedure Initialize + (This : in out Light_Button) is + begin + This.Draw_Ptr := fl_light_button_draw'Address; + This.Handle_Ptr := fl_light_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,10 +106,6 @@ package body FLTK.Widgets.Buttons.Light is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - light_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - light_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -111,10 +114,14 @@ package body FLTK.Widgets.Buttons.Light is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Draw (This : in out Light_Button) is begin - fl_light_button_draw (This.Void_Ptr); + Button (This).Draw; end Draw; @@ -123,10 +130,10 @@ package body FLTK.Widgets.Buttons.Light is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_light_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Button (This).Handle (Event); end Handle; end FLTK.Widgets.Buttons.Light; + diff --git a/src/fltk-widgets-buttons-light.ads b/src/fltk-widgets-buttons-light.ads index 291cc0e..4c3ea95 100644 --- a/src/fltk-widgets-buttons-light.ads +++ b/src/fltk-widgets-buttons-light.ads @@ -41,6 +41,9 @@ private type Light_Button is new Button with null record; + overriding procedure Initialize + (This : in out Light_Button); + overriding procedure Finalize (This : in out Light_Button); @@ -61,3 +64,4 @@ private end FLTK.Widgets.Buttons.Light; + diff --git a/src/fltk-widgets-buttons-radio.adb b/src/fltk-widgets-buttons-radio.adb index 143beeb..f29ce90 100644 --- a/src/fltk-widgets-buttons-radio.adb +++ b/src/fltk-widgets-buttons-radio.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Radio is - procedure radio_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, radio_button_set_draw_hook, "radio_button_set_draw_hook"); - pragma Inline (radio_button_set_draw_hook); - - procedure radio_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, radio_button_set_handle_hook, "radio_button_set_handle_hook"); - pragma Inline (radio_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_radio_button (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Buttons.Radio is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Radio_Button) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Buttons.Radio is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Radio_Button; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Buttons.Radio is end Extra_Init; + procedure Initialize + (This : in out Radio_Button) is + begin + This.Draw_Ptr := fl_radio_button_draw'Address; + This.Handle_Ptr := fl_radio_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Buttons.Radio is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - radio_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - radio_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Radio_Button) is - begin - fl_radio_button_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Radio_Button; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_radio_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Buttons.Radio; + diff --git a/src/fltk-widgets-buttons-radio.ads b/src/fltk-widgets-buttons-radio.ads index 285f614..557266e 100644 --- a/src/fltk-widgets-buttons-radio.ads +++ b/src/fltk-widgets-buttons-radio.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Buttons.Radio is end Forge; - - - procedure Draw - (This : in out Radio_Button); - - function Handle - (This : in out Radio_Button; - Event : in Event_Kind) - return Event_Outcome; - - private type Radio_Button is new Button with null record; + overriding procedure Initialize + (This : in out Radio_Button); + overriding procedure Finalize (This : in out Radio_Button); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Buttons.Radio; + diff --git a/src/fltk-widgets-buttons-repeat.adb b/src/fltk-widgets-buttons-repeat.adb index 9446a22..e3d2d69 100644 --- a/src/fltk-widgets-buttons-repeat.adb +++ b/src/fltk-widgets-buttons-repeat.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Repeat is - procedure repeat_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, repeat_button_set_draw_hook, "repeat_button_set_draw_hook"); - pragma Inline (repeat_button_set_draw_hook); - - procedure repeat_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, repeat_button_set_handle_hook, "repeat_button_set_handle_hook"); - pragma Inline (repeat_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_repeat_button (X, Y, W, H : in Interfaces.C.int; @@ -40,6 +31,14 @@ package body FLTK.Widgets.Buttons.Repeat is + procedure fl_repeat_button_deactivate + (B : in Storage.Integer_Address); + pragma Import (C, fl_repeat_button_deactivate, "fl_repeat_button_deactivate"); + pragma Inline (fl_repeat_button_deactivate); + + + + procedure fl_repeat_button_draw (W : in Storage.Integer_Address); pragma Import (C, fl_repeat_button_draw, "fl_repeat_button_draw"); @@ -55,6 +54,10 @@ package body FLTK.Widgets.Buttons.Repeat is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Repeat_Button) is begin @@ -75,6 +78,10 @@ package body FLTK.Widgets.Buttons.Repeat is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Repeat_Button; X, Y, W, H : in Integer; @@ -84,6 +91,14 @@ package body FLTK.Widgets.Buttons.Repeat is end Extra_Init; + procedure Initialize + (This : in out Repeat_Button) is + begin + This.Draw_Ptr := fl_repeat_button_draw'Address; + This.Handle_Ptr := fl_repeat_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,10 +114,6 @@ package body FLTK.Widgets.Buttons.Repeat is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - repeat_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - repeat_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -111,11 +122,17 @@ package body FLTK.Widgets.Buttons.Repeat is - procedure Draw + ----------------------- + -- API Subprograms -- + ----------------------- + + procedure Deactivate (This : in out Repeat_Button) is begin - fl_repeat_button_draw (This.Void_Ptr); - end Draw; + fl_repeat_button_deactivate (This.Void_Ptr); + end Deactivate; + + function Handle @@ -123,10 +140,10 @@ package body FLTK.Widgets.Buttons.Repeat is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_repeat_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Button (This).Handle (Event); end Handle; end FLTK.Widgets.Buttons.Repeat; + diff --git a/src/fltk-widgets-buttons-repeat.ads b/src/fltk-widgets-buttons-repeat.ads index eeb4166..5720f8a 100644 --- a/src/fltk-widgets-buttons-repeat.ads +++ b/src/fltk-widgets-buttons-repeat.ads @@ -27,9 +27,12 @@ package FLTK.Widgets.Buttons.Repeat is - procedure Draw + procedure Deactivate (This : in out Repeat_Button); + + + function Handle (This : in out Repeat_Button; Event : in Event_Kind) @@ -41,6 +44,9 @@ private type Repeat_Button is new Button with null record; + overriding procedure Initialize + (This : in out Repeat_Button); + overriding procedure Finalize (This : in out Repeat_Button); @@ -55,9 +61,11 @@ private with Inline; - pragma Inline (Draw); + pragma Inline (Deactivate); + pragma Inline (Handle); end FLTK.Widgets.Buttons.Repeat; + diff --git a/src/fltk-widgets-buttons-toggle.adb b/src/fltk-widgets-buttons-toggle.adb index a1dcc60..6542aae 100644 --- a/src/fltk-widgets-buttons-toggle.adb +++ b/src/fltk-widgets-buttons-toggle.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Buttons.Toggle is - procedure toggle_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, toggle_button_set_draw_hook, "toggle_button_set_draw_hook"); - pragma Inline (toggle_button_set_draw_hook); - - procedure toggle_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, toggle_button_set_handle_hook, "toggle_button_set_handle_hook"); - pragma Inline (toggle_button_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_toggle_button (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Buttons.Toggle is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Toggle_Button) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Buttons.Toggle is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Toggle_Button; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Buttons.Toggle is end Extra_Init; + procedure Initialize + (This : in out Toggle_Button) is + begin + This.Draw_Ptr := fl_toggle_button_draw'Address; + This.Handle_Ptr := fl_toggle_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Buttons.Toggle is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - toggle_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - toggle_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Toggle_Button) is - begin - fl_toggle_button_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Toggle_Button; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_toggle_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Buttons.Toggle; + diff --git a/src/fltk-widgets-buttons-toggle.ads b/src/fltk-widgets-buttons-toggle.ads index a218533..2e0c967 100644 --- a/src/fltk-widgets-buttons-toggle.ads +++ b/src/fltk-widgets-buttons-toggle.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Buttons.Toggle is end Forge; - - - procedure Draw - (This : in out Toggle_Button); - - function Handle - (This : in out Toggle_Button; - Event : in Event_Kind) - return Event_Outcome; - - private type Toggle_Button is new Button with null record; + overriding procedure Initialize + (This : in out Toggle_Button); + overriding procedure Finalize (This : in out Toggle_Button); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Buttons.Toggle; + diff --git a/src/fltk-widgets-buttons.adb b/src/fltk-widgets-buttons.adb index e0b5120..c024dd1 100644 --- a/src/fltk-widgets-buttons.adb +++ b/src/fltk-widgets-buttons.adb @@ -16,19 +16,6 @@ package body FLTK.Widgets.Buttons is -- Functions From C -- ------------------------ - procedure button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, button_set_draw_hook, "button_set_draw_hook"); - pragma Inline (button_set_draw_hook); - - procedure button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, button_set_handle_hook, "button_set_handle_hook"); - pragma Inline (button_set_handle_hook); - - - - function new_fl_button (X, Y, W, H : in Interfaces.C.int; Text : in Interfaces.C.char_array) @@ -106,6 +93,14 @@ package body FLTK.Widgets.Buttons is + procedure fl_button_simulate_key_action + (B : in Storage.Integer_Address); + pragma Import (C, fl_button_simulate_key_action, "fl_button_simulate_key_action"); + pragma Inline (fl_button_simulate_key_action); + + + + ------------------- -- Destructors -- ------------------- @@ -183,6 +178,14 @@ package body FLTK.Widgets.Buttons is end Extra_Init; + procedure Initialize + (This : in out Button) is + begin + This.Draw_Ptr := fl_button_draw'Address; + This.Handle_Ptr := fl_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -198,8 +201,6 @@ package body FLTK.Widgets.Buttons is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - button_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - button_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -274,7 +275,7 @@ package body FLTK.Widgets.Buttons is procedure Draw (This : in out Button) is begin - fl_button_draw (This.Void_Ptr); + Widget (This).Draw; end Draw; @@ -283,10 +284,19 @@ package body FLTK.Widgets.Buttons is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Widget (This).Handle (Event); end Handle; + + + procedure Simulate_Key_Action + (This : in out Button) is + begin + fl_button_simulate_key_action (This.Void_Ptr); + end Simulate_Key_Action; + + end FLTK.Widgets.Buttons; + diff --git a/src/fltk-widgets-buttons.ads b/src/fltk-widgets-buttons.ads index 18c5026..d4c864f 100644 --- a/src/fltk-widgets-buttons.ads +++ b/src/fltk-widgets-buttons.ads @@ -71,11 +71,20 @@ package FLTK.Widgets.Buttons is return Event_Outcome; + + + procedure Simulate_Key_Action + (This : in out Button); + + private type Button is new Widget with null record; + overriding procedure Initialize + (This : in out Button); + overriding procedure Finalize (This : in out Button); @@ -102,6 +111,9 @@ private pragma Inline (Draw); pragma Inline (Handle); + pragma Inline (Simulate_Key_Action); + end FLTK.Widgets.Buttons; + diff --git a/src/fltk-widgets-charts.adb b/src/fltk-widgets-charts.adb index e9a0f03..1c84ece 100644 --- a/src/fltk-widgets-charts.adb +++ b/src/fltk-widgets-charts.adb @@ -16,18 +16,9 @@ use type package body FLTK.Widgets.Charts is - procedure chart_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, chart_set_draw_hook, "chart_set_draw_hook"); - pragma Inline (chart_set_draw_hook); - - procedure chart_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, chart_set_handle_hook, "chart_set_handle_hook"); - pragma Inline (chart_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_chart (X, Y, W, H : in Interfaces.C.int; @@ -186,6 +177,10 @@ package body FLTK.Widgets.Charts is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Chart) is begin @@ -206,6 +201,10 @@ package body FLTK.Widgets.Charts is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Chart; X, Y, W, H : in Integer; @@ -215,6 +214,14 @@ package body FLTK.Widgets.Charts is end Extra_Init; + procedure Initialize + (This : in out Chart) is + begin + This.Draw_Ptr := fl_chart_draw'Address; + This.Handle_Ptr := fl_chart_handle'Address; + end Initialize; + + package body Forge is function Create @@ -230,8 +237,6 @@ package body FLTK.Widgets.Charts is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - chart_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - chart_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -240,6 +245,10 @@ package body FLTK.Widgets.Charts is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Add (This : in out Chart; Data_Value : in Long_Float; @@ -422,19 +431,10 @@ package body FLTK.Widgets.Charts is procedure Draw (This : in out Chart) is begin - fl_chart_draw (This.Void_Ptr); + Widget (This).Draw; end Draw; - function Handle - (This : in out Chart; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_chart_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Charts; + diff --git a/src/fltk-widgets-charts.ads b/src/fltk-widgets-charts.ads index 71df2f0..1f02dd0 100644 --- a/src/fltk-widgets-charts.ads +++ b/src/fltk-widgets-charts.ads @@ -121,17 +121,15 @@ package FLTK.Widgets.Charts is procedure Draw (This : in out Chart); - function Handle - (This : in out Chart; - Event : in Event_Kind) - return Event_Outcome; - private type Chart is new Widget with null record; + overriding procedure Initialize + (This : in out Chart); + overriding procedure Finalize (This : in out Chart); @@ -169,8 +167,8 @@ private pragma Inline (Resize); pragma Inline (Draw); - pragma Inline (Handle); end FLTK.Widgets.Charts; + diff --git a/src/fltk-widgets-clocks-updated-round.adb b/src/fltk-widgets-clocks-updated-round.adb index f22b785..effea2c 100644 --- a/src/fltk-widgets-clocks-updated-round.adb +++ b/src/fltk-widgets-clocks-updated-round.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Clocks.Updated.Round is - procedure round_clock_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, round_clock_set_draw_hook, "round_clock_set_draw_hook"); - pragma Inline (round_clock_set_draw_hook); - - procedure round_clock_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, round_clock_set_handle_hook, "round_clock_set_handle_hook"); - pragma Inline (round_clock_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_round_clock (X, Y, W, H : in Interfaces.C.int; @@ -45,12 +36,6 @@ package body FLTK.Widgets.Clocks.Updated.Round is pragma Import (C, fl_round_clock_draw, "fl_round_clock_draw"); pragma Inline (fl_round_clock_draw); - procedure fl_round_clock_draw2 - (C : in Storage.Integer_Address; - X, Y, W, H : in Interfaces.C.int); - pragma Import (C, fl_round_clock_draw2, "fl_round_clock_draw2"); - pragma Inline (fl_round_clock_draw2); - function fl_round_clock_handle (W : in Storage.Integer_Address; E : in Interfaces.C.int) @@ -61,6 +46,10 @@ package body FLTK.Widgets.Clocks.Updated.Round is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Round_Clock) is begin @@ -81,6 +70,10 @@ package body FLTK.Widgets.Clocks.Updated.Round is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Round_Clock; X, Y, W, H : in Integer; @@ -90,6 +83,14 @@ package body FLTK.Widgets.Clocks.Updated.Round is end Extra_Init; + procedure Initialize + (This : in out Round_Clock) is + begin + This.Draw_Ptr := fl_round_clock_draw'Address; + This.Handle_Ptr := fl_round_clock_handle'Address; + end Initialize; + + package body Forge is function Create @@ -105,47 +106,12 @@ package body FLTK.Widgets.Clocks.Updated.Round is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - round_clock_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - round_clock_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Round_Clock) is - begin - fl_round_clock_draw (This.Void_Ptr); - end Draw; - - - procedure Draw - (This : in out Clock; - X, Y, W, H : in Integer) is - begin - fl_round_clock_draw2 - (This.Void_Ptr, - Interfaces.C.int (X), - Interfaces.C.int (Y), - Interfaces.C.int (W), - Interfaces.C.int (H)); - end Draw; - - - function Handle - (This : in out Round_Clock; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_round_clock_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Clocks.Updated.Round; + diff --git a/src/fltk-widgets-clocks-updated-round.ads b/src/fltk-widgets-clocks-updated-round.ads index fc52031..8576318 100644 --- a/src/fltk-widgets-clocks-updated-round.ads +++ b/src/fltk-widgets-clocks-updated-round.ads @@ -25,26 +25,14 @@ package FLTK.Widgets.Clocks.Updated.Round is end Forge; - - - procedure Draw - (This : in out Round_Clock); - - procedure Draw - (This : in out Clock; - X, Y, W, H : in Integer); - - function Handle - (This : in out Round_Clock; - Event : in Event_Kind) - return Event_Outcome; - - private type Round_Clock is new Updated_Clock with null record; + overriding procedure Initialize + (This : in out Round_Clock); + overriding procedure Finalize (This : in out Round_Clock); @@ -59,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Clocks.Updated.Round; + diff --git a/src/fltk-widgets-clocks-updated.adb b/src/fltk-widgets-clocks-updated.adb index b0843b6..7a02052 100644 --- a/src/fltk-widgets-clocks-updated.adb +++ b/src/fltk-widgets-clocks-updated.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Clocks.Updated is - procedure clock_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, clock_set_draw_hook, "clock_set_draw_hook"); - pragma Inline (clock_set_draw_hook); - - procedure clock_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, clock_set_handle_hook, "clock_set_handle_hook"); - pragma Inline (clock_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_clock (X, Y, W, H : in Interfaces.C.int; @@ -53,12 +44,6 @@ package body FLTK.Widgets.Clocks.Updated is pragma Import (C, fl_clock_draw, "fl_clock_draw"); pragma Inline (fl_clock_draw); - procedure fl_clock_draw2 - (C : in Storage.Integer_Address; - X, Y, W, H : in Interfaces.C.int); - pragma Import (C, fl_clock_draw2, "fl_clock_draw2"); - pragma Inline (fl_clock_draw2); - function fl_clock_handle (W : in Storage.Integer_Address; E : in Interfaces.C.int) @@ -69,6 +54,10 @@ package body FLTK.Widgets.Clocks.Updated is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Updated_Clock) is begin @@ -89,6 +78,10 @@ package body FLTK.Widgets.Clocks.Updated is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Updated_Clock; X, Y, W, H : in Integer; @@ -98,6 +91,14 @@ package body FLTK.Widgets.Clocks.Updated is end Extra_Init; + procedure Initialize + (This : in out Updated_Clock) is + begin + This.Draw_Ptr := fl_clock_draw'Address; + This.Handle_Ptr := fl_clock_handle'Address; + end Initialize; + + package body Forge is function Create @@ -113,8 +114,6 @@ package body FLTK.Widgets.Clocks.Updated is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - clock_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - clock_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -134,8 +133,6 @@ package body FLTK.Widgets.Clocks.Updated is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - clock_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - clock_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -144,35 +141,19 @@ package body FLTK.Widgets.Clocks.Updated is - procedure Draw - (This : in out Updated_Clock) is - begin - fl_clock_draw (This.Void_Ptr); - end Draw; - - - procedure Draw - (This : in out Clock; - X, Y, W, H : in Integer) is - begin - fl_clock_draw2 - (This.Void_Ptr, - Interfaces.C.int (X), - Interfaces.C.int (Y), - Interfaces.C.int (W), - Interfaces.C.int (H)); - end Draw; - + ----------------------- + -- API Subprograms -- + ----------------------- function Handle (This : in out Updated_Clock; Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_clock_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Clock (This).Handle (Event); end Handle; end FLTK.Widgets.Clocks.Updated; + diff --git a/src/fltk-widgets-clocks-updated.ads b/src/fltk-widgets-clocks-updated.ads index c094c55..e25ae18 100644 --- a/src/fltk-widgets-clocks-updated.ads +++ b/src/fltk-widgets-clocks-updated.ads @@ -33,13 +33,6 @@ package FLTK.Widgets.Clocks.Updated is - procedure Draw - (This : in out Updated_Clock); - - procedure Draw - (This : in out Clock; - X, Y, W, H : in Integer); - function Handle (This : in out Updated_Clock; Event : in Event_Kind) @@ -51,6 +44,9 @@ private type Updated_Clock is new Clock with null record; + overriding procedure Initialize + (This : in out Updated_Clock); + overriding procedure Finalize (This : in out Updated_Clock); @@ -65,9 +61,9 @@ private with Inline; - pragma Inline (Draw); pragma Inline (Handle); end FLTK.Widgets.Clocks.Updated; + diff --git a/src/fltk-widgets-clocks.adb b/src/fltk-widgets-clocks.adb index a3cb315..b632336 100644 --- a/src/fltk-widgets-clocks.adb +++ b/src/fltk-widgets-clocks.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Clocks is - procedure clock_output_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, clock_output_set_draw_hook, "clock_output_set_draw_hook"); - pragma Inline (clock_output_set_draw_hook); - - procedure clock_output_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, clock_output_set_handle_hook, "clock_output_set_handle_hook"); - pragma Inline (clock_output_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_clock_output (X, Y, W, H : in Interfaces.C.int; @@ -103,6 +94,10 @@ package body FLTK.Widgets.Clocks is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Clock) is begin @@ -123,6 +118,10 @@ package body FLTK.Widgets.Clocks is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Clock; X, Y, W, H : in Integer; @@ -132,6 +131,14 @@ package body FLTK.Widgets.Clocks is end Extra_Init; + procedure Initialize + (This : in out Clock) is + begin + This.Draw_Ptr := fl_clock_output_draw'Address; + This.Handle_Ptr := fl_clock_output_handle'Address; + end Initialize; + + package body Forge is function Create @@ -147,10 +154,6 @@ package body FLTK.Widgets.Clocks is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - clock_output_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - clock_output_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -159,6 +162,10 @@ package body FLTK.Widgets.Clocks is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Hour (This : in Clock) return Hour is @@ -220,7 +227,7 @@ package body FLTK.Widgets.Clocks is procedure Draw (This : in out Clock) is begin - fl_clock_output_draw (This.Void_Ptr); + Widget (This).Draw; end Draw; @@ -237,15 +244,6 @@ package body FLTK.Widgets.Clocks is end Draw; - function Handle - (This : in out Clock; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_clock_output_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Clocks; + diff --git a/src/fltk-widgets-clocks.ads b/src/fltk-widgets-clocks.ads index 5117fb1..33edf37 100644 --- a/src/fltk-widgets-clocks.ads +++ b/src/fltk-widgets-clocks.ads @@ -72,17 +72,15 @@ package FLTK.Widgets.Clocks is (This : in out Clock; X, Y, W, H : in Integer); - function Handle - (This : in out Clock; - Event : in Event_Kind) - return Event_Outcome; - private type Clock is new Widget with null record; + overriding procedure Initialize + (This : in out Clock); + overriding procedure Finalize (This : in out Clock); @@ -105,8 +103,8 @@ private pragma Inline (Set_Time); pragma Inline (Draw); - pragma Inline (Handle); end FLTK.Widgets.Clocks; + diff --git a/src/fltk-widgets-groups-browsers-textline.adb b/src/fltk-widgets-groups-browsers-textline.adb index 8c68420..2830732 100644 --- a/src/fltk-widgets-groups-browsers-textline.adb +++ b/src/fltk-widgets-groups-browsers-textline.adb @@ -268,6 +268,15 @@ package body FLTK.Widgets.Groups.Browsers.Textline is + procedure fl_browser_set_size + (B : in Storage.Integer_Address; + W, H : in Interfaces.C.int); + pragma Import (C, fl_browser_set_size, "fl_browser_set_size"); + pragma Inline (fl_browser_set_size); + + + + procedure fl_browser_set_icon (B : in Storage.Integer_Address; L : in Interfaces.C.int; @@ -887,6 +896,19 @@ package body FLTK.Widgets.Groups.Browsers.Textline is + procedure Resize + (This : in out Textline_Browser; + W, H : in Integer) is + begin + fl_browser_set_size + (This.Void_Ptr, + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; + + + + function Has_Icon (This : in Textline_Browser; Line : in Positive) diff --git a/src/fltk-widgets-groups-browsers-textline.ads b/src/fltk-widgets-groups-browsers-textline.ads index dac7ad9..581d2bd 100644 --- a/src/fltk-widgets-groups-browsers-textline.ads +++ b/src/fltk-widgets-groups-browsers-textline.ads @@ -221,6 +221,15 @@ package FLTK.Widgets.Groups.Browsers.Textline is + -- Resizing + + procedure Resize + (This : in out Textline_Browser; + W, H : in Integer); + + + + -- Icons for specific lines function Has_Icon diff --git a/src/fltk-widgets-groups-color_choosers.adb b/src/fltk-widgets-groups-color_choosers.adb index 9c02667..5c52ce3 100644 --- a/src/fltk-widgets-groups-color_choosers.adb +++ b/src/fltk-widgets-groups-color_choosers.adb @@ -6,6 +6,7 @@ with + Ada.Assertions, Interfaces.C; use type @@ -16,18 +17,14 @@ use type package body FLTK.Widgets.Groups.Color_Choosers is - procedure color_chooser_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, color_chooser_set_draw_hook, "color_chooser_set_draw_hook"); - pragma Inline (color_chooser_set_draw_hook); + package Chk renames Ada.Assertions; - procedure color_chooser_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, color_chooser_set_handle_hook, "color_chooser_set_handle_hook"); - pragma Inline (color_chooser_set_handle_hook); + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_color_chooser (X, Y, W, H : in Interfaces.C.int; @@ -145,6 +142,10 @@ package body FLTK.Widgets.Groups.Color_Choosers is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Color_Chooser) is begin @@ -165,6 +166,10 @@ package body FLTK.Widgets.Groups.Color_Choosers is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Color_Chooser; X, Y, W, H : in Integer; @@ -174,6 +179,14 @@ package body FLTK.Widgets.Groups.Color_Choosers is end Extra_Init; + procedure Initialize + (This : in out Color_Chooser) is + begin + This.Draw_Ptr := fl_color_chooser_draw'Address; + This.Handle_Ptr := fl_color_chooser_handle'Address; + end Initialize; + + package body Forge is function Create @@ -189,10 +202,6 @@ package body FLTK.Widgets.Groups.Color_Choosers is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - color_chooser_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - color_chooser_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -201,6 +210,10 @@ package body FLTK.Widgets.Groups.Color_Choosers is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Red (This : in Color_Chooser) return Long_Float is @@ -227,13 +240,34 @@ package body FLTK.Widgets.Groups.Color_Choosers is procedure Set_RGB (This : in out Color_Chooser; - R, G, B : in Long_Float) is + R, G, B : in Long_Float) + is + Result : Interfaces.C.int := fl_color_chooser_rgb + (This.Void_Ptr, + Interfaces.C.double (R), + Interfaces.C.double (G), + Interfaces.C.double (B)); begin - This.Was_Changed := fl_color_chooser_rgb + pragma Assert (Result in 0 .. 1); + exception + when Chk.Assertion_Error => raise Internal_FLTK_Error; + end Set_RGB; + + + function Set_RGB + (This : in out Color_Chooser; + R, G, B : in Long_Float) + return Boolean + is + Result : Interfaces.C.int := fl_color_chooser_rgb (This.Void_Ptr, Interfaces.C.double (R), Interfaces.C.double (G), - Interfaces.C.double (B)) /= 0; + Interfaces.C.double (B)); + begin + return Boolean'Val (Result); + exception + when Constraint_Error => raise Internal_FLTK_Error; end Set_RGB; @@ -265,13 +299,34 @@ package body FLTK.Widgets.Groups.Color_Choosers is procedure Set_HSV (This : in out Color_Chooser; - H, S, V : in Long_Float) is + H, S, V : in Long_Float) + is + Result : Interfaces.C.int := fl_color_chooser_hsv + (This.Void_Ptr, + Interfaces.C.double (H), + Interfaces.C.double (S), + Interfaces.C.double (V)); begin - This.Was_Changed := fl_color_chooser_hsv + pragma Assert (Result in 0 .. 1); + exception + when Chk.Assertion_Error => raise Internal_FLTK_Error; + end Set_HSV; + + + function Set_HSV + (This : in out Color_Chooser; + H, S, V : in Long_Float) + return Boolean + is + Result : Interfaces.C.int := fl_color_chooser_hsv (This.Void_Ptr, Interfaces.C.double (H), Interfaces.C.double (S), - Interfaces.C.double (V)) /= 0; + Interfaces.C.double (V)); + begin + return Boolean'Val (Result); + exception + when Constraint_Error => raise Internal_FLTK_Error; end Set_HSV; @@ -307,23 +362,6 @@ package body FLTK.Widgets.Groups.Color_Choosers is - function Color_Was_Changed - (This : in Color_Chooser) - return Boolean is - begin - return This.Was_Changed; - end Color_Was_Changed; - - - procedure Clear_Changed - (This : in out Color_Chooser) is - begin - This.Was_Changed := False; - end Clear_Changed; - - - - function Get_Mode (This : in Color_Chooser) return Color_Mode is @@ -340,24 +378,6 @@ package body FLTK.Widgets.Groups.Color_Choosers is end Set_Mode; - - - procedure Draw - (This : in out Color_Chooser) is - begin - fl_color_chooser_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Color_Chooser; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_color_chooser_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Groups.Color_Choosers; + diff --git a/src/fltk-widgets-groups-color_choosers.ads b/src/fltk-widgets-groups-color_choosers.ads index badbe24..8ceb1b7 100644 --- a/src/fltk-widgets-groups-color_choosers.ads +++ b/src/fltk-widgets-groups-color_choosers.ads @@ -45,6 +45,11 @@ package FLTK.Widgets.Groups.Color_Choosers is (This : in out Color_Chooser; R, G, B : in Long_Float); + function Set_RGB + (This : in out Color_Chooser; + R, G, B : in Long_Float) + return Boolean; + @@ -64,6 +69,11 @@ package FLTK.Widgets.Groups.Color_Choosers is (This : in out Color_Chooser; H, S, V : in Long_Float); + function Set_HSV + (This : in out Color_Chooser; + H, S, V : in Long_Float) + return Boolean; + @@ -78,16 +88,6 @@ package FLTK.Widgets.Groups.Color_Choosers is - function Color_Was_Changed - (This : in Color_Chooser) - return Boolean; - - procedure Clear_Changed - (This : in out Color_Chooser); - - - - function Get_Mode (This : in Color_Chooser) return Color_Mode; @@ -97,23 +97,13 @@ package FLTK.Widgets.Groups.Color_Choosers is To : in Color_Mode); - - - procedure Draw - (This : in out Color_Chooser); - - function Handle - (This : in out Color_Chooser; - Event : in Event_Kind) - return Event_Outcome; - - private - type Color_Chooser is new Group with record - Was_Changed : Boolean := False; - end record; + type Color_Chooser is new Group with null record; + + overriding procedure Initialize + (This : in out Color_Chooser); overriding procedure Finalize (This : in out Color_Chooser); @@ -142,15 +132,10 @@ private pragma Inline (HSV_To_RGB); pragma Inline (RGB_To_HSV); - pragma Inline (Color_Was_Changed); - pragma Inline (Clear_Changed); - pragma Inline (Get_Mode); pragma Inline (Set_Mode); - pragma Inline (Draw); - pragma Inline (Handle); - end FLTK.Widgets.Groups.Color_Choosers; + diff --git a/src/fltk-widgets-groups-help_views.adb b/src/fltk-widgets-groups-help_views.adb index a5b169c..c6f4602 100644 --- a/src/fltk-widgets-groups-help_views.adb +++ b/src/fltk-widgets-groups-help_views.adb @@ -27,19 +27,6 @@ package body FLTK.Widgets.Groups.Help_Views is -- Functions From C -- ------------------------ - procedure help_view_set_draw_hook - (V, D : in Storage.Integer_Address); - pragma Import (C, help_view_set_draw_hook, "help_view_set_draw_hook"); - pragma Inline (help_view_set_draw_hook); - - procedure help_view_set_handle_hook - (V, H : in Storage.Integer_Address); - pragma Import (C, help_view_set_handle_hook, "help_view_set_handle_hook"); - pragma Inline (help_view_set_handle_hook); - - - - function new_fl_help_view (X, Y, W, H : in Interfaces.C.int; Text : in Interfaces.C.char_array) @@ -178,6 +165,12 @@ package body FLTK.Widgets.Groups.Help_Views is pragma Import (C, fl_help_view_set_size, "fl_help_view_set_size"); pragma Inline (fl_help_view_set_size); + procedure fl_help_view_resize + (V : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_help_view_resize, "fl_help_view_resize"); + pragma Inline (fl_help_view_resize); + function fl_help_view_get_textcolor (V : in Storage.Integer_Address) return Interfaces.C.unsigned; @@ -269,9 +262,9 @@ package body FLTK.Widgets.Groups.Help_Views is - ----------------------------------- - -- Controlled Type Subprograms -- - ----------------------------------- + ------------------- + -- Destructors -- + ------------------- procedure Extra_Final (This : in out Help_View) is @@ -294,19 +287,28 @@ package body FLTK.Widgets.Groups.Help_Views is - --------------------- - -- Help_View API -- - --------------------- + -------------------- + -- Constructors -- + -------------------- procedure Extra_Init (This : in out Help_View; X, Y, W, H : in Integer; Text : in String) is begin + fl_help_view_link (This.Void_Ptr, Storage.To_Integer (Link_Callback_Hook'Address)); Extra_Init (Group (This), X, Y, W, H, Text); end Extra_Init; + procedure Initialize + (This : in out Help_View) is + begin + This.Draw_Ptr := fl_help_view_draw'Address; + This.Handle_Ptr := fl_help_view_handle'Address; + end Initialize; + + package body Forge is function Create @@ -322,9 +324,6 @@ package body FLTK.Widgets.Groups.Help_Views is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - help_view_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - help_view_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); - fl_help_view_link (This.Void_Ptr, Storage.To_Integer (Link_Callback_Hook'Address)); end return; end Create; @@ -333,6 +332,10 @@ package body FLTK.Widgets.Groups.Help_Views is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Clear_Selection (This : in out Help_View) is begin @@ -519,6 +522,19 @@ package body FLTK.Widgets.Groups.Help_Views is end Resize; + procedure Resize + (This : in out Help_View; + X, Y, W, H : in Integer) is + begin + fl_help_view_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; + + function Get_Text_Color (This : in Help_View) return Color is @@ -572,7 +588,7 @@ package body FLTK.Widgets.Groups.Help_Views is procedure Draw (This : in out Help_View) is begin - fl_help_view_draw (This.Void_Ptr); + Group (This).Draw; end Draw; @@ -581,8 +597,7 @@ package body FLTK.Widgets.Groups.Help_Views is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_help_view_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Group (This).Handle (Event); end Handle; diff --git a/src/fltk-widgets-groups-help_views.ads b/src/fltk-widgets-groups-help_views.ads index 8bea2a6..03bb6c5 100644 --- a/src/fltk-widgets-groups-help_views.ads +++ b/src/fltk-widgets-groups-help_views.ads @@ -28,10 +28,8 @@ package FLTK.Widgets.Groups.Help_Views is return String; - - -- You have no idea how tempting it is to give this - -- a more tongue in cheek name + -- a more tongue in cheek name. Load_Help_Error : exception; @@ -95,7 +93,7 @@ package FLTK.Widgets.Groups.Help_Views is (This : in Help_View) return String; - -- Name here can be either a ftp/http/https/ipp/mailto/news URL or a filename + -- Name here can be either a ftp/http/https/ipp/mailto/news URL or a filename. procedure Load (This : in out Help_View; Name : in String); @@ -135,6 +133,10 @@ package FLTK.Widgets.Groups.Help_Views is (This : in out Help_View; W, H : in Integer); + procedure Resize + (This : in out Help_View; + X, Y, W, H : in Integer); + function Get_Text_Color (This : in Help_View) return Color; @@ -179,14 +181,16 @@ private Hilda : Interfaces.C.Strings.chars_ptr; end record; + overriding procedure Initialize + (This : in out Help_View); + overriding procedure Finalize (This : in out Help_View); procedure Extra_Init (This : in out Help_View; X, Y, W, H : in Integer; - Text : in String) - with Inline; + Text : in String); procedure Extra_Final (This : in out Help_View); diff --git a/src/fltk-widgets-groups-input_choices.adb b/src/fltk-widgets-groups-input_choices.adb index b321dd2..118b9ea 100644 --- a/src/fltk-widgets-groups-input_choices.adb +++ b/src/fltk-widgets-groups-input_choices.adb @@ -21,19 +21,6 @@ package body FLTK.Widgets.Groups.Input_Choices is -- Functions From C -- ------------------------ - procedure input_choice_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, input_choice_set_draw_hook, "input_choice_set_draw_hook"); - pragma Inline (input_choice_set_draw_hook); - - procedure input_choice_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, input_choice_set_handle_hook, "input_choice_set_handle_hook"); - pragma Inline (input_choice_set_handle_hook); - - - - function new_fl_input_choice (X, Y, W, H : in Interfaces.C.int; Text : in Interfaces.C.char_array) @@ -157,6 +144,15 @@ package body FLTK.Widgets.Groups.Input_Choices is + procedure fl_input_choice_resize + (N : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_input_choice_resize, "fl_input_choice_resize"); + pragma Inline (fl_input_choice_resize); + + + + procedure fl_input_choice_draw (W : in Storage.Integer_Address); pragma Import (C, fl_input_choice_draw, "fl_input_choice_draw"); @@ -261,6 +257,14 @@ package body FLTK.Widgets.Groups.Input_Choices is end Extra_Init; + procedure Initialize + (This : in out Input_Choice) is + begin + This.Draw_Ptr := fl_input_choice_draw'Address; + This.Handle_Ptr := fl_input_choice_handle'Address; + end Initialize; + + package body Forge is function Create @@ -276,10 +280,6 @@ package body FLTK.Widgets.Groups.Input_Choices is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - input_choice_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - input_choice_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -288,6 +288,10 @@ package body FLTK.Widgets.Groups.Input_Choices is + ------------------ + -- Attributes -- + ------------------ + function Text_Field (This : in out Input_Choice) return FLTK.Widgets.Inputs.Text.Text_Input_Reference is @@ -306,6 +310,10 @@ package body FLTK.Widgets.Groups.Input_Choices is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Clear (This : in out Input_Choice) is begin @@ -437,22 +445,19 @@ package body FLTK.Widgets.Groups.Input_Choices is - procedure Draw - (This : in out Input_Choice) is - begin - fl_input_choice_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Input_Choice; - Event : in Event_Kind) - return Event_Outcome is + procedure Resize + (This : in out Input_Choice; + X, Y, W, H : in Integer) is begin - return Event_Outcome'Val - (fl_input_choice_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; + fl_input_choice_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; end FLTK.Widgets.Groups.Input_Choices; + diff --git a/src/fltk-widgets-groups-input_choices.ads b/src/fltk-widgets-groups-input_choices.ads index 656fc3a..f97f69a 100644 --- a/src/fltk-widgets-groups-input_choices.ads +++ b/src/fltk-widgets-groups-input_choices.ads @@ -108,13 +108,9 @@ package FLTK.Widgets.Groups.Input_Choices is - procedure Draw - (This : in out Input_Choice); - - function Handle - (This : in out Input_Choice; - Event : in Event_Kind) - return Event_Outcome; + procedure Resize + (This : in out Input_Choice; + X, Y, W, H : in Integer); private @@ -125,6 +121,9 @@ private My_Menu_Button : aliased Menus.Menu_Buttons.Menu_Button; end record; + overriding procedure Initialize + (This : in out Input_Choice); + overriding procedure Finalize (This : in out Input_Choice); @@ -154,9 +153,9 @@ private pragma Inline (Set_Input); pragma Inline (Set_Item); - pragma Inline (Draw); - pragma Inline (Handle); + pragma Inline (Resize); end FLTK.Widgets.Groups.Input_Choices; + diff --git a/src/fltk-widgets-groups-packed.adb b/src/fltk-widgets-groups-packed.adb index ef9ab88..421bca1 100644 --- a/src/fltk-widgets-groups-packed.adb +++ b/src/fltk-widgets-groups-packed.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Groups.Packed is - procedure pack_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, pack_set_draw_hook, "pack_set_draw_hook"); - pragma Inline (pack_set_draw_hook); - - procedure pack_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, pack_set_handle_hook, "pack_set_handle_hook"); - pragma Inline (pack_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_pack (X, Y, W, H : in Interfaces.C.int; @@ -52,6 +43,18 @@ package body FLTK.Widgets.Groups.Packed is pragma Import (C, fl_pack_set_spacing, "fl_pack_set_spacing"); pragma Inline (fl_pack_set_spacing); + function fl_widget_get_type + (P : in Storage.Integer_Address) + return Interfaces.C.unsigned_char; + pragma Import (C, fl_widget_get_type, "fl_widget_get_type"); + pragma Inline (fl_widget_get_type); + + procedure fl_widget_set_type + (P : in Storage.Integer_Address; + T : in Interfaces.C.unsigned_char); + pragma Import (C, fl_widget_set_type, "fl_widget_set_type"); + pragma Inline (fl_widget_set_type); + @@ -70,6 +73,10 @@ package body FLTK.Widgets.Groups.Packed is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Packed_Group) is begin @@ -90,6 +97,10 @@ package body FLTK.Widgets.Groups.Packed is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Packed_Group; X, Y, W, H : in Integer; @@ -99,6 +110,14 @@ package body FLTK.Widgets.Groups.Packed is end Extra_Init; + procedure Initialize + (This : in out Packed_Group) is + begin + This.Draw_Ptr := fl_pack_draw'Address; + This.Handle_Ptr := fl_pack_handle'Address; + end Initialize; + + package body Forge is function Create @@ -114,8 +133,6 @@ package body FLTK.Widgets.Groups.Packed is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - pack_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - pack_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -124,6 +141,10 @@ package body FLTK.Widgets.Groups.Packed is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Spacing (This : in Packed_Group) return Integer is @@ -140,24 +161,33 @@ package body FLTK.Widgets.Groups.Packed is end Set_Spacing; + function Get_Pack_Type + (This : in Packed_Group) + return Pack_Kind is + begin + return Pack_Kind'Val (fl_widget_get_type (This.Void_Ptr)); + exception + when Constraint_Error => raise Internal_FLTK_Error; + end Get_Pack_Type; - procedure Draw - (This : in out Packed_Group) is + procedure Set_Pack_Type + (This : in out Packed_Group; + Kind : in Pack_Kind) is begin - fl_pack_draw (This.Void_Ptr); - end Draw; + fl_widget_set_type (This.Void_Ptr, Pack_Kind'Pos (Kind)); + end Set_Pack_Type; - function Handle - (This : in out Packed_Group; - Event : in Event_Kind) - return Event_Outcome is + + + procedure Draw + (This : in out Packed_Group) is begin - return Event_Outcome'Val - (fl_pack_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; + Group (This).Draw; + end Draw; end FLTK.Widgets.Groups.Packed; + diff --git a/src/fltk-widgets-groups-packed.ads b/src/fltk-widgets-groups-packed.ads index 8bc134d..3f2587c 100644 --- a/src/fltk-widgets-groups-packed.ads +++ b/src/fltk-widgets-groups-packed.ads @@ -12,6 +12,8 @@ package FLTK.Widgets.Groups.Packed is type Packed_Group_Reference (Data : not null access Packed_Group'Class) is limited null record with Implicit_Dereference => Data; + type Pack_Kind is (Vertical_Pack, Horizontal_Pack); + @@ -35,23 +37,29 @@ package FLTK.Widgets.Groups.Packed is (This : in out Packed_Group; To : in Integer); + function Get_Pack_Type + (This : in Packed_Group) + return Pack_Kind; + + procedure Set_Pack_Type + (This : in out Packed_Group; + Kind : in Pack_Kind); + procedure Draw (This : in out Packed_Group); - function Handle - (This : in out Packed_Group; - Event : in Event_Kind) - return Event_Outcome; - private type Packed_Group is new Group with null record; + overriding procedure Initialize + (This : in out Packed_Group); + overriding procedure Finalize (This : in out Packed_Group); @@ -68,10 +76,12 @@ private pragma Inline (Get_Spacing); pragma Inline (Set_Spacing); + pragma Inline (Get_Pack_Type); + pragma Inline (Set_Pack_Type); pragma Inline (Draw); - pragma Inline (Handle); end FLTK.Widgets.Groups.Packed; + diff --git a/src/fltk-widgets-groups-scrolls.adb b/src/fltk-widgets-groups-scrolls.adb index 9bc6a05..f2adadd 100644 --- a/src/fltk-widgets-groups-scrolls.adb +++ b/src/fltk-widgets-groups-scrolls.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Groups.Scrolls is - procedure scroll_set_draw_hook - (S, D : in Storage.Integer_Address); - pragma Import (C, scroll_set_draw_hook, "scroll_set_draw_hook"); - pragma Inline (scroll_set_draw_hook); - - procedure scroll_set_handle_hook - (S, H : in Storage.Integer_Address); - pragma Import (C, scroll_set_handle_hook, "scroll_set_handle_hook"); - pragma Inline (scroll_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_scroll (X, Y, W, H : in Interfaces.C.int; @@ -105,6 +96,10 @@ package body FLTK.Widgets.Groups.Scrolls is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Scroll) is begin @@ -125,6 +120,10 @@ package body FLTK.Widgets.Groups.Scrolls is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Scroll; X, Y, W, H : in Integer; @@ -134,6 +133,14 @@ package body FLTK.Widgets.Groups.Scrolls is end Extra_Init; + procedure Initialize + (This : in out Scroll) is + begin + This.Draw_Ptr := fl_scroll_draw'Address; + This.Handle_Ptr := fl_scroll_handle'Address; + end Initialize; + + package body Forge is function Create @@ -149,8 +156,6 @@ package body FLTK.Widgets.Groups.Scrolls is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - scroll_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - scroll_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -159,6 +164,10 @@ package body FLTK.Widgets.Groups.Scrolls is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Clear (This : in out Scroll) is begin @@ -223,7 +232,7 @@ package body FLTK.Widgets.Groups.Scrolls is procedure Draw (This : in out Scroll) is begin - fl_scroll_draw (This.Void_Ptr); + Group (This).Draw; end Draw; @@ -232,10 +241,10 @@ package body FLTK.Widgets.Groups.Scrolls is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_scroll_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Group (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Scrolls; + diff --git a/src/fltk-widgets-groups-scrolls.ads b/src/fltk-widgets-groups-scrolls.ads index f571230..11b7f9a 100644 --- a/src/fltk-widgets-groups-scrolls.ads +++ b/src/fltk-widgets-groups-scrolls.ads @@ -88,6 +88,9 @@ private type Scroll is new Group with null record; + overriding procedure Initialize + (This : in out Scroll); + overriding procedure Finalize (This : in out Scroll); @@ -118,3 +121,4 @@ private end FLTK.Widgets.Groups.Scrolls; + diff --git a/src/fltk-widgets-groups-spinners.adb b/src/fltk-widgets-groups-spinners.adb index 91ed74a..1ddc806 100644 --- a/src/fltk-widgets-groups-spinners.adb +++ b/src/fltk-widgets-groups-spinners.adb @@ -16,18 +16,9 @@ use type package body FLTK.Widgets.Groups.Spinners is - procedure spinner_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, spinner_set_draw_hook, "spinner_set_draw_hook"); - pragma Inline (spinner_set_draw_hook); - - procedure spinner_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, spinner_set_handle_hook, "spinner_set_handle_hook"); - pragma Inline (spinner_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_spinner (X, Y, W, H : in Interfaces.C.int; @@ -176,6 +167,15 @@ package body FLTK.Widgets.Groups.Spinners is + procedure fl_spinner_resize + (S : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_spinner_resize, "fl_spinner_resize"); + pragma Inline (fl_spinner_resize); + + + + procedure fl_spinner_draw (W : in Storage.Integer_Address); pragma Import (C, fl_spinner_draw, "fl_spinner_draw"); @@ -191,6 +191,10 @@ package body FLTK.Widgets.Groups.Spinners is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Spinner) is begin @@ -211,6 +215,10 @@ package body FLTK.Widgets.Groups.Spinners is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Spinner; X, Y, W, H : in Integer; @@ -220,6 +228,14 @@ package body FLTK.Widgets.Groups.Spinners is end Extra_Init; + procedure Initialize + (This : in out Spinner) is + begin + This.Draw_Ptr := fl_spinner_draw'Address; + This.Handle_Ptr := fl_spinner_handle'Address; + end Initialize; + + package body Forge is function Create @@ -235,8 +251,6 @@ package body FLTK.Widgets.Groups.Spinners is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - spinner_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - spinner_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -245,6 +259,10 @@ package body FLTK.Widgets.Groups.Spinners is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Background_Color (This : in Spinner) return Color is @@ -429,11 +447,19 @@ package body FLTK.Widgets.Groups.Spinners is - procedure Draw - (This : in out Spinner) is + procedure Resize + (This : in out Spinner; + X, Y, W, H : in Integer) is begin - fl_spinner_draw (This.Void_Ptr); - end Draw; + fl_spinner_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; + + function Handle @@ -441,10 +467,10 @@ package body FLTK.Widgets.Groups.Spinners is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_spinner_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Group (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Spinners; + diff --git a/src/fltk-widgets-groups-spinners.ads b/src/fltk-widgets-groups-spinners.ads index be7b8d9..5c6233e 100644 --- a/src/fltk-widgets-groups-spinners.ads +++ b/src/fltk-widgets-groups-spinners.ads @@ -123,8 +123,12 @@ package FLTK.Widgets.Groups.Spinners is - procedure Draw - (This : in out Spinner); + procedure Resize + (This : in out Spinner; + X, Y, W, H : in Integer); + + + function Handle (This : in out Spinner; @@ -137,6 +141,9 @@ private type Spinner is new Group with null record; + overriding procedure Initialize + (This : in out Spinner); + overriding procedure Finalize (This : in out Spinner); @@ -174,9 +181,11 @@ private pragma Inline (Get_Value); pragma Inline (Set_Value); - pragma Inline (Draw); + pragma Inline (Resize); + pragma Inline (Handle); end FLTK.Widgets.Groups.Spinners; + diff --git a/src/fltk-widgets-groups-tabbed.adb b/src/fltk-widgets-groups-tabbed.adb index cd7684a..37556e5 100644 --- a/src/fltk-widgets-groups-tabbed.adb +++ b/src/fltk-widgets-groups-tabbed.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Groups.Tabbed is - procedure tabs_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, tabs_set_draw_hook, "tabs_set_draw_hook"); - pragma Inline (tabs_set_draw_hook); - - procedure tabs_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, tabs_set_handle_hook, "tabs_set_handle_hook"); - pragma Inline (tabs_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_tabs (X, Y, W, H : in Interfaces.C.int; @@ -87,6 +78,11 @@ package body FLTK.Widgets.Groups.Tabbed is pragma Import (C, fl_tabs_draw, "fl_tabs_draw"); pragma Inline (fl_tabs_draw); + procedure fl_tabs_redraw_tabs + (T : in Storage.Integer_Address); + pragma Import (C, fl_tabs_redraw_tabs, "fl_tabs_redraw_tabs"); + pragma Inline (fl_tabs_redraw_tabs); + function fl_tabs_handle (W : in Storage.Integer_Address; E : in Interfaces.C.int) @@ -97,6 +93,10 @@ package body FLTK.Widgets.Groups.Tabbed is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Tabbed_Group) is begin @@ -117,6 +117,10 @@ package body FLTK.Widgets.Groups.Tabbed is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Tabbed_Group; X, Y, W, H : in Integer; @@ -126,6 +130,14 @@ package body FLTK.Widgets.Groups.Tabbed is end Extra_Init; + procedure Initialize + (This : in out Tabbed_Group) is + begin + This.Draw_Ptr := fl_tabs_draw'Address; + This.Handle_Ptr := fl_tabs_handle'Address; + end Initialize; + + package body Forge is function Create @@ -141,8 +153,6 @@ package body FLTK.Widgets.Groups.Tabbed is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - tabs_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - tabs_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -151,6 +161,10 @@ package body FLTK.Widgets.Groups.Tabbed is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Get_Client_Area (This : in Tabbed_Group; Tab_Height : in Natural; @@ -229,19 +243,26 @@ package body FLTK.Widgets.Groups.Tabbed is procedure Draw (This : in out Tabbed_Group) is begin - fl_tabs_draw (This.Void_Ptr); + Group (This).Draw; end Draw; + procedure Redraw_Tabs + (This : in out Tabbed_Group) is + begin + fl_tabs_redraw_tabs (This.Void_Ptr); + end Redraw_Tabs; + + function Handle (This : in out Tabbed_Group; Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_tabs_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Group (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Tabbed; + diff --git a/src/fltk-widgets-groups-tabbed.ads b/src/fltk-widgets-groups-tabbed.ads index cadd144..136c66e 100644 --- a/src/fltk-widgets-groups-tabbed.ads +++ b/src/fltk-widgets-groups-tabbed.ads @@ -62,6 +62,9 @@ package FLTK.Widgets.Groups.Tabbed is procedure Draw (This : in out Tabbed_Group); + procedure Redraw_Tabs + (This : in out Tabbed_Group); + function Handle (This : in out Tabbed_Group; Event : in Event_Kind) @@ -73,6 +76,9 @@ private type Tabbed_Group is new Group with null record; + overriding procedure Initialize + (This : in out Tabbed_Group); + overriding procedure Finalize (This : in out Tabbed_Group); @@ -96,8 +102,10 @@ private pragma Inline (Get_Which); pragma Inline (Draw); + pragma Inline (Redraw_Tabs); pragma Inline (Handle); end FLTK.Widgets.Groups.Tabbed; + diff --git a/src/fltk-widgets-groups-text_displays-text_editors.adb b/src/fltk-widgets-groups-text_displays-text_editors.adb index 2ff5afc..3cb60de 100644 --- a/src/fltk-widgets-groups-text_displays-text_editors.adb +++ b/src/fltk-widgets-groups-text_displays-text_editors.adb @@ -17,18 +17,9 @@ use type package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is - procedure text_editor_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, text_editor_set_draw_hook, "text_editor_set_draw_hook"); - pragma Inline (text_editor_set_draw_hook); - - procedure text_editor_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, text_editor_set_handle_hook, "text_editor_set_handle_hook"); - pragma Inline (text_editor_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_text_editor (X, Y, W, H : in Interfaces.C.int; @@ -356,6 +347,10 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is + ---------------------- + -- Callback Hooks -- + ---------------------- + function Key_Func_Hook (K : in Interfaces.C.int; E : in Storage.Integer_Address) @@ -384,6 +379,10 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Text_Editor) is begin @@ -435,6 +434,12 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is -- (Escape_Key, -1)); + + + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Text_Editor; X, Y, W, H : in Integer; @@ -481,6 +486,14 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is end Extra_Init; + procedure Initialize + (This : in out Text_Editor) is + begin + This.Draw_Ptr := fl_text_editor_draw'Address; + This.Handle_Ptr := fl_text_editor_handle'Address; + end Initialize; + + package body Forge is function Create @@ -498,10 +511,6 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - text_editor_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - text_editor_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -510,6 +519,10 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Default (This : in out Text_Editor'Class; Key : in Key_Combo) is @@ -988,22 +1001,15 @@ package body FLTK.Widgets.Groups.Text_Displays.Text_Editors is - procedure Draw - (This : in out Text_Editor) is - begin - fl_text_editor_draw (This.Void_Ptr); - end Draw; - - function Handle (This : in out Text_Editor; Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_text_editor_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Text_Display (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Text_Displays.Text_Editors; + diff --git a/src/fltk-widgets-groups-text_displays-text_editors.ads b/src/fltk-widgets-groups-text_displays-text_editors.ads index 8eb604a..6520d69 100644 --- a/src/fltk-widgets-groups-text_displays-text_editors.ads +++ b/src/fltk-widgets-groups-text_displays-text_editors.ads @@ -320,9 +320,6 @@ package FLTK.Widgets.Groups.Text_Displays.Text_Editors is - procedure Draw - (This : in out Text_Editor); - function Handle (This : in out Text_Editor; Event : in Event_Kind) @@ -341,6 +338,9 @@ private Default_Func : Default_Key_Func; end record; + overriding procedure Initialize + (This : in out Text_Editor); + overriding procedure Finalize (This : in out Text_Editor); @@ -424,9 +424,9 @@ private -- pragma Inline (Get_Tab_Nav_Mode); -- pragma Inline (Set_Tab_Nav_Mode); - pragma Inline (Draw); pragma Inline (Handle); end FLTK.Widgets.Groups.Text_Displays.Text_Editors; + diff --git a/src/fltk-widgets-groups-text_displays.adb b/src/fltk-widgets-groups-text_displays.adb index 563fbbf..170ed51 100644 --- a/src/fltk-widgets-groups-text_displays.adb +++ b/src/fltk-widgets-groups-text_displays.adb @@ -17,18 +17,9 @@ use type package body FLTK.Widgets.Groups.Text_Displays is - procedure text_display_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, text_display_set_draw_hook, "text_display_set_draw_hook"); - pragma Inline (text_display_set_draw_hook); - - procedure text_display_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, text_display_set_handle_hook, "text_display_set_handle_hook"); - pragma Inline (text_display_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_text_display (X, Y, W, H : in Interfaces.C.int; @@ -449,6 +440,10 @@ package body FLTK.Widgets.Groups.Text_Displays is + ---------------------- + -- Callback Hooks -- + ---------------------- + procedure Style_Hook (C : in Interfaces.C.int; D : in Storage.Integer_Address) @@ -466,6 +461,10 @@ package body FLTK.Widgets.Groups.Text_Displays is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Text_Display) is begin @@ -487,6 +486,10 @@ package body FLTK.Widgets.Groups.Text_Displays is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Text_Display; X, Y, W, H : in Integer; @@ -496,6 +499,14 @@ package body FLTK.Widgets.Groups.Text_Displays is end Extra_Init; + procedure Initialize + (This : in out Text_Display) is + begin + This.Draw_Ptr := fl_text_display_draw'Address; + This.Handle_Ptr := fl_text_display_handle'Address; + end Initialize; + + package body Forge is function Create @@ -511,10 +522,6 @@ package body FLTK.Widgets.Groups.Text_Displays is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - text_display_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - text_display_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -523,6 +530,10 @@ package body FLTK.Widgets.Groups.Text_Displays is + ---------------------- + -- Child Packages -- + ---------------------- + package body Styles is function Item @@ -546,6 +557,10 @@ package body FLTK.Widgets.Groups.Text_Displays is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Buffer (This : in Text_Display) return FLTK.Text_Buffers.Text_Buffer_Reference is @@ -1105,7 +1120,7 @@ package body FLTK.Widgets.Groups.Text_Displays is procedure Draw (This : in out Text_Display) is begin - fl_text_display_draw (This.Void_Ptr); + Group (This).Draw; end Draw; @@ -1114,10 +1129,10 @@ package body FLTK.Widgets.Groups.Text_Displays is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_text_display_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Group (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Text_Displays; + diff --git a/src/fltk-widgets-groups-text_displays.ads b/src/fltk-widgets-groups-text_displays.ads index bf7d662..f4ffd43 100644 --- a/src/fltk-widgets-groups-text_displays.ads +++ b/src/fltk-widgets-groups-text_displays.ads @@ -26,6 +26,7 @@ package FLTK.Widgets.Groups.Text_Displays is type Cursor_Style is (Normal, Caret, Dim, Block, Heavy, Simple); + Bounds_Error : exception; @@ -220,13 +221,13 @@ package FLTK.Widgets.Groups.Text_Displays is - -- takes into account word wrap + -- Takes into account word wrap function Line_Start (This : in Text_Display; Pos : in Natural) return Natural; - -- takes into account word wrap + -- Takes into account word wrap function Line_End (This : in Text_Display; Pos : in Natural; @@ -239,14 +240,14 @@ package FLTK.Widgets.Groups.Text_Displays is Start_Pos_Is_Line_Start : in Boolean := False) return Natural; - -- takes into account word wrap as well as newline characters + -- Takes into account word wrap as well as newline characters function Skip_Lines (This : in Text_Display; Start, Lines : in Natural; Start_Pos_Is_Line_Start : in Boolean := False) return Natural; - -- takes into account word wrap as well as newline characters + -- Takes into account word wrap as well as newline characters function Rewind_Lines (This : in Text_Display; Start, Lines : in Natural) @@ -367,6 +368,9 @@ private Style_Callback : Styles.Unfinished_Style_Callback; end record; + overriding procedure Initialize + (This : in out Text_Display); + overriding procedure Finalize (This : in out Text_Display); @@ -469,3 +473,4 @@ private end FLTK.Widgets.Groups.Text_Displays; + diff --git a/src/fltk-widgets-groups-tiled.adb b/src/fltk-widgets-groups-tiled.adb index 05dcd61..bf3950c 100644 --- a/src/fltk-widgets-groups-tiled.adb +++ b/src/fltk-widgets-groups-tiled.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Groups.Tiled is - procedure tile_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, tile_set_draw_hook, "tile_set_draw_hook"); - pragma Inline (tile_set_draw_hook); - - procedure tile_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, tile_set_handle_hook, "tile_set_handle_hook"); - pragma Inline (tile_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_tile (X, Y, W, H : in Interfaces.C.int; @@ -46,6 +37,12 @@ package body FLTK.Widgets.Groups.Tiled is pragma Import (C, fl_tile_position, "fl_tile_position"); pragma Inline (fl_tile_position); + procedure fl_tile_resize + (T : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_tile_resize, "fl_tile_resize"); + pragma Inline (fl_tile_resize); + @@ -64,6 +61,10 @@ package body FLTK.Widgets.Groups.Tiled is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Tiled_Group) is begin @@ -84,6 +85,10 @@ package body FLTK.Widgets.Groups.Tiled is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Tiled_Group; X, Y, W, H : in Integer; @@ -93,6 +98,14 @@ package body FLTK.Widgets.Groups.Tiled is end Extra_Init; + procedure Initialize + (This : in out Tiled_Group) is + begin + This.Draw_Ptr := fl_tile_draw'Address; + This.Handle_Ptr := fl_tile_handle'Address; + end Initialize; + + package body Forge is function Create @@ -108,8 +121,6 @@ package body FLTK.Widgets.Groups.Tiled is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - tile_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - tile_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -118,6 +129,10 @@ package body FLTK.Widgets.Groups.Tiled is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Position (This : in out Tiled_Group; Old_X, Old_Y : in Integer; @@ -130,13 +145,19 @@ package body FLTK.Widgets.Groups.Tiled is end Position; + procedure Resize + (This : in out Tiled_Group; + X, Y, W, H : in Integer) is + begin + fl_tile_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; - procedure Draw - (This : in out Tiled_Group) is - begin - fl_tile_draw (This.Void_Ptr); - end Draw; function Handle @@ -144,10 +165,10 @@ package body FLTK.Widgets.Groups.Tiled is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_tile_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Group (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Tiled; + diff --git a/src/fltk-widgets-groups-tiled.ads b/src/fltk-widgets-groups-tiled.ads index 7dc3d0d..1580464 100644 --- a/src/fltk-widgets-groups-tiled.ads +++ b/src/fltk-widgets-groups-tiled.ads @@ -32,11 +32,12 @@ package FLTK.Widgets.Groups.Tiled is Old_X, Old_Y : in Integer; New_X, New_Y : in Integer); + procedure Resize + (This : in out Tiled_Group; + X, Y, W, H : in Integer); - procedure Draw - (This : in out Tiled_Group); function Handle (This : in out Tiled_Group; @@ -49,6 +50,9 @@ private type Tiled_Group is new Group with null record; + overriding procedure Initialize + (This : in out Tiled_Group); + overriding procedure Finalize (This : in out Tiled_Group); @@ -64,10 +68,11 @@ private pragma Inline (Position); + pragma Inline (Resize); - pragma Inline (Draw); pragma Inline (Handle); end FLTK.Widgets.Groups.Tiled; + diff --git a/src/fltk-widgets-groups-windows-double-cairo.adb b/src/fltk-widgets-groups-windows-double-cairo.adb index 61ea232..eeeab90 100644 --- a/src/fltk-widgets-groups-windows-double-cairo.adb +++ b/src/fltk-widgets-groups-windows-double-cairo.adb @@ -134,6 +134,14 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is end Extra_Init; + procedure Initialize + (This : in out Cairo_Window) is + begin + This.Draw_Ptr := fl_cairo_window_draw'Address; + This.Handle_Ptr := fl_cairo_window_handle'Address; + end Initialize; + + package body Forge is function Create @@ -202,20 +210,10 @@ package body FLTK.Widgets.Groups.Windows.Double.Cairo is procedure Draw (This : in out Cairo_Window) is begin - fl_cairo_window_draw (This.Void_Ptr); + Double_Window (This).Draw; end Draw; - function Handle - (This : in out Cairo_Window; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_cairo_window_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Groups.Windows.Double.Cairo; diff --git a/src/fltk-widgets-groups-windows-double-cairo.ads b/src/fltk-widgets-groups-windows-double-cairo.ads index 111f7ac..02a1dbf 100644 --- a/src/fltk-widgets-groups-windows-double-cairo.ads +++ b/src/fltk-widgets-groups-windows-double-cairo.ads @@ -65,11 +65,6 @@ package FLTK.Widgets.Groups.Windows.Double.Cairo is procedure Draw (This : in out Cairo_Window); - function Handle - (This : in out Cairo_Window; - Event : in Event_Kind) - return Event_Outcome; - private @@ -78,6 +73,9 @@ private My_Func : Cairo_Callback; end record; + overriding procedure Initialize + (This : in out Cairo_Window); + overriding procedure Finalize (This : in out Cairo_Window); @@ -93,7 +91,6 @@ private pragma Inline (Set_Cairo_Draw); pragma Inline (Draw); - pragma Inline (Handle); end FLTK.Widgets.Groups.Windows.Double.Cairo; diff --git a/src/fltk-widgets-groups-windows-double-overlay.adb b/src/fltk-widgets-groups-windows-double-overlay.adb index 90f4754..33a2f92 100644 --- a/src/fltk-widgets-groups-windows-double-overlay.adb +++ b/src/fltk-widgets-groups-windows-double-overlay.adb @@ -17,24 +17,9 @@ use type package body FLTK.Widgets.Groups.Windows.Double.Overlay is - procedure overlay_window_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, overlay_window_set_draw_hook, "overlay_window_set_draw_hook"); - pragma Inline (overlay_window_set_draw_hook); - - procedure overlay_window_set_draw_overlay_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, overlay_window_set_draw_overlay_hook, - "overlay_window_set_draw_overlay_hook"); - pragma Inline (overlay_window_set_draw_overlay_hook); - - procedure overlay_window_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, overlay_window_set_handle_hook, "overlay_window_set_handle_hook"); - pragma Inline (overlay_window_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_overlay_window (X, Y, W, H : in Interfaces.C.int; @@ -82,6 +67,12 @@ package body FLTK.Widgets.Groups.Windows.Double.Overlay is pragma Import (C, fl_overlay_window_can_do_overlay, "fl_overlay_window_can_do_overlay"); pragma Inline (fl_overlay_window_can_do_overlay); + procedure fl_overlay_window_resize + (OW : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_overlay_window_resize, "fl_overlay_window_resize"); + pragma Inline (fl_overlay_window_resize); + @@ -105,20 +96,31 @@ package body FLTK.Widgets.Groups.Windows.Double.Overlay is + ---------------------- + -- Exported Hooks -- + ---------------------- + package Over_Convert is new System.Address_To_Access_Conversions (Overlay_Window'Class); + procedure Overlay_Window_Draw_Overlay_Hook + (U : in Storage.Integer_Address); + pragma Export (C, Overlay_Window_Draw_Overlay_Hook, "overlay_window_draw_overlay_hook"); - procedure Draw_Overlay_Hook + procedure Overlay_Window_Draw_Overlay_Hook (U : in Storage.Integer_Address) is Overlay_Widget : access Overlay_Window'Class := Over_Convert.To_Pointer (Storage.To_Address (U)); begin Overlay_Widget.Draw_Overlay; - end Draw_Overlay_Hook; + end Overlay_Window_Draw_Overlay_Hook; + + ------------------- + -- Destructors -- + ------------------- procedure Extra_Final (This : in out Overlay_Window) is @@ -153,6 +155,14 @@ package body FLTK.Widgets.Groups.Windows.Double.Overlay is end Extra_Init; + procedure Initialize + (This : in out Overlay_Window) is + begin + This.Draw_Ptr := fl_overlay_window_draw'Address; + This.Handle_Ptr := fl_overlay_window_handle'Address; + end Initialize; + + package body Forge is function Create @@ -168,12 +178,6 @@ package body FLTK.Widgets.Groups.Windows.Double.Overlay is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - overlay_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - overlay_window_set_draw_overlay_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Overlay_Hook'Address)); - overlay_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -189,12 +193,6 @@ package body FLTK.Widgets.Groups.Windows.Double.Overlay is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, This.Get_X, This.Get_Y, W, H, Text); - overlay_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - overlay_window_set_draw_overlay_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Overlay_Hook'Address)); - overlay_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -242,17 +240,30 @@ package body FLTK.Widgets.Groups.Windows.Double.Overlay is end Can_Do_Overlay; + procedure Resize + (This : in out Overlay_Window; + X, Y, W, H : in Integer) is + begin + fl_overlay_window_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; + + ---------------------------------- -- Drawing and Event Handling -- ---------------------------------- - procedure Draw + procedure Draw_Overlay (This : in out Overlay_Window) is begin - fl_overlay_window_draw (This.Void_Ptr); - end Draw; + raise Program_Error with "You must override Draw_Overlay"; + end Draw_Overlay; procedure Redraw_Overlay @@ -262,15 +273,6 @@ package body FLTK.Widgets.Groups.Windows.Double.Overlay is end Redraw_Overlay; - function Handle - (This : in out Overlay_Window; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_overlay_window_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Groups.Windows.Double.Overlay; + diff --git a/src/fltk-widgets-groups-windows-double-overlay.ads b/src/fltk-widgets-groups-windows-double-overlay.ads index 097abb8..082087c 100644 --- a/src/fltk-widgets-groups-windows-double-overlay.ads +++ b/src/fltk-widgets-groups-windows-double-overlay.ads @@ -7,10 +7,6 @@ package FLTK.Widgets.Groups.Windows.Double.Overlay is - ------------- - -- Types -- - ------------- - type Overlay_Window is new Double_Window with private; type Overlay_Window_Reference (Data : not null access Overlay_Window'Class) is @@ -19,10 +15,6 @@ package FLTK.Widgets.Groups.Windows.Double.Overlay is - -------------------- - -- Constructors -- - -------------------- - package Forge is function Create @@ -40,10 +32,6 @@ package FLTK.Widgets.Groups.Windows.Double.Overlay is - --------------- - -- Display -- - --------------- - procedure Show (This : in out Overlay_Window); @@ -56,41 +44,33 @@ package FLTK.Widgets.Groups.Windows.Double.Overlay is - ------------- - -- Other -- - ------------- - function Can_Do_Overlay (This : in Overlay_Window) return Boolean; + procedure Resize + (This : in out Overlay_Window; + X, Y, W, H : in Integer); - ---------------------------------- - -- Drawing and Event Handling -- - ---------------------------------- - - procedure Draw - (This : in out Overlay_Window); + -- You must override this subprogram procedure Draw_Overlay - (This : in out Overlay_Window) is null; + (This : in out Overlay_Window); procedure Redraw_Overlay (This : in out Overlay_Window); - function Handle - (This : in out Overlay_Window; - Event : in Event_Kind) - return Event_Outcome; - private type Overlay_Window is new Double_Window with null record; + overriding procedure Initialize + (This : in out Overlay_Window); + overriding procedure Finalize (This : in out Overlay_Window); @@ -110,11 +90,11 @@ private pragma Inline (Flush); pragma Inline (Can_Do_Overlay); + pragma Inline (Resize); - pragma Inline (Draw); pragma Inline (Redraw_Overlay); - pragma Inline (Handle); end FLTK.Widgets.Groups.Windows.Double.Overlay; + diff --git a/src/fltk-widgets-groups-windows-double.adb b/src/fltk-widgets-groups-windows-double.adb index 24ee93d..cff5c5c 100644 --- a/src/fltk-widgets-groups-windows-double.adb +++ b/src/fltk-widgets-groups-windows-double.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Groups.Windows.Double is - procedure double_window_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, double_window_set_draw_hook, "double_window_set_draw_hook"); - pragma Inline (double_window_set_draw_hook); - - procedure double_window_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, double_window_set_handle_hook, "double_window_set_handle_hook"); - pragma Inline (double_window_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_double_window (X, Y, W, H : in Interfaces.C.int; @@ -65,6 +56,15 @@ package body FLTK.Widgets.Groups.Windows.Double is + procedure fl_double_window_resize + (DW : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_double_window_resize, "fl_double_window_resize"); + pragma Inline (fl_double_window_resize); + + + + procedure fl_double_window_draw (W : in Storage.Integer_Address); pragma Import (C, fl_double_window_draw, "fl_double_window_draw"); @@ -80,6 +80,10 @@ package body FLTK.Widgets.Groups.Windows.Double is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Double_Window) is begin @@ -100,6 +104,10 @@ package body FLTK.Widgets.Groups.Windows.Double is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Double_Window; X, Y, W, H : in Integer; @@ -109,6 +117,14 @@ package body FLTK.Widgets.Groups.Windows.Double is end Extra_Init; + procedure Initialize + (This : in out Double_Window) is + begin + This.Draw_Ptr := fl_double_window_draw'Address; + This.Handle_Ptr := fl_double_window_handle'Address; + end Initialize; + + package body Forge is function Create @@ -124,10 +140,6 @@ package body FLTK.Widgets.Groups.Windows.Double is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - double_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - double_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -143,10 +155,6 @@ package body FLTK.Widgets.Groups.Windows.Double is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, This.Get_X, This.Get_Y, W, H, Text); - double_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - double_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -155,6 +163,10 @@ package body FLTK.Widgets.Groups.Windows.Double is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Show (This : in out Double_Window) is begin @@ -178,22 +190,19 @@ package body FLTK.Widgets.Groups.Windows.Double is - procedure Draw - (This : in out Double_Window) is - begin - fl_double_window_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Double_Window; - Event : in Event_Kind) - return Event_Outcome is + procedure Resize + (This : in out Double_Window; + X, Y, W, H : in Integer) is begin - return Event_Outcome'Val - (fl_double_window_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; + fl_double_window_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; end FLTK.Widgets.Groups.Windows.Double; + diff --git a/src/fltk-widgets-groups-windows-double.ads b/src/fltk-widgets-groups-windows-double.ads index a72c090..f4e7089 100644 --- a/src/fltk-widgets-groups-windows-double.ads +++ b/src/fltk-widgets-groups-windows-double.ads @@ -14,6 +14,7 @@ package FLTK.Widgets.Groups.Windows.Double is + package Forge is function Create @@ -43,13 +44,9 @@ package FLTK.Widgets.Groups.Windows.Double is - procedure Draw - (This : in out Double_Window); - - function Handle - (This : in out Double_Window; - Event : in Event_Kind) - return Event_Outcome; + procedure Resize + (This : in out Double_Window; + X, Y, W, H : in Integer); private @@ -57,6 +54,9 @@ private type Double_Window is new Window with null record; + overriding procedure Initialize + (This : in out Double_Window); + overriding procedure Finalize (This : in out Double_Window); @@ -75,9 +75,9 @@ private pragma Inline (Hide); pragma Inline (Flush); - pragma Inline (Draw); - pragma Inline (Handle); + pragma Inline (Resize); end FLTK.Widgets.Groups.Windows.Double; + diff --git a/src/fltk-widgets-groups-windows-opengl.adb b/src/fltk-widgets-groups-windows-opengl.adb index fd43bc0..04a4b65 100644 --- a/src/fltk-widgets-groups-windows-opengl.adb +++ b/src/fltk-widgets-groups-windows-opengl.adb @@ -19,18 +19,9 @@ use type package body FLTK.Widgets.Groups.Windows.OpenGL is - procedure gl_window_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, gl_window_set_draw_hook, "gl_window_set_draw_hook"); - pragma Inline (gl_window_set_draw_hook); - - procedure gl_window_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, gl_window_set_handle_hook, "gl_window_set_handle_hook"); - pragma Inline (gl_window_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_gl_window (X, Y, W, H : in Interfaces.C.int; @@ -95,6 +86,12 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is pragma Import (C, fl_gl_window_pixels_per_unit, "fl_gl_window_pixels_per_unit"); pragma Inline (fl_gl_window_pixels_per_unit); + procedure fl_gl_window_resize + (G : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_gl_window_resize, "fl_gl_window_resize"); + pragma Inline (fl_gl_window_resize); + @@ -210,6 +207,10 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out GL_Window) is begin @@ -243,6 +244,14 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is end Extra_Init; + procedure Initialize + (This : in out GL_Window) is + begin + This.Draw_Ptr := fl_gl_window_draw'Address; + This.Handle_Ptr := fl_gl_window_handle'Address; + end Initialize; + + package body Forge is function Create @@ -258,8 +267,6 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - gl_window_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - gl_window_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -275,8 +282,6 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, This.Get_X, This.Get_Y, W, H, Text); - gl_window_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - gl_window_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -347,6 +352,19 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is end Pixels_Per_Unit; + procedure Resize + (This : in out GL_Window; + X, Y, W, H : in Integer) is + begin + fl_gl_window_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; + + -------------------- @@ -493,7 +511,7 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is procedure Draw (This : in out GL_Window) is begin - fl_gl_window_draw (This.Void_Ptr); + Window (This).Draw; end Draw; @@ -502,10 +520,10 @@ package body FLTK.Widgets.Groups.Windows.OpenGL is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_gl_window_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Window (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Windows.OpenGL; + diff --git a/src/fltk-widgets-groups-windows-opengl.ads b/src/fltk-widgets-groups-windows-opengl.ads index 63762fb..9c8d1c9 100644 --- a/src/fltk-widgets-groups-windows-opengl.ads +++ b/src/fltk-widgets-groups-windows-opengl.ads @@ -16,10 +16,6 @@ private with package FLTK.Widgets.Groups.Windows.OpenGL is - ------------- - -- Types -- - ------------- - type GL_Window is new Window with private; type GL_Window_Reference (Data : not null access GL_Window'Class) is @@ -44,10 +40,6 @@ package FLTK.Widgets.Groups.Windows.OpenGL is - -------------------- - -- Constructors -- - -------------------- - package Forge is function Create @@ -100,6 +92,10 @@ package FLTK.Widgets.Groups.Windows.OpenGL is (This : in GL_Window) return Float; + procedure Resize + (This : in out GL_Window; + X, Y, W, H : in Integer); + @@ -195,6 +191,9 @@ private type GL_Window is new Window with null record; + overriding procedure Initialize + (This : in out GL_Window); + overriding procedure Finalize (This : in out GL_Window); @@ -260,3 +259,4 @@ private end FLTK.Widgets.Groups.Windows.OpenGL; + diff --git a/src/fltk-widgets-groups-windows-single-menu.adb b/src/fltk-widgets-groups-windows-single-menu.adb index fa2c9b3..7448c3b 100644 --- a/src/fltk-widgets-groups-windows-single-menu.adb +++ b/src/fltk-widgets-groups-windows-single-menu.adb @@ -16,18 +16,9 @@ use type package body FLTK.Widgets.Groups.Windows.Single.Menu is - procedure menu_window_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, menu_window_set_draw_hook, "menu_window_set_draw_hook"); - pragma Inline (menu_window_set_draw_hook); - - procedure menu_window_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, menu_window_set_handle_hook, "menu_window_set_handle_hook"); - pragma Inline (menu_window_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_menu_window (X, Y, W, H : in Interfaces.C.int; @@ -103,6 +94,10 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Menu_Window) is begin @@ -123,6 +118,10 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Menu_Window; X, Y, W, H : in Integer; @@ -132,6 +131,14 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is end Extra_Init; + procedure Initialize + (This : in out Menu_Window) is + begin + This.Draw_Ptr := fl_menu_window_draw'Address; + This.Handle_Ptr := fl_menu_window_handle'Address; + end Initialize; + + package body Forge is function Create @@ -147,10 +154,6 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - menu_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - menu_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -166,10 +169,6 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, This.Get_X, This.Get_Y, W, H, Text); - menu_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - menu_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -178,6 +177,10 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Show (This : in out Menu_Window) is begin @@ -221,24 +224,6 @@ package body FLTK.Widgets.Groups.Windows.Single.Menu is end Set_Overlay; - - - procedure Draw - (This : in out Menu_Window) is - begin - fl_menu_window_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Menu_Window; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_menu_window_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Groups.Windows.Single.Menu; + diff --git a/src/fltk-widgets-groups-windows-single-menu.ads b/src/fltk-widgets-groups-windows-single-menu.ads index d380141..1908d72 100644 --- a/src/fltk-widgets-groups-windows-single-menu.ads +++ b/src/fltk-widgets-groups-windows-single-menu.ads @@ -53,22 +53,14 @@ package FLTK.Widgets.Groups.Windows.Single.Menu is Value : in Boolean); - - - procedure Draw - (This : in out Menu_Window); - - function Handle - (This : in out Menu_Window; - Event : in Event_Kind) - return Event_Outcome; - - private type Menu_Window is new Single_Window with null record; + overriding procedure Initialize + (This : in out Menu_Window); + overriding procedure Finalize (This : in out Menu_Window); @@ -90,9 +82,7 @@ private pragma Inline (Is_Overlay); pragma Inline (Set_Overlay); - pragma Inline (Draw); - pragma Inline (Handle); - end FLTK.Widgets.Groups.Windows.Single.Menu; + diff --git a/src/fltk-widgets-groups-windows-single.adb b/src/fltk-widgets-groups-windows-single.adb index 1c90ba3..720ce28 100644 --- a/src/fltk-widgets-groups-windows-single.adb +++ b/src/fltk-widgets-groups-windows-single.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Groups.Windows.Single is - procedure single_window_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, single_window_set_draw_hook, "single_window_set_draw_hook"); - pragma Inline (single_window_set_draw_hook); - - procedure single_window_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, single_window_set_handle_hook, "single_window_set_handle_hook"); - pragma Inline (single_window_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_single_window (X, Y, W, H : in Interfaces.C.int; @@ -60,6 +51,14 @@ package body FLTK.Widgets.Groups.Windows.Single is + procedure fl_single_window_make_current + (S : in Storage.Integer_Address); + pragma Import (C, fl_single_window_make_current, "fl_single_window_make_current"); + pragma Inline (fl_single_window_make_current); + + + + procedure fl_single_window_draw (W : in Storage.Integer_Address); pragma Import (C, fl_single_window_draw, "fl_single_window_draw"); @@ -75,6 +74,10 @@ package body FLTK.Widgets.Groups.Windows.Single is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Single_Window) is begin @@ -95,6 +98,10 @@ package body FLTK.Widgets.Groups.Windows.Single is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Single_Window; X, Y, W, H : in Integer; @@ -104,6 +111,14 @@ package body FLTK.Widgets.Groups.Windows.Single is end Extra_Init; + procedure Initialize + (This : in out Single_Window) is + begin + This.Draw_Ptr := fl_single_window_draw'Address; + This.Handle_Ptr := fl_single_window_handle'Address; + end Initialize; + + package body Forge is function Create @@ -119,10 +134,6 @@ package body FLTK.Widgets.Groups.Windows.Single is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - single_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - single_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -138,10 +149,6 @@ package body FLTK.Widgets.Groups.Windows.Single is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, This.Get_X, This.Get_Y, W, H, Text); - single_window_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - single_window_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -150,6 +157,10 @@ package body FLTK.Widgets.Groups.Windows.Single is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Show (This : in out Single_Window) is begin @@ -166,22 +177,13 @@ package body FLTK.Widgets.Groups.Windows.Single is - procedure Draw + procedure Make_Current (This : in out Single_Window) is begin - fl_single_window_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Single_Window; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_single_window_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; + fl_single_window_make_current (This.Void_Ptr); + end Make_Current; end FLTK.Widgets.Groups.Windows.Single; + diff --git a/src/fltk-widgets-groups-windows-single.ads b/src/fltk-widgets-groups-windows-single.ads index 0dfa262..73b2620 100644 --- a/src/fltk-widgets-groups-windows-single.ads +++ b/src/fltk-widgets-groups-windows-single.ads @@ -41,20 +41,18 @@ package FLTK.Widgets.Groups.Windows.Single is - procedure Draw + procedure Make_Current (This : in out Single_Window); - function Handle - (This : in out Single_Window; - Event : in Event_Kind) - return Event_Outcome; - private type Single_Window is new Window with null record; + overriding procedure Initialize + (This : in out Single_Window); + overriding procedure Finalize (This : in out Single_Window); @@ -72,9 +70,9 @@ private pragma Inline (Show); pragma Inline (Flush); - pragma Inline (Draw); - pragma Inline (Handle); + pragma Inline (Make_Current); end FLTK.Widgets.Groups.Windows.Single; + diff --git a/src/fltk-widgets-groups-windows.adb b/src/fltk-widgets-groups-windows.adb index 0c02f6c..090def8 100644 --- a/src/fltk-widgets-groups-windows.adb +++ b/src/fltk-widgets-groups-windows.adb @@ -19,18 +19,9 @@ use type package body FLTK.Widgets.Groups.Windows is - procedure window_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, window_set_draw_hook, "window_set_draw_hook"); - pragma Inline (window_set_draw_hook); - - procedure window_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, window_set_handle_hook, "window_set_handle_hook"); - pragma Inline (window_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_window (X, Y, W, H : in Interfaces.C.int; @@ -300,6 +291,10 @@ package body FLTK.Widgets.Groups.Windows is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Window) is begin @@ -320,6 +315,10 @@ package body FLTK.Widgets.Groups.Windows is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Window; X, Y, W, H : in Integer; @@ -329,6 +328,14 @@ package body FLTK.Widgets.Groups.Windows is end Extra_Init; + procedure Initialize + (This : in out Window) is + begin + This.Draw_Ptr := fl_window_draw'Address; + This.Handle_Ptr := fl_window_handle'Address; + end Initialize; + + package body Forge is function Create @@ -344,8 +351,6 @@ package body FLTK.Widgets.Groups.Windows is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - window_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - window_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -361,8 +366,6 @@ package body FLTK.Widgets.Groups.Windows is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, This.Get_X, This.Get_Y, W, H, Text); - window_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - window_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -371,6 +374,10 @@ package body FLTK.Widgets.Groups.Windows is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Show (This : in out Window) is begin @@ -727,7 +734,7 @@ package body FLTK.Widgets.Groups.Windows is procedure Draw (This : in out Window) is begin - fl_window_draw (This.Void_Ptr); + Group (This).Draw; end Draw; @@ -736,10 +743,10 @@ package body FLTK.Widgets.Groups.Windows is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_window_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Group (This).Handle (Event); end Handle; end FLTK.Widgets.Groups.Windows; + diff --git a/src/fltk-widgets-groups-windows.ads b/src/fltk-widgets-groups-windows.ads index f64bb40..a419fbb 100644 --- a/src/fltk-widgets-groups-windows.ads +++ b/src/fltk-widgets-groups-windows.ads @@ -215,6 +215,9 @@ private type Window is new Group with null record; + overriding procedure Initialize + (This : in out Window); + overriding procedure Finalize (This : in out Window); @@ -277,3 +280,4 @@ private end FLTK.Widgets.Groups.Windows; + diff --git a/src/fltk-widgets-groups-wizards.adb b/src/fltk-widgets-groups-wizards.adb index df0d653..658bf55 100644 --- a/src/fltk-widgets-groups-wizards.adb +++ b/src/fltk-widgets-groups-wizards.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Groups.Wizards is - procedure wizard_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, wizard_set_draw_hook, "wizard_set_draw_hook"); - pragma Inline (wizard_set_draw_hook); - - procedure wizard_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, wizard_set_handle_hook, "wizard_set_handle_hook"); - pragma Inline (wizard_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_wizard (X, Y, W, H : in Interfaces.C.int; @@ -82,6 +73,10 @@ package body FLTK.Widgets.Groups.Wizards is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Wizard) is begin @@ -102,6 +97,10 @@ package body FLTK.Widgets.Groups.Wizards is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Wizard; X, Y, W, H : in Integer; @@ -111,6 +110,14 @@ package body FLTK.Widgets.Groups.Wizards is end Extra_Init; + procedure Initialize + (This : in out Wizard) is + begin + This.Draw_Ptr := fl_wizard_draw'Address; + This.Handle_Ptr := fl_wizard_handle'Address; + end Initialize; + + package body Forge is function Create @@ -126,8 +133,6 @@ package body FLTK.Widgets.Groups.Wizards is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - wizard_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - wizard_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -136,6 +141,10 @@ package body FLTK.Widgets.Groups.Wizards is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Next (This : in out Wizard) is begin @@ -178,19 +187,10 @@ package body FLTK.Widgets.Groups.Wizards is procedure Draw (This : in out Wizard) is begin - fl_wizard_draw (This.Void_Ptr); + Group (This).Draw; end Draw; - function Handle - (This : in out Wizard; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_wizard_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Groups.Wizards; + diff --git a/src/fltk-widgets-groups-wizards.ads b/src/fltk-widgets-groups-wizards.ads index 9464a0f..4473c54 100644 --- a/src/fltk-widgets-groups-wizards.ads +++ b/src/fltk-widgets-groups-wizards.ads @@ -50,17 +50,15 @@ package FLTK.Widgets.Groups.Wizards is procedure Draw (This : in out Wizard); - function Handle - (This : in out Wizard; - Event : in Event_Kind) - return Event_Outcome; - private type Wizard is new Group with null record; + overriding procedure Initialize + (This : in out Wizard); + overriding procedure Finalize (This : in out Wizard); @@ -82,8 +80,8 @@ private pragma Inline (Set_Visible); pragma Inline (Draw); - pragma Inline (Handle); end FLTK.Widgets.Groups.Wizards; + diff --git a/src/fltk-widgets-groups.adb b/src/fltk-widgets-groups.adb index 17cb4fa..491bd0d 100644 --- a/src/fltk-widgets-groups.adb +++ b/src/fltk-widgets-groups.adb @@ -16,18 +16,9 @@ use type package body FLTK.Widgets.Groups is - procedure group_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, group_set_draw_hook, "group_set_draw_hook"); - pragma Inline (group_set_draw_hook); - - procedure group_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, group_set_handle_hook, "group_set_handle_hook"); - pragma Inline (group_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_group (X, Y, W, H : in Interfaces.C.int; @@ -166,6 +157,10 @@ package body FLTK.Widgets.Groups is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Group) is begin @@ -187,6 +182,10 @@ package body FLTK.Widgets.Groups is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Group; X, Y, W, H : in Integer; @@ -197,6 +196,14 @@ package body FLTK.Widgets.Groups is end Extra_Init; + procedure Initialize + (This : in out Group) is + begin + This.Draw_Ptr := fl_group_draw'Address; + This.Handle_Ptr := fl_group_handle'Address; + end Initialize; + + package body Forge is function Create @@ -212,8 +219,6 @@ package body FLTK.Widgets.Groups is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - group_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - group_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -222,6 +227,10 @@ package body FLTK.Widgets.Groups is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Add (This : in out Group; Item : in out Widget'Class) is @@ -477,7 +486,7 @@ package body FLTK.Widgets.Groups is procedure Draw (This : in out Group) is begin - fl_group_draw (This.Void_Ptr); + Widget (This).Draw; end Draw; @@ -486,10 +495,10 @@ package body FLTK.Widgets.Groups is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_group_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Widget (This).Handle (Event); end Handle; end FLTK.Widgets.Groups; + diff --git a/src/fltk-widgets-groups.ads b/src/fltk-widgets-groups.ads index 194ceca..f7b2173 100644 --- a/src/fltk-widgets-groups.ads +++ b/src/fltk-widgets-groups.ads @@ -164,6 +164,9 @@ private type Group is new Widget with null record; + overriding procedure Initialize + (This : in out Group); + overriding procedure Finalize (This : in out Group); @@ -235,3 +238,4 @@ private end FLTK.Widgets.Groups; + diff --git a/src/fltk-widgets-inputs-text-whole_number.adb b/src/fltk-widgets-inputs-text-whole_number.adb index 4d71d44..ae3ad7d 100644 --- a/src/fltk-widgets-inputs-text-whole_number.adb +++ b/src/fltk-widgets-inputs-text-whole_number.adb @@ -80,7 +80,7 @@ package body FLTK.Widgets.Inputs.Text.Whole_Number is procedure Extra_Init (This : in out Integer_Input; - X, Y, W, H : in Standard.Integer; + X, Y, W, H : in Integer; Text : in String) is begin Extra_Init (Input (This), X, Y, W, H, Text); @@ -98,7 +98,7 @@ package body FLTK.Widgets.Inputs.Text.Whole_Number is package body Forge is function Create - (X, Y, W, H : in Standard.Integer; + (X, Y, W, H : in Integer; Text : in String := "") return Integer_Input is begin diff --git a/src/fltk-widgets-inputs-text-whole_number.ads b/src/fltk-widgets-inputs-text-whole_number.ads index 0b774a6..0d2695f 100644 --- a/src/fltk-widgets-inputs-text-whole_number.ads +++ b/src/fltk-widgets-inputs-text-whole_number.ads @@ -18,7 +18,7 @@ package FLTK.Widgets.Inputs.Text.Whole_Number is package Forge is function Create - (X, Y, W, H : in Standard.Integer; + (X, Y, W, H : in Integer; Text : in String := "") return Integer_Input; @@ -45,7 +45,7 @@ private procedure Extra_Init (This : in out Integer_Input; - X, Y, W, H : in Standard.Integer; + X, Y, W, H : in Integer; Text : in String) with Inline; diff --git a/src/fltk-widgets-menus-choices.adb b/src/fltk-widgets-menus-choices.adb index fc60efc..f0fb03a 100644 --- a/src/fltk-widgets-menus-choices.adb +++ b/src/fltk-widgets-menus-choices.adb @@ -17,18 +17,9 @@ use type package body FLTK.Widgets.Menus.Choices is - procedure choice_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, choice_set_draw_hook, "choice_set_draw_hook"); - pragma Inline (choice_set_draw_hook); - - procedure choice_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, choice_set_handle_hook, "choice_set_handle_hook"); - pragma Inline (choice_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_choice (X, Y, W, H : in Interfaces.C.int; @@ -82,12 +73,17 @@ package body FLTK.Widgets.Menus.Choices is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Choice) is begin Extra_Final (Menu (This)); end Extra_Final; + procedure Finalize (This : in out Choice) is begin @@ -101,6 +97,10 @@ package body FLTK.Widgets.Menus.Choices is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Choice; X, Y, W, H : in Integer; @@ -110,6 +110,14 @@ package body FLTK.Widgets.Menus.Choices is end Extra_Init; + procedure Initialize + (This : in out Choice) is + begin + This.Draw_Ptr := fl_choice_draw'Address; + This.Handle_Ptr := fl_choice_handle'Address; + end Initialize; + + package body Forge is function Create @@ -125,8 +133,6 @@ package body FLTK.Widgets.Menus.Choices is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - choice_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - choice_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -135,12 +141,16 @@ package body FLTK.Widgets.Menus.Choices is - function Chosen + ----------------------- + -- API Subprograms -- + ----------------------- + + function Get_Chosen (This : in Choice) return FLTK.Menu_Items.Menu_Item_Reference is begin return (Data => This.My_Items.Element (This.Chosen_Index)); - end Chosen; + end Get_Chosen; function Chosen_Index @@ -176,7 +186,7 @@ package body FLTK.Widgets.Menus.Choices is procedure Draw (This : in out Choice) is begin - fl_choice_draw (This.Void_Ptr); + Menu (This).Draw; end Draw; @@ -185,10 +195,10 @@ package body FLTK.Widgets.Menus.Choices is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_choice_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Menu (This).Handle (Event); end Handle; end FLTK.Widgets.Menus.Choices; + diff --git a/src/fltk-widgets-menus-choices.ads b/src/fltk-widgets-menus-choices.ads index ec73836..86ddd60 100644 --- a/src/fltk-widgets-menus-choices.ads +++ b/src/fltk-widgets-menus-choices.ads @@ -27,7 +27,7 @@ package FLTK.Widgets.Menus.Choices is - function Chosen + function Get_Chosen (This : in Choice) return FLTK.Menu_Items.Menu_Item_Reference; @@ -60,6 +60,9 @@ private type Choice is new Menu with null record; + overriding procedure Initialize + (This : in out Choice); + overriding procedure Finalize (This : in out Choice); @@ -84,3 +87,4 @@ private end FLTK.Widgets.Menus.Choices; + diff --git a/src/fltk-widgets-menus-menu_bars.adb b/src/fltk-widgets-menus-menu_bars.adb index f0c9569..0548936 100644 --- a/src/fltk-widgets-menus-menu_bars.adb +++ b/src/fltk-widgets-menus-menu_bars.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Menus.Menu_Bars is - procedure menu_bar_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, menu_bar_set_draw_hook, "menu_bar_set_draw_hook"); - pragma Inline (menu_bar_set_draw_hook); - - procedure menu_bar_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, menu_bar_set_handle_hook, "menu_bar_set_handle_hook"); - pragma Inline (menu_bar_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_menu_bar (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Menus.Menu_Bars is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Menu_Bar) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Menus.Menu_Bars is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Menu_Bar; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Menus.Menu_Bars is end Extra_Init; + procedure Initialize + (This : in out Menu_Bar) is + begin + This.Draw_Ptr := fl_menu_bar_draw'Address; + This.Handle_Ptr := fl_menu_bar_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,8 +106,6 @@ package body FLTK.Widgets.Menus.Menu_Bars is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - menu_bar_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - menu_bar_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -109,10 +114,14 @@ package body FLTK.Widgets.Menus.Menu_Bars is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Draw (This : in out Menu_Bar) is begin - fl_menu_bar_draw (This.Void_Ptr); + Menu (This).Draw; end Draw; @@ -121,10 +130,10 @@ package body FLTK.Widgets.Menus.Menu_Bars is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_menu_bar_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Menu (This).Handle (Event); end Handle; end FLTK.Widgets.Menus.Menu_Bars; + diff --git a/src/fltk-widgets-menus-menu_bars.ads b/src/fltk-widgets-menus-menu_bars.ads index 2071bff..53603b0 100644 --- a/src/fltk-widgets-menus-menu_bars.ads +++ b/src/fltk-widgets-menus-menu_bars.ads @@ -41,6 +41,9 @@ private type Menu_Bar is new Menu with null record; + overriding procedure Initialize + (This : in out Menu_Bar); + overriding procedure Finalize (This : in out Menu_Bar); @@ -61,3 +64,4 @@ private end FLTK.Widgets.Menus.Menu_Bars; + diff --git a/src/fltk-widgets-menus-menu_buttons.adb b/src/fltk-widgets-menus-menu_buttons.adb index 95ebb8b..ae9ae75 100644 --- a/src/fltk-widgets-menus-menu_buttons.adb +++ b/src/fltk-widgets-menus-menu_buttons.adb @@ -16,19 +16,6 @@ package body FLTK.Widgets.Menus.Menu_Buttons is -- Functions From C -- ------------------------ - procedure menu_button_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, menu_button_set_draw_hook, "menu_button_set_draw_hook"); - pragma Inline (menu_button_set_draw_hook); - - procedure menu_button_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, menu_button_set_handle_hook, "menu_button_set_handle_hook"); - pragma Inline (menu_button_set_handle_hook); - - - - function new_fl_menu_button (X, Y, W, H : in Interfaces.C.int; Text : in Interfaces.C.char_array) @@ -157,6 +144,14 @@ package body FLTK.Widgets.Menus.Menu_Buttons is end Extra_Init; + procedure Initialize + (This : in out Menu_Button) is + begin + This.Draw_Ptr := fl_menu_button_draw'Address; + This.Handle_Ptr := fl_menu_button_handle'Address; + end Initialize; + + package body Forge is function Create @@ -172,10 +167,6 @@ package body FLTK.Widgets.Menus.Menu_Buttons is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - menu_button_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - menu_button_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -212,7 +203,7 @@ package body FLTK.Widgets.Menus.Menu_Buttons is procedure Draw (This : in out Menu_Button) is begin - fl_menu_button_draw (This.Void_Ptr); + Menu (This).Draw; end Draw; @@ -221,10 +212,10 @@ package body FLTK.Widgets.Menus.Menu_Buttons is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_menu_button_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Menu (This).Handle (Event); end Handle; end FLTK.Widgets.Menus.Menu_Buttons; + diff --git a/src/fltk-widgets-menus-menu_buttons.ads b/src/fltk-widgets-menus-menu_buttons.ads index e71310f..4ba09a3 100644 --- a/src/fltk-widgets-menus-menu_buttons.ads +++ b/src/fltk-widgets-menus-menu_buttons.ads @@ -17,7 +17,7 @@ package FLTK.Widgets.Menus.Menu_Buttons is type Menu_Button_Reference (Data : access Menu_Button'Class) is limited null record with Implicit_Dereference => Data; - -- signifies which mouse buttons cause the menu to appear + -- Signifies which mouse buttons cause the menu to appear type Popup_Buttons is (No_Popup, Popup1, Popup2, Popup12, Popup3, Popup13, Popup23, Popup123); @@ -60,6 +60,9 @@ private type Menu_Button is new Menu with null record; + overriding procedure Initialize + (This : in out Menu_Button); + overriding procedure Finalize (This : in out Menu_Button); @@ -83,3 +86,4 @@ private end FLTK.Widgets.Menus.Menu_Buttons; + diff --git a/src/fltk-widgets-menus.adb b/src/fltk-widgets-menus.adb index 4476332..be46a72 100644 --- a/src/fltk-widgets-menus.adb +++ b/src/fltk-widgets-menus.adb @@ -19,18 +19,9 @@ use type package body FLTK.Widgets.Menus is - procedure menu_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, menu_set_draw_hook, "menu_set_draw_hook"); - pragma Inline (menu_set_draw_hook); - - procedure menu_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, menu_set_handle_hook, "menu_set_handle_hook"); - pragma Inline (menu_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_menu (X, Y, W, H : in Interfaces.C.int; @@ -259,9 +250,25 @@ package body FLTK.Widgets.Menus is pragma Import (C, fl_menu_draw_item, "fl_menu_draw_item"); pragma Inline (fl_menu_draw_item); + procedure fl_menu_draw + (M : in Storage.Integer_Address); + pragma Import (C, fl_menu_draw, "fl_menu_draw"); + pragma Inline (fl_menu_draw); + + function fl_menu_handle + (M : in Storage.Integer_Address; + E : in Interfaces.C.int) + return Interfaces.C.int; + pragma Import (C, fl_menu_handle, "fl_menu_handle"); + pragma Inline (fl_menu_handle); + + ---------------------- + -- Callback Hooks -- + ---------------------- + procedure Item_Hook (M, U : in Storage.Integer_Address) is @@ -275,6 +282,10 @@ package body FLTK.Widgets.Menus is + ------------------- + -- Destructors -- + ------------------- + procedure Free_Item is new Ada.Unchecked_Deallocation (Object => FLTK.Menu_Items.Menu_Item, Name => Item_Access); @@ -302,6 +313,10 @@ package body FLTK.Widgets.Menus is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Menu; X, Y, W, H : in Integer; @@ -311,6 +326,14 @@ package body FLTK.Widgets.Menus is end Extra_Init; + procedure Initialize + (This : in out Menu) is + begin + This.Draw_Ptr := fl_menu_draw'Address; + This.Handle_Ptr := fl_menu_handle'Address; + end Initialize; + + package body Forge is function Create @@ -326,8 +349,6 @@ package body FLTK.Widgets.Menus is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - menu_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - menu_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -336,6 +357,10 @@ package body FLTK.Widgets.Menus is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Add (This : in out Menu; Text : in String; @@ -799,14 +824,6 @@ package body FLTK.Widgets.Menus is end Draw_Item; - function Handle - (This : in out Menu; - Event : in Event_Kind) - return Event_Outcome is - begin - return Not_Handled; - end Handle; - - end FLTK.Widgets.Menus; + diff --git a/src/fltk-widgets-menus.ads b/src/fltk-widgets-menus.ads index c0e0ed4..1d7b55b 100644 --- a/src/fltk-widgets-menus.ads +++ b/src/fltk-widgets-menus.ads @@ -220,20 +220,12 @@ package FLTK.Widgets.Menus is - procedure Draw - (This : in out Menu) is null; - procedure Draw_Item (This : in out Menu; Item : in Index; X, Y, W, H : in Integer; Selected : in Boolean := False); - function Handle - (This : in out Menu; - Event : in Event_Kind) - return Event_Outcome; - private @@ -253,6 +245,9 @@ private My_Items : Item_Vectors.Vector; end record; + overriding procedure Initialize + (This : in out Menu); + overriding procedure Finalize (This : in out Menu); @@ -326,10 +321,9 @@ private pragma Inline (Popup); pragma Inline (Pulldown); - pragma Inline (Draw); pragma Inline (Draw_Item); - pragma Inline (Handle); end FLTK.Widgets.Menus; + diff --git a/src/fltk-widgets-progress_bars.adb b/src/fltk-widgets-progress_bars.adb index 39b2b2d..7e25c85 100644 --- a/src/fltk-widgets-progress_bars.adb +++ b/src/fltk-widgets-progress_bars.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Progress_Bars is - procedure progress_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, progress_set_draw_hook, "progress_set_draw_hook"); - pragma Inline (progress_set_draw_hook); - - procedure progress_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, progress_set_handle_hook, "progress_set_handle_hook"); - pragma Inline (progress_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_progress (X, Y, W, H : in Interfaces.C.int; @@ -94,6 +85,10 @@ package body FLTK.Widgets.Progress_Bars is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Progress_Bar) is begin @@ -114,6 +109,10 @@ package body FLTK.Widgets.Progress_Bars is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Progress_Bar; X, Y, W, H : in Integer; @@ -123,6 +122,14 @@ package body FLTK.Widgets.Progress_Bars is end Extra_Init; + procedure Initialize + (This : in out Progress_Bar) is + begin + This.Draw_Ptr := fl_progress_draw'Address; + This.Handle_Ptr := fl_progress_handle'Address; + end Initialize; + + package body Forge is function Create @@ -138,8 +145,6 @@ package body FLTK.Widgets.Progress_Bars is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - progress_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - progress_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -148,6 +153,9 @@ package body FLTK.Widgets.Progress_Bars is + ----------------------- + -- API Subprograms -- + ----------------------- function Get_Minimum (This : in Progress_Bar) @@ -202,19 +210,10 @@ package body FLTK.Widgets.Progress_Bars is procedure Draw (This : in out Progress_Bar) is begin - fl_progress_draw (This.Void_Ptr); + Widget (This).Draw; end Draw; - function Handle - (This : in out Progress_Bar; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_progress_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Progress_Bars; + diff --git a/src/fltk-widgets-progress_bars.ads b/src/fltk-widgets-progress_bars.ads index 2eb57f3..71b0b92 100644 --- a/src/fltk-widgets-progress_bars.ads +++ b/src/fltk-widgets-progress_bars.ads @@ -57,17 +57,15 @@ package FLTK.Widgets.Progress_Bars is procedure Draw (This : in out Progress_Bar); - function Handle - (This : in out Progress_Bar; - Event : in Event_Kind) - return Event_Outcome; - private type Progress_Bar is new Widget with null record; + overriding procedure Initialize + (This : in out Progress_Bar); + overriding procedure Finalize (This : in out Progress_Bar); @@ -90,8 +88,8 @@ private pragma Inline (Set_Value); pragma Inline (Draw); - pragma Inline (Handle); end FLTK.Widgets.Progress_Bars; + diff --git a/src/fltk-widgets-valuators-adjusters.adb b/src/fltk-widgets-valuators-adjusters.adb index 0c96332..b4a8bc3 100644 --- a/src/fltk-widgets-valuators-adjusters.adb +++ b/src/fltk-widgets-valuators-adjusters.adb @@ -16,18 +16,9 @@ use type package body FLTK.Widgets.Valuators.Adjusters is - procedure adjuster_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, adjuster_set_draw_hook, "adjuster_set_draw_hook"); - pragma Inline (adjuster_set_draw_hook); - - procedure adjuster_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, adjuster_set_handle_hook, "adjuster_set_handle_hook"); - pragma Inline (adjuster_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_adjuster (X, Y, W, H : in Interfaces.C.int; @@ -59,6 +50,11 @@ package body FLTK.Widgets.Valuators.Adjusters is + procedure fl_adjuster_value_damage + (A : in Storage.Integer_Address); + pragma Import (C, fl_adjuster_value_damage, "fl_adjuster_value_damage"); + pragma Inline (fl_adjuster_value_damage); + procedure fl_adjuster_draw (W : in Storage.Integer_Address); pragma Import (C, fl_adjuster_draw, "fl_adjuster_draw"); @@ -74,6 +70,10 @@ package body FLTK.Widgets.Valuators.Adjusters is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Adjuster) is begin @@ -94,6 +94,10 @@ package body FLTK.Widgets.Valuators.Adjusters is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Adjuster; X, Y, W, H : in Integer; @@ -103,6 +107,14 @@ package body FLTK.Widgets.Valuators.Adjusters is end Extra_Init; + procedure Initialize + (This : in out Adjuster) is + begin + This.Draw_Ptr := fl_adjuster_draw'Address; + This.Handle_Ptr := fl_adjuster_handle'Address; + end Initialize; + + package body Forge is function Create @@ -118,8 +130,6 @@ package body FLTK.Widgets.Valuators.Adjusters is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - adjuster_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - adjuster_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -128,6 +138,10 @@ package body FLTK.Widgets.Valuators.Adjusters is + ----------------------- + -- API Subprograms -- + ----------------------- + function Is_Soft (This : in Adjuster) return Boolean is @@ -146,10 +160,17 @@ package body FLTK.Widgets.Valuators.Adjusters is + procedure Value_Damage + (This : in out Adjuster) is + begin + fl_adjuster_value_damage (This.Void_Ptr); + end Value_Damage; + + procedure Draw (This : in out Adjuster) is begin - fl_adjuster_draw (This.Void_Ptr); + Valuator (This).Draw; end Draw; @@ -158,10 +179,10 @@ package body FLTK.Widgets.Valuators.Adjusters is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_adjuster_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Valuator (This).Handle (Event); end Handle; end FLTK.Widgets.Valuators.Adjusters; + diff --git a/src/fltk-widgets-valuators-adjusters.ads b/src/fltk-widgets-valuators-adjusters.ads index df19f28..6211e99 100644 --- a/src/fltk-widgets-valuators-adjusters.ads +++ b/src/fltk-widgets-valuators-adjusters.ads @@ -38,6 +38,9 @@ package FLTK.Widgets.Valuators.Adjusters is + procedure Value_Damage + (This : in out Adjuster); + procedure Draw (This : in out Adjuster); @@ -52,6 +55,9 @@ private type Adjuster is new Valuator with null record; + overriding procedure Initialize + (This : in out Adjuster); + overriding procedure Finalize (This : in out Adjuster); @@ -69,9 +75,11 @@ private pragma Inline (Is_Soft); pragma Inline (Set_Soft); + pragma Inline (Value_Damage); pragma Inline (Draw); pragma Inline (Handle); end FLTK.Widgets.Valuators.Adjusters; + diff --git a/src/fltk-widgets-valuators-counters-simple.adb b/src/fltk-widgets-valuators-counters-simple.adb index d811722..294a076 100644 --- a/src/fltk-widgets-valuators-counters-simple.adb +++ b/src/fltk-widgets-valuators-counters-simple.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Counters.Simple is - procedure simple_counter_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, simple_counter_set_draw_hook, "simple_counter_set_draw_hook"); - pragma Inline (simple_counter_set_draw_hook); - - procedure simple_counter_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, simple_counter_set_handle_hook, "simple_counter_set_handle_hook"); - pragma Inline (simple_counter_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_simple_counter (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Counters.Simple is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Simple_Counter) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Counters.Simple is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Simple_Counter; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Counters.Simple is end Extra_Init; + procedure Initialize + (This : in out Simple_Counter) is + begin + This.Draw_Ptr := fl_simple_counter_draw'Address; + This.Handle_Ptr := fl_simple_counter_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Valuators.Counters.Simple is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - simple_counter_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - simple_counter_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Simple_Counter) is - begin - fl_simple_counter_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Simple_Counter; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_simple_counter_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Counters.Simple; + diff --git a/src/fltk-widgets-valuators-counters-simple.ads b/src/fltk-widgets-valuators-counters-simple.ads index 99e4bee..9ff57fe 100644 --- a/src/fltk-widgets-valuators-counters-simple.ads +++ b/src/fltk-widgets-valuators-counters-simple.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Counters.Simple is end Forge; - - - procedure Draw - (This : in out Simple_Counter); - - function Handle - (This : in out Simple_Counter; - Event : in Event_Kind) - return Event_Outcome; - - private type Simple_Counter is new Counter with null record; + overriding procedure Initialize + (This : in out Simple_Counter); + overriding procedure Finalize (This : in out Simple_Counter); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Counters.Simple; + diff --git a/src/fltk-widgets-valuators-counters.adb b/src/fltk-widgets-valuators-counters.adb index fd0619e..30001a8 100644 --- a/src/fltk-widgets-valuators-counters.adb +++ b/src/fltk-widgets-valuators-counters.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Counters is - procedure counter_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, counter_set_draw_hook, "counter_set_draw_hook"); - pragma Inline (counter_set_draw_hook); - - procedure counter_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, counter_set_handle_hook, "counter_set_handle_hook"); - pragma Inline (counter_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_counter (X, Y, W, H : in Interfaces.C.int; @@ -46,11 +37,11 @@ package body FLTK.Widgets.Valuators.Counters is pragma Import (C, fl_counter_get_step, "fl_counter_get_step"); pragma Inline (fl_counter_get_step); - procedure fl_counter_set_step + procedure fl_counter_set_step_top (C : in Storage.Integer_Address; T : in Interfaces.C.double); - pragma Import (C, fl_counter_set_step, "fl_counter_set_step"); - pragma Inline (fl_counter_set_step); + pragma Import (C, fl_counter_set_step_top, "fl_counter_set_step_top"); + pragma Inline (fl_counter_set_step_top); procedure fl_counter_set_lstep (C : in Storage.Integer_Address; @@ -58,6 +49,12 @@ package body FLTK.Widgets.Valuators.Counters is pragma Import (C, fl_counter_set_lstep, "fl_counter_set_lstep"); pragma Inline (fl_counter_set_lstep); + procedure fl_counter_set_step_both + (C : in Storage.Integer_Address; + S, L : in Interfaces.C.double); + pragma Import (C, fl_counter_set_step_both, "fl_counter_set_step_both"); + pragma Inline (fl_counter_set_step_both); + @@ -115,6 +112,10 @@ package body FLTK.Widgets.Valuators.Counters is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Counter) is begin @@ -135,6 +136,10 @@ package body FLTK.Widgets.Valuators.Counters is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Counter; X, Y, W, H : in Integer; @@ -144,6 +149,14 @@ package body FLTK.Widgets.Valuators.Counters is end Extra_Init; + procedure Initialize + (This : in out Counter) is + begin + This.Draw_Ptr := fl_counter_draw'Address; + This.Handle_Ptr := fl_counter_handle'Address; + end Initialize; + + package body Forge is function Create @@ -159,8 +172,6 @@ package body FLTK.Widgets.Valuators.Counters is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - counter_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - counter_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -169,6 +180,10 @@ package body FLTK.Widgets.Valuators.Counters is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Step (This : in Counter) return Long_Float is @@ -177,12 +192,12 @@ package body FLTK.Widgets.Valuators.Counters is end Get_Step; - procedure Set_Step + procedure Set_Step_Top (This : in out Counter; To : in Long_Float) is begin - fl_counter_set_step (This.Void_Ptr, Interfaces.C.double (To)); - end Set_Step; + fl_counter_set_step_top (This.Void_Ptr, Interfaces.C.double (To)); + end Set_Step_Top; function Get_Long_Step @@ -202,6 +217,17 @@ package body FLTK.Widgets.Valuators.Counters is end Set_Long_Step; + procedure Set_Step_Both + (This : in out Counter; + Short, Long : in Long_Float) is + begin + fl_counter_set_step_both + (This.Void_Ptr, + Interfaces.C.double (Short), + Interfaces.C.double (Long)); + end Set_Step_Both; + + function Get_Text_Color @@ -257,7 +283,7 @@ package body FLTK.Widgets.Valuators.Counters is procedure Draw (This : in out Counter) is begin - fl_counter_draw (This.Void_Ptr); + Valuator (This).Draw; end Draw; @@ -266,10 +292,10 @@ package body FLTK.Widgets.Valuators.Counters is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_counter_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Valuator (This).Handle (Event); end Handle; end FLTK.Widgets.Valuators.Counters; + diff --git a/src/fltk-widgets-valuators-counters.ads b/src/fltk-widgets-valuators-counters.ads index 7119923..0b2b31c 100644 --- a/src/fltk-widgets-valuators-counters.ads +++ b/src/fltk-widgets-valuators-counters.ads @@ -31,7 +31,7 @@ package FLTK.Widgets.Valuators.Counters is (This : in Counter) return Long_Float; - procedure Set_Step + procedure Set_Step_Top (This : in out Counter; To : in Long_Float); @@ -43,6 +43,10 @@ package FLTK.Widgets.Valuators.Counters is (This : in out Counter; To : in Long_Float); + procedure Set_Step_Both + (This : in out Counter; + Short, Long : in Long_Float); + @@ -91,6 +95,9 @@ private Long_Step : Long_Float := 1.0; end record; + overriding procedure Initialize + (This : in out Counter); + overriding procedure Finalize (This : in out Counter); @@ -123,3 +130,4 @@ private end FLTK.Widgets.Valuators.Counters; + diff --git a/src/fltk-widgets-valuators-dials-fill.adb b/src/fltk-widgets-valuators-dials-fill.adb index cb7d025..9b01946 100644 --- a/src/fltk-widgets-valuators-dials-fill.adb +++ b/src/fltk-widgets-valuators-dials-fill.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Dials.Fill is - procedure fill_dial_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, fill_dial_set_draw_hook, "fill_dial_set_draw_hook"); - pragma Inline (fill_dial_set_draw_hook); - - procedure fill_dial_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, fill_dial_set_handle_hook, "fill_dial_set_handle_hook"); - pragma Inline (fill_dial_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_fill_dial (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Dials.Fill is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Fill_Dial) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Dials.Fill is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Fill_Dial; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Dials.Fill is end Extra_Init; + procedure Initialize + (This : in out Fill_Dial) is + begin + This.Draw_Ptr := fl_fill_dial_draw'Address; + This.Handle_Ptr := fl_fill_dial_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,32 +106,12 @@ package body FLTK.Widgets.Valuators.Dials.Fill is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - fill_dial_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - fill_dial_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Fill_Dial) is - begin - fl_fill_dial_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Fill_Dial; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_fill_dial_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Dials.Fill; + diff --git a/src/fltk-widgets-valuators-dials-fill.ads b/src/fltk-widgets-valuators-dials-fill.ads index c1f6f06..a09582e 100644 --- a/src/fltk-widgets-valuators-dials-fill.ads +++ b/src/fltk-widgets-valuators-dials-fill.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Dials.Fill is end Forge; - - - procedure Draw - (This : in out Fill_Dial); - - function Handle - (This : in out Fill_Dial; - Event : in Event_Kind) - return Event_Outcome; - - private type Fill_Dial is new Dial with null record; + overriding procedure Initialize + (This : in out Fill_Dial); + overriding procedure Finalize (This : in out Fill_Dial); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Dials.Fill; + diff --git a/src/fltk-widgets-valuators-dials-line.adb b/src/fltk-widgets-valuators-dials-line.adb index 7ee67ce..16f9bef 100644 --- a/src/fltk-widgets-valuators-dials-line.adb +++ b/src/fltk-widgets-valuators-dials-line.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Dials.Line is - procedure line_dial_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, line_dial_set_draw_hook, "line_dial_set_draw_hook"); - pragma Inline (line_dial_set_draw_hook); - - procedure line_dial_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, line_dial_set_handle_hook, "line_dial_set_handle_hook"); - pragma Inline (line_dial_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_line_dial (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Dials.Line is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Line_Dial) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Dials.Line is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Line_Dial; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Dials.Line is end Extra_Init; + procedure Initialize + (This : in out Line_Dial) is + begin + This.Draw_Ptr := fl_line_dial_draw'Address; + This.Handle_Ptr := fl_line_dial_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,32 +106,12 @@ package body FLTK.Widgets.Valuators.Dials.Line is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - line_dial_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - line_dial_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Line_Dial) is - begin - fl_line_dial_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Line_Dial; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_line_dial_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Dials.Line; + diff --git a/src/fltk-widgets-valuators-dials-line.ads b/src/fltk-widgets-valuators-dials-line.ads index d0a955d..be8f554 100644 --- a/src/fltk-widgets-valuators-dials-line.ads +++ b/src/fltk-widgets-valuators-dials-line.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Dials.Line is end Forge; - - - procedure Draw - (This : in out Line_Dial); - - function Handle - (This : in out Line_Dial; - Event : in Event_Kind) - return Event_Outcome; - - private type Line_Dial is new Dial with null record; + overriding procedure Initialize + (This : in out Line_Dial); + overriding procedure Finalize (This : in out Line_Dial); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Dials.Line; + diff --git a/src/fltk-widgets-valuators-dials.adb b/src/fltk-widgets-valuators-dials.adb index 588b8ec..02106f1 100644 --- a/src/fltk-widgets-valuators-dials.adb +++ b/src/fltk-widgets-valuators-dials.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Dials is - procedure dial_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, dial_set_draw_hook, "dial_set_draw_hook"); - pragma Inline (dial_set_draw_hook); - - procedure dial_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, dial_set_handle_hook, "dial_set_handle_hook"); - pragma Inline (dial_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_dial (X, Y, W, H : in Interfaces.C.int; @@ -40,48 +31,33 @@ package body FLTK.Widgets.Valuators.Dials is - function fl_dial_get_type - (D : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_dial_get_type, "fl_dial_get_type"); - pragma Inline (fl_dial_get_type); - - procedure fl_dial_set_type - (D : in Storage.Integer_Address; - T : in Interfaces.C.int); - pragma Import (C, fl_dial_set_type, "fl_dial_set_type"); - pragma Inline (fl_dial_set_type); - - - - function fl_dial_get_angle1 (D : in Storage.Integer_Address) - return Interfaces.C.int; + return Interfaces.C.short; pragma Import (C, fl_dial_get_angle1, "fl_dial_get_angle1"); pragma Inline (fl_dial_get_angle1); procedure fl_dial_set_angle1 (D : in Storage.Integer_Address; - T : in Interfaces.C.int); + T : in Interfaces.C.short); pragma Import (C, fl_dial_set_angle1, "fl_dial_set_angle1"); pragma Inline (fl_dial_set_angle1); function fl_dial_get_angle2 (D : in Storage.Integer_Address) - return Interfaces.C.int; + return Interfaces.C.short; pragma Import (C, fl_dial_get_angle2, "fl_dial_get_angle2"); pragma Inline (fl_dial_get_angle2); procedure fl_dial_set_angle2 (D : in Storage.Integer_Address; - T : in Interfaces.C.int); + T : in Interfaces.C.short); pragma Import (C, fl_dial_set_angle2, "fl_dial_set_angle2"); pragma Inline (fl_dial_set_angle2); procedure fl_dial_set_angles (D : in Storage.Integer_Address; - A, B : in Interfaces.C.int); + A, B : in Interfaces.C.short); pragma Import (C, fl_dial_set_angles, "fl_dial_set_angles"); pragma Inline (fl_dial_set_angles); @@ -93,6 +69,12 @@ package body FLTK.Widgets.Valuators.Dials is pragma Import (C, fl_dial_draw, "fl_dial_draw"); pragma Inline (fl_dial_draw); + procedure fl_dial_draw2 + (D : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_dial_draw2, "fl_dial_draw2"); + pragma Inline (fl_dial_draw2); + function fl_dial_handle (W : in Storage.Integer_Address; E : in Interfaces.C.int) @@ -100,9 +82,35 @@ package body FLTK.Widgets.Valuators.Dials is pragma Import (C, fl_dial_handle, "fl_dial_handle"); pragma Inline (fl_dial_handle); + function fl_dial_handle2 + (D : in Storage.Integer_Address; + E, X, Y, W, H : in Interfaces.C.int) + return Interfaces.C.int; + pragma Import (C, fl_dial_handle2, "fl_dial_handle2"); + pragma Inline (fl_dial_handle2); + + + + + function fl_widget_get_type + (D : in Storage.Integer_Address) + return Interfaces.C.unsigned_char; + pragma Import (C, fl_widget_get_type, "fl_widget_get_type"); + pragma Inline (fl_widget_get_type); + + procedure fl_widget_set_type + (D : in Storage.Integer_Address; + T : in Interfaces.C.unsigned_char); + pragma Import (C, fl_widget_set_type, "fl_widget_set_type"); + pragma Inline (fl_widget_set_type); + + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Dial) is begin @@ -123,6 +131,10 @@ package body FLTK.Widgets.Valuators.Dials is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Dial; X, Y, W, H : in Integer; @@ -132,6 +144,14 @@ package body FLTK.Widgets.Valuators.Dials is end Extra_Init; + procedure Initialize + (This : in out Dial) is + begin + This.Draw_Ptr := fl_dial_draw'Address; + This.Handle_Ptr := fl_dial_handle'Address; + end Initialize; + + package body Forge is function Create @@ -147,8 +167,6 @@ package body FLTK.Widgets.Valuators.Dials is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - dial_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - dial_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -157,51 +175,50 @@ package body FLTK.Widgets.Valuators.Dials is - function Get_Dial_Type - (This : in Dial) - return Dial_Kind is - begin - return Dial_Kind'Val (fl_dial_get_type (This.Void_Ptr)); - end Get_Dial_Type; - + ----------------------- + -- API Subprograms -- + ----------------------- function Get_First_Angle (This : in Dial) - return Integer is + return Short_Integer is begin - return Integer (fl_dial_get_angle1 (This.Void_Ptr)); + return Short_Integer (fl_dial_get_angle1 (This.Void_Ptr)); end Get_First_Angle; procedure Set_First_Angle (This : in out Dial; - To : in Integer) is + To : in Short_Integer) is begin - fl_dial_set_angle1 (This.Void_Ptr, Interfaces.C.int (To)); + fl_dial_set_angle1 (This.Void_Ptr, Interfaces.C.short (To)); end Set_First_Angle; function Get_Second_Angle (This : in Dial) - return Integer is + return Short_Integer is begin - return Integer (fl_dial_get_angle2 (This.Void_Ptr)); + return Short_Integer (fl_dial_get_angle2 (This.Void_Ptr)); end Get_Second_Angle; procedure Set_Second_Angle (This : in out Dial; - To : in Integer) is + To : in Short_Integer) is begin - fl_dial_set_angle2 (This.Void_Ptr, Interfaces.C.int (To)); + fl_dial_set_angle2 (This.Void_Ptr, Interfaces.C.short (To)); end Set_Second_Angle; procedure Set_Angles (This : in out Dial; - One, Two : in Integer) is + One, Two : in Short_Integer) is begin - fl_dial_set_angles (This.Void_Ptr, Interfaces.C.int (One), Interfaces.C.int (Two)); + fl_dial_set_angles + (This.Void_Ptr, + Interfaces.C.short (One), + Interfaces.C.short (Two)); end Set_Angles; @@ -210,7 +227,20 @@ package body FLTK.Widgets.Valuators.Dials is procedure Draw (This : in out Dial) is begin - fl_dial_draw (This.Void_Ptr); + Valuator (This).Draw; + end Draw; + + + procedure Draw + (This : in out Dial; + X, Y, W, H : in Integer) is + begin + fl_dial_draw2 + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); end Draw; @@ -219,20 +249,47 @@ package body FLTK.Widgets.Valuators.Dials is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_dial_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Valuator (This).Handle (Event); + end Handle; + + + function Handle + (This : in out Dial; + Event : in Event_Kind; + X, Y, W, H : in Integer) + return Event_Outcome is + begin + return Event_Outcome'Val (fl_dial_handle2 + (This.Void_Ptr, + Event_Kind'Pos (Event), + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H))); + exception + when Constraint_Error => raise Internal_FLTK_Error; end Handle; + function Get_Dial_Type + (This : in Dial) + return Dial_Kind is + begin + return Dial_Kind'Val (fl_widget_get_type (This.Void_Ptr)); + exception + when Constraint_Error => raise Internal_FLTK_Error; + end Get_Dial_Type; + + package body Extra is procedure Set_Dial_Type (This : in out Dial; To : in Dial_Kind) is begin - fl_dial_set_type (This.Void_Ptr, Dial_Kind'Pos (To)); + fl_widget_set_type (This.Void_Ptr, Dial_Kind'Pos (To)); end Set_Dial_Type; pragma Inline (Set_Dial_Type); @@ -242,3 +299,4 @@ package body FLTK.Widgets.Valuators.Dials is end FLTK.Widgets.Valuators.Dials; + diff --git a/src/fltk-widgets-valuators-dials.ads b/src/fltk-widgets-valuators-dials.ads index 9cd4d49..f3c2b69 100644 --- a/src/fltk-widgets-valuators-dials.ads +++ b/src/fltk-widgets-valuators-dials.ads @@ -29,29 +29,25 @@ package FLTK.Widgets.Valuators.Dials is - function Get_Dial_Type - (This : in Dial) - return Dial_Kind; - function Get_First_Angle (This : in Dial) - return Integer; + return Short_Integer; procedure Set_First_Angle (This : in out Dial; - To : in Integer); + To : in Short_Integer); function Get_Second_Angle (This : in Dial) - return Integer; + return Short_Integer; procedure Set_Second_Angle (This : in out Dial; - To : in Integer); + To : in Short_Integer); procedure Set_Angles (This : in out Dial; - One, Two : in Integer); + One, Two : in Short_Integer); @@ -59,14 +55,28 @@ package FLTK.Widgets.Valuators.Dials is procedure Draw (This : in out Dial); + procedure Draw + (This : in out Dial; + X, Y, W, H : in Integer); + function Handle (This : in out Dial; Event : in Event_Kind) return Event_Outcome; + function Handle + (This : in out Dial; + Event : in Event_Kind; + X, Y, W, H : in Integer) + return Event_Outcome; + + function Get_Dial_Type + (This : in Dial) + return Dial_Kind; + package Extra is procedure Set_Dial_Type @@ -81,6 +91,9 @@ private type Dial is new Valuator with null record; + overriding procedure Initialize + (This : in out Dial); + overriding procedure Finalize (This : in out Dial); @@ -95,8 +108,6 @@ private with Inline; - pragma Inline (Get_Dial_Type); - pragma Inline (Get_First_Angle); pragma Inline (Set_First_Angle); pragma Inline (Get_Second_Angle); @@ -106,6 +117,9 @@ private pragma Inline (Draw); pragma Inline (Handle); + pragma Inline (Get_Dial_Type); + end FLTK.Widgets.Valuators.Dials; + diff --git a/src/fltk-widgets-valuators-rollers.adb b/src/fltk-widgets-valuators-rollers.adb index 520a816..a3966e5 100644 --- a/src/fltk-widgets-valuators-rollers.adb +++ b/src/fltk-widgets-valuators-rollers.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Rollers is - procedure roller_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, roller_set_draw_hook, "roller_set_draw_hook"); - pragma Inline (roller_set_draw_hook); - - procedure roller_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, roller_set_handle_hook, "roller_set_handle_hook"); - pragma Inline (roller_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_roller (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Rollers is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Roller) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Rollers is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Roller; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Rollers is end Extra_Init; + procedure Initialize + (This : in out Roller) is + begin + This.Draw_Ptr := fl_roller_draw'Address; + This.Handle_Ptr := fl_roller_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,8 +106,6 @@ package body FLTK.Widgets.Valuators.Rollers is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - roller_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - roller_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -109,10 +114,14 @@ package body FLTK.Widgets.Valuators.Rollers is + ----------------------- + -- API Subprograms -- + ----------------------- + procedure Draw (This : in out Roller) is begin - fl_roller_draw (This.Void_Ptr); + Valuator (This).Draw; end Draw; @@ -121,10 +130,10 @@ package body FLTK.Widgets.Valuators.Rollers is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_roller_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Valuator (This).Handle (Event); end Handle; end FLTK.Widgets.Valuators.Rollers; + diff --git a/src/fltk-widgets-valuators-rollers.ads b/src/fltk-widgets-valuators-rollers.ads index 266072f..aa9a9a5 100644 --- a/src/fltk-widgets-valuators-rollers.ads +++ b/src/fltk-widgets-valuators-rollers.ads @@ -41,6 +41,9 @@ private type Roller is new Valuator with null record; + overriding procedure Initialize + (This : in out Roller); + overriding procedure Finalize (This : in out Roller); @@ -61,3 +64,4 @@ private end FLTK.Widgets.Valuators.Rollers; + diff --git a/src/fltk-widgets-valuators-sliders-fill.adb b/src/fltk-widgets-valuators-sliders-fill.adb index 3568838..504e390 100644 --- a/src/fltk-widgets-valuators-sliders-fill.adb +++ b/src/fltk-widgets-valuators-sliders-fill.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders.Fill is - procedure fill_slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, fill_slider_set_draw_hook, "fill_slider_set_draw_hook"); - pragma Inline (fill_slider_set_draw_hook); - - procedure fill_slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, fill_slider_set_handle_hook, "fill_slider_set_handle_hook"); - pragma Inline (fill_slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_fill_slider (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Sliders.Fill is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Fill_Slider) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Sliders.Fill is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Fill_Slider; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Sliders.Fill is end Extra_Init; + procedure Initialize + (This : in out Fill_Slider) is + begin + This.Draw_Ptr := fl_fill_slider_draw'Address; + This.Handle_Ptr := fl_fill_slider_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Valuators.Sliders.Fill is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - fill_slider_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - fill_slider_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Fill_Slider) is - begin - fl_fill_slider_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Fill_Slider; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_fill_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Sliders.Fill; + diff --git a/src/fltk-widgets-valuators-sliders-fill.ads b/src/fltk-widgets-valuators-sliders-fill.ads index 27c69b2..d13e604 100644 --- a/src/fltk-widgets-valuators-sliders-fill.ads +++ b/src/fltk-widgets-valuators-sliders-fill.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Sliders.Fill is end Forge; - - - procedure Draw - (This : in out Fill_Slider); - - function Handle - (This : in out Fill_Slider; - Event : in Event_Kind) - return Event_Outcome; - - private type Fill_Slider is new Slider with null record; + overriding procedure Initialize + (This : in out Fill_Slider); + overriding procedure Finalize (This : in out Fill_Slider); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Sliders.Fill; + diff --git a/src/fltk-widgets-valuators-sliders-horizontal.adb b/src/fltk-widgets-valuators-sliders-horizontal.adb index b4d7035..1abde1b 100644 --- a/src/fltk-widgets-valuators-sliders-horizontal.adb +++ b/src/fltk-widgets-valuators-sliders-horizontal.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders.Horizontal is - procedure horizontal_slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, horizontal_slider_set_draw_hook, "horizontal_slider_set_draw_hook"); - pragma Inline (horizontal_slider_set_draw_hook); - - procedure horizontal_slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, horizontal_slider_set_handle_hook, "horizontal_slider_set_handle_hook"); - pragma Inline (horizontal_slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_horizontal_slider (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Horizontal_Slider) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Horizontal_Slider; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal is end Extra_Init; + procedure Initialize + (This : in out Horizontal_Slider) is + begin + This.Draw_Ptr := fl_horizontal_slider_draw'Address; + This.Handle_Ptr := fl_horizontal_slider_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - horizontal_slider_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - horizontal_slider_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Horizontal_Slider) is - begin - fl_horizontal_slider_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Horizontal_Slider; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_horizontal_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Sliders.Horizontal; + diff --git a/src/fltk-widgets-valuators-sliders-horizontal.ads b/src/fltk-widgets-valuators-sliders-horizontal.ads index c6cc2e6..3002f31 100644 --- a/src/fltk-widgets-valuators-sliders-horizontal.ads +++ b/src/fltk-widgets-valuators-sliders-horizontal.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Sliders.Horizontal is end Forge; - - - procedure Draw - (This : in out Horizontal_Slider); - - function Handle - (This : in out Horizontal_Slider; - Event : in Event_Kind) - return Event_Outcome; - - private type Horizontal_Slider is new Slider with null record; + overriding procedure Initialize + (This : in out Horizontal_Slider); + overriding procedure Finalize (This : in out Horizontal_Slider); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Sliders.Horizontal; + diff --git a/src/fltk-widgets-valuators-sliders-horizontal_fill.adb b/src/fltk-widgets-valuators-sliders-horizontal_fill.adb index e14e230..2376474 100644 --- a/src/fltk-widgets-valuators-sliders-horizontal_fill.adb +++ b/src/fltk-widgets-valuators-sliders-horizontal_fill.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders.Horizontal_Fill is - procedure hor_fill_slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, hor_fill_slider_set_draw_hook, "hor_fill_slider_set_draw_hook"); - pragma Inline (hor_fill_slider_set_draw_hook); - - procedure hor_fill_slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, hor_fill_slider_set_handle_hook, "hor_fill_slider_set_handle_hook"); - pragma Inline (hor_fill_slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_hor_fill_slider (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Fill is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Horizontal_Fill_Slider) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Fill is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Horizontal_Fill_Slider; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Fill is end Extra_Init; + procedure Initialize + (This : in out Horizontal_Fill_Slider) is + begin + This.Draw_Ptr := fl_hor_fill_slider_draw'Address; + This.Handle_Ptr := fl_hor_fill_slider_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Fill is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - hor_fill_slider_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - hor_fill_slider_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Horizontal_Fill_Slider) is - begin - fl_hor_fill_slider_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Horizontal_Fill_Slider; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_hor_fill_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Sliders.Horizontal_Fill; + diff --git a/src/fltk-widgets-valuators-sliders-horizontal_fill.ads b/src/fltk-widgets-valuators-sliders-horizontal_fill.ads index 9047552..e6e8938 100644 --- a/src/fltk-widgets-valuators-sliders-horizontal_fill.ads +++ b/src/fltk-widgets-valuators-sliders-horizontal_fill.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Sliders.Horizontal_Fill is end Forge; - - - procedure Draw - (This : in out Horizontal_Fill_Slider); - - function Handle - (This : in out Horizontal_Fill_Slider; - Event : in Event_Kind) - return Event_Outcome; - - private type Horizontal_Fill_Slider is new Slider with null record; + overriding procedure Initialize + (This : in out Horizontal_Fill_Slider); + overriding procedure Finalize (This : in out Horizontal_Fill_Slider); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Sliders.Horizontal_Fill; + diff --git a/src/fltk-widgets-valuators-sliders-horizontal_nice.adb b/src/fltk-widgets-valuators-sliders-horizontal_nice.adb index f6b8e90..d0a8fa8 100644 --- a/src/fltk-widgets-valuators-sliders-horizontal_nice.adb +++ b/src/fltk-widgets-valuators-sliders-horizontal_nice.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders.Horizontal_Nice is - procedure hor_nice_slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, hor_nice_slider_set_draw_hook, "hor_nice_slider_set_draw_hook"); - pragma Inline (hor_nice_slider_set_draw_hook); - - procedure hor_nice_slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, hor_nice_slider_set_handle_hook, "hor_nice_slider_set_handle_hook"); - pragma Inline (hor_nice_slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_hor_nice_slider (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Nice is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Horizontal_Nice_Slider) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Nice is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Horizontal_Nice_Slider; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Nice is end Extra_Init; + procedure Initialize + (This : in out Horizontal_Nice_Slider) is + begin + This.Draw_Ptr := fl_hor_nice_slider_draw'Address; + This.Handle_Ptr := fl_hor_nice_slider_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Valuators.Sliders.Horizontal_Nice is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - hor_nice_slider_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - hor_nice_slider_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Horizontal_Nice_Slider) is - begin - fl_hor_nice_slider_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Horizontal_Nice_Slider; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_hor_nice_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Sliders.Horizontal_Nice; + diff --git a/src/fltk-widgets-valuators-sliders-horizontal_nice.ads b/src/fltk-widgets-valuators-sliders-horizontal_nice.ads index f2af349..a71d8f2 100644 --- a/src/fltk-widgets-valuators-sliders-horizontal_nice.ads +++ b/src/fltk-widgets-valuators-sliders-horizontal_nice.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Sliders.Horizontal_Nice is end Forge; - - - procedure Draw - (This : in out Horizontal_Nice_Slider); - - function Handle - (This : in out Horizontal_Nice_Slider; - Event : in Event_Kind) - return Event_Outcome; - - private type Horizontal_Nice_Slider is new Slider with null record; + overriding procedure Initialize + (This : in out Horizontal_Nice_Slider); + overriding procedure Finalize (This : in out Horizontal_Nice_Slider); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Sliders.Horizontal_Nice; + diff --git a/src/fltk-widgets-valuators-sliders-nice.adb b/src/fltk-widgets-valuators-sliders-nice.adb index 73fc2c3..ba99a62 100644 --- a/src/fltk-widgets-valuators-sliders-nice.adb +++ b/src/fltk-widgets-valuators-sliders-nice.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders.Nice is - procedure nice_slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, nice_slider_set_draw_hook, "nice_slider_set_draw_hook"); - pragma Inline (nice_slider_set_draw_hook); - - procedure nice_slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, nice_slider_set_handle_hook, "nice_slider_set_handle_hook"); - pragma Inline (nice_slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_nice_slider (X, Y, W, H : in Interfaces.C.int; @@ -55,6 +46,10 @@ package body FLTK.Widgets.Valuators.Sliders.Nice is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Nice_Slider) is begin @@ -75,6 +70,10 @@ package body FLTK.Widgets.Valuators.Sliders.Nice is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Nice_Slider; X, Y, W, H : in Integer; @@ -84,6 +83,14 @@ package body FLTK.Widgets.Valuators.Sliders.Nice is end Extra_Init; + procedure Initialize + (This : in out Nice_Slider) is + begin + This.Draw_Ptr := fl_nice_slider_draw'Address; + This.Handle_Ptr := fl_nice_slider_handle'Address; + end Initialize; + + package body Forge is function Create @@ -99,34 +106,12 @@ package body FLTK.Widgets.Valuators.Sliders.Nice is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - nice_slider_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - nice_slider_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Nice_Slider) is - begin - fl_nice_slider_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Nice_Slider; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_nice_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Sliders.Nice; + diff --git a/src/fltk-widgets-valuators-sliders-nice.ads b/src/fltk-widgets-valuators-sliders-nice.ads index 742f1ce..c835ccf 100644 --- a/src/fltk-widgets-valuators-sliders-nice.ads +++ b/src/fltk-widgets-valuators-sliders-nice.ads @@ -25,22 +25,14 @@ package FLTK.Widgets.Valuators.Sliders.Nice is end Forge; - - - procedure Draw - (This : in out Nice_Slider); - - function Handle - (This : in out Nice_Slider; - Event : in Event_Kind) - return Event_Outcome; - - private type Nice_Slider is new Slider with null record; + overriding procedure Initialize + (This : in out Nice_Slider); + overriding procedure Finalize (This : in out Nice_Slider); @@ -55,9 +47,6 @@ private with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Sliders.Nice; + diff --git a/src/fltk-widgets-valuators-sliders-scrollbars.adb b/src/fltk-widgets-valuators-sliders-scrollbars.adb index 84a0cc6..d27c4fa 100644 --- a/src/fltk-widgets-valuators-sliders-scrollbars.adb +++ b/src/fltk-widgets-valuators-sliders-scrollbars.adb @@ -16,19 +16,6 @@ package body FLTK.Widgets.Valuators.Sliders.Scrollbars is -- Functions From C -- ------------------------ - procedure scrollbar_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, scrollbar_set_draw_hook, "scrollbar_set_draw_hook"); - pragma Inline (scrollbar_set_draw_hook); - - procedure scrollbar_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, scrollbar_set_handle_hook, "scrollbar_set_handle_hook"); - pragma Inline (scrollbar_set_handle_hook); - - - - function new_fl_scrollbar (X, Y, W, H : in Interfaces.C.int; Text : in Interfaces.C.char_array) @@ -169,6 +156,14 @@ package body FLTK.Widgets.Valuators.Sliders.Scrollbars is end Extra_Init; + procedure Initialize + (This : in out Scrollbar) is + begin + This.Draw_Ptr := fl_scrollbar_draw'Address; + This.Handle_Ptr := fl_scrollbar_handle'Address; + end Initialize; + + package body Forge is function Create @@ -184,8 +179,6 @@ package body FLTK.Widgets.Valuators.Sliders.Scrollbars is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - scrollbar_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - scrollbar_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -251,7 +244,7 @@ package body FLTK.Widgets.Valuators.Sliders.Scrollbars is procedure Draw (This : in out Scrollbar) is begin - fl_scrollbar_draw (This.Void_Ptr); + Slider (This).Draw; end Draw; @@ -260,10 +253,10 @@ package body FLTK.Widgets.Valuators.Sliders.Scrollbars is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_scrollbar_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Slider (This).Handle (Event); end Handle; end FLTK.Widgets.Valuators.Sliders.Scrollbars; + diff --git a/src/fltk-widgets-valuators-sliders-scrollbars.ads b/src/fltk-widgets-valuators-sliders-scrollbars.ads index 5a87e86..307e19b 100644 --- a/src/fltk-widgets-valuators-sliders-scrollbars.ads +++ b/src/fltk-widgets-valuators-sliders-scrollbars.ads @@ -67,6 +67,9 @@ private type Scrollbar is new Slider with null record; + overriding procedure Initialize + (This : in out Scrollbar); + overriding procedure Finalize (This : in out Scrollbar); @@ -93,3 +96,4 @@ private end FLTK.Widgets.Valuators.Sliders.Scrollbars; + diff --git a/src/fltk-widgets-valuators-sliders-value-horizontal.adb b/src/fltk-widgets-valuators-sliders-value-horizontal.adb index bac9b5d..d60e46a 100644 --- a/src/fltk-widgets-valuators-sliders-value-horizontal.adb +++ b/src/fltk-widgets-valuators-sliders-value-horizontal.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders.Value.Horizontal is - procedure hor_value_slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, hor_value_slider_set_draw_hook, "hor_value_slider_set_draw_hook"); - pragma Inline (hor_value_slider_set_draw_hook); - - procedure hor_value_slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, hor_value_slider_set_handle_hook, "hor_value_slider_set_handle_hook"); - pragma Inline (hor_value_slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_hor_value_slider (X, Y, W, H : in Interfaces.C.int; @@ -55,15 +46,19 @@ package body FLTK.Widgets.Valuators.Sliders.Value.Horizontal is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final - (This : in out Hor_Value_Slider) is + (This : in out Horizontal_Value_Slider) is begin Extra_Final (Value_Slider (This)); end Extra_Final; procedure Finalize - (This : in out Hor_Value_Slider) is + (This : in out Horizontal_Value_Slider) is begin Extra_Final (This); if This.Void_Ptr /= Null_Pointer and This.Needs_Dealloc then @@ -75,8 +70,12 @@ package body FLTK.Widgets.Valuators.Sliders.Value.Horizontal is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init - (This : in out Hor_Value_Slider; + (This : in out Horizontal_Value_Slider; X, Y, W, H : in Integer; Text : in String) is begin @@ -84,14 +83,22 @@ package body FLTK.Widgets.Valuators.Sliders.Value.Horizontal is end Extra_Init; + procedure Initialize + (This : in out Horizontal_Value_Slider) is + begin + This.Draw_Ptr := fl_hor_value_slider_draw'Address; + This.Handle_Ptr := fl_hor_value_slider_handle'Address; + end Initialize; + + package body Forge is function Create (X, Y, W, H : in Integer; Text : in String := "") - return Hor_Value_Slider is + return Horizontal_Value_Slider is begin - return This : Hor_Value_Slider do + return This : Horizontal_Value_Slider do This.Void_Ptr := new_fl_hor_value_slider (Interfaces.C.int (X), Interfaces.C.int (Y), @@ -99,34 +106,12 @@ package body FLTK.Widgets.Valuators.Sliders.Value.Horizontal is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - hor_value_slider_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - hor_value_slider_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; end Forge; - - - procedure Draw - (This : in out Hor_Value_Slider) is - begin - fl_hor_value_slider_draw (This.Void_Ptr); - end Draw; - - - function Handle - (This : in out Hor_Value_Slider; - Event : in Event_Kind) - return Event_Outcome is - begin - return Event_Outcome'Val - (fl_hor_value_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; - - end FLTK.Widgets.Valuators.Sliders.Value.Horizontal; + diff --git a/src/fltk-widgets-valuators-sliders-value-horizontal.ads b/src/fltk-widgets-valuators-sliders-value-horizontal.ads index 911d2e0..c666a4d 100644 --- a/src/fltk-widgets-valuators-sliders-value-horizontal.ads +++ b/src/fltk-widgets-valuators-sliders-value-horizontal.ads @@ -7,9 +7,9 @@ package FLTK.Widgets.Valuators.Sliders.Value.Horizontal is - type Hor_Value_Slider is new Value_Slider with private; + type Horizontal_Value_Slider is new Value_Slider with private; - type Hor_Value_Slider_Reference (Data : not null access Hor_Value_Slider'Class) is + type Horizontal_Value_Slider_Reference (Data : not null access Horizontal_Value_Slider'Class) is limited null record with Implicit_Dereference => Data; @@ -20,44 +20,33 @@ package FLTK.Widgets.Valuators.Sliders.Value.Horizontal is function Create (X, Y, W, H : in Integer; Text : in String := "") - return Hor_Value_Slider; + return Horizontal_Value_Slider; end Forge; - - - procedure Draw - (This : in out Hor_Value_Slider); - - function Handle - (This : in out Hor_Value_Slider; - Event : in Event_Kind) - return Event_Outcome; - - private - type Hor_Value_Slider is new Value_Slider with null record; + type Horizontal_Value_Slider is new Value_Slider with null record; + + overriding procedure Initialize + (This : in out Horizontal_Value_Slider); overriding procedure Finalize - (This : in out Hor_Value_Slider); + (This : in out Horizontal_Value_Slider); procedure Extra_Init - (This : in out Hor_Value_Slider; + (This : in out Horizontal_Value_Slider; X, Y, W, H : in Integer; Text : in String) with Inline; procedure Extra_Final - (This : in out Hor_Value_Slider) + (This : in out Horizontal_Value_Slider) with Inline; - pragma Inline (Draw); - pragma Inline (Handle); - - end FLTK.Widgets.Valuators.Sliders.Value.Horizontal; + diff --git a/src/fltk-widgets-valuators-sliders-value.adb b/src/fltk-widgets-valuators-sliders-value.adb index 40f935b..54188b3 100644 --- a/src/fltk-widgets-valuators-sliders-value.adb +++ b/src/fltk-widgets-valuators-sliders-value.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders.Value is - procedure value_slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, value_slider_set_draw_hook, "value_slider_set_draw_hook"); - pragma Inline (value_slider_set_draw_hook); - - procedure value_slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, value_slider_set_handle_hook, "value_slider_set_handle_hook"); - pragma Inline (value_slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_value_slider (X, Y, W, H : in Interfaces.C.int; @@ -94,6 +85,10 @@ package body FLTK.Widgets.Valuators.Sliders.Value is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Value_Slider) is begin @@ -114,6 +109,10 @@ package body FLTK.Widgets.Valuators.Sliders.Value is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Value_Slider; X, Y, W, H : in Integer; @@ -123,6 +122,14 @@ package body FLTK.Widgets.Valuators.Sliders.Value is end Extra_Init; + procedure Initialize + (This : in out Value_Slider) is + begin + This.Draw_Ptr := fl_value_slider_draw'Address; + This.Handle_Ptr := fl_value_slider_handle'Address; + end Initialize; + + package body Forge is function Create @@ -138,10 +145,6 @@ package body FLTK.Widgets.Valuators.Sliders.Value is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - value_slider_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - value_slider_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -150,6 +153,10 @@ package body FLTK.Widgets.Valuators.Sliders.Value is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Text_Color (This : in Value_Slider) return Color is @@ -203,7 +210,7 @@ package body FLTK.Widgets.Valuators.Sliders.Value is procedure Draw (This : in out Value_Slider) is begin - fl_value_slider_draw (This.Void_Ptr); + Slider (This).Draw; end Draw; @@ -212,10 +219,10 @@ package body FLTK.Widgets.Valuators.Sliders.Value is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_value_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Slider (This).Handle (Event); end Handle; end FLTK.Widgets.Valuators.Sliders.Value; + diff --git a/src/fltk-widgets-valuators-sliders-value.ads b/src/fltk-widgets-valuators-sliders-value.ads index 4a2e461..ac49524 100644 --- a/src/fltk-widgets-valuators-sliders-value.ads +++ b/src/fltk-widgets-valuators-sliders-value.ads @@ -68,6 +68,9 @@ private type Value_Slider is new Slider with null record; + overriding procedure Initialize + (This : in out Value_Slider); + overriding procedure Finalize (This : in out Value_Slider); @@ -95,3 +98,4 @@ private end FLTK.Widgets.Valuators.Sliders.Value; + diff --git a/src/fltk-widgets-valuators-sliders.adb b/src/fltk-widgets-valuators-sliders.adb index 4c99cca..bac5378 100644 --- a/src/fltk-widgets-valuators-sliders.adb +++ b/src/fltk-widgets-valuators-sliders.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators.Sliders is - procedure slider_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, slider_set_draw_hook, "slider_set_draw_hook"); - pragma Inline (slider_set_draw_hook); - - procedure slider_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, slider_set_handle_hook, "slider_set_handle_hook"); - pragma Inline (slider_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_slider (X, Y, W, H : in Interfaces.C.int; @@ -32,6 +23,14 @@ package body FLTK.Widgets.Valuators.Sliders is pragma Import (C, new_fl_slider, "new_fl_slider"); pragma Inline (new_fl_slider); + function new_fl_slider2 + (K : in Interfaces.C.unsigned_char; + X, Y, W, H : in Interfaces.C.int; + Text : in Interfaces.C.char_array) + return Storage.Integer_Address; + pragma Import (C, new_fl_slider2, "new_fl_slider2"); + pragma Inline (new_fl_slider2); + procedure free_fl_slider (D : in Storage.Integer_Address); pragma Import (C, free_fl_slider, "free_fl_slider"); @@ -40,21 +39,6 @@ package body FLTK.Widgets.Valuators.Sliders is - function fl_slider_get_type - (S : in Storage.Integer_Address) - return Interfaces.C.int; - pragma Import (C, fl_slider_get_type, "fl_slider_get_type"); - pragma Inline (fl_slider_get_type); - - procedure fl_slider_set_type - (S : in Storage.Integer_Address; - T : in Interfaces.C.int); - pragma Import (C, fl_slider_set_type, "fl_slider_set_type"); - pragma Inline (fl_slider_set_type); - - - - procedure fl_slider_set_bounds (S : in Storage.Integer_Address; A, B : in Interfaces.C.double); @@ -81,7 +65,7 @@ package body FLTK.Widgets.Valuators.Sliders is procedure fl_slider_set_slider_size (S : in Storage.Integer_Address; - T : in Interfaces.C.C_float); + T : in Interfaces.C.double); pragma Import (C, fl_slider_set_slider_size, "fl_slider_set_slider_size"); pragma Inline (fl_slider_set_slider_size); @@ -100,6 +84,12 @@ package body FLTK.Widgets.Valuators.Sliders is pragma Import (C, fl_slider_draw, "fl_slider_draw"); pragma Inline (fl_slider_draw); + procedure fl_slider_draw2 + (S : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_slider_draw2, "fl_slider_draw2"); + pragma Inline (fl_slider_draw2); + function fl_slider_handle (W : in Storage.Integer_Address; E : in Interfaces.C.int) @@ -107,9 +97,35 @@ package body FLTK.Widgets.Valuators.Sliders is pragma Import (C, fl_slider_handle, "fl_slider_handle"); pragma Inline (fl_slider_handle); + function fl_slider_handle2 + (S : in Storage.Integer_Address; + E, X, Y, W, H : in Interfaces.C.int) + return Interfaces.C.int; + pragma Import (C, fl_slider_handle2, "fl_slider_handle2"); + pragma Inline (fl_slider_handle2); + + + + + function fl_widget_get_type + (S : in Storage.Integer_Address) + return Interfaces.C.unsigned_char; + pragma Import (C, fl_widget_get_type, "fl_widget_get_type"); + pragma Inline (fl_widget_get_type); + + procedure fl_widget_set_type + (S : in Storage.Integer_Address; + T : in Interfaces.C.unsigned_char); + pragma Import (C, fl_widget_set_type, "fl_widget_set_type"); + pragma Inline (fl_widget_set_type); + + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Slider) is begin @@ -130,6 +146,10 @@ package body FLTK.Widgets.Valuators.Sliders is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Slider; X, Y, W, H : in Integer; @@ -139,6 +159,14 @@ package body FLTK.Widgets.Valuators.Sliders is end Extra_Init; + procedure Initialize + (This : in out Slider) is + begin + This.Draw_Ptr := fl_slider_draw'Address; + This.Handle_Ptr := fl_slider_handle'Address; + end Initialize; + + package body Forge is function Create @@ -154,23 +182,36 @@ package body FLTK.Widgets.Valuators.Sliders is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - slider_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - slider_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; - end Forge; + function Create + (Kind : in Slider_Kind; + X, Y, W, H : in Integer; + Text : in String := "") + return Slider is + begin + return This : Slider do + This.Void_Ptr := new_fl_slider2 + (Slider_Kind'Pos (Kind), + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H), + Interfaces.C.To_C (Text)); + Extra_Init (This, X, Y, W, H, Text); + end return; + end Create; + + end Forge; - function Get_Slider_Type - (This : in Slider) - return Slider_Kind is - begin - return Slider_Kind'Val (fl_slider_get_type (This.Void_Ptr)); - end Get_Slider_Type; + ----------------------- + -- API Subprograms -- + ----------------------- procedure Set_Bounds (This : in out Slider; @@ -209,9 +250,9 @@ package body FLTK.Widgets.Valuators.Sliders is procedure Set_Slide_Size (This : in out Slider; - To : in Float) is + To : in Long_Float) is begin - fl_slider_set_slider_size (This.Void_Ptr, Interfaces.C.C_float (To)); + fl_slider_set_slider_size (This.Void_Ptr, Interfaces.C.double (To)); end Set_Slide_Size; @@ -238,7 +279,20 @@ package body FLTK.Widgets.Valuators.Sliders is procedure Draw (This : in out Slider) is begin - fl_slider_draw (This.Void_Ptr); + Valuator (This).Draw; + end Draw; + + + procedure Draw + (This : in out Slider; + X, Y, W, H : in Integer) is + begin + fl_slider_draw2 + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); end Draw; @@ -247,20 +301,45 @@ package body FLTK.Widgets.Valuators.Sliders is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_slider_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Valuator (This).Handle (Event); + end Handle; + + + function Handle + (This : in out Slider; + Event : in Event_Kind; + X, Y, W, H : in Integer) + return Event_Outcome is + begin + return Event_Outcome'Val (fl_slider_handle2 + (This.Void_Ptr, + Event_Kind'Pos (Event), + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H))); end Handle; + function Get_Slider_Type + (This : in Slider) + return Slider_Kind is + begin + return Slider_Kind'Val (fl_widget_get_type (This.Void_Ptr)); + exception + when Constraint_Error => raise Internal_FLTK_Error; + end Get_Slider_Type; + + package body Extra is procedure Set_Slider_Type (This : in out Slider; To : in Slider_Kind) is begin - fl_slider_set_type (This.Void_Ptr, Slider_Kind'Pos (To)); + fl_widget_set_type (This.Void_Ptr, Slider_Kind'Pos (To)); end Set_Slider_Type; pragma Inline (Set_Slider_Type); @@ -270,3 +349,4 @@ package body FLTK.Widgets.Valuators.Sliders is end FLTK.Widgets.Valuators.Sliders; + diff --git a/src/fltk-widgets-valuators-sliders.ads b/src/fltk-widgets-valuators-sliders.ads index cbe7222..c89cb56 100644 --- a/src/fltk-widgets-valuators-sliders.ads +++ b/src/fltk-widgets-valuators-sliders.ads @@ -27,15 +27,17 @@ package FLTK.Widgets.Valuators.Sliders is Text : in String := "") return Slider; + function Create + (Kind : in Slider_Kind; + X, Y, W, H : in Integer; + Text : in String := "") + return Slider; + end Forge; - function Get_Slider_Type - (This : in Slider) - return Slider_Kind; - procedure Set_Bounds (This : in out Slider; Min, Max : in Long_Float); @@ -54,7 +56,7 @@ package FLTK.Widgets.Valuators.Sliders is procedure Set_Slide_Size (This : in out Slider; - To : in Float); + To : in Long_Float); procedure Set_Scrollvalue (This : in out Slider; @@ -69,13 +71,27 @@ package FLTK.Widgets.Valuators.Sliders is procedure Draw (This : in out Slider); + procedure Draw + (This : in out Slider; + X, Y, W, H : in Integer); + function Handle (This : in out Slider; Event : in Event_Kind) return Event_Outcome; + function Handle + (This : in out Slider; + Event : in Event_Kind; + X, Y, W, H : in Integer) + return Event_Outcome; + + + function Get_Slider_Type + (This : in Slider) + return Slider_Kind; package Extra is @@ -91,6 +107,9 @@ private type Slider is new Valuator with null record; + overriding procedure Initialize + (This : in out Slider); + overriding procedure Finalize (This : in out Slider); @@ -105,7 +124,6 @@ private with Inline; - pragma Inline (Get_Slider_Type); pragma Inline (Set_Bounds); pragma Inline (Get_Box); pragma Inline (Set_Box); @@ -116,6 +134,9 @@ private pragma Inline (Draw); pragma Inline (Handle); + pragma Inline (Get_Slider_Type); + end FLTK.Widgets.Valuators.Sliders; + diff --git a/src/fltk-widgets-valuators-value_inputs.adb b/src/fltk-widgets-valuators-value_inputs.adb index fbb2e0a..01f51bd 100644 --- a/src/fltk-widgets-valuators-value_inputs.adb +++ b/src/fltk-widgets-valuators-value_inputs.adb @@ -20,19 +20,6 @@ package body FLTK.Widgets.Valuators.Value_Inputs is -- Functions From C -- ------------------------ - procedure value_input_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, value_input_set_draw_hook, "value_input_set_draw_hook"); - pragma Inline (value_input_set_draw_hook); - - procedure value_input_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, value_input_set_handle_hook, "value_input_set_handle_hook"); - pragma Inline (value_input_set_handle_hook); - - - - function new_fl_value_input (X, Y, W, H : in Interfaces.C.int; Text : in Interfaces.C.char_array) @@ -141,6 +128,15 @@ package body FLTK.Widgets.Valuators.Value_Inputs is + procedure fl_value_input_resize + (TD : in Storage.Integer_Address; + X, Y, W, H : in Interfaces.C.int); + pragma Import (C, fl_value_input_resize, "fl_value_input_resize"); + pragma Inline (fl_value_input_resize); + + + + procedure fl_value_input_draw (W : in Storage.Integer_Address); pragma Import (C, fl_value_input_draw, "fl_value_input_draw"); @@ -219,6 +215,14 @@ package body FLTK.Widgets.Valuators.Value_Inputs is end Extra_Init; + procedure Initialize + (This : in out Value_Input) is + begin + This.Draw_Ptr := fl_value_input_draw'Address; + This.Handle_Ptr := fl_value_input_handle'Address; + end Initialize; + + package body Forge is function Create @@ -234,10 +238,6 @@ package body FLTK.Widgets.Valuators.Value_Inputs is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - value_input_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - value_input_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -246,6 +246,10 @@ package body FLTK.Widgets.Valuators.Value_Inputs is + ------------------ + -- Attributes -- + ------------------ + function Text_Field (This : in out Value_Input) return FLTK.Widgets.Inputs.Text.Text_Input_Reference is @@ -256,6 +260,10 @@ package body FLTK.Widgets.Valuators.Value_Inputs is + ----------------------- + -- API Subprograms -- + ----------------------- + function Get_Cursor_Color (This : in Value_Input) return Color is @@ -360,10 +368,25 @@ package body FLTK.Widgets.Valuators.Value_Inputs is + procedure Resize + (This : in out Value_Input; + X, Y, W, H : in Integer) is + begin + fl_value_input_resize + (This.Void_Ptr, + Interfaces.C.int (X), + Interfaces.C.int (Y), + Interfaces.C.int (W), + Interfaces.C.int (H)); + end Resize; + + + + procedure Draw (This : in out Value_Input) is begin - fl_value_input_draw (This.Void_Ptr); + Valuator (This).Draw; end Draw; @@ -372,10 +395,10 @@ package body FLTK.Widgets.Valuators.Value_Inputs is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_value_input_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Valuator (This).Handle (Event); end Handle; end FLTK.Widgets.Valuators.Value_Inputs; + diff --git a/src/fltk-widgets-valuators-value_inputs.ads b/src/fltk-widgets-valuators-value_inputs.ads index 10a5824..384d387 100644 --- a/src/fltk-widgets-valuators-value_inputs.ads +++ b/src/fltk-widgets-valuators-value_inputs.ads @@ -99,6 +99,13 @@ package FLTK.Widgets.Valuators.Value_Inputs is + procedure Resize + (This : in out Value_Input; + X, Y, W, H : in Integer); + + + + procedure Draw (This : in out Value_Input); @@ -115,6 +122,9 @@ private My_Input : aliased Inputs.Text.Text_Input; end record; + overriding procedure Initialize + (This : in out Value_Input); + overriding procedure Finalize (This : in out Value_Input); @@ -146,9 +156,12 @@ private pragma Inline (Get_Text_Size); pragma Inline (Set_Text_Size); + pragma Inline (Resize); + pragma Inline (Draw); pragma Inline (Handle); end FLTK.Widgets.Valuators.Value_Inputs; + diff --git a/src/fltk-widgets-valuators-value_outputs.adb b/src/fltk-widgets-valuators-value_outputs.adb index dcd763d..de6adf7 100644 --- a/src/fltk-widgets-valuators-value_outputs.adb +++ b/src/fltk-widgets-valuators-value_outputs.adb @@ -16,18 +16,9 @@ use type package body FLTK.Widgets.Valuators.Value_Outputs is - procedure value_output_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, value_output_set_draw_hook, "value_output_set_draw_hook"); - pragma Inline (value_output_set_draw_hook); - - procedure value_output_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, value_output_set_handle_hook, "value_output_set_handle_hook"); - pragma Inline (value_output_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_value_output (X, Y, W, H : in Interfaces.C.int; @@ -113,6 +104,10 @@ package body FLTK.Widgets.Valuators.Value_Outputs is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Value_Output) is begin @@ -133,6 +128,10 @@ package body FLTK.Widgets.Valuators.Value_Outputs is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Value_Output; X, Y, W, H : in Integer; @@ -142,6 +141,14 @@ package body FLTK.Widgets.Valuators.Value_Outputs is end Extra_Init; + procedure Initialize + (This : in out Value_Output) is + begin + This.Draw_Ptr := fl_value_output_draw'Address; + This.Handle_Ptr := fl_value_output_handle'Address; + end Initialize; + + package body Forge is function Create @@ -157,10 +164,6 @@ package body FLTK.Widgets.Valuators.Value_Outputs is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - value_output_set_draw_hook - (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - value_output_set_handle_hook - (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -169,6 +172,10 @@ package body FLTK.Widgets.Valuators.Value_Outputs is + ----------------------- + -- API Subprograms -- + ----------------------- + function Is_Soft (This : in Value_Output) return Boolean is @@ -240,7 +247,7 @@ package body FLTK.Widgets.Valuators.Value_Outputs is procedure Draw (This : in out Value_Output) is begin - fl_value_output_draw (This.Void_Ptr); + Valuator (This).Draw; end Draw; @@ -249,10 +256,10 @@ package body FLTK.Widgets.Valuators.Value_Outputs is Event : in Event_Kind) return Event_Outcome is begin - return Event_Outcome'Val - (fl_value_output_handle (This.Void_Ptr, Event_Kind'Pos (Event))); + return Valuator (This).Handle (Event); end Handle; end FLTK.Widgets.Valuators.Value_Outputs; + diff --git a/src/fltk-widgets-valuators-value_outputs.ads b/src/fltk-widgets-valuators-value_outputs.ads index 099743b..c5e383d 100644 --- a/src/fltk-widgets-valuators-value_outputs.ads +++ b/src/fltk-widgets-valuators-value_outputs.ads @@ -79,6 +79,9 @@ private type Value_Output is new Valuator with null record; + overriding procedure Initialize + (This : in out Value_Output); + overriding procedure Finalize (This : in out Value_Output); @@ -109,3 +112,4 @@ private end FLTK.Widgets.Valuators.Value_Outputs; + diff --git a/src/fltk-widgets-valuators.adb b/src/fltk-widgets-valuators.adb index 79b576c..197111f 100644 --- a/src/fltk-widgets-valuators.adb +++ b/src/fltk-widgets-valuators.adb @@ -12,18 +12,9 @@ with package body FLTK.Widgets.Valuators is - procedure valuator_set_draw_hook - (W, D : in Storage.Integer_Address); - pragma Import (C, valuator_set_draw_hook, "valuator_set_draw_hook"); - pragma Inline (valuator_set_draw_hook); - - procedure valuator_set_handle_hook - (W, H : in Storage.Integer_Address); - pragma Import (C, valuator_set_handle_hook, "valuator_set_handle_hook"); - pragma Inline (valuator_set_handle_hook); - - - + ------------------------ + -- Functions From C -- + ------------------------ function new_fl_valuator (X, Y, W, H : in Interfaces.C.int; @@ -95,9 +86,22 @@ package body FLTK.Widgets.Valuators is pragma Import (C, fl_valuator_get_step, "fl_valuator_get_step"); pragma Inline (fl_valuator_get_step); - procedure fl_valuator_set_step + procedure fl_valuator_set_step_top (V : in Storage.Integer_Address; T : in Interfaces.C.double); + pragma Import (C, fl_valuator_set_step_top, "fl_valuator_set_step_top"); + pragma Inline (fl_valuator_set_step_top); + + procedure fl_valuator_set_step_bottom + (V : in Storage.Integer_Address; + B : in Interfaces.C.int); + pragma Import (C, fl_valuator_set_step_bottom, "fl_valuator_set_step_bottom"); + pragma Inline (fl_valuator_set_step_bottom); + + procedure fl_valuator_set_step + (V : in Storage.Integer_Address; + T : in Interfaces.C.double; + B : in Interfaces.C.int); pragma Import (C, fl_valuator_set_step, "fl_valuator_set_step"); pragma Inline (fl_valuator_set_step); @@ -134,6 +138,16 @@ package body FLTK.Widgets.Valuators is + procedure fl_valuator_value_damage + (V : in Storage.Integer_Address); + pragma Import (C, fl_valuator_value_damage, "fl_valuator_value_damage"); + pragma Inline (fl_valuator_value_damage); + + procedure fl_valuator_draw + (V : in Storage.Integer_Address); + pragma Import (C, fl_valuator_draw, "fl_valuator_draw"); + pragma Inline (fl_valuator_draw); + function fl_valuator_handle (V : in Storage.Integer_Address; E : in Interfaces.C.int) @@ -144,6 +158,10 @@ package body FLTK.Widgets.Valuators is + ------------------- + -- Destructors -- + ------------------- + procedure Extra_Final (This : in out Valuator) is begin @@ -164,6 +182,10 @@ package body FLTK.Widgets.Valuators is + -------------------- + -- Constructors -- + -------------------- + procedure Extra_Init (This : in out Valuator; X, Y, W, H : in Integer; @@ -173,6 +195,14 @@ package body FLTK.Widgets.Valuators is end Extra_Init; + procedure Initialize + (This : in out Valuator) is + begin + This.Draw_Ptr := fl_valuator_draw'Address; + This.Handle_Ptr := fl_valuator_handle'Address; + end Initialize; + + package body Forge is function Create @@ -188,8 +218,6 @@ package body FLTK.Widgets.Valuators is Interfaces.C.int (H), Interfaces.C.To_C (Text)); Extra_Init (This, X, Y, W, H, Text); - valuator_set_draw_hook (This.Void_Ptr, Storage.To_Integer (Draw_Hook'Address)); - valuator_set_handle_hook (This.Void_Ptr, Storage.To_Integer (Handle_Hook'Address)); end return; end Create; @@ -198,6 +226,10 @@ package body FLTK.Widgets.Valuators is + ----------------------- + -- API Subprograms -- + ----------------------- + function Clamp (This : in Valuator; Input : in Long_Float) @@ -271,11 +303,35 @@ package body FLTK.Widgets.Valuators is end Get_Step; - procedure Set_Step + procedure Set_Step_Top (This : in out Valuator; To : in Long_Float) is begin - fl_valuator_set_step (This.Void_Ptr, Interfaces.C.double (To)); + fl_valuator_set_step_top + (This.Void_Ptr, + Interfaces.C.double (To)); + end Set_Step_Top; + + + procedure Set_Step_Bottom + (This : in out Valuator; + To : in Integer) is + begin + fl_valuator_set_step_bottom + (This.Void_Ptr, + Interfaces.C.int (To)); + end Set_Step_Bottom; + + + procedure Set_Step + (This : in out Valuator; + Top : in Long_Float; + Bottom : in Integer) is + begin + fl_valuator_set_step + (This.Void_Ptr, + Interfaces.C.double (Top), + Interfaces.C.int (Bottom)); end Set_Step; @@ -327,15 +383,13 @@ package body FLTK.Widgets.Valuators is - function Handle - (This : in out Valuator; - Event : in Event_Kind) - return Event_Outcome is + procedure Value_Damage + (This : in out Valuator) is begin - return Event_Outcome'Val - (fl_valuator_handle (This.Void_Ptr, Event_Kind'Pos (Event))); - end Handle; + fl_valuator_value_damage (This.Void_Ptr); + end Value_Damage; end FLTK.Widgets.Valuators; + diff --git a/src/fltk-widgets-valuators.ads b/src/fltk-widgets-valuators.ads index ccf2a49..83df44f 100644 --- a/src/fltk-widgets-valuators.ads +++ b/src/fltk-widgets-valuators.ads @@ -66,10 +66,19 @@ package FLTK.Widgets.Valuators is (This : in Valuator) return Long_Float; - procedure Set_Step + procedure Set_Step_Top (This : in out Valuator; To : in Long_Float); + procedure Set_Step_Bottom + (This : in out Valuator; + To : in Integer); + + procedure Set_Step + (This : in out Valuator; + Top : in Long_Float; + Bottom : in Integer); + function Get_Value (This : in Valuator) return Long_Float; @@ -93,10 +102,8 @@ package FLTK.Widgets.Valuators is - function Handle - (This : in out Valuator; - Event : in Event_Kind) - return Event_Outcome; + procedure Value_Damage + (This : in out Valuator); private @@ -104,6 +111,9 @@ private type Valuator is new Widget with null record; + overriding procedure Initialize + (This : in out Valuator); + overriding procedure Finalize (This : in out Valuator); @@ -127,6 +137,8 @@ private pragma Inline (Get_Maximum); pragma Inline (Set_Maximum); pragma Inline (Get_Step); + pragma Inline (Set_Step_Top); + pragma Inline (Set_Step_Bottom); pragma Inline (Set_Step); pragma Inline (Get_Value); pragma Inline (Set_Value); @@ -134,8 +146,9 @@ private pragma Inline (Set_Precision); pragma Inline (Set_Range); - pragma Inline (Handle); + pragma Inline (Value_Damage); end FLTK.Widgets.Valuators; + -- cgit