📄 previews.pas
字号:
lref := strtointdef(edit31.text, 0) / 10 + 1;
if (lleft <> LensLeft) or (ltop <> LensTop) or (lwidth <> LensWidth) or (lheight <> LensHeight) or
(lref <> LensRef) then
begin
LensLeft := lleft;
LensTop := ltop;
LensWidth := lwidth;
LensHeight := lheight;
LensRef := lref;
if chkLockPreview.checked then
begin
imageen2.Proc.undo;
ApplyAct(imageen2);
imageen2.paint;
end;
end;
end;
/////////////////////////////////////////////////////////////////////////////////////
// Cambio controlli Wave
procedure TfPreviews.Edit32Change(Sender: TObject);
var
lWaveAmplitude: integer;
lWaveWaveLength: integer;
lWavePhase: integer;
lWaveReflect: boolean;
begin
if not dochange then
exit;
lWaveAmplitude := strtointdef(edit32.text, 0);
lWaveWaveLength := strtointdef(edit33.text, 0);
lWavePhase := strtointdef(edit34.text, 0);
lWaveReflect := checkbox2.checked;
if (lWaveAmplitude <> WaveAmplitude) or (lWaveWaveLength <> WaveWaveLength) or
(lWavePhase <> WavePhase) or (lWaveReflect <> WaveReflect) then
begin
WaveAmplitude := lWaveAmplitude;
WaveWaveLength := lWaveWaveLength;
WavePhase := lWavePhase;
WaveReflect := lWaveReflect;
if chkLockPreview.checked then
begin
imageen2.Proc.undo;
ApplyAct(imageen2);
imageen2.paint;
end;
end;
end;
/////////////////////////////////////////////////////////////////////////////////////
// cambio controlli Morph filter
procedure TfPreviews.Edit35Change(Sender: TObject);
var
lMorphFilter: integer;
lMorphWinSize: integer;
begin
if not dochange then
exit;
lMorphFilter := ListBox2.ItemIndex;
lMorphWinSize := StrToIntDef(edit35.text, 1);
if (lMorphFilter <> MorphFilter) or (lMorphWinSize <> MorphWinSize) then
begin
MorphFilter := lMorphFilter;
MorphWinSize := lMorphWinSize;
if chkLockPreview.checked then
begin
imageen2.Proc.undo;
ApplyAct(imageen2);
imageen2.paint;
end;
end;
end;
// change rotate track bar
procedure TfPreviews.TrackBarRotateChange(Sender: TObject);
begin
if not dochange then
exit;
if (TrackBarRotate.Position / 100) <> RotationAngle then
begin
RotationAngle := TrackBarRotate.Position / 100;
EditRotate.Text := FloatToStr(RotationAngle);
if chkLockPreview.checked then
begin
imageen2.Proc.undo;
ApplyAct(imageen2);
imageen2.paint;
end;
end;
end;
// change rotate edit
// 2.2.5
procedure TfPreviews.EditRotateChange(Sender: TObject);
var
r: double;
begin
if not dochange then
exit;
r := IEStrToFloatDef(editRotate.text, 0);
if (r <> RotationAngle) then
begin
trackbarRotate.position := trunc(r * 100);
trackbarRotateChange(self);
end;
end;
// flip hor/ver
procedure TfPreviews.SpeedButtonFlipHorClick(Sender: TObject);
begin
if not dochange then
exit;
if chkLockPreview.checked then
begin
imageen2.Proc.undo;
NeedToFlip := true;
ApplyAct(imageen2);
imageen2.paint;
end;
end;
// Clear button (FFT)
procedure TfPreviews.ClearClick(Sender: TObject);
begin
if not dochange then
exit;
imageen2.Proc.undo;
ApplyAct(imageen2);
imageen2.paint;
end;
// Reset (FFT)
procedure TfPreviews.Button7Click(Sender: TObject);
begin
ImageEnView1.DeSelect;
CopyOrg;
end;
// FFT progress
procedure TfPreviews.ImageEnProc2Progress(Sender: TObject; per: Integer);
begin
ProgressBar1.Position := FFTProgressPos + per;
end;
// FFT gray scale
procedure TfPreviews.CheckBox1Click(Sender: TObject);
begin
CopyOrg;
end;
// Gamma Change Start
procedure TfPreviews.UpdatePreview;
begin
if chkLockPreview.checked then
begin
imageen2.Proc.undo;
ApplyAct(imageen2);
imageen2.paint;
end;
end;
// Gamma Change Start
procedure TfPreviews.trkGammaChange(Sender: TObject);
begin
edtGamma.Text := FloatToStr(trkGamma.position / 10);
DrawGammaGraph(trkGamma.position / 10);
UpdatePreview;
end;
// Gamma Change Start
procedure TfPreviews.cbxGammaClick(Sender: TObject);
begin
if not dochange then
exit;
DrawGammaGraph(trkGamma.position / 10);
UpdatePreview;
end;
procedure TfPreviews.DrawGammaGraph(g: double);
var
c, y, x, ww, hh: integer;
begin
ww := ImageEnView2.Width;
hh := ImageEnView2.Height;
ImageEnView2.IEBitmap.Width := ww;
ImageEnView2.IEBitmap.Height := hh;
ImageEnView2.IEBitmap.Fill(clSilver);
ImageEnView2.IEBitmap.Canvas.Pen.Color := clBlack;
ImageEnView2.IEBitmap.Canvas.Pen.Style := psSolid;
ImageEnView2.IEBitmap.Canvas.MoveTo(0, hh);
for c := 0 to 255 do
begin
y := ilimit(trunc((255 - blimit(Round(iepower(c / 255, 1 / g) * 255))) / 255 * hh), 0, hh - 1);
x := ilimit(trunc(c / 255 * ww), 0, ww - 1);
ImageEnView2.IEBitmap.Canvas.LineTo(x, y);
end;
ImageEnView2.Update;
end;
// Sharpen Amplitude or Sharpen window size
procedure TfPreviews.TrackBar4Change(Sender: TObject);
begin
if not dochange then
exit;
if (Sharpen <> trackbar4.position) or (SharpenSize <> StrToIntdef(Edit37.Text, 2)) then
begin
Sharpen := trackbar4.position;
edit36.text := inttostr(Sharpen);
SharpenSize := StrToIntDef(Edit37.Text, 2);
if chkLockPreview.checked then
begin
imageen2.Proc.undo;
ApplyAct(imageen2);
imageen2.paint;
end;
end;
end;
procedure TfPreviews.Edit36Change(Sender: TObject);
begin
if not dochange then
exit;
if Sharpen <> StrToIntDef(Edit36.Text, 1) then
begin
trackbar4.position := StrToIntDef(Edit36.Text, 1);
trackbar4change(self);
end;
end;
procedure TfPreviews.GetIPParams;
begin
// contrast and brightness
if ars[0] then
begin
fIPDialogParams.CONTRAST_Contrast:=Contrast;
fIPDialogParams.CONTRAST_Brightness:=Brightness;
end;
// HSL
if ars[1] then
begin
fIPDialogParams.HSL_H:=Hue;
fIPDialogParams.HSL_S:=Sat;
fIPDialogParams.HSL_L:=Lum;
end;
// rgb
if ars[2] then
begin
fIPDialogParams.RGB_R:=red;
fIPDialogParams.RGB_G:=green;
fIPDialogParams.RGB_B:=blue;
end;
// user filter
if ars[3] then
begin
fIPDialogParams.USERFILTER_Values:=Filter;
end;
// HSV
if ars[4] then
begin
fIPDialogParams.HSV_H:=bHue;
fIPDialogParams.HSV_S:=bSat;
fIPDialogParams.HSV_V:=bVal;
end;
// threshold (histogram)
if ars[5] then
begin
fIPDialogParams.EQUALIZATION_ThresholdDown:=DownLimit;
fIPDialogParams.EQUALIZATION_ThresholdUp:=UpLimit;
fIPDialogParams.EQUALIZATION_EqDown:=EDownLimit;
fIPDialogParams.EQUALIZATION_EqUp:=EUpLimit;
end;
// bump map
if ars[6] then
begin
fIPDialogParams.BUMPMAP_Left:=BumpLeft;
fIPDialogParams.BUMPMAP_Top:=BumpTop;
fIPDialogParams.BUMPMAP_Width:=BumpWidth;
fIPDialogParams.BUMPMAP_Height:=BumpHeight;
fIPDialogParams.BUMPMAP_Col:=BumpCol;
fIPDialogParams.BUMPMAP_Src:=BumpSrc;
end;
// Lens
if ars[7] then
begin
fIPDialogParams.LENS_Left:=LensLeft;
fIPDialogParams.LENS_Top:=LensTop;
fIPDialogParams.LENS_Width:=LensWidth;
fIPDialogParams.LENS_Height:=LensHeight;
fIPDialogParams.LENS_Ref:=LensRef;
end;
// Wave
if ars[8] then
begin
fIPDialogParams.WAVE_Amplitude:=WaveAmplitude;
fIPDialogParams.WAVE_WaveLength:=WaveWaveLength;
fIPDialogParams.WAVE_Phase:=WavePhase;
fIPDialogParams.WAVE_Reflect:=WaveReflect;
end;
// Morph filters
if ars[9] then
begin
fIPDialogParams.MORPH_Filter:=MorphFilter;
fIPDialogParams.MORPH_WinSize:=MorphWinSize;
end;
// Rotate
if ars[10] then
begin
fIPDialogParams.ROTATE_Angle:=RotationAngle;
end;
// FFT
if ars[11] then
begin
if ImageEnView1.Selected then
begin
fIPDialogParams.FFT_Left:=ImageEnView1.SelX1;
fIPDialogParams.FFT_Top:=ImageEnView1.SelY1;
fIPDialogParams.FFT_Right:=ImageEnView1.SelX2;
fIPDialogParams.FFT_Bottom:=ImageEnView1.SelY2;
ImageEnView1.Deselect;
end
else
begin
fIPDialogParams.FFT_Left:=-1;
fIPDialogParams.FFT_Top:=-1;
fIPDialogParams.FFT_Right:=-1;
fIPDialogParams.FFT_Bottom:=-1;
end;
fIPDialogParams.FFT_GrayScale:=CheckBox1.Checked;
end;
// Gamma Correction
if ars[12] then
begin
fIPDialogParams.GAMMACORRECTION_Value:=trkGamma.Position/10;
end;
// Sharpen
if ars[13] then
begin
fIPDialogParams.SHARPEN_Sharpen:=Sharpen;
fIPDialogParams.SHARPEN_Size:=SharpenSize;
end;
end;
// Resize preview form
procedure TfPreviews.FormResize(Sender: TObject);
var
ow,oh:integer;
begin
ow:=(Width-536) div 2;
oh:=(Height-421);
ImageEn1.Width := 191+ ow;
ImageEn1.Height := 135+ oh;
ImageEn2.Left := 233 + ow;
ImageEn2.Width := ImageEn1.Width;
ImageEn2.height := ImageEn1.Height;
ImageEn1.Fit;
Button6.Left := 206 + ow;
Button6.Top := 70 + oh div 2;
Label2.left := 231 + ow;
PageControl1.Width := Width-23;
// 2.2.7
case iegDialogsBackground of
iedbPaper:
begin
ImageEn1.BackgroundStyle:=iebsSoftShadow;
ImageEn1.Background:=clWhite;
ImageEn1.BorderStyle:=bsNone;
ImageEn2.BackgroundStyle:=iebsSoftShadow;
ImageEn2.Background:=clWhite;
ImageEn2.BorderStyle:=bsNone;
IECreateOSXBackgroundPaper(Image1.Picture.Bitmap,Image1.Width,Image1.Height);
Image1.Update;
end;
iedbMetal:
begin
ImageEn1.BackgroundStyle:=iebsSoftShadow;
ImageEn1.Background:=clSilver;
ImageEn1.BorderStyle:=bsNone;
ImageEn2.BackgroundStyle:=iebsSoftShadow;
ImageEn2.Background:=clSilver;
ImageEn2.BorderStyle:=bsNone;
IECreateOSXBackgroundMetal(Image1.Picture.Bitmap,Image1.Width,Image1.Height);
Image1.Update;
chkLockPreview.Invalidate;
end;
end;
end;
{$ELSE} // {$ifdef IEINCLUDEDIALOGIP}
interface
implementation
{$ENDIF}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -