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.