summaryrefslogtreecommitdiff
path: root/src/fltk-images-rgb.adb
diff options
context:
space:
mode:
authorJed Barber <jjbarber@y7mail.com>2017-05-15 12:14:49 +1000
committerJed Barber <jjbarber@y7mail.com>2017-05-15 12:14:49 +1000
commit7e92861796b9ec5aa4cdfc4ebff412dd96aeb137 (patch)
tree820cc94f6a230238b9c3869a627094489f293c62 /src/fltk-images-rgb.adb
parentffc566b41d9dd64b2d571f68458a272f503958c6 (diff)
Most relevant RGB_Image methods implemented except for Draw, Create
Diffstat (limited to 'src/fltk-images-rgb.adb')
-rw-r--r--src/fltk-images-rgb.adb91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/fltk-images-rgb.adb b/src/fltk-images-rgb.adb
index 3556f74..0287914 100644
--- a/src/fltk-images-rgb.adb
+++ b/src/fltk-images-rgb.adb
@@ -1,14 +1,105 @@
+with Interfaces.C;
+with System;
+use type System.Address;
+
+
package body FLTK.Images.RGB is
+ procedure free_fl_rgb_image
+ (I : in System.Address);
+ pragma Import (C, free_fl_rgb_image, "free_fl_rgb_image");
+
+ function fl_rgb_image_copy
+ (I : in System.Address;
+ W, H : in Interfaces.C.int)
+ return System.Address;
+ pragma Import (C, fl_rgb_image_copy, "fl_rgb_image_copy");
+
+ function fl_rgb_image_copy2
+ (I : in System.Address)
+ return System.Address;
+ pragma Import (C, fl_rgb_image_copy2, "fl_rgb_image_copy2");
+
+
+ procedure fl_rgb_image_color_average
+ (I : in System.Address;
+ C : in Interfaces.C.int;
+ B : in Interfaces.C.C_float);
+ pragma Import (C, fl_rgb_image_color_average, "fl_rgb_image_color_average");
+
+ procedure fl_rgb_image_desaturate
+ (I : in System.Address);
+ pragma Import (C, fl_rgb_image_desaturate, "fl_rgb_image_desaturate");
+
+
+
+
overriding procedure Finalize
(This : in out RGB_Image) is
begin
+ if This.Void_Ptr /= System.Null_Address and then
+ This in RGB_Image'Class
+ then
+ free_fl_rgb_image (This.Void_Ptr);
+ This.Void_Ptr := System.Null_Address;
+ end if;
Finalize (Image (This));
end Finalize;
+
+
+ function Copy
+ (This : in RGB_Image;
+ Width, Height : in Natural)
+ return RGB_Image is
+ begin
+ return Copied : RGB_Image do
+ Copied.Void_Ptr := fl_rgb_image_copy
+ (This.Void_Ptr,
+ Interfaces.C.int (Width),
+ Interfaces.C.int (Height));
+ end return;
+ end Copy;
+
+
+
+
+ function Copy
+ (This : in RGB_Image)
+ return RGB_Image is
+ begin
+ return Copied : RGB_Image do
+ Copied.Void_Ptr := fl_rgb_image_copy2 (This.Void_Ptr);
+ end return;
+ end Copy;
+
+
+
+
+ procedure Color_Average
+ (This : in out RGB_Image;
+ Col : in Color;
+ Amount : in Blend) is
+ begin
+ fl_rgb_image_color_average
+ (This.Void_Ptr,
+ Interfaces.C.int (Col),
+ Interfaces.C.C_float (Amount));
+ end Color_Average;
+
+
+
+
+ procedure Desaturate
+ (This : in out RGB_Image) is
+ begin
+ fl_rgb_image_desaturate (This.Void_Ptr);
+ end Desaturate;
+
+
end FLTK.Images.RGB;