BSOne.SFC/EM.Lib/ImageEn_SRC/Demos/Other/Actions_Vect/MAIN.PAS

344 lines
11 KiB
Plaintext

unit Main;
interface
uses
Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus, ievect, StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls,
ImageEnProc, ImageEnView, ImageEnIO, hyiedefs, ActnList, iexActions, ieview, iexActionsVect, ieopensavedlg, ImgList, StdActns,
iesettings, hyieutils, iexBitmaps, iexLayers, iexRulers;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
StatusBar: TStatusBar;
ActionList1: TActionList;
mnuView: TMenuItem;
mnuEdit: TMenuItem;
ZoomIn: TImageEnVectZoomIn;
ZoomOut: TImageEnVectZoomOut;
AutoShrink: TImageEnVectAutoShrink;
AutoStretch: TImageEnVectAutoStretch;
Fit: TImageEnVectFit;
FitToHeight: TImageEnVectFitToHeight;
FitToWidth: TImageEnVectFitToWidth;
ZoomFullSize: TImageEnVectZoomFullSize;
FitImage1: TMenuItem;
FitImagetoHeight1: TMenuItem;
FitImagetoWidth1: TMenuItem;
N9: TMenuItem;
ZoomIn2: TMenuItem;
ZoomOut2: TMenuItem;
ZoomtoFullSize1: TMenuItem;
N12: TMenuItem;
AutoShrink1: TMenuItem;
AutoStretch1: TMenuItem;
N14: TMenuItem;
MouseMovingScroll: TImageEnVectMouseMovingScroll;
MouseScroll: TImageEnVectMouseScroll;
MouseSelect: TImageEnVectMouseSelect;
MouseSelectCircle: TImageEnVectMouseSelectCircle;
MouseSelectLasso: TImageEnVectMouseSelectLasso;
MouseSelectMagicWand: TImageEnVectMouseSelectMagicWand;
MouseSelectPolygon: TImageEnVectMouseSelectPolygon;
MouseSelectZoom: TImageEnVectMouseSelectZoom;
MouseZoom: TImageEnVectMouseZoom;
mnuMouse: TMenuItem;
ZoomtoSelection1: TMenuItem;
Action11: TMenuItem;
N19: TMenuItem;
DoIOPreviews: TImageEnVectDoIOPreviews;
DoPrintPreviewDialog: TImageEnVectDoPrintPreviewDialog;
PrintImageFitToPage: TImageEnVectPrintImageFitToPage;
PrintImageNormal: TImageEnVectPrintImageNormal;
PromptToOpen: TImageEnVectPromptToOpen;
PromptToSave: TImageEnVectPromptToSave;
mnuFile: TMenuItem;
SaveProperties1: TMenuItem;
PrintPreview2: TMenuItem;
PrinttoPage1: TMenuItem;
Print2: TMenuItem;
Open1: TMenuItem;
Saveas1: TMenuItem;
N26: TMenuItem;
N27: TMenuItem;
N2: TMenuItem;
Exit1: TMenuItem;
MergeAllToBackground: TImageEnVectMergeAllToBackground;
MergeObjToBackground: TImageEnVectMergeObjToBackground;
ObjBringForward: TImageEnVectObjBringForward;
ObjBringToFront: TImageEnVectObjBringToFront;
ObjCopyToClipboard: TImageEnVectObjCopyToClipboard;
ObjCutToClipboard: TImageEnVectObjCutToClipboard;
ObjPasteFromClipboard: TImageEnVectObjPasteFromClipboard;
ObjSendToBack: TImageEnVectObjSendToBack;
ObjUndo: TImageEnVectObjUndo;
RemoveAllObjects: TImageEnVectRemoveAllObjects;
RemoveObject: TImageEnVectRemoveObject;
RotateObject180: TImageEnVectRotateObject180;
SelAllObjects: TImageEnVectSelAllObjects;
UnSelAllObjects: TImageEnVectUnSelAllObjects;
mnuObject: TMenuItem;
MergeAlltoBackground1: TMenuItem;
MergetoBackground1: TMenuItem;
BringForward1: TMenuItem;
BringtoFront1: TMenuItem;
Copy2: TMenuItem;
Cut2: TMenuItem;
Paste2: TMenuItem;
SendtoBack1: TMenuItem;
Undo1: TMenuItem;
DeleteAll1: TMenuItem;
Delete1: TMenuItem;
Rotate1802: TMenuItem;
RotateRight2: TMenuItem;
RotateLeft2: TMenuItem;
SelectAll1: TMenuItem;
DeselectAll1: TMenuItem;
Paste1: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
VtDragLen: TImageEnVectMouseVtDragLen;
VtEditPolyline: TImageEnVectMouseVtEditPolyline;
VtLineLen: TImageEnVectMouseVtLineLen;
VtObjectSelect: TImageEnVectMouseVtObjectSelect;
VtPutAngle: TImageEnVectMouseVtPutAngle;
VtPutBitmap: TImageEnVectMouseVtPutBitmap;
VtPutBox: TImageEnVectMouseVtPutBox;
VtPutEllipse: TImageEnVectMouseVtPutEllipse;
VtPutLine: TImageEnVectMouseVtPutLine;
VtPutLineLabel: TImageEnVectMouseVtPutLineLabel;
VtPutMemo: TImageEnVectMouseVtPutMemo;
VtPutPolyLine: TImageEnVectMouseVtPutPolyLine;
VtPutRuler: TImageEnVectMouseVtPutRuler;
VtPutText: TImageEnVectMouseVtPutText;
VtUnStampMode: TImageEnVectMouseVtUnStampMode;
MeasureDistance1: TMenuItem;
MeasureDistance2: TMenuItem;
MeasureLength1: TMenuItem;
Select1: TMenuItem;
MeasureAngle1: TMenuItem;
InsertImage1: TMenuItem;
InsertRectangle1: TMenuItem;
InsertEllipse1: TMenuItem;
InsertLine1: TMenuItem;
InsertLabelwithLine1: TMenuItem;
InsertMemo1: TMenuItem;
InsertPolyline1: TMenuItem;
InsertRuler1: TMenuItem;
InsertText1: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
ImageEnVect1: TImageEnVect;
RotateObjectLeft: TImageEnVectRotateObjectLeft;
RotateObjectRight: TImageEnVectRotateObjectRight;
Clear: TImageEnVectClear;
CopyToClipboard: TImageEnVectCopyToClipboard;
CopyImage1: TMenuItem;
N1: TMenuItem;
ImageList1: TImageList;
CropImageToObjects: TImageEnVectCropImageToObjects;
CropImagetoObjects1: TMenuItem;
N4: TMenuItem;
ExitApp: TFileExit;
ObjSendBackward: TImageEnVectObjSendBackward;
mnuLanguage: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ImageEnVect1FinishWork(Sender: TObject);
procedure ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
procedure ImageEnVect1Progress(Sender: TObject; per: Integer);
procedure ImageEnVect1SelectObject(Sender: TObject);
private
{ Private declarations }
procedure CreateLanguageMenuItems; overload;
procedure LanguageClick(Sender: TObject);
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
uses
registry, iexRegistryFunctions;
const
// Enable to store the settings
Save_Settings_To_Registry = False;
Demo_Registry_Path ='\Software\ImageEn\IEVectActionsDemo\';
{$R *.DFM}
{$R WindowsTheme.res}
const
IE_Registry_IEVectMouseInteractVt_Prefix = 'IEVectMouseInteractVt';
function LoadImageEnVectSettings(AnImageEnVect : TImageEnVect; const sKey : string; aHKEY: HKEY = HKEY_CURRENT_USER): boolean;
var
WRegistry : TRegistry;
enum : TIEMouseInteractVtItems;
sData: string;
begin
Result := True;
try
if AnImageEnVect.LoadFromRegistry(Demo_Registry_Path) = False then
raise Exception.create('Load Error');
WRegistry := TRegistry.Create;
try
WRegistry.Access := KEY_READ;
WRegistry.Rootkey := aHKEY;
if WRegistry.Openkey(sKey, FALSE) = False then
raise Exception.create('Openkey Fail');
// MouseInteract
for enum in [Low(TIEMouseInteractVtItems) .. High(TIEMouseInteractVtItems)] do
begin
sData := WRegistry.ReadString(IE_Registry_IEVectMouseInteractVt_Prefix + IntToStr(Integer(enum)));
if sData <> '' then
begin
if IEStr2BoolS(sData) then
AnImageEnVect.MouseInteractVt := AnImageEnVect.MouseInteractVt + [enum]
else
AnImageEnVect.MouseInteractVt := AnImageEnVect.MouseInteractVt - [enum];
end;
end;
WRegistry.CloseKey;
finally
WRegistry.free;
end;
except
Result := False;
end;
end;
function SaveImageEnVectSettings(AnImageEnVect : TImageEnVect; const sKey : string; aHKEY: HKEY = HKEY_CURRENT_USER): boolean;
var
WRegistry : TRegistry;
enum : TIEMouseInteractVtItems;
begin
Result := True;
try
if AnImageEnVect.SaveToRegistry(Demo_Registry_Path) = False then
raise Exception.create('Save Error');
WRegistry := TRegistry.Create;
try
WRegistry.Access := KEY_ALL_ACCESS;
WRegistry.Rootkey := aHKEY;
if WRegistry.Openkey(sKey, True) = False then
raise Exception.create('Open Error');
// MouseInteract
for enum in [Low(TIEMouseInteractVtItems) .. High(TIEMouseInteractVtItems)] do
WRegistry.WriteString(IE_Registry_IEVectMouseInteractVt_Prefix + IntToStr(Integer(enum)), IEBool2StrS(enum in AnImageEnVect.MouseInteractVt));
WRegistry.CloseKey;
finally
WRegistry.free;
end;
except
Result := False;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
// Common settings for TImageEnVect
with ImageEnVect1 do
begin
BorderStyle := bsNone; // Normally don't require a 3D border
ZoomFilter := rfFastLinear; // Use better quality drawing when the image is not 100%, Use rfFastLinear for best speed or rfLanczos3 for best quality
MouseInteractVt := [miObjectSelect]; // What does the mouse do?
ObjAutoUndo := True; // Allow undo of object editing changes
end;
if Save_Settings_To_Registry then
LoadImageEnVectSettings(ImageEnVect1, Demo_Registry_Path);
CreateLanguageMenuItems;
end;
procedure TMainForm.FormActivate(Sender: TObject);
begin
ImageEnVect1.SelColor1 := clWhite;
ImageEnVect1.SelColor2 := clRed;
ImageEnVect1.MeasureTrack := true;
ImageEnVect1.ObjAutoUndo := true;
ImageEnVect1.Proc.ImageResize(800, 600, iehLeft, ievTop);
ImageEnVect1.Proc.Fill(clWhite);
end;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Save_Settings_To_Registry then
SaveImageEnVectSettings(ImageEnVect1, Demo_Registry_Path);
end;
procedure TMainForm.ImageEnVect1FinishWork(Sender: TObject);
begin
StatusBar.Panels[0].Text := '';
end;
procedure TMainForm.ImageEnVect1Progress(Sender: TObject; per: Integer);
begin
StatusBar.Panels[0].Text := ' ' + IntToStr(per) + '%';
end;
procedure TMainForm.ImageEnVect1SelectObject(Sender: TObject);
begin
StatusBar.Panels[0].Text := format('%d Objects Selected', [ImageEnVect1.SelObjectsCount]);
end;
procedure TMainForm.CreateLanguageMenuItems;
var
aLang : TMsgLanguage;
NewItem: TMenuItem;
begin
mnuLanguage.Clear;
for aLang := Low(TMsgLanguage) to High(TMsgLanguage) do
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := LanguageToStr(aLang);
NewItem.Checked := IEGlobalSettings.MsgLanguage = aLang;
NewItem.Tag := ord(aLang);
NewItem.OnClick := LanguageClick;
mnuLanguage.Add(NewItem)
end;
end;
procedure TMainForm.ImageEnVect1NewObject(Sender: TObject; hobj: Integer);
begin
if ImageEnVect1.ObjKind[hobj] = iekLINELABEL then
ImageEnVect1.ObjText[hobj] := ' ImageEn Rocks! ';
end;
procedure TMainForm.LanguageClick(Sender: TObject);
var
aLang : TMsgLanguage;
I: Integer;
begin
MessageDlg('You can view translated actions on the drop down menus.' + #13#10 + #13#10 +
'Note: Translation of some languages is not yet complete. Email sales@xequte.com to assist.', mtInformation, [mbOK], 0);
for I := 0 to mnuLanguage.Count - 1 do
mnuLanguage.Items[I].Checked := False;
aLang := TMsgLanguage(TMenuItem(Sender).Tag);
IEGlobalSettings.MsgLanguage := aLang;
TMenuItem(Sender).Checked := True;
end;
end.