summaryrefslogtreecommitdiff
path: root/src/fltk-widgets-groups-text_displays.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/fltk-widgets-groups-text_displays.adb')
-rw-r--r--src/fltk-widgets-groups-text_displays.adb193
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