BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Display/Gestures/umain.pas

119 lines
3.6 KiB
Plaintext
Raw Permalink Blame History

unit umain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ieview, imageenview, StdCtrls, ExtCtrls, ComCtrls, hyieutils, iexBitmaps,
hyiedefs, iesettings, iexLayers, iexRulers;
type
TMainForm = class(TForm)
Panel2: TPanel;
CheckBoxPan: TCheckBox;
CheckBoxZoom: TCheckBox;
CheckBoxLayerRotate: TCheckBox;
CheckLayerMove: TCheckBox;
StatusBar1: TStatusBar;
btnOpen: TButton;
ImageEnView1: TImageEnView;
Splitter: TSplitter;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure btnOpenClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CheckBoxLayerRotateClick(Sender: TObject);
procedure CheckBoxZoomClick(Sender: TObject);
procedure CheckBoxPanClick(Sender: TObject);
procedure CheckLayerMoveClick(Sender: TObject);
procedure ImageEnView1ImageEnGesture(Sender: TObject;
Flags: TIEGestureFlags; ID: TIEGestureID; Location: TSmallPoint;
Value, InertiaX, InertiaY, PressAndTapDistance: Integer; var Handled: Boolean);
private
{ Private declarations }
procedure UpdateControls();
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
{$R WindowsTheme.res}
procedure TMainForm.FormCreate(Sender: TObject);
begin
ImageEnView1.Gestures.Pan.Enabled := CheckBoxPan.Checked;
ImageEnView1.Gestures.Zoom.Enabled := CheckBoxZoom.Checked;
ImageEnView1.Gestures.LayerRotate.Enabled := CheckBoxLayerRotate.Checked;
ImageEnView1.Gestures.LayerMove.Enabled := CheckLayerMove.Checked;
end;
// ImageEnView1.Gestures -> Controls
procedure TMainForm.UpdateControls();
begin
CheckBoxPan.Checked := ImageEnView1.Gestures.Pan.Enabled;
CheckBoxZoom.Checked := ImageEnView1.Gestures.Zoom.Enabled;
CheckBoxLayerRotate.Checked := ImageEnView1.Gestures.LayerRotate.Enabled;
CheckLayerMove.Checked := ImageEnView1.Gestures.LayerMove.Enabled;
end;
// Open...
procedure TMainForm.btnOpenClick(Sender: TObject);
begin
with ImageEnView1.IO do
LoadFromFile( ExecuteOpenDialog() );
end;
procedure TMainForm.CheckBoxLayerRotateClick(Sender: TObject);
begin
ImageEnView1.Gestures.LayerRotate.Enabled := CheckBoxLayerRotate.Checked;
UpdateControls();
if ImageEnView1.Gestures.LayerRotate.Enabled then
ImageEnView1.CurrentLayer.Locked := false; // allows rotate on layer 0
end;
procedure TMainForm.CheckLayerMoveClick(Sender: TObject);
begin
ImageEnView1.Gestures.LayerMove.Enabled := CheckLayerMove.Checked;
UpdateControls();
if ImageEnView1.Gestures.LayerMove.Enabled then
ImageEnView1.CurrentLayer.Locked := false; // allows moving on layer 0
end;
procedure TMainForm.CheckBoxZoomClick(Sender: TObject);
begin
ImageEnView1.Gestures.Zoom.Enabled := CheckBoxZoom.Checked;
UpdateControls();
end;
procedure TMainForm.CheckBoxPanClick(Sender: TObject);
begin
ImageEnView1.Gestures.Pan.Enabled := CheckBoxPan.Checked;
UpdateControls();
end;
// just to show Zoom and Rotate angle
procedure TMainForm.ImageEnView1ImageEnGesture(Sender: TObject;
Flags: TIEGestureFlags; ID: TIEGestureID; Location: TSmallPoint; Value,
InertiaX, InertiaY, PressAndTapDistance: Integer; var Handled: Boolean);
begin
case ID of
iegiZoom:
StatusBar1.SimpleText := Format('Zoom %.1f%%', [ImageEnView1.Zoom]);
iegiRotate:
StatusBar1.SimpleText := Format('Rotate %.1f<EFBFBD>', [ImageEnView1.CurrentLayer.Rotate]);
iegiPan:
StatusBar1.SimpleText := Format('View %d, %d Layer Pos %d, %d', [ImageEnView1.ViewX, ImageEnView1.ViewY, ImageEnView1.CurrentLayer.PosX, ImageEnView1.CurrentLayer.PosY]);
end;
end;
end.