diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/c_fl_text_display.cpp | 30 | ||||
-rw-r--r-- | src/c_fl_text_display.h | 6 | ||||
-rw-r--r-- | src/fltk-widgets-groups-text_displays.adb | 103 | ||||
-rw-r--r-- | src/fltk-widgets-groups-text_displays.ads | 35 |
4 files changed, 174 insertions, 0 deletions
diff --git a/src/c_fl_text_display.cpp b/src/c_fl_text_display.cpp index 8ae0f01..34d3c0f 100644 --- a/src/c_fl_text_display.cpp +++ b/src/c_fl_text_display.cpp @@ -93,6 +93,31 @@ void fl_text_display_set_buffer(TEXTDISPLAY td, TEXTBUFFER tb) { } +double fl_text_display_col_to_x(TEXTDISPLAY td, double c) { + return reinterpret_cast<Fl_Text_Display*>(td)->col_to_x(c); +} + + +double fl_text_display_x_to_col(TEXTDISPLAY td, double x) { + return reinterpret_cast<Fl_Text_Display*>(td)->x_to_col(x); +} + + +int fl_text_display_get_cursor_color(TEXTDISPLAY td) { + return reinterpret_cast<Fl_Text_Display*>(td)->cursor_color(); +} + + +void fl_text_display_set_cursor_color(TEXTDISPLAY td, int c) { + reinterpret_cast<Fl_Text_Display*>(td)->cursor_color(c); +} + + +void fl_text_display_set_cursor_style(TEXTDISPLAY td, int s) { + reinterpret_cast<Fl_Text_Display*>(td)->cursor_style(s); +} + + int fl_text_display_get_text_color(TEXTDISPLAY td) { return reinterpret_cast<Fl_Text_Display*>(td)->textcolor(); } @@ -153,6 +178,11 @@ void fl_text_display_wrap_mode(TEXTDISPLAY td, int w, int m) { } +int fl_text_display_count_lines(TEXTDISPLAY td, int s, int f, int p) { + return reinterpret_cast<Fl_Text_Display*>(td)->count_lines(s, f, p); +} + + int fl_text_display_skip_lines(TEXTDISPLAY td, int s, int l, int p) { return reinterpret_cast<Fl_Text_Display*>(td)->skip_lines(s, l, p); } diff --git a/src/c_fl_text_display.h b/src/c_fl_text_display.h index 86c5f65..2d47cc4 100644 --- a/src/c_fl_text_display.h +++ b/src/c_fl_text_display.h @@ -21,6 +21,11 @@ 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" double fl_text_display_col_to_x(TEXTDISPLAY td, double c); +extern "C" double fl_text_display_x_to_col(TEXTDISPLAY td, double x); +extern "C" int fl_text_display_get_cursor_color(TEXTDISPLAY td); +extern "C" void fl_text_display_set_cursor_color(TEXTDISPLAY td, int c); +extern "C" void fl_text_display_set_cursor_style(TEXTDISPLAY td, int s); extern "C" int fl_text_display_get_text_color(TEXTDISPLAY td); extern "C" void fl_text_display_set_text_color(TEXTDISPLAY td, int c); extern "C" int fl_text_display_get_text_font(TEXTDISPLAY td); @@ -33,6 +38,7 @@ extern "C" void fl_text_display_show_insert_pos(TEXTDISPLAY td); extern "C" void fl_text_display_next_word(TEXTDISPLAY td); extern "C" void fl_text_display_previous_word(TEXTDISPLAY td); extern "C" void fl_text_display_wrap_mode(TEXTDISPLAY td, int w, int m); +extern "C" int fl_text_display_count_lines(TEXTDISPLAY td, int s, int f, int p); extern "C" int fl_text_display_skip_lines(TEXTDISPLAY td, int s, int l, int p); extern "C" int fl_text_display_rewind_lines(TEXTDISPLAY td, int s, int l); extern "C" void fl_text_display_linenumber_width(TEXTDISPLAY td, int w); diff --git a/src/fltk-widgets-groups-text_displays.adb b/src/fltk-widgets-groups-text_displays.adb index 27324c2..1bee23f 100644 --- a/src/fltk-widgets-groups-text_displays.adb +++ b/src/fltk-widgets-groups-text_displays.adb @@ -38,6 +38,33 @@ package body FLTK.Widgets.Groups.Text_Displays is (TD, TB : in System.Address); pragma Import (C, fl_text_display_set_buffer, "fl_text_display_set_buffer"); + function fl_text_display_col_to_x + (TD : in System.Address; + C : in Interfaces.C.double) + return Interfaces.C.double; + pragma Import (C, fl_text_display_col_to_x, "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"); + + function fl_text_display_get_cursor_color + (TD : in System.Address) + return Interfaces.C.int; + pragma Import (C, fl_text_display_get_cursor_color, "fl_text_display_get_cursor_color"); + + procedure fl_text_display_set_cursor_color + (TD : in System.Address; + C : in Interfaces.C.int); + pragma Import (C, fl_text_display_set_cursor_color, "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"); + function fl_text_display_get_text_color (TD : in System.Address) return Interfaces.C.int; @@ -95,6 +122,12 @@ package body FLTK.Widgets.Groups.Text_Displays is W, M : in Interfaces.C.int); pragma Import (C, fl_text_display_wrap_mode, "fl_text_display_wrap_mode"); + 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"); + function fl_text_display_skip_lines (TD : in System.Address; S, L, P : in Interfaces.C.int) @@ -186,6 +219,60 @@ package body FLTK.Widgets.Groups.Text_Displays is + function Col_To_X + (This : in Text_Display; + Col_Num : in Integer) + return Integer is + begin + return Integer (Interfaces.C.double'Rounding + (fl_text_display_col_to_x (This.Void_Ptr, Interfaces.C.double (Col_Num)))); + end Col_To_X; + + + + + function X_To_Col + (This : in Text_Display; + X_Pos : in Integer) + return Integer is + begin + return Integer (Interfaces.C.double'Rounding + (fl_text_display_x_to_col (This.Void_Ptr, Interfaces.C.double (X_Pos)))); + end X_To_Col; + + + + + function Get_Cursor_Color + (This : in Text_Display) + return Color is + begin + return Color (fl_text_display_get_cursor_color (This.Void_Ptr)); + end Get_Cursor_Color; + + + + + procedure Set_Cursor_Color + (This : in out Text_Display; + Col : in Color) is + begin + fl_text_display_set_cursor_color (This.Void_Ptr, Interfaces.C.int (Col)); + end Set_Cursor_Color; + + + + + procedure Set_Cursor_Style + (This : in out Text_Display; + Style : in Cursor_Style) is + begin + fl_text_display_set_cursor_style (This.Void_Ptr, Cursor_Style'Pos (Style)); + end Set_Cursor_Style; + + + + function Get_Text_Color (This : in Text_Display) return Color is @@ -307,6 +394,22 @@ package body FLTK.Widgets.Groups.Text_Displays is + function Count_Lines + (This : in Text_Display; + Start, Finish : in Natural; + Start_Pos_Is_Line_Start : in Boolean := False) + return Natural is + begin + return Natural (fl_text_display_count_lines + (This.Void_Ptr, + Interfaces.C.int (Start), + Interfaces.C.int (Finish), + Boolean'Pos (Start_Pos_Is_Line_Start))); + end Count_Lines; + + + + function Skip_Lines (This : in out Text_Display; Start, Lines : in Natural; diff --git a/src/fltk-widgets-groups-text_displays.ads b/src/fltk-widgets-groups-text_displays.ads index 2a6d50d..c1c3ea8 100644 --- a/src/fltk-widgets-groups-text_displays.ads +++ b/src/fltk-widgets-groups-text_displays.ads @@ -10,6 +10,7 @@ package FLTK.Widgets.Groups.Text_Displays is type Wrap_Mode is (Wrap_None, Wrap_At_Column, Wrap_At_Pixel, Wrap_At_Bounds); + type Cursor_Style is (Normal, Caret, Dim, Block, Heavy, Simple); function Create @@ -28,6 +29,33 @@ package FLTK.Widgets.Groups.Text_Displays is Buff : in out FLTK.Text_Buffers.Text_Buffer); + function Col_To_X + (This : in Text_Display; + Col_Num : in Integer) + return Integer; + + + function X_To_Col + (This : in Text_Display; + X_Pos : in Integer) + return Integer; + + + function Get_Cursor_Color + (This : in Text_Display) + return Color; + + + procedure Set_Cursor_Color + (This : in out Text_Display; + Col : in Color); + + + procedure Set_Cursor_Style + (This : in out Text_Display; + Style : in Cursor_Style); + + function Get_Text_Color (This : in Text_Display) return Color; @@ -86,6 +114,13 @@ package FLTK.Widgets.Groups.Text_Displays is Margin : in Natural := 0); + function Count_Lines + (This : in Text_Display; + Start, Finish : in Natural; + Start_Pos_Is_Line_Start : in Boolean := False) + return Natural; + + -- takes into account word wrap as well as newline characters function Skip_Lines (This : in out Text_Display; |