summaryrefslogtreecommitdiff
path: root/src/fltk-widgets-groups-text_displays.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/fltk-widgets-groups-text_displays.ads')
-rw-r--r--src/fltk-widgets-groups-text_displays.ads158
1 files changed, 156 insertions, 2 deletions
diff --git a/src/fltk-widgets-groups-text_displays.ads b/src/fltk-widgets-groups-text_displays.ads
index 6262125..332af44 100644
--- a/src/fltk-widgets-groups-text_displays.ads
+++ b/src/fltk-widgets-groups-text_displays.ads
@@ -4,13 +4,22 @@ with
FLTK.Text_Buffers;
+private with
+
+ Interfaces.C,
+ System.Address_To_Access_Conversions;
+
package FLTK.Widgets.Groups.Text_Displays is
type Text_Display is new Group with private;
+ type Text_Display_Reference (Data : not null access Text_Display'Class) is
+ limited null record with Implicit_Dereference => Data;
+
type Wrap_Mode is (None, Column, Pixel, Bounds);
+
type Cursor_Style is (Normal, Caret, Dim, Block, Heavy, Simple);
Bounds_Error : exception;
@@ -30,9 +39,42 @@ package FLTK.Widgets.Groups.Text_Displays is
+ package Styles is
+
+ type Style_Entry is private;
+ type Style_Index is new Character range 'A' .. '~';
+ type Style_Array is array (Style_Index range <>) of Style_Entry;
+
+ type Unfinished_Style_Callback is access procedure
+ (Char : in Character;
+ Display : in out Text_Display);
+
+ function Item
+ (Tint : in Color;
+ Font : in Font_Kind;
+ Size : in Font_Size)
+ return Style_Entry;
+
+ private
+
+ type Style_Entry is record
+ Attr : Interfaces.C.unsigned;
+ Col : Interfaces.C.unsigned;
+ Font : Interfaces.C.int;
+ Size : Interfaces.C.int;
+ end record;
+
+ pragma Convention (C, Style_Entry);
+ pragma Convention (C, Style_Array);
+
+ end Styles;
+
+
+
+
function Get_Buffer
(This : in Text_Display)
- return FLTK.Text_Buffers.Text_Buffer_Cursor;
+ return FLTK.Text_Buffers.Text_Buffer_Reference;
procedure Set_Buffer
(This : in out Text_Display;
@@ -41,6 +83,21 @@ package 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);
+
+ 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);
+
+
+
+
function Col_To_X
(This : in Text_Display;
Col_Num : in Integer)
@@ -117,6 +174,10 @@ package FLTK.Widgets.Groups.Text_Displays is
(This : in out Text_Display;
Item : in String);
+ procedure Overstrike
+ (This : in out Text_Display;
+ Text : in String);
+
function Get_Insert_Position
(This : in Text_Display)
return Natural;
@@ -279,6 +340,10 @@ package FLTK.Widgets.Groups.Text_Displays is
+ procedure Redisplay_Range
+ (This : in out Text_Display;
+ Start, Finish : in Natural);
+
procedure Draw
(This : in out Text_Display);
@@ -293,12 +358,101 @@ private
type Text_Display is new Group with
record
- Buffer : access FLTK.Text_Buffers.Text_Buffer;
+ Buffer : access FLTK.Text_Buffers.Text_Buffer;
+ Style_Callback : Styles.Unfinished_Style_Callback;
end record;
overriding procedure Finalize
(This : in out Text_Display);
+
+
+ package Text_Display_Convert is new System.Address_To_Access_Conversions (Text_Display'Class);
+
+
+
+
+ pragma Inline (Get_Buffer);
+ pragma Inline (Set_Buffer);
+
+
+ pragma Inline (Highlight_Data);
+
+
+ pragma Inline (Col_To_X);
+ pragma Inline (X_To_Col);
+ pragma Inline (In_Selection);
+ pragma Inline (Position_To_XY);
+
+
+ pragma Inline (Get_Cursor_Color);
+ pragma Inline (Set_Cursor_Color);
+ pragma Inline (Set_Cursor_Style);
+ pragma Inline (Hide_Cursor);
+ pragma Inline (Show_Cursor);
+
+
+ pragma Inline (Get_Text_Color);
+ pragma Inline (Set_Text_Color);
+ pragma Inline (Get_Text_Font);
+ pragma Inline (Set_Text_Font);
+ pragma Inline (Get_Text_Size);
+ pragma Inline (Set_Text_Size);
+
+
+ pragma Inline (Insert_Text);
+ pragma Inline (Overstrike);
+ pragma Inline (Get_Insert_Position);
+ pragma Inline (Set_Insert_Position);
+ pragma Inline (Show_Insert_Position);
+
+
+ pragma Inline (Word_Start);
+ pragma Inline (Word_End);
+ pragma Inline (Next_Word);
+ pragma Inline (Previous_Word);
+ pragma Inline (Set_Wrap_Mode);
+
+
+ pragma Inline (Line_Start);
+ pragma Inline (Line_End);
+ pragma Inline (Count_Lines);
+ pragma Inline (Skip_Lines);
+ pragma Inline (Rewind_Lines);
+
+
+ pragma Inline (Get_Linenumber_Alignment);
+ pragma Inline (Set_Linenumber_Alignment);
+ pragma Inline (Get_Linenumber_Back_Color);
+ pragma Inline (Set_Linenumber_Back_Color);
+ pragma Inline (Get_Linenumber_Fore_Color);
+ pragma Inline (Set_Linenumber_Fore_Color);
+ pragma Inline (Get_Linenumber_Font);
+ pragma Inline (Set_Linenumber_Font);
+ pragma Inline (Get_Linenumber_Size);
+ pragma Inline (Set_Linenumber_Size);
+ pragma Inline (Get_Linenumber_Width);
+ pragma Inline (Set_Linenumber_Width);
+
+
+ pragma Inline (Move_Down);
+ pragma Inline (Move_Left);
+ pragma Inline (Move_Right);
+ pragma Inline (Move_Up);
+
+
+ pragma Inline (Scroll_To);
+ pragma Inline (Get_Scrollbar_Alignment);
+ pragma Inline (Set_Scrollbar_Alignment);
+ pragma Inline (Get_Scrollbar_Width);
+ pragma Inline (Set_Scrollbar_Width);
+
+
+ pragma Inline (Redisplay_Range);
+ pragma Inline (Draw);
+ pragma Inline (Handle);
+
+
end FLTK.Widgets.Groups.Text_Displays;