1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| procedure TForm3.btnCorrectionsWWXClick(Sender: TObject);
Const
START = 1;
NCOL = 24;
// START = 0;
// NCOL = 23;
TYPE
Table24x3 = ARRAY[START..NCOL, 1..3] OF Extended;
T_Palette = ARRAY[START..NCOL, 1..3] OF Byte;
VAR
F: Table24x3;
c,i,j: integer;
Kv,Kb: Extended;
Palette_Old, Palette_New: T_Palette;
r,g,b: byte;
begin
// note : le fait de passer de 1..24 à 0..23 change un peu les valeurs,
// normal, "i" participe aux calculs
Kv := 0.12; Kb := 0.13;
// Kv := 0.08; Kb := 0.09;
// Kv := 0.02; Kb := 0.03;
for i := START TO NCOL do begin
F[i, 1] := 1; // Pas de correction des valeurs
F[i, 2] := 1 + Kv*Cos(Pi*(i - 11)/12); // Correction pour le vert
F[i, 3] := 1 + Kb*Cos(Pi*(i - 18)/12); // Correction pour le bleu
end;
FOR j:= 1 TO 3 DO
FOR i:= START TO NCOL DO begin
// -1- "fabrication" de Palette_Old, basée sur la position des 72 valeurs des trackbars, lues depuis un fichier ini
if NCOL = 23 then c := i else c := i-1;// astuce car les "Controls[x]" commencent à 0.
case j of
1:with pnlRouge do with (Controls[c] as TGroupBox) do
Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
2:with pnlVerte do with (Controls[c] as TGroupBox) do
Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
3:with pnlBleue do with (Controls[c] as TGroupBox) do
Palette_Old[i,j] := (Controls[1] as TTrackBar).Position;
end;
// -2- corrections wwx
Palette_New[i, j]:= Round(Palette_Old[i, j] * F[i, j]);
end;
// résultats :
// 1er test rapide
FOR j:= 1 TO 3 DO begin
FOR i:= START TO NCOL DO
memo1.Lines.Add(format('%3d %3d', [Palette_New[i,j], Palette_Old[i,j]]));
memo1.Lines.Add('');
end;
// deuxième
FOR i:= START TO NCOL DO begin
FOR j:= 1 TO 3 DO
case j of
1: r := Palette_New[i,j];
2: g := Palette_New[i,j];
3: b := Palette_New[i,j];
end;
// memo1.Lines.Add(format('%3d %3d %3d', [r,g,b]));
memo1.Lines.Add(format('%.3d;%.3d;%.3d', [r,g,b]));// pour tableur
end;
end; |
Partager