Помогите построить блок схему.
Код:
Unit P_Sharp;
Interface
Uses Graph;
Type
Pcx_Header = Record
manufacturer : byte; { €§¤*⥫м }
version: byte; { ‚ҐабЁп Paintbrash }
encoding: byte; { Є®¤Ёа®ў**ЁҐ }
bits_per_pixel: byte; { Є®«-ў® ЎЁв ** ЇЁЄбҐ« }
MinX,MinY: integer; { а*§¬Ґа Ё§®Ўа*¦Ґ*Ёп, «Ґўл© ўҐае*Ё© гЈ®« }
MaxX,MaxY: integer; { а*§¬Ґа Ё§®Ўа*¦Ґ*Ёп, Їа*ўл© *Ё¦*Ё© гЈ®« }
horz_res: integer; { Є®«-ў® ЇЁЄбҐ« Ї® Ј®аЁ§®*в*«Ё }
vert_res: integer; { Є®«-ў® ЇЁЄбҐ« Ї® ўҐавЁЄ*«Ё }
ega_palette: array[0..47] of byte; { ЁЈ*®аЁагҐвбп }
reserved: byte; { ЁЈ*®аЁагҐвбп }
num_color_planes: byte; { ЁЈ*®аЁагҐвбп }
bytes_per_line: integer; { ЁЈ*®аЁагҐвбп }
palette_type: integer; { ЁЈ*®аЁагҐвбп }
padding: array[1..62] of byte; { ЁЈ*®аЁагҐвбп }
End;
RGB_color_typ = record
red, green, blue: byte
end;
FName = string[12];
Procedure ReadPCXfile( Name: FName; UX, UY : integer );
Implementation
Procedure Set_Palette_Register(index: integer; color: RGB_color_typ);
Begin
port[$3C6]:= $FF;
port[$3C8]:= index;
port[$3C9]:= color.red;
port[$3C9]:= color.green;
port[$3C9]:= color.blue;
End;
Procedure ReadPCXfile( Name: FName; UX, UY : integer );
Var
X, Y, i, k: Integer;
Pcx_Head : Pcx_Header;
Pcx_File : file;
Data: byte;
Palette: array[0..255] of RGB_color_typ;
Begin
{ ЋвЄалў*Ґ¬ д*©« д®а¬*в* PCX }
Assign(Pcx_File, Name);
Reset(Pcx_File, 1);
{ —вҐ*ЁҐ Ї*«Ёвал }
Seek(Pcx_File, FileSize(Pcx_File)-768);
for x:=0 to 255 do
begin
BlockRead(Pcx_File, Palette[x].red, 1);
Palette[x].red:=Palette[x].red shr 2;
BlockRead(Pcx_File, Palette[x].green, 1);
Palette[x].green:=Palette[x].green shr 2;
BlockRead(Pcx_File, Palette[x].blue, 1);
Palette[x].blue:=Palette[x].blue shr 2;
end;
{ “бв**®ўЄ* Ї*«Ёвал }
for y:=0 to 255 do
begin
port[$3C6]:= $FF;
port[$3C8]:= y;
port[$3C9]:= Palette[y].red;
port[$3C9]:= Palette[y].green;
port[$3C9]:= Palette[y].blue;
end;
{ —вҐ*ЁҐ §*Ј®«®ўЄ* PCX д*©«* }
Seek(Pcx_File, 0);
BlockRead(Pcx_File, Pcx_Head, 128);
{ —вҐ*ЁҐ §*Є®¤Ёа®ў***®Ј® Ё§®Ўа*¦Ґ*Ёп }
For Y:=UY to (UY+Pcx_Head.vert_res-1) do
For X:=UX to (UX+Pcx_Head.horz_res-1) do
begin
BlockRead(Pcx_File, Data, 1);
If Data>=192 then
begin
i:=Data-192; BlockRead(Pcx_File, Data, 1);
For k:=1 to i do
begin
If X>(UX+Pcx_Head.horz_res) then begin X:=UX; Y:=Y+1; end;
PutPixel(X,Y,Data);
If k<i then Inc(X);
end
end
else
PutPixel(X,Y,Data);
end;
{ Љ®*Ґж }
Close(Pcx_File);
End;
End.