📄 previews.pas
字号:
(*
Copyright (c) 1998-2007 by HiComponents. All rights reserved.
This software comes without express or implied warranty.
In no case shall the author be liable for any damage or unwanted behavior of any
computer hardware and/or software.
HiComponents grants you the right to include the compiled component
in your application, whether COMMERCIAL, SHAREWARE, or FREEWARE,
BUT YOU MAY NOT DISTRIBUTE THIS SOURCE CODE OR ITS COMPILED .DCU IN ANY FORM.
ImageEn, IEvolution and ImageEn ActiveX may not be included in any commercial,
shareware or freeware libraries or components.
email: support@hicomponents.com
http://www.hicomponents.com
*)
unit previews;
{$R-}
{$Q-}
{$I ie.inc}
{$IFDEF IEINCLUDEDIALOGIP}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
StdCtrls, ComCtrls, ImageEn, ExtCtrls, HSVBox, ImageEnProc, ImageEnView,
checklst, HistogramBox, RulerBox, Buttons, ImageEnIO, hyiedefs, iefft,
ieview, Dialogs;
const
PREVIEWSTABCOUNT = 14;
type
TfPreviews = class(TForm)
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
Label3: TLabel;
Edit1: TEdit;
TrackBar1: TTrackBar;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit3: TEdit;
Edit2: TEdit;
Edit4: TEdit;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
TrackBar5: TTrackBar;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
TrackBar6: TTrackBar;
TrackBar7: TTrackBar;
TrackBar8: TTrackBar;
GroupBox1: TGroupBox;
Edit8: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit16: TEdit;
UpDown1: TUpDown;
UpDown2: TUpDown;
UpDown3: TUpDown;
UpDown4: TUpDown;
UpDown5: TUpDown;
UpDown6: TUpDown;
UpDown7: TUpDown;
UpDown8: TUpDown;
UpDown9: TUpDown;
GroupBox3: TGroupBox;
ListBox1: TListBox;
Button6: TButton;
TabSheet5: TTabSheet;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Edit17: TEdit;
Edit18: TEdit;
Edit19: TEdit;
TrackBar9: TTrackBar;
TrackBar10: TTrackBar;
TrackBar11: TTrackBar;
Label13: TLabel;
Label14: TLabel;
Panel3: TPanel;
Panel4: TPanel;
Button4: TButton;
Button5: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Edit20: TEdit;
UpDown10: TUpDown;
Label15: TLabel;
TabSheet6: TTabSheet;
Panel5: TPanel;
GroupBox4: TGroupBox;
CheckListBox1: TCheckListBox;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
SpeedButton3: TSpeedButton;
Label22: TLabel;
Edit21: TEdit;
TrackBar12: TTrackBar;
HSVBox3: THSVBox;
HSVBox1: THSVBox;
RulerBox2: TRulerBox;
RulerBox1: TRulerBox;
HistogramBox1: THistogramBox;
Button3: TButton;
ImageEn1: TImageEnView;
ImageEn2: TImageEnView;
TabSheet7: TTabSheet;
GroupBox2: TGroupBox;
Label23: TLabel;
Label24: TLabel;
Label26: TLabel;
Panel1: TPanel;
HSVBox2: THSVBox;
Label27: TLabel;
Label28: TLabel;
Label25: TLabel;
Edit22: TEdit;
UpDown11: TUpDown;
UpDown12: TUpDown;
Edit23: TEdit;
Edit24: TEdit;
UpDown13: TUpDown;
Edit25: TEdit;
UpDown14: TUpDown;
Edit26: TEdit;
UpDown15: TUpDown;
TabSheet8: TTabSheet;
GroupBox5: TGroupBox;
Label29: TLabel;
Label30: TLabel;
Label32: TLabel;
Label33: TLabel;
Edit27: TEdit;
UpDown16: TUpDown;
UpDown17: TUpDown;
Edit28: TEdit;
Edit29: TEdit;
UpDown18: TUpDown;
Edit30: TEdit;
UpDown19: TUpDown;
Label31: TLabel;
UpDown20: TUpDown;
Edit31: TEdit;
TabSheet9: TTabSheet;
TabSheet10: TTabSheet;
GroupBox6: TGroupBox;
Label34: TLabel;
Edit32: TEdit;
UpDown21: TUpDown;
UpDown22: TUpDown;
Edit33: TEdit;
Label35: TLabel;
Label36: TLabel;
Edit34: TEdit;
UpDown23: TUpDown;
CheckBox2: TCheckBox;
GroupBox7: TGroupBox;
Label37: TLabel;
ListBox2: TListBox;
Label38: TLabel;
Edit35: TEdit;
UpDown24: TUpDown;
TabSheet11: TTabSheet;
TrackBarRotate: TTrackBar;
EditRotate: TEdit;
LabelRotate: TLabel;
TabSheet12: TTabSheet;
GroupBox8: TGroupBox;
ImageEnView1: TImageEnView;
ImageEnProc2: TImageEnProc;
Clear: TButton;
Button7: TButton;
ProgressBar1: TProgressBar;
CheckBox1: TCheckBox;
tabGamma: TTabSheet;
GroupBox9: TGroupBox;
cbxGamma: TCheckListBox;
Label39: TLabel;
edtGamma: TEdit;
trkGamma: TTrackBar;
ImageEnView2: TImageEnView;
Label41: TLabel;
Label42: TLabel;
Label40: TLabel;
Label43: TLabel;
TabSheet14: TTabSheet;
Label44: TLabel;
Edit36: TEdit;
TrackBar4: TTrackBar;
Label45: TLabel;
Edit37: TEdit;
UpDown25: TUpDown;
chkLockPreview: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
Label46: TLabel;
Image1: TImage;
procedure FormActivate(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure TrackBar2Change(Sender: TObject);
procedure Edit4Change(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure ImageEn1ViewChange(Sender: TObject; Change: Integer);
procedure TrackBar6Change(Sender: TObject);
procedure Edit7Change(Sender: TObject);
procedure Edit8Change(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure TrackBar9Change(Sender: TObject);
procedure Edit19Change(Sender: TObject);
procedure HSVBox3Change(Sender: TObject);
procedure ImageEn2MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure CheckListBox1Click(Sender: TObject);
procedure RulerBox2RulerPosChange(Sender: TObject; Grip: Integer);
procedure RulerBox1RulerPosChange(Sender: TObject; Grip: Integer);
procedure SpeedButton3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure Edit22Change(Sender: TObject);
procedure HSVBox2Change(Sender: TObject);
procedure Edit27Change(Sender: TObject);
procedure Edit32Change(Sender: TObject);
procedure Edit35Change(Sender: TObject);
procedure TrackBarRotateChange(Sender: TObject);
procedure EditRotateChange(Sender: TObject);
procedure SpeedButtonFlipHorClick(Sender: TObject);
procedure ClearClick(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure ImageEnProc2Progress(Sender: TObject; per: Integer);
procedure CheckBox1Click(Sender: TObject);
procedure trkGammaChange(Sender: TObject);
procedure cbxGammaClick(Sender: TObject);
procedure TrackBar4Change(Sender: TObject);
procedure Edit36Change(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
mr, mg, mb: integer; // contrast: median values
domod: boolean; // used by user filters
dochange: boolean; // if true, controls can change their status
doProgress: boolean;
NeedToFlip: boolean; // true when image must be flipped
procedure applyAct(im: TImageEnView);
procedure CopyOrg;
procedure CopyModToOrg;
procedure LoadFilt;
procedure ResetParameters(rs: boolean);
procedure UpdatePreviewZoom;
procedure UpdatePreview;
procedure DrawGammaGraph(g: double);
procedure GetIPParams;
public
{ Public declarations }
Contrast: integer; // contrasto(output)
Brightness: integer; // Brightness (output) = luminosity
Hue, Sat, Lum: integer; // Hue/Sat/Lum (output)
bHue, bSat, bVal: integer; // Hue/Sat/Val (output)
Red, Green, Blue: integer; // RGB (output)
Filter: TGraphFilter; // Filtro (output)
DownLimit, UpLimit: TRGB; // threshold
EDownLimit, EUpLimit: TRGB; // equalize
AutoEqualize: boolean; // autoequalize
BumpLeft, BumpTop, BumpWidth, BumpHeight: integer; // bump map
BumpCol: TRGB; // bump map light color
BumpSrc: integer; // bump map % image
LensLeft, LensTop, LensWidth, LensHeight: integer; // Lens
LensRef: double; // Lens reflection
WaveAmplitude: integer;
WaveWaveLength: integer;
WavePhase: integer;
WaveReflect: boolean;
MorphFilter: integer;
MorphWinSize: integer;
RotationAngle: double; // rotate
Sharpen: integer;
SharpenSize: integer;
// FFT
FFTProgressPos: integer;
FTImage: TIEFtImage;
//
pe: TPreviewEffects;
Progress: TProgressRec;
DefaultLockPreview: boolean;
ars: array[0..PREVIEWSTABCOUNT - 1] of boolean;
undos: array[0..PREVIEWSTABCOUNT - 1] of string;
InitialPage: TTabSheet;
UndoCaption:string;
//
fIPDialogParams:TIPDialogParams;
//
procedure SetLanguage(l: TMsgLanguage);
end;
implementation
uses hyieutils;
{$R-}
{$R *.DFM}
/////////////////////////////////////////////////////////////////////////////////////
procedure TfPreviews.FormDestroy(Sender: TObject);
begin
if assigned(FTImage) then
FreeAndNil(FTImage);
end;
/////////////////////////////////////////////////////////////////////////////////////
procedure TfPreviews.FormCreate(Sender: TObject);
{$IFDEF IEFIXPREVIEWS}
var
q: integer;
{$ENDIF}
begin
with ImageEn1.IO do
begin
PreviewFont.Charset := DEFAULT_CHARSET;
PreviewFont.Color := clWindowText;
PreviewFont.Height := -11;
PreviewFont.Name := 'MS Sans Serif';
PreviewFont.Style := [];
end;
with ImageEn2.IO do
begin
PreviewFont.Charset := DEFAULT_CHARSET;
PreviewFont.Color := clWindowText;
PreviewFont.Height := -11;
PreviewFont.Name := 'MS Sans Serif';
PreviewFont.Style := [];
end;
ImageEn2.Proc.AutoUndo := False;
{$IFDEF IEFIXPREVIEWS}
for q := 0 to ComponentCount - 1 do
if (Components[q] is TTrackBar) then
(Components[q] as TTrackBar).ThumbLength := 10;
{$ENDIF}
FTImage := nil;
PageControl1.ActivePage := TabSheet1;
ImageEn2.Proc.UndoLocation := ieMemory;
UndoCaption:='';
end;
/////////////////////////////////////////////////////////////////////////////////////
// if rs is True initialize all
procedure TfPreviews.ResetParameters(rs: boolean);
var
i, x: integer;
begin
if rs then
for x := 0 to high(ars) do
ars[x] := false;
//
dochange := false;
// contrast and brightness
if (PageControl1.ActivePage = TabSheet1) and not ars[0] then
begin
_getmediacontrastRGB(imageen1.IEBitmap, mR, mG, mB);
Contrast := fIPDialogParams.CONTRAST_Contrast;
Brightness := fIPDialogParams.CONTRAST_Brightness;
edit1.text := inttostr(Contrast);
edit21.text := inttostr(Brightness);
trackbar1.position := Contrast;
trackbar12.position := Brightness;
ars[0] := true;
undos[0]:='Contrast/Brightness';
end;
// HSL
if (PageControl1.ActivePage = TabSheet2) and not ars[1] then
begin
Hue := fIPDialogParams.HSL_H;
Sat := fIPDialogParams.HSL_S;
Lum := fIPDialogParams.HSL_L;
trackbar2.Position := Hue;
trackbar3.Position := Sat;
trackbar5.Position := Lum;
edit4.text := inttostr(Hue);
edit2.text := inttostr(Sat);
edit3.text := inttostr(Lum);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -