Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,7 @@
|
|||
INTERFACE PPM;
|
||||
|
||||
IMPORT Bitmap, Pathname;
|
||||
|
||||
PROCEDURE Create(imgfile: Pathname.T; img: Bitmap.T);
|
||||
|
||||
END PPM.
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
MODULE PPM;
|
||||
|
||||
IMPORT Bitmap, Wr, FileWr, Pathname;
|
||||
FROM Fmt IMPORT F, Int;
|
||||
|
||||
<*FATAL ANY*>
|
||||
|
||||
VAR imgfilewr: FileWr.T;
|
||||
|
||||
PROCEDURE Create(imgfile: Pathname.T; img: Bitmap.T) =
|
||||
VAR height := LAST(img^);
|
||||
width := LAST(img[0]);
|
||||
color: Bitmap.Pixel;
|
||||
BEGIN
|
||||
imgfilewr := FileWr.Open(imgfile);
|
||||
Wr.PutText(imgfilewr, F("P6\n%s %s\n255\n", Int(height + 1), Int(width + 1)));
|
||||
FOR i := 0 TO height DO
|
||||
FOR j := 0 TO width DO
|
||||
color := img[i,j];
|
||||
Wr.PutChar(imgfilewr, VAL(color.R, CHAR));
|
||||
Wr.PutChar(imgfilewr, VAL(color.G, CHAR));
|
||||
Wr.PutChar(imgfilewr, VAL(color.B, CHAR));
|
||||
END;
|
||||
END;
|
||||
Wr.PutChar(imgfilewr, '\n');
|
||||
Wr.Flush(imgfilewr);
|
||||
END Create;
|
||||
|
||||
BEGIN
|
||||
END PPM.
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
import bitmap
|
||||
import streams
|
||||
|
||||
#---------------------------------------------------------------------------------------------------
|
||||
|
||||
proc writePPM*(img: Image, stream: Stream) =
|
||||
## Write an image to a PPM stream.
|
||||
|
||||
stream.writeLine("P6 ", $img.w, " ", $img.h, " 255")
|
||||
|
||||
for x, y in img.indices:
|
||||
stream.write(chr(img[x, y].r))
|
||||
stream.write(chr(img[x, y].g))
|
||||
stream.write(chr(img[x, y].b))
|
||||
|
||||
#---------------------------------------------------------------------------------------------------
|
||||
|
||||
proc writePPM*(img: Image; filename: string) =
|
||||
## Write an image in a PPM file.
|
||||
|
||||
var file = openFileStream(filename, fmWrite)
|
||||
img.writePPM(file)
|
||||
file.close()
|
||||
|
||||
#———————————————————————————————————————————————————————————————————————————————————————————————————
|
||||
|
||||
when isMainModule:
|
||||
var image = newImage(100, 50)
|
||||
image.fill(color(255, 0, 0))
|
||||
for row in 10..20:
|
||||
for col in 0..<image.w:
|
||||
image[col, row] = color(0, 255, 0)
|
||||
for row in 30..40:
|
||||
for col in 0..<image.w:
|
||||
image[col, row] = color(0, 0, 255)
|
||||
image.writePPM("output.ppm")
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
let output_ppm ~oc ~img:(_, r_channel, g_channel, b_channel) =
|
||||
let width = Bigarray.Array2.dim1 r_channel
|
||||
and height = Bigarray.Array2.dim2 r_channel in
|
||||
Printf.fprintf oc "P6\n%d %d\n255\n" width height;
|
||||
for y = 0 to pred height do
|
||||
for x = 0 to pred width do
|
||||
output_char oc (char_of_int r_channel.{x,y});
|
||||
output_char oc (char_of_int g_channel.{x,y});
|
||||
output_char oc (char_of_int b_channel.{x,y});
|
||||
done;
|
||||
done;
|
||||
output_char oc '\n';
|
||||
flush oc;
|
||||
;;
|
||||
Loading…
Add table
Add a link
Reference in a new issue