![]() |
| Software |
| DMX4Linux Driver Suite for Linux |
| csv2iif.pl suite convert PayPal transactions to IIF, OFX, QIF |
| Hardware |
| DMX30 Interface 128Ch SPP |
| DMX43 Interface 2out 2in EPP |
| LED Hardware for Linux and Windows |
| EPROM Sampler for 8 bits of sound |
| Misc |
| CatWeasel Linux drivers for MK3/4 PCI |
| pg_trompe PostgreSQL replication |
| trycatch C exception/signal handling lib |
| Patches to various software |
| Tools and small scripts |
| Docs misc documents |
| Links to lighting stuff |
pas2ps - pascal to postscript compilerA simple pascal to postscript compiler. I have ported the sources from Dulith Herath to a modern linux system. This port was made by Dirk Jagdmann <doj@cubic.org>. Downloadpas2ps release 2005-12-05 ExampleThis pascal program provides the procedure i which will set an interpolated color depending on the real argument given. A testpage is produced by the main routine.
program palette;
var r : array[1..6] of real;
var g : array[1..6] of real;
var b : array[1..6] of real;
var size : integer;
var x : integer;
var f : real;
procedure i(c : real);
var f : real;
var x,y : integer;
begin
f:=size-1;
f:=1.0/f;
x:=1;
while (x<(size-1)) and (c>f) do begin
x:=x+1;
c:=c-f;
end;
y:=x+1;
c:=c/f;
setrgbcolor(r[x]*(1.0-c)+r[y]*c, g[x]*(1.0-c)+g[y]*c, b[x]*(1.0-c)+b[y]*c);
end;
begin
size:=6;
r[1]:=1; g[1]:=0; b[1]:=0.25;
r[2]:=1; g[2]:=0; b[2]:=0;
r[3]:=1; g[3]:=1; b[3]:=0;
r[4]:=1; g[4]:=1; b[4]:=0;
r[5]:=0; g[5]:=0; b[5]:=1;
r[6]:=0; g[6]:=0; b[6]:=0.2;
f := 0;
for x := 1 to 51 do begin
i(f);
writeln(f);
f:=f+0.02;
end;
showpage();
end.
The pascal source is compiled to postscript with
%!PS-Adobe
/fontsize 12 def
/default_font { /Helvetica findfont fontsize scalefont setfont } def
/LM 12 def % left margin
/TM 750 def % top margin
/CP TM def % current position
/reset { showpage default_font LM TM moveto } def
/write_line_string 255 string def
default_font LM TM moveto
% Begin Program
/f_1_6 0 def
/x_1_5 0 def
/size_1_4 0 def
/b_1_3 6 array def
/g_1_2 6 array def
/r_1_1 6 array def
/i { % Set new frame with 4 slots
% and intitialize variables to 0
4 dict begin
/x_2_3 0 def
/y_2_4 0 def
/f_2_2 0 def
/c_2_1 exch def
/f_2_2 size_1_4 1 sub
store
/f_2_2 1 f_2_2 div
store
/x_2_3 1 store
{ % beginning of while loop
x_2_3 size_1_4 1 sub
lt c_2_1 f_2_2 gt and
{ /x_2_3 x_2_3 1 add
store
/c_2_1 c_2_1 f_2_2 sub
store
}
{exit} ifelse
} loop % end of while
/y_2_4 x_2_3 1 add
store
/c_2_1 c_2_1 f_2_2 div
store
r_1_1 x_2_3 1 sub
get 1 c_2_1 sub
mul
r_1_1 y_2_4 1 sub
get c_2_1 mul
add
g_1_2 x_2_3 1 sub
get 1 c_2_1 sub
mul
g_1_2 y_2_4 1 sub
get c_2_1 mul
add
b_1_3 x_2_3 1 sub
get 1 c_2_1 sub
mul
b_1_3 y_2_4 1 sub
get c_2_1 mul
add
setrgbcolor
r_1_1 g_1_2 b_1_3 size_1_4 x_1_5 f_1_6 end
/f_1_6 exch def
/x_1_5 exch def
/size_1_4 exch def
/b_1_3 exch def
/g_1_2 exch def
/r_1_1 exch def
} store
/size_1_4 6 store
r_1_1 1 1 sub
1 put
g_1_2 1 1 sub
0 put
b_1_3 1 1 sub
0.25 put
r_1_1 2 1 sub
1 put
g_1_2 2 1 sub
0 put
b_1_3 2 1 sub
0 put
r_1_1 3 1 sub
1 put
g_1_2 3 1 sub
1 put
b_1_3 3 1 sub
0 put
r_1_1 4 1 sub
1 put
g_1_2 4 1 sub
1 put
b_1_3 4 1 sub
0 put
r_1_1 5 1 sub
0 put
g_1_2 5 1 sub
0 put
b_1_3 5 1 sub
1 put
r_1_1 6 1 sub
0 put
g_1_2 6 1 sub
0 put
b_1_3 6 1 sub
0.2 put
/f_1_6 0 store
1 1 51 { f_1_6 i
f_1_6 write_line_string cvs show
/CP CP fontsize sub 1 sub def
LM CP moveto
/f_1_6 f_1_6 0.02 add
store
} for
showpage
|