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

177 lines
4.2 KiB
Plaintext

unit umain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, ieview, ImageEnView, ImageEnProc,
hyiedefs, ImageEnIO, hyieutils, iexBitmaps, iesettings, StdCtrls, ExtCtrls, iexLayers,
iexRulers;
type
TForm1 = class(TForm)
ImageEnView1: TImageEnView;
MainMenu1: TMainMenu;
File1: TMenuItem;
Open1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Edit1: TMenuItem;
Undo1: TMenuItem;
Redo1: TMenuItem;
Effects1: TMenuItem;
Negative1: TMenuItem;
ConverttoGray1: TMenuItem;
FlipHorizontal1: TMenuItem;
FlipVertical1: TMenuItem;
Equalize1: TMenuItem;
pnlRight: TPanel;
lblUndoList: TLabel;
lbxUndo: TListBox;
Rotate901: TMenuItem;
Rotate1801: TMenuItem;
Rotate2701: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
ColorsandEffects1: TMenuItem;
lblRedoList: TLabel;
lbxRedo: TListBox;
procedure ColorsandEffects1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Undo1Click(Sender: TObject);
procedure Redo1Click(Sender: TObject);
procedure Negative1Click(Sender: TObject);
procedure ConverttoGray1Click(Sender: TObject);
procedure FlipHorizontal1Click(Sender: TObject);
procedure FlipVertical1Click(Sender: TObject);
procedure Equalize1Click(Sender: TObject);
procedure ImageEnView1ImageChange(Sender: TObject);
procedure lbxRedoDblClick(Sender: TObject);
procedure lbxUndoDblClick(Sender: TObject);
procedure Rotate2701Click(Sender: TObject);
private
{ Private declarations }
procedure UpdateMenu;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{$R WindowsTheme.res}
procedure TForm1.ColorsandEffects1Click(Sender: TObject);
begin
ImageEnView1.Proc.DoPreviews;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Open1Click(Sender: TObject);
begin
ImageEnView1.io.LoadFromFile(ImageEnView1.io.ExecuteOpenDialog('', '', false, 1, ''));
ImageEnView1.Proc.ClearAllUndo;
ImageEnView1.Proc.ClearAllRedo;
UpdateMenu;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ImageEnView1.Proc.UndoLimit := 10; // 10 levels of undo
end;
procedure TForm1.Negative1Click(Sender: TObject);
begin
ImageEnView1.Proc.Negative;
end;
procedure TForm1.ConverttoGray1Click(Sender: TObject);
begin
ImageEnView1.Proc.ConvertToGray;
end;
procedure TForm1.FlipHorizontal1Click(Sender: TObject);
begin
ImageEnView1.Proc.Flip(fdHorizontal);
end;
procedure TForm1.FlipVertical1Click(Sender: TObject);
begin
ImageEnView1.Proc.Flip(fdVertical);
end;
procedure TForm1.Equalize1Click(Sender: TObject);
begin
ImageEnView1.Proc.HistAutoEqualize;
end;
procedure TForm1.ImageEnView1ImageChange(Sender: TObject);
begin
UpdateMenu;
end;
procedure TForm1.lbxRedoDblClick(Sender: TObject);
begin
if lbxRedo.ItemIndex > -1 then
ImageEnView1.Proc.RedoAt( lbxRedo.ItemIndex, True );
end;
procedure TForm1.lbxUndoDblClick(Sender: TObject);
begin
if lbxUndo.ItemIndex > -1 then
ImageEnView1.Proc.UndoAt( lbxUndo.ItemIndex, True );
end;
procedure TForm1.Undo1Click(Sender: TObject);
begin
ImageEnView1.Proc.Undo( True );
end;
procedure TForm1.Redo1Click(Sender: TObject);
begin
ImageEnView1.Proc.Redo( True );
end;
procedure TForm1.Rotate2701Click(Sender: TObject);
begin
ImageEnView1.Proc.Rotate(( Sender as TMenuItem).Tag );
end;
procedure TForm1.UpdateMenu;
var
I: Integer;
begin
// Undo menu
Undo1.Enabled := ImageEnView1.Proc.CanUndo;
if ImageEnView1.Proc.CanUndo then
Undo1.Caption := 'Undo ' + ImageEnView1.Proc.UndoCaptions[0]
else
Undo1.Caption := 'Undo';
// Redo menu
Redo1.Enabled := ImageEnView1.Proc.CanRedo;
if ImageEnView1.Proc.CanRedo then
Redo1.Caption := 'Redo ' + ImageEnView1.Proc.RedoCaptions[0]
else
Redo1.Caption := 'Redo';
// Output Undo and Redo lists
lbxUndo.Clear;
for I := 0 to ImageEnView1.Proc.UndoCount - 1 do
lbxUndo.Items.Add( ImageEnView1.Proc.UndoCaptions[ i ]);
lbxRedo.Clear;
for I := 0 to ImageEnView1.Proc.RedoCount - 1 do
lbxRedo.Items.Add( ImageEnView1.Proc.RedoCaptions[ i ]);
end;
end.