259 lines
6.0 KiB
Plaintext
259 lines
6.0 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
ieview, imageenview, Menus, ComCtrls, StdCtrls, ExtCtrls, hyieutils,
|
|
Buttons;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
ImageEnView1: TImageEnView;
|
|
Panel1: TPanel;
|
|
GroupBox2: TGroupBox;
|
|
TrackBar1: TTrackBar;
|
|
GroupBox3: TGroupBox;
|
|
Label2: TLabel;
|
|
TrackBar2: TTrackBar;
|
|
Label3: TLabel;
|
|
TrackBar3: TTrackBar;
|
|
Label4: TLabel;
|
|
TrackBar4: TTrackBar;
|
|
GroupBox4: TGroupBox;
|
|
CheckBox1: TCheckBox;
|
|
CheckBox2: TCheckBox;
|
|
CheckBox3: TCheckBox;
|
|
GroupBox1: TGroupBox;
|
|
TrackBar5: TTrackBar;
|
|
CheckBox4: TCheckBox;
|
|
GroupBox5: TGroupBox;
|
|
TrackBar6: TTrackBar;
|
|
GroupBox6: TGroupBox;
|
|
Label1: TLabel;
|
|
Label5: TLabel;
|
|
TrackBar7: TTrackBar;
|
|
TrackBar8: TTrackBar;
|
|
Button1: TButton;
|
|
Button2: TButton;
|
|
Button3: TButton;
|
|
Button4: TButton;
|
|
Panel2: TPanel;
|
|
SpeedButtonSelRect: TSpeedButton;
|
|
Label6: TLabel;
|
|
SpeedButtonSelEllipse: TSpeedButton;
|
|
SpeedButtonSelPoly: TSpeedButton;
|
|
procedure TrackBar1Change(Sender: TObject);
|
|
procedure TrackBar2Change(Sender: TObject);
|
|
procedure TrackBar3Change(Sender: TObject);
|
|
procedure TrackBar4Change(Sender: TObject);
|
|
procedure CheckBox1Click(Sender: TObject);
|
|
procedure CheckBox2Click(Sender: TObject);
|
|
procedure CheckBox3Click(Sender: TObject);
|
|
procedure TrackBar5Change(Sender: TObject);
|
|
procedure CheckBox4Click(Sender: TObject);
|
|
procedure TrackBar6Change(Sender: TObject);
|
|
procedure TrackBar7Change(Sender: TObject);
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure ImageEnView1SelectionChange(Sender: TObject);
|
|
procedure Button2Click(Sender: TObject);
|
|
procedure Button3Click(Sender: TObject);
|
|
procedure Button4Click(Sender: TObject);
|
|
procedure SelectModeClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
procedure ChangeChannelsOffset;
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
|
|
// contrast
|
|
|
|
procedure TForm1.TrackBar1Change(Sender: TObject);
|
|
begin
|
|
ImageEnView1.IEBitmap.Contrast := TrackBar1.Position;
|
|
ImageEnView1.Update;
|
|
end;
|
|
|
|
procedure TForm1.ChangeChannelsOffset;
|
|
begin
|
|
ImageEnView1.IEBitmap.ChannelOffset[0] := TrackBar2.Position; // red
|
|
ImageEnView1.IEBitmap.ChannelOffset[1] := TrackBar3.Position; // green
|
|
ImageEnView1.IEBitmap.ChannelOffset[2] := TrackBar4.Position; // blue
|
|
ImageEnView1.Update;
|
|
end;
|
|
|
|
// red
|
|
|
|
procedure TForm1.TrackBar2Change(Sender: TObject);
|
|
begin
|
|
ChangeChannelsOffset;
|
|
end;
|
|
|
|
// green
|
|
|
|
procedure TForm1.TrackBar3Change(Sender: TObject);
|
|
begin
|
|
ChangeChannelsOffset;
|
|
end;
|
|
|
|
// blue
|
|
|
|
procedure TForm1.TrackBar4Change(Sender: TObject);
|
|
begin
|
|
ChangeChannelsOffset;
|
|
end;
|
|
|
|
// show red
|
|
|
|
procedure TForm1.CheckBox1Click(Sender: TObject);
|
|
begin
|
|
TrackBar2.Enabled := CheckBox1.Checked;
|
|
if CheckBox1.Checked then
|
|
TrackBar2.Position := 0
|
|
else
|
|
TrackBar2.Position := -255;
|
|
ChangeChannelsOffset;
|
|
end;
|
|
|
|
// show green
|
|
|
|
procedure TForm1.CheckBox2Click(Sender: TObject);
|
|
begin
|
|
TrackBar3.Enabled := CheckBox2.Checked;
|
|
if CheckBox2.Checked then
|
|
TrackBar3.Position := 0
|
|
else
|
|
TrackBar3.Position := -255;
|
|
ChangeChannelsOffset;
|
|
end;
|
|
|
|
// show blue
|
|
|
|
procedure TForm1.CheckBox3Click(Sender: TObject);
|
|
begin
|
|
TrackBar4.Enabled := CheckBox3.Checked;
|
|
if CheckBox3.Checked then
|
|
TrackBar4.Position := 0
|
|
else
|
|
TrackBar4.Position := -255;
|
|
ChangeChannelsOffset;
|
|
end;
|
|
|
|
// Zoom
|
|
|
|
procedure TForm1.TrackBar5Change(Sender: TObject);
|
|
begin
|
|
ImageEnView1.Zoom := TrackBar5.Position;
|
|
end;
|
|
|
|
// Fit
|
|
|
|
procedure TForm1.CheckBox4Click(Sender: TObject);
|
|
begin
|
|
if CheckBox4.Checked then
|
|
begin
|
|
ImageEnView1.AutoFit := true;
|
|
ImageEnView1.Fit;
|
|
TrackBar5.Enabled := false;
|
|
end
|
|
else
|
|
begin
|
|
ImageEnView1.AutoFit := false;
|
|
TrackBar5.Enabled := true;
|
|
ImageEnView1.Zoom := TrackBar5.Position;
|
|
end;
|
|
end;
|
|
|
|
// Brightness
|
|
|
|
procedure TForm1.TrackBar6Change(Sender: TObject);
|
|
begin
|
|
if CheckBox1.Checked then
|
|
TrackBar2.Position := TrackBar6.Position;
|
|
if CheckBox2.Checked then
|
|
TrackBar3.Position := TrackBar6.Position;
|
|
if CheckBox3.Checked then
|
|
TrackBar4.Position := TrackBar6.Position;
|
|
ChangeChannelsOffset;
|
|
end;
|
|
|
|
// black/white ranges
|
|
procedure TForm1.TrackBar7Change(Sender: TObject);
|
|
begin
|
|
ImageEnView1.IEBitmap.BlackValue:=trackbar7.position;
|
|
ImageEnView1.IEBitmap.WhiteValue:=trackbar8.position;
|
|
ImageEnView1.Update;
|
|
end;
|
|
|
|
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
begin
|
|
with ImageEnView1.IO do
|
|
begin
|
|
NativePixelFormat := true;
|
|
LoadFromFile(ExecuteOpenDialog('', '', false, 1, ''));
|
|
end;
|
|
|
|
trackbar7.Max := (1 shl (ImageEnView1.IEBitmap.BitCount div ImageEnView1.IEBitmap.ChannelCount)) - 1;
|
|
trackbar7.Position := 0;
|
|
trackbar8.Max := trackbar7.Max;
|
|
trackbar8.Position := trackbar7.Max;
|
|
end;
|
|
|
|
|
|
procedure TForm1.ImageEnView1SelectionChange(Sender: TObject);
|
|
begin
|
|
ImageEnView1.IEBitmap.AdjustmentsMask.Assign( ImageEnView1.SelectionMask );
|
|
if ImageEnView1.IEBitmap.AdjustmentsMask.IsEmpty then
|
|
ImageEnView1.IEBitmap.AdjustmentsMask.Fill();
|
|
ImageEnView1.Update();
|
|
end;
|
|
|
|
// fix contrast
|
|
procedure TForm1.Button2Click(Sender: TObject);
|
|
begin
|
|
ImageEnView1.IEBitmap.FixContrast();
|
|
TrackBar1.Position := 0;
|
|
end;
|
|
|
|
// fix channel offset
|
|
procedure TForm1.Button3Click(Sender: TObject);
|
|
begin
|
|
ImageEnView1.IEBitmap.FixChannelOffset();
|
|
TrackBar2.Position := 0;
|
|
TrackBar3.Position := 0;
|
|
TrackBar4.Position := 0;
|
|
end;
|
|
|
|
// fix black/white range
|
|
procedure TForm1.Button4Click(Sender: TObject);
|
|
begin
|
|
ImageEnView1.IEBitmap.StretchValues();
|
|
TrackBar7.Position := 0;
|
|
TrackBar8.Position := TrackBar8.Max;
|
|
end;
|
|
|
|
procedure TForm1.SelectModeClick(Sender: TObject);
|
|
begin
|
|
if SpeedButtonSelRect.Down then
|
|
ImageEnView1.MouseInteract := [miSelect]
|
|
else if SpeedButtonSelEllipse.Down then
|
|
ImageEnView1.MouseInteract := [miSelectCircle]
|
|
else if SpeedButtonSelPoly.Down then
|
|
ImageEnView1.MouseInteract := [miSelectPolygon]
|
|
else
|
|
ImageEnView1.MouseInteract := [];
|
|
end;
|
|
|
|
end.
|