Skip to content

Commit 4cccc52

Browse files
committed
Updated to v1.0a
1 parent 368ac23 commit 4cccc52

21 files changed

+1492
-370
lines changed

BAYER.INC

-177
This file was deleted.

BAYER.PAS

+102-6
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,125 @@
11
{ BAYER.PAS : Bayer matrix generator }
22
{ Compatible: Turbo/TMT/Free Pascal }
33

4-
uses dos;
4+
{$i include\common.inc} { common definitions }
5+
{$i include\bayer.inc} { Bayer matrix API }
6+
{$i include\bitmap.inc} { bitmap handlers }
57

6-
{$i common.inc} { common definitions }
7-
{$i bayer.inc} { Bayer matrix API }
8+
function header_open(var f: TEXT; name: string): boolean;
9+
begin
10+
assign(f, name);
11+
{$I-}
12+
rewrite(f);
13+
{$I+}
14+
if ioresult <> 0 then
15+
begin
16+
header_open := FALSE;
17+
exit;
18+
end;
19+
writeln(f, '{$ifndef __BAYER_MATRIX_INC__}');
20+
writeln(f, '{$define __BAYER_MATRIX_INC__}');
21+
header_open := TRUE;
22+
end;
23+
24+
procedure header_close(var f: TEXT);
25+
begin
26+
writeln(f, '{$endif}');
27+
close(f);
28+
end;
29+
30+
procedure header_write(var f: TEXT; const m: BAYER_MATRIX);
31+
var i, shift: uint;
32+
prefix,
33+
cname : string;
34+
begin
35+
case m^.level of
36+
1: shift := 1;
37+
2: shift := 2;
38+
3: shift := 3;
39+
4: shift := 4;
40+
end;
41+
42+
prefix := 'BAYER_MATRIX_';
43+
cname := prefix+itoa(m^.width);
44+
writeln(f);
45+
write (f, 'const');
46+
writeln(f, #9+prefix+'WIDTH = '+itoa(m^.width)+';');
47+
writeln(f, #9+prefix+'SIZE = '+itoa(m^.size)+';');
48+
writeln(f, #9+prefix+'MASK = '+itoa(m^.width-1)+';');
49+
writeln(f, #9+prefix+'SHIFT = '+itoa(shift)+';');
50+
writeln(f);
51+
writeln(f, #9+cname+
52+
'I : array[0..'+prefix+'SIZE-1] of byte = (');
53+
write (f, #9);
54+
for i := 0 to m^.size-2 do
55+
begin
56+
write(f, m^.data^[i]:4, ',');
57+
if (i+1) mod m^.width = 0 then
58+
begin
59+
writeln(f);
60+
write(f, #9);
61+
end;
62+
end;
63+
writeln(f, m^.data^[m^.size-1]:4, ');');
64+
writeln(f);
65+
66+
writeln(f, #9+cname+
67+
'F : array[0..'+prefix+'SIZE-1] of double = (');
68+
write (f, #9);
69+
for i := 0 to m^.size-2 do
70+
begin
71+
write(f, 1.0 * (m^.data^[i]+1)/m^.size:0:4, ',');
72+
if (i+1) mod m^.width = 0 then
73+
begin
74+
writeln(f);
75+
write(f, #9);
76+
end;
77+
end;
78+
writeln(f, 1.0 * (m^.data^[m^.size-1]+1)/m^.size:0:4, ');');
79+
writeln(f);
80+
81+
writeln(f, 'function bayeri(x, y: longint): longint;');
82+
writeln(f, 'begin');
83+
writeln(f, #9+'bayeri := '+cname+'I'+
84+
'[(y and '+prefix+'MASK) shl '+prefix+'SHIFT');
85+
writeln(f, #9' +(x and '+prefix+'MASK)];');
86+
writeln(f, 'end;');
87+
writeln(f);
88+
writeln(f, 'function bayerf(x, y: longint): double;');
89+
writeln(f, 'begin');
90+
writeln(f, #9+'bayerf := '+cname+'F'+
91+
'[(y and '+prefix+'MASK) shl '+prefix+'SHIFT');
92+
writeln(f, #9' +(x and '+prefix+'MASK)];');
93+
writeln(f, 'end;');
94+
writeln(f);
95+
end;
896

997
var m : BAYER_MATRIX;
1098
f : TEXT;
1199
fname : string;
12-
level : integer;
100+
level : uint;
101+
resp : char;
13102

14103
begin
15-
writeln('Bayer matrix generator * v1.0 (', COMPILER, ')');
104+
writeln('Bayer matrix generator v1.0a (', COMPILER, ')');
16105
writeln('Coded by Trinh D.D. Nguyen');
17106
writeln;
18107

19108
if paramcount <> 2 then error('USAGE', 'bayer <filename> <level>');
20109

21110
fname := paramstr(1);
22-
level := atoi(paramstr(2));
111+
level := uint(atoi(paramstr(2)));
23112

24113
if (level < 1) or (level > 4) then
25114
error('ERROR', 'level must be within the range [1..4]');
26115

116+
if fexist(fname) then
117+
begin
118+
write(fname, ' is already exist. Overwrite (y/n)? ');
119+
readln(resp);
120+
if upcase(resp) = 'N' then exit;
121+
end;
122+
27123
write('. Creating file : ');
28124
if header_open(f, fname) then
29125
begin

COMMON.INC

-62
This file was deleted.

0 commit comments

Comments
 (0)