Bitmap/Write a PPM file: Difference between revisions

→‎{{header|Ada}}: Blocked output for better performance
m (Category:Input Output)
(→‎{{header|Ada}}: Blocked output for better performance)
Line 12:
procedure Put_PPM (File : File_Type; Picture : Image) is
use Ada.Characters.Latin_1;
Size : constant String := Integer'Image (Picture'Length (2)) & Integer'Image (Picture'Length (1));
Buffer : String (1..Picture'Length (2) * 3);
Color : Pixel;
Index : Positive;
begin
String'Write (Stream (File), "P6" & LF);
Line 18 ⟶ 21:
String'Write (Stream (File), "255" & LF);
for I in Picture'Range (1) loop
Index := Buffer'First;
for J in Picture'Range (2) loop
Character'WriteColor (Stream:= (File), Character'Val (Picture (I, J).R));
Character'WriteBuffer (Stream (FileIndex), := Character'Val (Picture (I, J)Color.G)R);
Character'WriteBuffer (StreamIndex (File+ 1), := Character'Val (Picture (I, J)Color.B)G);
Buffer (Index + 2) := Character'Val (Color.B);
Index := Index + 3;
end loop;
String'Write (Stream (File), Buffer);
end loop;
Character'Write (Stream (File), LF);