344 lines
11 KiB
Plaintext
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.
|