diff options
Diffstat (limited to 'src/fltk-widgets-groups-text_displays.ads')
-rw-r--r-- | src/fltk-widgets-groups-text_displays.ads | 158 |
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; |