BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/ImageEditing/RotateLayers/umain.pas

240 lines
5.4 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ieview, imageenview,
imageenproc, StdCtrls, hyieutils, hyiedefs, iexBitmaps, iesettings, iexLayers, iexRulers;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
ImageEnView1: TImageEnView;
File1: TMenuItem;
Open1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Layers1: TMenuItem;
Add1: TMenuItem;
Rotate1: TMenuItem;
MoveResize1: TMenuItem;
Save1: TMenuItem;
View1: TMenuItem;
Fit1: TMenuItem;
Actualsize1: TMenuItem;
Edit1: TMenuItem;
Finalizerotation1: TMenuItem;
N2: TMenuItem;
PreviewQu1: TMenuItem;
Standard1: TMenuItem;
HighDelayed1: TMenuItem;
High1: TMenuItem;
Label1: TLabel;
procedure Exit1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Add1Click(Sender: TObject);
procedure Rotate1Click(Sender: TObject);
procedure MoveResize1Click(Sender: TObject);
procedure Save1Click(Sender: TObject);
procedure Fit1Click(Sender: TObject);
procedure Actualsize1Click(Sender: TObject);
procedure Finalizerotation1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure High1Click(Sender: TObject);
procedure HighDelayed1Click(Sender: TObject);
procedure Standard1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
// File | Exit
procedure TMainForm.Exit1Click(Sender: TObject);
begin
Close;
end;
// File | Open
procedure TMainForm.Open1Click(Sender: TObject);
var
filename:string;
begin
// open dialog
filename := ImageEnView1.IO.ExecuteOpenDialog;
// load as multilayer file
if ExtractFileExt(filename)='.lyr' then
ImageEnView1.LayersLoadFromFile( filename )
// load as psd (with layers)
else
if ExtractFileExt(filename)='.psd' then
begin
ImageEnView1.IO.Params.PSD_LoadLayers:=true;
ImageEnView1.IO.LoadFromFile( filename );
end
// generic file
else
begin
ImageEnView1.IO.LoadFromFile( filename );
TIEImageLayer( ImageEnView1.CurrentLayer ).RestoreAspectRatio();
end;
end;
// File | Save
procedure TMainForm.Save1Click(Sender: TObject);
var
filename:string;
begin
// save dialog
filename:=ImageEnView1.IO.ExecuteSaveDialog;
// save as multilayer file
if ExtractFileExt(filename)='.lyr' then
ImageenView1.LayersSaveToFile( filename )
// save as psd multilayer
else
if ExtractFileExt(filename)='.psd' then
ImageEnView1.IO.SaveToFile( filename )
else
// merge layers and save as generic file
begin
ImageEnView1.LayersMergeAll;
ImageEnView1.IO.SaveToFile( filename );
end;
end;
// Layers | Add
procedure TMainForm.Add1Click(Sender: TObject);
begin
Add1.Checked := true;
// enable layers adding, resizing and moving
ImageEnView1.MouseInteract := [miCreateImageLayers, miResizeLayers, miMoveLayers];
end;
// Layers | Rotate
procedure TMainForm.Rotate1Click(Sender: TObject);
begin
Rotate1.Checked := true;
// enable layers resizing and moving
ImageEnView1.MouseInteract := [miRotateLayers, miMoveLayers];
end;
// Layers | MoveResize
procedure TMainForm.MoveResize1Click(Sender: TObject);
begin
MoveResize1.Checked:=true;
// enable layers rotate and moving
ImageEnView1.MouseInteract := [miResizeLayers, miMoveLayers];
end;
// View | Fit
procedure TMainForm.Fit1Click(Sender: TObject);
begin
ImageEnView1.Fit;
end;
// View | actual size
procedure TMainForm.Actualsize1Click(Sender: TObject);
begin
ImageEnView1.Zoom:=100;
end;
procedure TMainForm.Finalizerotation1Click(Sender: TObject);
begin
ImageEnView1.LayersRotationAntialias := true;
ImageEnView1.LayersRotationFilter := ierBilinear;
ImageenView1.LayersFixRotations();
ImageenView1.Update();
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
ImageEnView1.ClearAll();
// Default to layer addition
Add1Click(nil);
// Default to delayed high quality
HighDelayed1Click(nil);
ImageEnView1.Layers[0].Selectable := False;
end;
procedure TMainForm.Standard1Click(Sender: TObject);
begin
Standard1.Checked := True;
// FASTEST DISPLAY
// Zoom filter
ImageEnView1.ZoomFilter := rfNone;
ImageEnView1.DelayZoomFilter := False;
// Rotation anti-alias
ImageEnView1.LayersRotationFilter := ierBicubic;
ImageEnView1.LayersRotationAntialias := True;
ImageEnView1.LayersRotationUseFilterOnPreview := False;
// Fast drawing
ImageEnView1.LayersFastDrawing := iefFast;
end;
procedure TMainForm.HighDelayed1Click(Sender: TObject);
begin
HighDelayed1.Checked := True;
// DELAYED HIGH QUALITY
// Zoom filter
ImageEnView1.ZoomFilter := rfLanczos3;
ImageEnView1.DelayZoomFilter := True;
// Rotation anti-alias
ImageEnView1.LayersRotationFilter := ierBicubic;
ImageEnView1.LayersRotationAntialias := True;
ImageEnView1.LayersRotationUseFilterOnPreview := True;
// Fast drawing
ImageEnView1.LayersFastDrawing := iefDelayed;
end;
procedure TMainForm.High1Click(Sender: TObject);
begin
High1.Checked := True;
// HIGH QUALITY
// Zoom filter
ImageEnView1.ZoomFilter := rfLanczos3;
ImageEnView1.DelayZoomFilter := False;
// Rotation anti-alias
ImageEnView1.LayersRotationFilter := ierBicubic;
ImageEnView1.LayersRotationAntialias := True;
ImageEnView1.LayersRotationUseFilterOnPreview := True;
// Fast drawing
ImageEnView1.LayersFastDrawing := iefNormal;
end;
end.