Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
51
Task/Bitmap-Write-a-PPM-file/GAP/bitmap-write-a-ppm-file.gap
Normal file
51
Task/Bitmap-Write-a-PPM-file/GAP/bitmap-write-a-ppm-file.gap
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
# Dirty implementation
|
||||
# Only P3 format, an image is a list of 3 matrices (r, g, b)
|
||||
# Max color is always 255
|
||||
WriteImage := function(name, img)
|
||||
local f, r, g, b, i, j, maxcolor, nrow, ncol, dim;
|
||||
f := OutputTextFile(name, false);
|
||||
r := img[1];
|
||||
g := img[2];
|
||||
b := img[3];
|
||||
dim := DimensionsMat(r);
|
||||
nrow := dim[1];
|
||||
ncol := dim[2];
|
||||
maxcolor := 255;
|
||||
WriteLine(f, "P3");
|
||||
WriteLine(f, Concatenation(String(ncol), " ", String(nrow), " ", String(maxcolor)));
|
||||
for i in [1 .. nrow] do
|
||||
for j in [1 .. ncol] do
|
||||
WriteLine(f, Concatenation(String(r[i][j]), " ", String(g[i][j]), " ", String(b[i][j])));
|
||||
od;
|
||||
od;
|
||||
CloseStream(f);
|
||||
end;
|
||||
|
||||
PutPixel := function(img, i, j, color)
|
||||
img[1][i][j] := color[1];
|
||||
img[2][i][j] := color[2];
|
||||
img[3][i][j] := color[3];
|
||||
end;
|
||||
|
||||
GetPixel := function(img, i, j)
|
||||
return [img[1][i][j], img[2][i][j], img[3][i][j]];
|
||||
end;
|
||||
|
||||
NewImage := function(nrow, ncol, color)
|
||||
local r, g, b;
|
||||
r := color[1] + NullMat(nrow, ncol);
|
||||
g := color[2] + NullMat(nrow, ncol);
|
||||
b := color[3] + NullMat(nrow, ncol);
|
||||
return [r, g, b];
|
||||
end;
|
||||
|
||||
# Reproducing the example from Wikipedia
|
||||
black := [ 0, 0, 0 ];
|
||||
g := NewImage(2, 3, black);
|
||||
PutPixel(g, 1, 1, [255, 0, 0]);
|
||||
PutPixel(g, 1, 2, [0, 255, 0]);
|
||||
PutPixel(g, 1, 3, [0, 0, 255]);
|
||||
PutPixel(g, 2, 1, [255, 255, 0]);
|
||||
PutPixel(g, 2, 2, [255, 255, 255]);
|
||||
PutPixel(g, 2, 3, [0, 0, 0]);
|
||||
WriteImage("example.ppm", g);
|
||||
Loading…
Add table
Add a link
Reference in a new issue