149 lines
4.4 KiB
Plaintext
149 lines
4.4 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
Menus, imageenview, ievect, ieview, iemview, imageenio, StdCtrls, hyieutils,
|
|
iexBitmaps, hyiedefs, iesettings, iexLayers, iexRulers;
|
|
|
|
type
|
|
TMainForm = class(TForm)
|
|
MainMenu1: TMainMenu;
|
|
ImageEnMView1: TImageEnMView;
|
|
ImageEnView1: TImageEnView;
|
|
File1: TMenuItem;
|
|
Open1: TMenuItem;
|
|
N1: TMenuItem;
|
|
Print1: TMenuItem;
|
|
N2: TMenuItem;
|
|
Exit1: TMenuItem;
|
|
View1: TMenuItem;
|
|
ShowAnnotations1: TMenuItem;
|
|
PrintCurrent1: TMenuItem;
|
|
procedure Exit1Click(Sender: TObject);
|
|
procedure Open1Click(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure Print1Click(Sender: TObject);
|
|
procedure ImageEnMView1ImageSelect(Sender: TObject; idx: Integer);
|
|
procedure ImageEnView1LayerNotify(Sender: TObject; layer: Integer; event:
|
|
TIELayerEvent);
|
|
procedure PrintCurrent1Click(Sender: TObject);
|
|
procedure ShowAnnotations1Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
fHasImagingAnnot: Boolean; // True if has ImagingAnnot. False, if ImageEnAnnot (of course, it can actually have both, but for our purposes this will suffice)
|
|
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
MainForm: TMainForm;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
procedure TMainForm.FormActivate(Sender: TObject);
|
|
begin
|
|
ImageEnMView1.LockUpdate();
|
|
ImageEnMView1.AnnotationsVisible := True;
|
|
ImageEnMView1.SetModernStyling();
|
|
ImageEnMView1.FillFromDirectory( ExtractFilePath( Application.ExeName ), -1, False, '', False, 'jpg,jpeg,tiff,tif' );
|
|
ImageEnMView1.SelectedImage := 0;
|
|
ImageEnMView1.UnlockUpdate();
|
|
|
|
ImageEnView1.MouseInteract := [ miMoveLayers, miResizeLayers ];
|
|
end;
|
|
|
|
// File | Exit
|
|
procedure TMainForm.Exit1Click(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
// File | Open
|
|
procedure TMainForm.Open1Click(Sender: TObject);
|
|
var
|
|
filename:string;
|
|
begin
|
|
filename:=ImageEnMView1.MIO.ExecuteOpenDialog('','',false,0,'');
|
|
if filename <> '' then
|
|
begin
|
|
Caption := filename;
|
|
ImageEnMView1.MIO.LoadFromFile( Caption );
|
|
ImageEnMView1.SelectedImage := 0;
|
|
ImageEnMView1ImageSelect(self, 0);
|
|
end;
|
|
end;
|
|
|
|
// File | Print All
|
|
procedure TMainForm.Print1Click(Sender: TObject);
|
|
begin
|
|
ImageEnMView1.MIO.DoPrintPreviewDialog( Caption, ShowAnnotations1.checked );
|
|
end;
|
|
|
|
// Image selected
|
|
procedure TMainForm.ImageEnMView1ImageSelect(Sender: TObject; idx: Integer);
|
|
begin
|
|
ImageEnView1.ClearAll();
|
|
// Copy image
|
|
ImageEnMView1.CopyToIEBitmap( idx, ImageEnView1.IEBitmap );
|
|
// Copy annotations
|
|
if ShowAnnotations1.checked then
|
|
begin
|
|
fHasImagingAnnot := ImageEnMView1.MIO.Params[idx].ImagingAnnot.ObjectsCount > 0;
|
|
|
|
// Wang annotations
|
|
ImageEnMView1.MIO.Params[idx].ImagingAnnot.CopyToTImageEnView( ImageEnView1 );
|
|
|
|
// ImageEn Proprietary annotations (e.g. TImageEnView layers)
|
|
ImageEnMView1.MIO.Params[idx].ImageEnAnnot.CopyToTImageEnView( ImageEnView1 );
|
|
|
|
ImageEnView1.LayersCurrent := 0;
|
|
end;
|
|
ImageEnView1.Update;
|
|
end;
|
|
|
|
procedure TMainForm.ImageEnView1LayerNotify(Sender: TObject; layer: Integer;
|
|
event: TIELayerEvent);
|
|
var
|
|
idx: Integer;
|
|
begin
|
|
idx := ImageEnMView1.SelectedImage;
|
|
if ( idx >= 0 ) and ( event in [ ielMoved, ielResized ]) then
|
|
begin
|
|
// Copy objects back to ImageEnMView
|
|
ImageEnMView1.MIO.Params[idx].ImagingAnnot.Clear;
|
|
ImageEnMView1.MIO.Params[idx].ImageEnAnnot.Clear;
|
|
if fHasImagingAnnot then
|
|
ImageEnMView1.MIO.Params[idx].ImagingAnnot.CopyFromTImageEnView( ImageEnView1 )
|
|
else
|
|
ImageEnMView1.MIO.Params[idx].ImageEnAnnot.CopyFromTImageEnView( ImageEnView1 );
|
|
ImageEnMView1.UpdateImage( idx );
|
|
end;
|
|
end;
|
|
|
|
// File | Print Current
|
|
procedure TMainForm.PrintCurrent1Click(Sender: TObject);
|
|
begin
|
|
// It is better to print all layers, but we'll just use the annotations here
|
|
if fHasImagingAnnot then
|
|
ImageEnView1.IO.Params.ImagingAnnot.CopyFromTImageEnView()
|
|
else
|
|
ImageEnView1.IO.Params.ImageEnAnnot.CopyFromTImageEnView();
|
|
ImageEnView1.IO.DoPrintPreviewDialog( iedtDialog, Caption, ShowAnnotations1.checked );
|
|
end;
|
|
|
|
procedure TMainForm.ShowAnnotations1Click(Sender: TObject);
|
|
begin
|
|
ShowAnnotations1.checked := not ShowAnnotations1.checked;
|
|
ImageEnMView1.AnnotationsVisible := ShowAnnotations1.checked;
|
|
if ImageEnMView1.SelectedImage >= 0 then
|
|
ImageEnMView1ImageSelect( nil, ImageEnMView1.SelectedImage );
|
|
end;
|
|
|
|
end.
|