aboutsummaryrefslogtreecommitdiff
path: root/body
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2025-04-09 23:54:13 +1200
committerJedidiah Barber <contact@jedbarber.id.au>2025-04-09 23:54:13 +1200
commita41dedec645a0894d9173e5de0b502f727572f62 (patch)
tree808cba7c49925deca77b738eaa69e05132bbc834 /body
parent8d8ecd6db517cb208ef165785575287568e5a175 (diff)
Fixed RGB_Image size_t issue, RGB_Image/Bitmap preconditions
Diffstat (limited to 'body')
-rw-r--r--body/fltk-images-bitmaps.adb14
-rw-r--r--body/fltk-images-rgb.adb10
2 files changed, 14 insertions, 10 deletions
diff --git a/body/fltk-images-bitmaps.adb b/body/fltk-images-bitmaps.adb
index cfb63d7..4597151 100644
--- a/body/fltk-images-bitmaps.adb
+++ b/body/fltk-images-bitmaps.adb
@@ -118,7 +118,9 @@ package body FLTK.Images.Bitmaps is
begin
return This : Bitmap do
This.Void_Ptr := new_fl_bitmap
- (Storage.To_Integer (Data (Data'First)'Address),
+ ((if Data'Length > 0
+ then Storage.To_Integer (Data (Data'First)'Address)
+ else Null_Pointer),
Interfaces.C.int (Width),
Interfaces.C.int (Height));
end return;
@@ -135,13 +137,13 @@ package body FLTK.Images.Bitmaps is
-- Contracts --
- function To_Next_Byte
+ function Bytes_Needed
(Bits : in Natural)
return Natural is
begin
- return Integer (Float'Ceiling (Float (Bits) / Float (Color_Component_Array'Component_Size)))
- * Color_Component_Array'Component_Size;
- end To_Next_Byte;
+ return Integer (Float'Ceiling
+ (Float (Bits) / Float (Color_Component_Array'Component_Size)));
+ end Bytes_Needed;
@@ -191,7 +193,7 @@ package body FLTK.Images.Bitmaps is
(This : in Bitmap)
return Natural is
begin
- return To_Next_Byte (This.Get_W) * This.Get_H;
+ return Bytes_Needed (This.Get_W) * This.Get_H;
end Data_Size;
diff --git a/body/fltk-images-rgb.adb b/body/fltk-images-rgb.adb
index ce512cd..00fc1ed 100644
--- a/body/fltk-images-rgb.adb
+++ b/body/fltk-images-rgb.adb
@@ -159,7 +159,9 @@ package body FLTK.Images.RGB is
begin
return This : RGB_Image do
This.Void_Ptr := new_fl_rgb_image
- (Storage.To_Integer (Data (Data'First)'Address),
+ ((if Data'Length > 0
+ then Storage.To_Integer (Data (Data'First)'Address)
+ else Null_Pointer),
Interfaces.C.int (Width),
Interfaces.C.int (Height),
Interfaces.C.int (Depth),
@@ -192,14 +194,14 @@ package body FLTK.Images.RGB is
-- Static Settings --
function Get_Max_Size
- return Natural is
+ return Size_Type is
begin
- return Natural (fl_rgb_image_get_max_size);
+ return Size_Type (fl_rgb_image_get_max_size);
end Get_Max_Size;
procedure Set_Max_Size
- (Value : in Natural) is
+ (Value : in Size_Type) is
begin
fl_rgb_image_set_max_size (Interfaces.C.size_t (Value));
end Set_Max_Size;