224 lines
5.8 KiB
Plaintext
224 lines
5.8 KiB
Plaintext
unit uMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Menus, ieview, imageenview, ExtCtrls, StdCtrls, ComCtrls, hyiedefs, hyieutils,
|
|
iexBitmaps, iesettings, Buttons, iexLayers, iexRulers, iexActions;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
Panel1: TPanel;
|
|
ImageEnView1: TImageEnView;
|
|
GroupBox1: TGroupBox;
|
|
chkDrawGuides: TCheckBox;
|
|
Label3: TLabel;
|
|
trkGripSize: TTrackBar;
|
|
btnOpen: TButton;
|
|
lblCropInfo: TLabel;
|
|
btnApplyCrop: TButton;
|
|
lblApplyCrop: TLabel;
|
|
btnCancelCrop: TButton;
|
|
lblCancelCrop: TLabel;
|
|
btnSave: TButton;
|
|
btnUndo: TButton;
|
|
btnCropImage: TSpeedButton;
|
|
chkPerspective: TCheckBox;
|
|
grpSelection: TGroupBox;
|
|
rdbNoLocking: TRadioButton;
|
|
rdbLockSize: TRadioButton;
|
|
rdbLockAR: TRadioButton;
|
|
chkMoving: TCheckBox;
|
|
chkResize: TCheckBox;
|
|
chkRotate: TCheckBox;
|
|
Label1: TLabel;
|
|
|
|
procedure btnApplyCropClick(Sender: TObject);
|
|
procedure btnCancelCropClick(Sender: TObject);
|
|
procedure btnCropImageClick(Sender: TObject);
|
|
procedure chkDrawGuidesClick(Sender: TObject);
|
|
procedure trkGripSizeChange(Sender: TObject);
|
|
procedure btnOpenClick(Sender: TObject);
|
|
procedure btnSaveClick(Sender: TObject);
|
|
procedure btnUndoClick(Sender: TObject);
|
|
procedure chkMovingClick(Sender: TObject);
|
|
procedure LockControlClick(Sender: TObject);
|
|
procedure chkPerspectiveClick(Sender: TObject);
|
|
procedure chkResizeClick(Sender: TObject);
|
|
procedure chkRotateClick(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure ImageEnView1ImageChange(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure StartCropping(v: Boolean);
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
|
|
procedure TForm1.btnApplyCropClick(Sender: TObject);
|
|
begin
|
|
ImageEnView1.CropToolInteraction.Crop();
|
|
end;
|
|
|
|
|
|
procedure TForm1.btnCancelCropClick(Sender: TObject);
|
|
begin
|
|
ImageEnView1.CropToolInteraction.Cancel();
|
|
end;
|
|
|
|
|
|
procedure TForm1.btnCropImageClick(Sender: TObject);
|
|
begin
|
|
StartCropping( btnCropImage.Down );
|
|
end;
|
|
|
|
|
|
procedure TForm1.chkDrawGuidesClick(Sender: TObject);
|
|
begin
|
|
ImageEnView1.CropToolInteraction.DrawGuides := chkDrawGuides.Checked;
|
|
ImageEnView1.Invalidate();
|
|
end;
|
|
|
|
|
|
procedure TForm1.trkGripSizeChange(Sender: TObject);
|
|
begin
|
|
ImageEnView1.CropToolInteraction.GripSize := trkGripSize.Position;
|
|
ImageEnView1.Invalidate();
|
|
end;
|
|
|
|
|
|
procedure TForm1.btnOpenClick(Sender: TObject);
|
|
var
|
|
sFilename: string;
|
|
begin
|
|
sFilename := ImageEnView1.IO.ExecuteOpenDialog();
|
|
if sFilename <> '' then
|
|
begin
|
|
ImageEnView1.IO.LoadFromFile( sFilename );
|
|
ImageEnView1.Fit( False );
|
|
StartCropping( False );
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TForm1.btnSaveClick(Sender: TObject);
|
|
var
|
|
sFilename: string;
|
|
begin
|
|
sFilename := ImageEnView1.IO.ExecuteSaveDialog();
|
|
if sFilename <> '' then
|
|
ImageEnView1.IO.SaveToFile( sFilename );
|
|
end;
|
|
|
|
|
|
procedure TForm1.btnUndoClick(Sender: TObject);
|
|
begin
|
|
ImageEnView1.Deselect();
|
|
ImageEnView1.Proc.Undo( True );
|
|
end;
|
|
|
|
procedure TForm1.chkMovingClick(Sender: TObject);
|
|
begin
|
|
if chkMoving.checked then
|
|
ImageEnView1.CropToolInteraction.Options := ImageEnView1.CropToolInteraction.Options + [ iecoAllowMoving ]
|
|
else
|
|
ImageEnView1.CropToolInteraction.Options := ImageEnView1.CropToolInteraction.Options - [ iecoAllowMoving ]
|
|
end;
|
|
|
|
procedure TForm1.LockControlClick(Sender: TObject);
|
|
begin
|
|
if rdbLockAR.checked then
|
|
ImageEnView1.CropToolInteraction.LockAspectRatio := 4 / 3 { 4:3 ratio }
|
|
else
|
|
if rdbLockSize.checked then
|
|
begin
|
|
ImageEnView1.CropToolInteraction.LockAspectRatio := 0;
|
|
ImageEnView1.CropToolInteraction.LockWidth := ImageEnView1.IEBitmap.Width div 2;
|
|
ImageEnView1.CropToolInteraction.LockHeight := 0;
|
|
end
|
|
else
|
|
ImageEnView1.CropToolInteraction.LockAspectRatio := -1;
|
|
end;
|
|
|
|
procedure TForm1.chkPerspectiveClick(Sender: TObject);
|
|
begin
|
|
if chkPerspective.checked then
|
|
ImageEnView1.CropToolInteraction.Mode := iectmPERSPECTIVE
|
|
else
|
|
ImageEnView1.CropToolInteraction.Mode := iectmRECTANGLE;
|
|
ImageEnView1.Invalidate();
|
|
end;
|
|
|
|
procedure TForm1.chkResizeClick(Sender: TObject);
|
|
begin
|
|
if chkResize.checked then
|
|
ImageEnView1.CropToolInteraction.Options := ImageEnView1.CropToolInteraction.Options + [ iecoAllowResizing ]
|
|
else
|
|
ImageEnView1.CropToolInteraction.Options := ImageEnView1.CropToolInteraction.Options - [ iecoAllowResizing ]
|
|
end;
|
|
|
|
procedure TForm1.chkRotateClick(Sender: TObject);
|
|
begin
|
|
|
|
if chkRotate.checked then
|
|
ImageEnView1.CropToolInteraction.Options := ImageEnView1.CropToolInteraction.Options + [ iecoAllowRotating ]
|
|
else
|
|
ImageEnView1.CropToolInteraction.Options := ImageEnView1.CropToolInteraction.Options - [ iecoAllowRotating ]
|
|
end;
|
|
|
|
|
|
procedure TForm1.FormShow(Sender: TObject);
|
|
begin
|
|
ImageEnView1.Proc.UndoLimit := 20;
|
|
StartCropping( False );
|
|
end;
|
|
|
|
|
|
procedure TForm1.ImageEnView1ImageChange(Sender: TObject);
|
|
begin
|
|
btnUndo.Enabled := ImageEnView1.Proc.CanUndo;
|
|
btnSave.Enabled := not ImageEnView1.IsEmpty2;
|
|
end;
|
|
|
|
|
|
procedure TForm1.StartCropping(v: Boolean);
|
|
begin
|
|
if v then
|
|
begin
|
|
ImageEnView1.MouseInteract := [ miCropTool ];
|
|
ImageEnView1.Cursor := crIECrossSight;
|
|
lblCropInfo.Caption := 'Click image and drag to select' + #13#10 +
|
|
'Resize by dragging the grips' + #13#10 +
|
|
'Rotate by dragging outside the grips';
|
|
end
|
|
else
|
|
begin
|
|
ImageEnView1.MouseInteract := [ miZoom ];
|
|
ImageEnView1.Cursor := crIEZoomIn;
|
|
lblCropInfo.Caption := 'Click to Zoom In' + #13#10 +
|
|
'Right-click to Zoom Out';
|
|
end;
|
|
|
|
// General Controls
|
|
btnCropImage .Enabled := not ImageEnView1.IsEmpty2;
|
|
btnCropImage .Down := v;
|
|
|
|
// Cropping controls
|
|
btnApplyCrop .Enabled := v;
|
|
lblApplyCrop .Enabled := v;
|
|
btnCancelCrop .Enabled := v;
|
|
lblCancelCrop .Enabled := v;
|
|
end;
|
|
|
|
end.
|