Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,70 +0,0 @@
|
|||
with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
|
||||
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
|
||||
with Ada.Streams.Stream_IO; use Ada.Streams.Stream_IO;
|
||||
|
||||
function Get_PPM (File : File_Type) return Image is
|
||||
use Ada.Characters.Latin_1;
|
||||
use Ada.Integer_Text_IO;
|
||||
|
||||
function Get_Line return String is -- Skips comments
|
||||
Byte : Character;
|
||||
Buffer : String (1..80);
|
||||
begin
|
||||
loop
|
||||
for I in Buffer'Range loop
|
||||
Character'Read (Stream (File), Byte);
|
||||
if Byte = LF then
|
||||
exit when Buffer (1) = '#';
|
||||
return Buffer (1..I - 1);
|
||||
end if;
|
||||
Buffer (I) := Byte;
|
||||
end loop;
|
||||
if Buffer (1) /= '#' then
|
||||
raise Data_Error;
|
||||
end if;
|
||||
end loop;
|
||||
end Get_Line;
|
||||
|
||||
Height : Integer;
|
||||
Width : Integer;
|
||||
begin
|
||||
if Get_Line /= "P6" then
|
||||
raise Data_Error;
|
||||
end if;
|
||||
declare
|
||||
Line : String := Get_Line;
|
||||
Start : Integer := Line'First;
|
||||
Last : Positive;
|
||||
begin
|
||||
Get (Line, Width, Last); Start := Start + Last;
|
||||
Get (Line (Start..Line'Last), Height, Last); Start := Start + Last;
|
||||
if Start <= Line'Last then
|
||||
raise Data_Error;
|
||||
end if;
|
||||
if Width < 1 or else Height < 1 then
|
||||
raise Data_Error;
|
||||
end if;
|
||||
end;
|
||||
if Get_Line /= "255" then
|
||||
raise Data_Error;
|
||||
end if;
|
||||
declare
|
||||
Result : Image (1..Height, 1..Width);
|
||||
Buffer : String (1..Width * 3);
|
||||
Index : Positive;
|
||||
begin
|
||||
for I in Result'Range (1) loop
|
||||
String'Read (Stream (File), Buffer);
|
||||
Index := Buffer'First;
|
||||
for J in Result'Range (2) loop
|
||||
Result (I, J) :=
|
||||
( R => Luminance (Character'Pos (Buffer (Index))),
|
||||
G => Luminance (Character'Pos (Buffer (Index + 1))),
|
||||
B => Luminance (Character'Pos (Buffer (Index + 2)))
|
||||
);
|
||||
Index := Index + 3;
|
||||
end loop;
|
||||
end loop;
|
||||
return Result;
|
||||
end;
|
||||
end Get_PPM;
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
declare
|
||||
F1, F2 : File_Type;
|
||||
begin
|
||||
Open (F1, In_File, "city.ppm");
|
||||
Create (F2, Out_File, "city_grayscale.ppm");
|
||||
Put_PPM (F2, Color (Grayscale (Get_PPM (F1))));
|
||||
Close (F1);
|
||||
Close (F2);
|
||||
end;
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
include get.e
|
||||
|
||||
function get2(integer fn)
|
||||
sequence temp
|
||||
temp = get(fn)
|
||||
return temp[2] - temp[1]*temp[1]
|
||||
end function
|
||||
|
||||
function read_ppm(sequence filename)
|
||||
sequence image, line
|
||||
integer dimx, dimy, maxcolor
|
||||
atom fn
|
||||
fn = open(filename, "rb")
|
||||
if fn < 0 then
|
||||
return -1 -- unable to open
|
||||
end if
|
||||
line = gets(fn)
|
||||
if not equal(line,"P6\n") then
|
||||
return -1 -- only ppm6 files are supported
|
||||
end if
|
||||
dimx = get2(fn)
|
||||
if dimx < 0 then
|
||||
return -1
|
||||
end if
|
||||
dimy = get2(fn)
|
||||
if dimy < 0 then
|
||||
return -1
|
||||
end if
|
||||
maxcolor = get2(fn)
|
||||
if maxcolor != 255 then
|
||||
return -1 -- maxcolors other then 255 are not supported
|
||||
end if
|
||||
image = repeat(repeat(0,dimy),dimx)
|
||||
for y = 1 to dimy do
|
||||
for x = 1 to dimx do
|
||||
image[x][y] = getc(fn)*#10000 + getc(fn)*#100 + getc(fn)
|
||||
end for
|
||||
end for
|
||||
close(fn)
|
||||
return image
|
||||
end function
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
sequence image
|
||||
image = read_ppm("image.ppm")
|
||||
image = to_gray(image)
|
||||
image = to_color(image)
|
||||
write_ppm("image_gray.ppm",image)
|
||||
Loading…
Add table
Add a link
Reference in a new issue