diff options
Diffstat (limited to 'src/fltk-widgets-groups-text_displays.adb')
-rw-r--r-- | src/fltk-widgets-groups-text_displays.adb | 193 |
1 files changed, 185 insertions, 8 deletions
diff --git a/src/fltk-widgets-groups-text_displays.adb b/src/fltk-widgets-groups-text_displays.adb index 4548708..a28cdbb 100644 --- a/src/fltk-widgets-groups-text_displays.adb +++ b/src/fltk-widgets-groups-text_displays.adb @@ -18,10 +18,12 @@ package body FLTK.Widgets.Groups.Text_Displays is procedure text_display_set_draw_hook (W, D : in System.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 System.Address); pragma Import (C, text_display_set_handle_hook, "text_display_set_handle_hook"); + pragma Inline (text_display_set_handle_hook); @@ -31,10 +33,12 @@ package body FLTK.Widgets.Groups.Text_Displays is Label : in Interfaces.C.char_array) return System.Address; pragma Import (C, new_fl_text_display, "new_fl_text_display"); + pragma Inline (new_fl_text_display); procedure free_fl_text_display (TD : in System.Address); pragma Import (C, free_fl_text_display, "free_fl_text_display"); + pragma Inline (free_fl_text_display); @@ -43,10 +47,29 @@ package body FLTK.Widgets.Groups.Text_Displays is (TD : in System.Address) return System.Address; pragma Import (C, fl_text_display_get_buffer, "fl_text_display_get_buffer"); + pragma Inline (fl_text_display_get_buffer); procedure fl_text_display_set_buffer (TD, TB : in System.Address); pragma Import (C, fl_text_display_set_buffer, "fl_text_display_set_buffer"); + pragma Inline (fl_text_display_set_buffer); + + + + + procedure fl_text_display_highlight_data + (TD, TB, ST : in System.Address; + L : in Interfaces.C.int); + pragma Import (C, fl_text_display_highlight_data, "fl_text_display_highlight_data"); + pragma Inline (fl_text_display_highlight_data); + + procedure fl_text_display_highlight_data2 + (TD, TB, ST : in System.Address; + L : in Interfaces.C.int; + C : in Interfaces.C.unsigned; + B, A : in System.Address); + pragma Import (C, fl_text_display_highlight_data2, "fl_text_display_highlight_data2"); + pragma Inline (fl_text_display_highlight_data2); @@ -56,18 +79,21 @@ package body FLTK.Widgets.Groups.Text_Displays is C : in Interfaces.C.double) return Interfaces.C.double; pragma Import (C, fl_text_display_col_to_x, "fl_text_display_col_to_x"); + pragma Inline (fl_text_display_col_to_x); function fl_text_display_x_to_col (TD : in System.Address; X : in Interfaces.C.double) return Interfaces.C.double; pragma Import (C, fl_text_display_x_to_col, "fl_text_display_x_to_col"); + pragma Inline (fl_text_display_x_to_col); function fl_text_display_in_selection (TD : in System.Address; X, Y : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_in_selection, "fl_text_display_in_selection"); + pragma Inline (fl_text_display_in_selection); function fl_text_display_position_to_xy (TD : in System.Address; @@ -75,6 +101,7 @@ package body FLTK.Widgets.Groups.Text_Displays is X, Y : out Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_position_to_xy, "fl_text_display_position_to_xy"); + pragma Inline (fl_text_display_position_to_xy); @@ -83,24 +110,29 @@ package body FLTK.Widgets.Groups.Text_Displays is (TD : in System.Address) return Interfaces.C.unsigned; pragma Import (C, fl_text_display_get_cursor_color, "fl_text_display_get_cursor_color"); + pragma Inline (fl_text_display_get_cursor_color); procedure fl_text_display_set_cursor_color (TD : in System.Address; C : in Interfaces.C.unsigned); pragma Import (C, fl_text_display_set_cursor_color, "fl_text_display_set_cursor_color"); + pragma Inline (fl_text_display_set_cursor_color); procedure fl_text_display_set_cursor_style (TD : in System.Address; S : in Interfaces.C.int); pragma Import (C, fl_text_display_set_cursor_style, "fl_text_display_set_cursor_style"); + pragma Inline (fl_text_display_set_cursor_style); procedure fl_text_display_hide_cursor (TD : in System.Address); pragma Import (C, fl_text_display_hide_cursor, "fl_text_display_hide_cursor"); + pragma Inline (fl_text_display_hide_cursor); procedure fl_text_display_show_cursor (TD : in System.Address); pragma Import (C, fl_text_display_show_cursor, "fl_text_display_show_cursor"); + pragma Inline (fl_text_display_show_cursor); @@ -109,31 +141,37 @@ package body FLTK.Widgets.Groups.Text_Displays is (TD : in System.Address) return Interfaces.C.unsigned; pragma Import (C, fl_text_display_get_text_color, "fl_text_display_get_text_color"); + pragma Inline (fl_text_display_get_text_color); procedure fl_text_display_set_text_color (TD : in System.Address; C : in Interfaces.C.unsigned); pragma Import (C, fl_text_display_set_text_color, "fl_text_display_set_text_color"); + pragma Inline (fl_text_display_set_text_color); function fl_text_display_get_text_font (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_get_text_font, "fl_text_display_get_text_font"); + pragma Inline (fl_text_display_get_text_font); procedure fl_text_display_set_text_font (TD : in System.Address; F : in Interfaces.C.int); pragma Import (C, fl_text_display_set_text_font, "fl_text_display_set_text_font"); + pragma Inline (fl_text_display_set_text_font); function fl_text_display_get_text_size (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_get_text_size, "fl_text_display_get_text_size"); + pragma Inline (fl_text_display_get_text_size); procedure fl_text_display_set_text_size (TD : in System.Address; S : in Interfaces.C.int); pragma Import (C, fl_text_display_set_text_size, "fl_text_display_set_text_size"); + pragma Inline (fl_text_display_set_text_size); @@ -142,20 +180,30 @@ package body FLTK.Widgets.Groups.Text_Displays is (TD : in System.Address; I : in Interfaces.C.char_array); pragma Import (C, fl_text_display_insert, "fl_text_display_insert"); + pragma Inline (fl_text_display_insert); + + procedure fl_text_display_overstrike + (TD : in System.Address; + T : in Interfaces.C.char_array); + pragma Import (C, fl_text_display_overstrike, "fl_text_display_overstrike"); + pragma Inline (fl_text_display_overstrike); function fl_text_display_get_insert_pos (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_get_insert_pos, "fl_text_display_get_insert_pos"); + pragma Inline (fl_text_display_get_insert_pos); procedure fl_text_display_set_insert_pos (TD : in System.Address; P : in Interfaces.C.int); pragma Import (C, fl_text_display_set_insert_pos, "fl_text_display_set_insert_pos"); + pragma Inline (fl_text_display_set_insert_pos); procedure fl_text_display_show_insert_pos (TD : in System.Address); pragma Import (C, fl_text_display_show_insert_pos, "fl_text_display_show_insert_pos"); + pragma Inline (fl_text_display_show_insert_pos); @@ -165,25 +213,30 @@ package body FLTK.Widgets.Groups.Text_Displays is P : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_word_start, "fl_text_display_word_start"); + pragma Inline (fl_text_display_word_start); function fl_text_display_word_end (TD : in System.Address; P : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_word_end, "fl_text_display_word_end"); + pragma Inline (fl_text_display_word_end); procedure fl_text_display_next_word (TD : in System.Address); pragma Import (C, fl_text_display_next_word, "fl_text_display_next_word"); + pragma Inline (fl_text_display_next_word); procedure fl_text_display_previous_word (TD : in System.Address); pragma Import (C, fl_text_display_previous_word, "fl_text_display_previous_word"); + pragma Inline (fl_text_display_previous_word); procedure fl_text_display_wrap_mode (TD : in System.Address; W, M : in Interfaces.C.int); pragma Import (C, fl_text_display_wrap_mode, "fl_text_display_wrap_mode"); + pragma Inline (fl_text_display_wrap_mode); @@ -193,30 +246,35 @@ package body FLTK.Widgets.Groups.Text_Displays is S : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_line_start, "fl_text_display_line_start"); + pragma Inline (fl_text_display_line_start); function fl_text_display_line_end (TD : in System.Address; S, P : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_line_end, "fl_text_display_line_end"); + pragma Inline (fl_text_display_line_end); function fl_text_display_count_lines (TD : in System.Address; S, F, P : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_count_lines, "fl_text_display_count_lines"); + pragma Inline (fl_text_display_count_lines); function fl_text_display_skip_lines (TD : in System.Address; S, L, P : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_skip_lines, "fl_text_display_skip_lines"); + pragma Inline (fl_text_display_skip_lines); function fl_text_display_rewind_lines (TD : in System.Address; S, L : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_rewind_lines, "fl_text_display_rewind_lines"); + pragma Inline (fl_text_display_rewind_lines); @@ -226,72 +284,84 @@ package body FLTK.Widgets.Groups.Text_Displays is return Interfaces.C.unsigned; pragma Import (C, fl_text_display_get_linenumber_align, "fl_text_display_get_linenumber_align"); + pragma Inline (fl_text_display_get_linenumber_align); procedure fl_text_display_set_linenumber_align (TD : in System.Address; A : in Interfaces.C.unsigned); pragma Import (C, fl_text_display_set_linenumber_align, "fl_text_display_set_linenumber_align"); + pragma Inline (fl_text_display_set_linenumber_align); function fl_text_display_get_linenumber_bgcolor (TD : in System.Address) return Interfaces.C.unsigned; pragma Import (C, fl_text_display_get_linenumber_bgcolor, "fl_text_display_get_linenumber_bgcolor"); + pragma Inline (fl_text_display_get_linenumber_bgcolor); procedure fl_text_display_set_linenumber_bgcolor (TD : in System.Address; C : in Interfaces.C.unsigned); pragma Import (C, fl_text_display_set_linenumber_bgcolor, "fl_text_display_set_linenumber_bgcolor"); + pragma Inline (fl_text_display_set_linenumber_bgcolor); function fl_text_display_get_linenumber_fgcolor (TD : in System.Address) return Interfaces.C.unsigned; pragma Import (C, fl_text_display_get_linenumber_fgcolor, "fl_text_display_get_linenumber_fgcolor"); + pragma Inline (fl_text_display_get_linenumber_fgcolor); procedure fl_text_display_set_linenumber_fgcolor (TD : in System.Address; C : in Interfaces.C.unsigned); pragma Import (C, fl_text_display_set_linenumber_fgcolor, "fl_text_display_set_linenumber_fgcolor"); + pragma Inline (fl_text_display_set_linenumber_fgcolor); function fl_text_display_get_linenumber_font (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_get_linenumber_font, "fl_text_display_get_linenumber_font"); + pragma Inline (fl_text_display_get_linenumber_font); procedure fl_text_display_set_linenumber_font (TD : in System.Address; F : in Interfaces.C.int); pragma Import (C, fl_text_display_set_linenumber_font, "fl_text_display_set_linenumber_font"); + pragma Inline (fl_text_display_set_linenumber_font); function fl_text_display_get_linenumber_size (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_get_linenumber_size, "fl_text_display_get_linenumber_size"); + pragma Inline (fl_text_display_get_linenumber_size); procedure fl_text_display_set_linenumber_size (TD : in System.Address; S : in Interfaces.C.int); pragma Import (C, fl_text_display_set_linenumber_size, "fl_text_display_set_linenumber_size"); + pragma Inline (fl_text_display_set_linenumber_size); function fl_text_display_get_linenumber_width (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_get_linenumber_width, "fl_text_display_get_linenumber_width"); + pragma Inline (fl_text_display_get_linenumber_width); procedure fl_text_display_set_linenumber_width (TD : in System.Address; W : in Interfaces.C.int); pragma Import (C, fl_text_display_set_linenumber_width, "fl_text_display_set_linenumber_width"); + pragma Inline (fl_text_display_set_linenumber_width); @@ -300,21 +370,25 @@ package body FLTK.Widgets.Groups.Text_Displays is (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_move_down, "fl_text_display_move_down"); + pragma Inline (fl_text_display_move_down); function fl_text_display_move_left (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_move_left, "fl_text_display_move_left"); + pragma Inline (fl_text_display_move_left); function fl_text_display_move_right (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_move_right, "fl_text_display_move_right"); + pragma Inline (fl_text_display_move_right); function fl_text_display_move_up (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_move_up, "fl_text_display_move_up"); + pragma Inline (fl_text_display_move_up); @@ -323,39 +397,69 @@ package body FLTK.Widgets.Groups.Text_Displays is (TD : in System.Address; L : in Interfaces.C.int); pragma Import (C, fl_text_display_scroll, "fl_text_display_scroll"); + pragma Inline (fl_text_display_scroll); function fl_text_display_get_scrollbar_align (TD : in System.Address) return Interfaces.C.unsigned; pragma Import (C, fl_text_display_get_scrollbar_align, "fl_text_display_get_scrollbar_align"); + pragma Inline (fl_text_display_get_scrollbar_align); procedure fl_text_display_set_scrollbar_align (TD : in System.Address; A : in Interfaces.C.unsigned); pragma Import (C, fl_text_display_set_scrollbar_align, "fl_text_display_set_scrollbar_align"); + pragma Inline (fl_text_display_set_scrollbar_align); function fl_text_display_get_scrollbar_width (TD : in System.Address) return Interfaces.C.int; pragma Import (C, fl_text_display_get_scrollbar_width, "fl_text_display_get_scrollbar_width"); + pragma Inline (fl_text_display_get_scrollbar_width); procedure fl_text_display_set_scrollbar_width (TD : in System.Address; W : in Interfaces.C.int); pragma Import (C, fl_text_display_set_scrollbar_width, "fl_text_display_set_scrollbar_width"); + pragma Inline (fl_text_display_set_scrollbar_width); + + procedure fl_text_display_redisplay_range + (TD : in System.Address; + S, F : in Interfaces.C.int); + pragma Import (C, fl_text_display_redisplay_range, "fl_text_display_redisplay_range"); + pragma Inline (fl_text_display_redisplay_range); procedure fl_text_display_draw (W : in System.Address); pragma Import (C, fl_text_display_draw, "fl_text_display_draw"); + pragma Inline (fl_text_display_draw); function fl_text_display_handle (W : in System.Address; E : in Interfaces.C.int) return Interfaces.C.int; pragma Import (C, fl_text_display_handle, "fl_text_display_handle"); + pragma Inline (fl_text_display_handle); + + + + + procedure Style_Hook + (C : in Interfaces.C.int; + D : in System.Address) + is + use Styles; -- for maximum stylin' + + Ada_Widget : access Text_Display'Class := + Text_Display_Convert.To_Pointer (D); + begin + if Ada_Widget.Style_Callback /= null then + Ada_Widget.Style_Callback (Character'Val (C), Text_Display (Ada_Widget.all)); + end if; + end Style_Hook; @@ -404,11 +508,34 @@ package body FLTK.Widgets.Groups.Text_Displays is + package body Styles is + + function Item + (Tint : in Color; + Font : in Font_Kind; + Size : in Font_Size) + return Style_Entry is + begin + return This : Style_Entry do + This.Attr := 0; + This.Col := Interfaces.C.unsigned (Tint); + This.Font := Font_Kind'Pos (Font); + This.Size := Interfaces.C.int (Size); + end return; + end Item; + + pragma Inline (Item); + + end Styles; + + + + function Get_Buffer (This : in Text_Display) - return FLTK.Text_Buffers.Text_Buffer_Cursor is + return FLTK.Text_Buffers.Text_Buffer_Reference is begin - return Ref : FLTK.Text_Buffers.Text_Buffer_Cursor (This.Buffer); + return Ref : FLTK.Text_Buffers.Text_Buffer_Reference (This.Buffer); end Get_Buffer; @@ -423,6 +550,40 @@ package body FLTK.Widgets.Groups.Text_Displays is + procedure Highlight_Data + (This : in out Text_Display; + Buff : in out FLTK.Text_Buffers.Text_Buffer; + Table : in Styles.Style_Array) is + begin + fl_text_display_highlight_data + (This.Void_Ptr, + Wrapper (Buff).Void_Ptr, + Table'Address, + Table'Length); + end Highlight_Data; + + + procedure Highlight_Data + (This : in out Text_Display; + Buff : in out FLTK.Text_Buffers.Text_Buffer; + Table : in Styles.Style_Array; + Unfinished : in Styles.Style_Index; + Callback : in Styles.Unfinished_Style_Callback) is + begin + This.Style_Callback := Callback; + fl_text_display_highlight_data2 + (This.Void_Ptr, + Wrapper (Buff).Void_Ptr, + Table'Address, + Table'Length, + Character'Pos (Character (Unfinished)), + Style_Hook'Address, + This'Address); + end Highlight_Data; + + + + function Col_To_X (This : in Text_Display; Col_Num : in Integer) @@ -457,16 +618,13 @@ package body FLTK.Widgets.Groups.Text_Displays is (This : in Text_Display; Pos : in Integer; X, Y : out Integer; - Vert_Out : out Boolean) - is - Raw_X, Raw_Y : Interfaces.C.int; + Vert_Out : out Boolean) is begin Vert_Out := fl_text_display_position_to_xy (This.Void_Ptr, Interfaces.C.int (Pos), - Raw_X, Raw_Y) /= 0; - X := Integer (Raw_X); - Y := Integer (Raw_Y); + Interfaces.C.int (X), + Interfaces.C.int (Y)) /= 0; end Position_To_XY; @@ -570,6 +728,14 @@ package body FLTK.Widgets.Groups.Text_Displays is end Insert_Text; + procedure Overstrike + (This : in out Text_Display; + Text : in String) is + begin + fl_text_display_overstrike (This.Void_Ptr, Interfaces.C.To_C (Text)); + end Overstrike; + + function Get_Insert_Position (This : in Text_Display) return Natural is @@ -905,6 +1071,17 @@ package body FLTK.Widgets.Groups.Text_Displays is + procedure Redisplay_Range + (This : in out Text_Display; + Start, Finish : in Natural) is + begin + fl_text_display_redisplay_range + (This.Void_Ptr, + Interfaces.C.int (Start), + Interfaces.C.int (Finish)); + end Redisplay_Range; + + procedure Draw (This : in out Text_Display) is begin |