diff options
Diffstat (limited to 'spec/fltk-images-pixmaps.ads')
-rw-r--r-- | spec/fltk-images-pixmaps.ads | 75 |
1 files changed, 56 insertions, 19 deletions
diff --git a/spec/fltk-images-pixmaps.ads b/spec/fltk-images-pixmaps.ads index 14e3f94..64d8330 100644 --- a/spec/fltk-images-pixmaps.ads +++ b/spec/fltk-images-pixmaps.ads @@ -4,12 +4,17 @@ -- Released into the public domain -package FLTK.Images.Pixmaps is +with + + Ada.Strings.Unbounded; + +private with + Interfaces.C.Strings; + + +package FLTK.Images.Pixmaps is - ------------- - -- Types -- - ------------- type Pixmap is new Image with private; @@ -17,11 +22,48 @@ package FLTK.Images.Pixmaps is with Implicit_Dereference => Data; + type Header is record + Width, Height, Colors, Per_Pixel : Positive; + end record; + + type Color_Kind is (Colorful, Monochrome, Greyscale, Symbolic); + + type Color_Definition is record + Name : Ada.Strings.Unbounded.Unbounded_String; + Kind : Color_Kind; + Value : Ada.Strings.Unbounded.Unbounded_String; + end record; + + type Color_Definition_Array is array (Positive range <>) of Color_Definition; + + type Pixmap_Data is array (Positive range <>, Positive range <>) of Character; + - -------------------- - -- Construction -- - -------------------- + + package Forge is + + -- Unlike Bitmaps or RGB_Images, you do NOT have to keep this data around. + -- A copy will be allocated and deallocated internally. + + function Create + (Values : in Header; + Colors : in Color_Definition_Array; + Pixels : in Pixmap_Data) + return Pixmap + with Pre => + Colors'Length = Values.Colors and + Pixels'Length (1) = Values.Height and + (for all Definition of Colors => + Ada.Strings.Unbounded.Length (Definition.Name) = Values.Per_Pixel) and + Pixels'Length (2) = Values.Width * Values.Per_Pixel; + + end Forge; + + + + + -- Copying -- function Copy (This : in Pixmap; @@ -35,9 +77,7 @@ package FLTK.Images.Pixmaps is - -------------- -- Colors -- - -------------- procedure Color_Average (This : in out Pixmap; @@ -50,9 +90,7 @@ package FLTK.Images.Pixmaps is - ---------------- -- Activity -- - ---------------- procedure Uncache (This : in out Pixmap); @@ -60,24 +98,24 @@ package FLTK.Images.Pixmaps is - --------------- -- Drawing -- - --------------- procedure Draw (This : in Pixmap; X, Y : in Integer); procedure Draw - (This : in Pixmap; - X, Y, W, H : in Integer; - CX, CY : in Integer := 0); + (This : in Pixmap; + X, Y, W, H : in Integer; + Clip_X, Clip_Y : in Integer := 0); private - type Pixmap is new Image with null record; + type Pixmap is new Image with record + Loose_Ptr : access Interfaces.C.Strings.chars_ptr_array; + end record; overriding procedure Finalize (This : in out Pixmap); @@ -86,13 +124,12 @@ private pragma Inline (Color_Average); pragma Inline (Desaturate); - pragma Inline (Uncache); - pragma Inline (Copy); pragma Inline (Draw); end FLTK.Images.Pixmaps; + |