From fb4183c9244ee31aa5cb8bc9745c9242b1fafeeb Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Fri, 11 Apr 2025 22:21:26 +1200 Subject: Moved Size_Type to FLTK and better incorporated it into Bitmaps and RGB_Images --- test/animated.adb | 19 +++++++++++-------- test/color_chooser.adb | 7 ++++--- 2 files changed, 15 insertions(+), 11 deletions(-) (limited to 'test') diff --git a/test/animated.adb b/test/animated.adb index 4a5b570..4f6f590 100644 --- a/test/animated.adb +++ b/test/animated.adb @@ -34,7 +34,8 @@ is Dimension : constant Integer := 256; - subtype Image_Data is FLTK.Color_Component_Array (1 .. Dimension ** 2 * Channels); + subtype Image_Data is FLTK.Color_Component_Array + (1 .. FLTK.Size_Type (Dimension ** 2 * Channels)); type Image_Data_Array is array (Positive range <>) of Image_Data; @@ -43,7 +44,7 @@ is begin for X in Integer range 0 .. 9 loop for Y in Integer range 0 .. 9 loop - Store (Y * Dimension * Channels + X * Channels + 4) := 255; + Store (FLTK.Size_Type (Channels * (Y * Dimension + X) + 4)) := 255; end loop; end loop; end Black_Box_Corner; @@ -82,10 +83,10 @@ is My_Alpha := FLTK.Color_Component (Float (My_Alpha) * (1.0 - Fill) * 10.0); end if; - Store (Y * Dimension * Channels + X * Channels + 1) := Grey; - Store (Y * Dimension * Channels + X * Channels + 2) := Grey; - Store (Y * Dimension * Channels + X * Channels + 3) := Grey; - Store (Y * Dimension * Channels + X * Channels + 4) := My_Alpha; + Store (FLTK.Size_Type (Channels * (Y * Dimension + X) + 1)) := Grey; + Store (FLTK.Size_Type (Channels * (Y * Dimension + X) + 2)) := Grey; + Store (FLTK.Size_Type (Channels * (Y * Dimension + X) + 3)) := Grey; + Store (FLTK.Size_Type (Channels * (Y * Dimension + X) + 4)) := My_Alpha; end if; end loop; end loop; @@ -106,8 +107,10 @@ is if (X + X_Offset >= 0) and (X + X_Offset < Dimension) then for Y in Integer range Y_Offset - W .. Y_Offset + W - 1 loop Grey := FLTK.Color_Component (abs (Y - Y_Offset)); - Store (Y * Dimension * Channels + (X + X_Offset) * Channels + 3) := Grey; - Store (Y * Dimension * Channels + (X + X_Offset) * Channels + 4) := 127; + Store (FLTK.Size_Type + (Channels * (Y * Dimension + (X + X_Offset)) + 3)) := Grey; + Store (FLTK.Size_Type + (Channels * (Y * Dimension + (X + X_Offset)) + 4)) := 127; end loop; end if; end loop; diff --git a/test/color_chooser.adb b/test/color_chooser.adb index b77283c..1c7537c 100644 --- a/test/color_chooser.adb +++ b/test/color_chooser.adb @@ -21,6 +21,7 @@ with use type FLTK.Color, + FLTK.Size_Type, FLTK.Asks.Confirm_Result; @@ -44,14 +45,14 @@ is return FLTK.Color_Component_Array is X_Frac, Y_Frac : Long_Float; - Offset : Integer; + Offset : FLTK.Size_Type; begin - return Data : FLTK.Color_Component_Array (1 .. W * H * 3) do + return Data : FLTK.Color_Component_Array (1 .. FLTK.Size_Type (W * H * 3)) do for Y in 0 .. H - 1 loop Y_Frac := Long_Float (Y) / Long_Float (H - 1); for X in 0 .. W - 1 loop X_Frac := Long_Float (X) / Long_Float (W - 1); - Offset := 3 * (Y * W + X); + Offset := 3 * FLTK.Size_Type (Y * W + X); Data (Offset + 1) := FLTK.Color_Component (255.0 * (1.0 - X_Frac) * (1.0 - Y_Frac)); Data (Offset + 2) := -- cgit