TSL-100
Eurolite
User
TSL-100
unit NewDeviceUnit;
interface
procedure InitDevice(Device: String);
procedure FormShow;
procedure FormRefresh(channel:Integer);
procedure FormClose;
procedure PositionXYChange(Top, Left: Integer);
procedure ColorBoxChange;
procedure GOBO1change;
procedure SHUTTERchange;
procedure DIMMERchange;
procedure GOBO2change;
procedure SPECIAL1change;
procedure PositionXYChange(Top, Left: Integer);
procedure ColorBoxChange;
procedure GOBO1change;
procedure SHUTTERchange;
procedure DIMMERchange;
procedure GOBO2change;
procedure SPECIAL1change;
implementation
var
DontRefresh:boolean;
procedure InitDevice(Device: String);
begin
end;
procedure FormShow;
begin
end;
procedure FormRefresh(channel:Integer);
var
Value:integer;
r,phi,temp:Double;
begin
if not DontRefresh then
case channel of
0:
begin
PositionXY.Left:=round(Fadenkreuz.Width * get_channel('pan')/255)-(PositionXY.Width div 2);
PositionXY.Top:=round(Fadenkreuz.Height * get_channel('tilt')/255)-(PositionXY.Height div 2);
end;
1:
begin
PositionXY.Left:=round(Fadenkreuz.Width * get_channel('pan')/255)-(PositionXY.Width div 2);
PositionXY.Top:=round(Fadenkreuz.Height * get_channel('tilt')/255)-(PositionXY.Height div 2);
end;
2:
begin
value:=get_channel('color1');
case value of
0..14: colorbox.itemindex:=0;
15..29: colorbox.itemindex:=1;
30..44: colorbox.itemindex:=2;
45..59: colorbox.itemindex:=3;
60..74: colorbox.itemindex:=4;
75..89: colorbox.itemindex:=5;
90..104: colorbox.itemindex:=6;
105..119: colorbox.itemindex:=7;
120..127: colorbox.itemindex:=8;
128..255: colorbox.itemindex:=9;
end;
end;
3:
begin
value:=get_channel('gobo1');
case value of
0..7: gobobox1.itemindex:=0;
8..14: gobobox1.itemindex:=1;
15..21: gobobox1.itemindex:=2;
22..28: gobobox1.itemindex:=3;
29..35: gobobox1.itemindex:=4;
36..42: gobobox1.itemindex:=5;
43..49: gobobox1.itemindex:=6;
0..0: gobobox1.itemindex:=7;
57..63: gobobox1.itemindex:=8;
64..70: gobobox1.itemindex:=9;
71..77: gobobox1.itemindex:=10;
78..84: gobobox1.itemindex:=11;
85..91: gobobox1.itemindex:=12;
92..98: gobobox1.itemindex:=13;
99..105: gobobox1.itemindex:=14;
106..112: gobobox1.itemindex:=15;
113..119: gobobox1.itemindex:=16;
120..127: gobobox1.itemindex:=17;
end;
end;
4:
begin
SHUTTERslider4.position:=get_channel('SHUTTER');
end;
5:
begin
DIMMERslider5.position:=get_channel('DIMMER');
end;
6:
begin
value:=get_channel('gobo2');
case value of
0..7: gobobox2.itemindex:=0;
8..25: gobobox2.itemindex:=1;
26..43: gobobox2.itemindex:=2;
44..61: gobobox2.itemindex:=3;
62..79: gobobox2.itemindex:=4;
80..97: gobobox2.itemindex:=5;
98..115: gobobox2.itemindex:=6;
116..133: gobobox2.itemindex:=7;
134..151: gobobox2.itemindex:=8;
152..169: gobobox2.itemindex:=9;
170..187: gobobox2.itemindex:=10;
188..205: gobobox2.itemindex:=11;
206..223: gobobox2.itemindex:=12;
0..0: gobobox2.itemindex:=13;
0..0: gobobox2.itemindex:=14;
end;
end;
7:
begin
SPECIAL1slider7.position:=get_channel('SPECIAL1');
end;
end;
DontRefresh:=false;
end;
procedure FormClose;
begin
end;
procedure PositionXYChange(Top, Left: Integer);
var
phi,r,x,y:Double;
pan, tilt, panfine, tiltfine:Double;
begin
if usemhcontrol.checked then
begin
// Moving-Head-Steuerung (Polarkoordinaten)
x:=((PositionXY.Left+(PositionXY.Width div 2)-(fadenkreuz.Width/2))/fadenkreuz.Width)*2; //-1..0..1
y:=((PositionXY.Top+(PositionXY.Height div 2)-(fadenkreuz.Width/2))/fadenkreuz.Height)*2; //-1..0..1
r:=sqrt(x*x+y*y);
if (r>0) then
begin
if (y>=0) then
phi:=arccos(x/r)
else
phi:=6.283185307179586476925286766559-arccos(x/r);
end else
phi:=64;
r:=128-((r/2)*255);
phi:=(phi/6.283185307179586476925286766559)*255;
if 64>=phi then
phi:=phi+191
else
phi:=phi-64;
pan:=255-phi;
tilt:=255-r;
end else
begin
// Scannersteuerung (Kartesische Koordinaten)
pan:=((PositionXY.Left+(PositionXY.Width div 2))/fadenkreuz.Width)*255;
tilt:=((PositionXY.Top+(PositionXY.Height div 2))/fadenkreuz.Height)*255;
end;
// Ausgabe
if panmirror.checked then
begin
dontrefresh:=true;
set_channel('pan',trunc(255-pan),trunc(255-pan),0);
dontrefresh:=true;
set_channel('panfine',trunc(frac(255-pan)*255),trunc(frac(255-pan)*255),0);
end else
begin
dontrefresh:=true;
set_channel('pan',trunc(pan),trunc(pan),0);
dontrefresh:=true;
set_channel('panfine',trunc(frac(pan)*255),trunc(frac(pan)*255),0);
end;
if tiltmirror.checked then
begin
dontrefresh:=true;
set_channel('tilt',trunc(255-tilt),trunc(255-tilt),0);
dontrefresh:=true;
set_channel('tiltfine',trunc(frac(255-tilt)*255),trunc(frac(255-tilt)*255),0);
end else
begin
dontrefresh:=true;
set_channel('tilt',trunc(tilt),trunc(tilt),0);
dontrefresh:=true;
set_channel('tiltfine',trunc(frac(tilt)*255),trunc(frac(tilt)*255),0);
end;
end;
procedure ColorBoxChange;
begin
case colorbox.itemindex of
0: set_channel('color1', -1, 0, 0);
1: set_channel('color1', -1, 15, 0);
2: set_channel('color1', -1, 30, 0);
3: set_channel('color1', -1, 45, 0);
4: set_channel('color1', -1, 60, 0);
5: set_channel('color1', -1, 75, 0);
6: set_channel('color1', -1, 90, 0);
7: set_channel('color1', -1, 105, 0);
8: set_channel('color1', -1, 120, 0);
9: set_channel('color1', -1, 128, 0);
end;
end;
procedure GOBO1change;
begin
case gobobox1.itemindex of
0: set_channel('gobo1', -1, 0, 0);
1: set_channel('gobo1', -1, 8, 0);
2: set_channel('gobo1', -1, 15, 0);
3: set_channel('gobo1', -1, 22, 0);
4: set_channel('gobo1', -1, 29, 0);
5: set_channel('gobo1', -1, 36, 0);
6: set_channel('gobo1', -1, 43, 0);
7: set_channel('gobo1', -1, 0, 0);
8: set_channel('gobo1', -1, 57, 0);
9: set_channel('gobo1', -1, 64, 0);
10: set_channel('gobo1', -1, 71, 0);
11: set_channel('gobo1', -1, 78, 0);
12: set_channel('gobo1', -1, 85, 0);
13: set_channel('gobo1', -1, 92, 0);
14: set_channel('gobo1', -1, 99, 0);
15: set_channel('gobo1', -1, 106, 0);
16: set_channel('gobo1', -1, 113, 0);
17: set_channel('gobo1', -1, 120, 0);
end;
end;
procedure SHUTTERchange;
begin
DontRefresh:=true;
set_channel('SHUTTER',-1,SHUTTERslider4.position,0);
end;
procedure DIMMERchange;
begin
DontRefresh:=true;
set_channel('DIMMER',-1,DIMMERslider5.position,0);
end;
procedure GOBO2change;
begin
case gobobox2.itemindex of
0: set_channel('gobo2', -1, 0, 0);
1: set_channel('gobo2', -1, 8, 0);
2: set_channel('gobo2', -1, 26, 0);
3: set_channel('gobo2', -1, 44, 0);
4: set_channel('gobo2', -1, 62, 0);
5: set_channel('gobo2', -1, 80, 0);
6: set_channel('gobo2', -1, 98, 0);
7: set_channel('gobo2', -1, 116, 0);
8: set_channel('gobo2', -1, 134, 0);
9: set_channel('gobo2', -1, 152, 0);
10: set_channel('gobo2', -1, 170, 0);
11: set_channel('gobo2', -1, 188, 0);
12: set_channel('gobo2', -1, 206, 0);
13: set_channel('gobo2', -1, 0, 0);
14: set_channel('gobo2', -1, 0, 0);
end;
end;
procedure SPECIAL1change;
begin
DontRefresh:=true;
set_channel('SPECIAL1',-1,SPECIAL1slider7.position,0);
end;
procedure PositionXYChange(Top, Left: Integer);
var
phi,r,x,y:Double;
pan, tilt, panfine, tiltfine:Double;
begin
if usemhcontrol.checked then
begin
// Moving-Head-Steuerung (Polarkoordinaten)
x:=((PositionXY.Left+(PositionXY.Width div 2)-(fadenkreuz.Width/2))/fadenkreuz.Width)*2; //-1..0..1
y:=((PositionXY.Top+(PositionXY.Height div 2)-(fadenkreuz.Width/2))/fadenkreuz.Height)*2; //-1..0..1
r:=sqrt(x*x+y*y);
if (r>0) then
begin
if (y>=0) then
phi:=arccos(x/r)
else
phi:=6.283185307179586476925286766559-arccos(x/r);
end else
phi:=64;
r:=128-((r/2)*255);
phi:=(phi/6.283185307179586476925286766559)*255;
if 64>=phi then
phi:=phi+191
else
phi:=phi-64;
pan:=255-phi;
tilt:=255-r;
end else
begin
// Scannersteuerung (Kartesische Koordinaten)
pan:=((PositionXY.Left+(PositionXY.Width div 2))/fadenkreuz.Width)*255;
tilt:=((PositionXY.Top+(PositionXY.Height div 2))/fadenkreuz.Height)*255;
end;
// Ausgabe
if panmirror.checked then
begin
dontrefresh:=true;
set_channel('pan',trunc(255-pan),trunc(255-pan),0);
dontrefresh:=true;
set_channel('panfine',trunc(frac(255-pan)*255),trunc(frac(255-pan)*255),0);
end else
begin
dontrefresh:=true;
set_channel('pan',trunc(pan),trunc(pan),0);
dontrefresh:=true;
set_channel('panfine',trunc(frac(pan)*255),trunc(frac(pan)*255),0);
end;
if tiltmirror.checked then
begin
dontrefresh:=true;
set_channel('tilt',trunc(255-tilt),trunc(255-tilt),0);
dontrefresh:=true;
set_channel('tiltfine',trunc(frac(255-tilt)*255),trunc(frac(255-tilt)*255),0);
end else
begin
dontrefresh:=true;
set_channel('tilt',trunc(tilt),trunc(tilt),0);
dontrefresh:=true;
set_channel('tiltfine',trunc(frac(tilt)*255),trunc(frac(tilt)*255),0);
end;
end;
procedure ColorBoxChange;
begin
case colorbox.itemindex of
0: set_channel('color1', -1, 0, 0);
1: set_channel('color1', -1, 15, 0);
2: set_channel('color1', -1, 30, 0);
3: set_channel('color1', -1, 45, 0);
4: set_channel('color1', -1, 60, 0);
5: set_channel('color1', -1, 75, 0);
6: set_channel('color1', -1, 90, 0);
7: set_channel('color1', -1, 105, 0);
8: set_channel('color1', -1, 120, 0);
9: set_channel('color1', -1, 128, 0);
end;
end;
procedure GOBO1change;
begin
case gobobox1.itemindex of
0: set_channel('gobo1', -1, 0, 0);
1: set_channel('gobo1', -1, 8, 0);
2: set_channel('gobo1', -1, 15, 0);
3: set_channel('gobo1', -1, 22, 0);
4: set_channel('gobo1', -1, 29, 0);
5: set_channel('gobo1', -1, 36, 0);
6: set_channel('gobo1', -1, 43, 0);
7: set_channel('gobo1', -1, 0, 0);
8: set_channel('gobo1', -1, 57, 0);
9: set_channel('gobo1', -1, 64, 0);
10: set_channel('gobo1', -1, 71, 0);
11: set_channel('gobo1', -1, 78, 0);
12: set_channel('gobo1', -1, 85, 0);
13: set_channel('gobo1', -1, 92, 0);
14: set_channel('gobo1', -1, 99, 0);
15: set_channel('gobo1', -1, 106, 0);
16: set_channel('gobo1', -1, 113, 0);
17: set_channel('gobo1', -1, 120, 0);
end;
end;
procedure SHUTTERchange;
begin
DontRefresh:=true;
set_channel('SHUTTER',-1,SHUTTERslider4.position,0);
end;
procedure DIMMERchange;
begin
DontRefresh:=true;
set_channel('DIMMER',-1,DIMMERslider5.position,0);
end;
procedure GOBO2change;
begin
case gobobox2.itemindex of
0: set_channel('gobo2', -1, 0, 0);
1: set_channel('gobo2', -1, 8, 0);
2: set_channel('gobo2', -1, 26, 0);
3: set_channel('gobo2', -1, 44, 0);
4: set_channel('gobo2', -1, 62, 0);
5: set_channel('gobo2', -1, 80, 0);
6: set_channel('gobo2', -1, 98, 0);
7: set_channel('gobo2', -1, 116, 0);
8: set_channel('gobo2', -1, 134, 0);
9: set_channel('gobo2', -1, 152, 0);
10: set_channel('gobo2', -1, 170, 0);
11: set_channel('gobo2', -1, 188, 0);
12: set_channel('gobo2', -1, 206, 0);
13: set_channel('gobo2', -1, 0, 0);
14: set_channel('gobo2', -1, 0, 0);
end;
end;
procedure SPECIAL1change;
begin
DontRefresh:=true;
set_channel('SPECIAL1',-1,SPECIAL1slider7.position,0);
end;
end.