(* ImageEn Build 7.0.0.06.2637 @ 7-4-17 14:58:42.679 *) (* Copyright (c) 1998-2017 by Carlotta Calandra. All rights reserved. Copyright (c) 2011-2017 by Xequte Software. This software comes without express or implied warranty. In no case shall the author be liable for any damage or unwanted behavior of any computer hardware and/or software. Author grants you the right to include the component in your application, whether COMMERCIAL, SHAREWARE, or FREEWARE. ImageEn, IEvolution and ImageEn ActiveX may not be included in any commercial, shareware or freeware libraries or components. www.ImageEn.com *) (* File: iexActions.pas Description: TActions for common TImageEnView functions File version: 1004 *) unit iexActions; {$I ie.inc} {$IFDEF IEINCLUDEACTIONS} {$ifdef Delphi6orNewer} {$WARN SYMBOL_DEPRECATED OFF} {$endif} interface Uses ActnList, Classes, ImageEnView, ImageEnIO, hyiedefs, controls, {$IFDEF IEINCLUDEIEXACQUIRE} iexAcquire, {$ENDIF} imageenproc, hyieutils, iexBitmaps, iexRulers, iexLayers; Type TBaseImageEnViewAction = class(TAction) private protected function ActiveImageEnView : TImageEnView; function HaveActiveImageEnView : boolean; function ActiveImageEnProc : TImageEnProc; function HaveActiveImageEnProc : boolean; function ActiveImageEnIO : TImageEnIO; function HaveActiveImageEnIO : boolean; function HaveImage : boolean; function HaveSelection : boolean; function FirstSelectedLayer: TIELayer; function ActiveIELayersSelCount(bCountBackgroundLayer: Boolean = True): Integer; procedure ActiveIELayerNotify(Event: TIELayerEvent = ielAction; idx: Integer = -1); procedure SaveUndoState(); procedure RestoreUndoState(); procedure SaveUndo(const Caption: String; Source: TIEUndoSource; Operation: Integer); public fImageEnView : TImageEnView; fRequireImage : Boolean; fRequireSelection : Boolean; fRequireSelectedLayer : Boolean; fAutoUndoByCode: Boolean; // Save state of loAutoUndoChangesByCode constructor Create(AOwner: TComponent); override; function HandlesTarget(Target: TObject): Boolean; Override; procedure UpdateTarget(Target: TObject); override; function BaseEnabled : Boolean; published end; TImageEnViewAction = class(TBaseImageEnViewAction) private protected public published property ImageEnView: TImageEnView read fImageEnView write fImageEnView; end; TImageEnViewAutoShrink = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewAutoStretch = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewBlank = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewClearAll = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewDeselect = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewFit = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateTarget(Target: TObject); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewFitToHeight = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewFitToWidth = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersAdd = class(TImageEnViewAction, IIELanguageUpdatable) private fLayerKind : TIELayerKind; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property LayerKind : TIELayerKind read fLayerKind write fLayerKind; end; TImageEnViewImageLayersAdd = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewShapeLayersAdd = class(TImageEnViewAction, IIELanguageUpdatable) private fShape : TIEShape; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property Shape : TIEShape read fShape write fShape default iesRectangle; end; TImageEnViewLineLayersAdd = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewPolylineLayersAdd = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewTextLayersAdd = class(TImageEnViewAction, IIELanguageUpdatable) private fDefaultText : string; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property DefaultText : string read fDefaultText write fDefaultText; end; TImageEnViewLayersMerge = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateTarget(Target: TObject); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersMergeAll = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersRemoveCurrent = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ifdef IEIncludeDeprecatedInV6} // Deprecated in 7.0.0 (2017-02-03) TImageEnViewLayersCreateFromClipboard = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end {$ifdef IEWarningForDeprecated} deprecated {$ifdef IESupportDeprecatedDescription}'Use TImageEnViewPasteFromClipboard instead - http://imageen.com/help/Compatibility.html' {$endif} {$endif}; {$endif} {$IFDEF IEINCLUDEOPENSAVEDIALOGS} TImageEnViewLayersCreateFromFile = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ENDIF} TImageEnViewLayersMoveSendToBack = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersMoveSendBackward = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersMoveBringForward = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersMoveBringToFront = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersFixBorders = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersSelectAll = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersDeselectAll = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersGroup = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersUngroup = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$IFDEF IEINCLUDEOPENSAVEDIALOGS} TImageEnViewLayersPromptToOpen = class(TImageEnViewAction, IIELanguageUpdatable) private fDialogTitle : WideString; fLockToIEN: Boolean; function GetFilename() : string; procedure SetFilename(const value: string); protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); property Filename : string read GetFilename write SetFilename; published property DialogTitle : WideString read fDialogTitle write fDialogTitle; property LockToIEN: Boolean read fLockToIEN write fLockToIEN default False; end; {$ENDIF} {$IFDEF IEINCLUDEOPENSAVEDIALOGS} TImageEnViewLayersSave = class(TImageEnViewAction, IIELanguageUpdatable) private fEnableOnlyWhenChanged : Boolean; function GetFilename() : string; procedure SetFilename(const value: string); protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); property Filename : string read GetFilename write SetFilename; published property EnableOnlyWhenChanged : Boolean read fEnableOnlyWhenChanged write fEnableOnlyWhenChanged default True; end; {$ENDIF} {$IFDEF IEINCLUDEOPENSAVEDIALOGS} TImageEnViewLayersPromptToSave = class(TImageEnViewAction, IIELanguageUpdatable) private fDialogTitle : WideString; fLockToIEN: Boolean; function GetFilename() : string; procedure SetFilename(const value: string); protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); property Filename : string read GetFilename write SetFilename; published property DialogTitle : WideString read fDialogTitle write fDialogTitle; property LockToIEN: Boolean read fLockToIEN write fLockToIEN default False; end; {$ENDIF} TImageEnViewLayersCropBackground = class(TImageEnViewAction, IIELanguageUpdatable) private fFillAlpha: Integer; fAllowReduce: Boolean; fAllowEnlarge: Boolean; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property FillAlpha: Integer read fFillAlpha write fFillAlpha default 255; property AllowReduce: Boolean read fAllowReduce write fAllowReduce default True; property AllowEnlarge: Boolean read fAllowEnlarge write fAllowEnlarge default True; end; TImageEnViewLayersFastDrawing = class(TImageEnViewAction, IIELanguageUpdatable) private fDelayedHighQuality : Boolean; fZoomFilter: TResampleFilter; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property DelayedHighQuality: Boolean read fDelayedHighQuality write fDelayedHighQuality default True; property ZoomFilter: TResampleFilter read fZoomFilter write fZoomFilter default rfLanczos3; end; TImageEnViewEnableAdjustOrientation = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewPlaying = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewPlayLoop = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewZoomFullSize = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateTarget(Target: TObject); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewZoomIn = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewZoomOut = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewSetZoom = class(TImageEnViewAction, IIELanguageUpdatable) private fZoom : Integer; protected public constructor Create(AOwner: TComponent); override; procedure UpdateTarget(Target: TObject); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property Zoom : Integer read fZoom write fZoom; end; TImageEnViewMouseInteract = class(TBaseImageEnViewAction) private fMouseInteract : ImageEnView.TIEMouseInteractItems; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; published property ImageEnView: TImageEnView read fImageEnView write fImageEnView; end; TImageEnViewMouseMoveLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseMovingScroll = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseResizeLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseRotateLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseScroll = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseSelect = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseSelectCircle = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseSelectLasso = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseSelectMagicWand = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseSelectPolygon = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseSelectZoom = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseZoom = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseCreateImageLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private fPromptForImage: Boolean; protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published property PromptForImage: Boolean read fPromptForImage write fPromptForImage; end; TImageEnViewMouseCreateShapeLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseCreateLineLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseCreatePolylineLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewMouseCreateTextLayers = class(TImageEnViewMouseInteract, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; {$IFDEF IEINCLUDEDIALOGIP} TImageEnViewDoPreviews = class(TImageEnViewAction, IIELanguageUpdatable) private fEffects : TPreviewEffects; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property Effects : TPreviewEffects read fEffects write fEffects default [peAll]; end; {$ENDIF} {$IFDEF IEINCLUDEDIALOGIP} TImageEnViewDoEffectPreviews = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ENDIF} {$IFDEF IEINCLUDEDIALOGIP} TImageEnViewDoAdjustPreviews = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ENDIF} {$IFDEF IEINCLUDEDIALOGIP} TImageEnViewDoEditPreviews = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ENDIF} {$IFDEF IEINCLUDEDIALOGIP} TImageEnViewPromptToRotate = class(TImageEnViewAction, IIELanguageUpdatable) private fAntiAliasMode : TIEAntialiasMode; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property AntiAliasMode : TIEAntialiasMode read fAntiAliasMode write fAntiAliasMode default ierFast; end; {$ENDIF} {$IFDEF IEINCLUDEDIALOGIP} TImageEnViewPromptToResize = class(TImageEnViewAction, IIELanguageUpdatable) private fResampleFilter : TResampleFilter; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property ResampleFilter : TResampleFilter read fResampleFilter write fResampleFilter default rfFastLinear; end; {$ENDIF} TImageEnViewConvertToGray = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewHistAutoEqualize = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewNegative = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewRemoveRedEyes = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewSharpen = class(TImageEnViewAction, IIELanguageUpdatable) private fIntensity : integer; fNeighbourhood : integer; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property Intensity : integer read fIntensity write fIntensity default 10; property Neighbourhood : integer read fNeighbourhood write fNeighbourhood default 4; end; TImageEnViewFlipHorizontal = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewFlipVertical = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewRotateRight = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewRotate180 = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewRotateLeft = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewCrop = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewCutToClipboard = class(TImageEnViewAction, IIELanguageUpdatable) private fCutSource: TIECopyPasteType; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property CutSource : TIECopyPasteType read fCutSource write fCutSource; end; TImageEnViewCopyToClipboard = class(TImageEnViewAction, IIELanguageUpdatable) private fCopySource: TIECopyPasteType; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property CopySource : TIECopyPasteType read fCopySource write fCopySource; end; TImageEnViewPasteFromClipboard = class(TImageEnViewAction, IIELanguageUpdatable) private fPasteDest: TIECopyPasteType; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property PasteDest : TIECopyPasteType read fPasteDest write fPasteDest; end; {$ifdef IEIncludeDeprecatedInV6} // Deprecated in 7.0.0 (2017-02-03) TImageEnViewSelCutToClip = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end {$ifdef IEWarningForDeprecated} deprecated {$ifdef IESupportDeprecatedDescription} 'Use TImageEnViewCutToClipboard instead - http://imageen.com/help/Compatibility.html' {$endif} {$endif}; {$endif} {$ifdef IEIncludeDeprecatedInV6} // Deprecated in 7.0.0 (2017-02-03) TImageEnViewSelCopyToClip = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end {$ifdef IEWarningForDeprecated} deprecated {$ifdef IESupportDeprecatedDescription} 'Use TImageEnViewCopyToClipboard instead - http://imageen.com/help/Compatibility.html' {$endif} {$endif}; {$endif} TImageEnViewUndo = class(TImageEnViewAction, IIELanguageUpdatable) private fShowUndoAction : Boolean; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property ShowUndoAction : Boolean read fShowUndoAction write fShowUndoAction; end; TImageEnViewRedo = class(TImageEnViewAction, IIELanguageUpdatable) private fShowRedoAction : Boolean; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property ShowRedoAction : Boolean read fShowRedoAction write fShowRedoAction; end; {$IFDEF IEINCLUDEOPENSAVEDIALOGS} TImageEnViewPromptToOpen = class(TImageEnViewAction, IIELanguageUpdatable) private fDialogTitle : WideString; fDefaultFilter : TIOFileType; fLimitToFileType : TIOFileType; function GetFilename() : string; procedure SetFilename(const value: string); protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); property Filename : string read GetFilename write SetFilename; published property DialogTitle : WideString read fDialogTitle write fDialogTitle; property DefaultFilter : TIOFileType read fDefaultFilter write fDefaultFilter default -1; property LimitToFileType : TIOFileType read fLimitToFileType write fLimitToFileType default -1; end; {$ENDIF} {$IFDEF IEINCLUDEOPENSAVEDIALOGS} TImageEnViewSave = class(TImageEnViewAction, IIELanguageUpdatable) private fEnableOnlyWhenChanged : Boolean; function GetFilename() : string; procedure SetFilename(const value: string); protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); property Filename : string read GetFilename write SetFilename; published property EnableOnlyWhenChanged : Boolean read fEnableOnlyWhenChanged write fEnableOnlyWhenChanged default True; end; {$ENDIF} {$IFDEF IEINCLUDEOPENSAVEDIALOGS} TImageEnViewPromptToSave = class(TImageEnViewAction, IIELanguageUpdatable) private fDialogTitle : WideString; fDefaultFilter : TIOFileType; fLimitToFileType : TIOFileType; function GetFilename() : string; procedure SetFilename(const value: string); protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); property Filename : string read GetFilename write SetFilename; published property DialogTitle : WideString read fDialogTitle write fDialogTitle; property DefaultFilter : TIOFileType read fDefaultFilter write fDefaultFilter default -1; property LimitToFileType : TIOFileType read fLimitToFileType write fLimitToFileType default -1; end; {$ENDIF} {$IFDEF IEINCLUDEDIALOGIO} TImageEnViewDoIOPreviews = class(TImageEnViewAction, IIELanguageUpdatable) private fPreviewParams : TPreviewParams; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property PreviewParams : TPreviewParams read fPreviewParams write fPreviewParams default [ppAll]; end; {$ENDIF} {$IFDEF IEINCLUDEPRINTDIALOGS} TImageEnViewDoPrintPreviewDialog = class(TImageEnViewAction, IIELanguageUpdatable) private fDialogType : TIEDialogType; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property DialogType : TIEDialogType read fDialogType write fDialogType default iedtDialog; end; {$ENDIF} {$IFDEF IEINCLUDEPRINTDIALOGS} TImageEnViewPrintImageNormal = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ENDIF} {$IFDEF IEINCLUDEPRINTDIALOGS} TImageEnViewPrintImageFitToPage = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ENDIF} {$IFDEF IEINCLUDEIEXACQUIRE} TImageEnViewSelectAcquireSource = class(TImageEnViewAction, IIELanguageUpdatable) private fApis : TIEAcquireApis; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property Apis : TIEAcquireApis read fApis write fApis default [ieaTwain, ieaWIA]; end; {$ENDIF} {$IFDEF IEINCLUDEIEXACQUIRE} TImageEnViewAcquire = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published end; {$ENDIF} TImageEnViewSeekFirst = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewSeekPrior = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewSeekNext = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewSeekLast = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewShowRulers = class(TImageEnViewAction, IIELanguageUpdatable) private fRulers: TRulerDirs; protected procedure SetRulers(Value : TRulerDirs); public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property Rulers : TRulerDirs read fRulers write SetRulers default [rdHorizontal, rdVertical]; end; TImageEnViewShowUnitsBase = class(TBaseImageEnViewAction) private fUnit : TIERulerUnits; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; published property ImageEnView: TImageEnView read fImageEnView write fImageEnView; end; TImageEnViewRulerUnitPixels = class(TImageEnViewShowUnitsBase, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewRulerUnitInches = class(TImageEnViewShowUnitsBase, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewRulerUnitMillimeters = class(TImageEnViewShowUnitsBase, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewRulerUnitCentimeters = class(TImageEnViewShowUnitsBase, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewCropToolEnable = class(TImageEnViewAction, IIELanguageUpdatable) private fCropMode : TIECropToolInteractionMode; fWasMouseInteract : TIEMouseInteract; fWasCursor : TCursor; procedure SetCropMode(Value : TIECropToolInteractionMode); protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property CropMode : TIECropToolInteractionMode read fCropMode write SetCropMode default iectmRECTANGLE; end; TImageEnViewCropToolEnactCrop = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewCropToolCancelCrop = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TImageEnViewLayersAlign = class(TBaseImageEnViewAction) private fAlignment : TIEAlignLayers; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; published property ImageEnView: TImageEnView read fImageEnView write fImageEnView; end; TImageEnViewLayersAlignLeftEdges = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewLayersAlignRightEdges = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewLayersAlignTopEdges = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewLayersAlignBottomEdges = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewLayersAlignHorizontalCenters = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewLayersAlignVerticalCenters = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewLayersMatchWidth = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TImageEnViewLayersMatchHeight = class(TImageEnViewLayersAlign, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIELayerSoftShadow = class(TImageEnViewAction, IIELanguageUpdatable) private fRadius : Integer; fIntensity : Integer; fShadowColor : TRGB; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property Radius : Integer read fRadius write fRadius default 3; property Intensity : Integer read fIntensity write fIntensity default 100; property ShadowColor : TRGB read fShadowColor write fShadowColor; end; TIEImageLayerExecuteOpenDialog = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIELayerEditText = class(TImageEnViewAction, IIELanguageUpdatable) private fUseDialog: Boolean; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property UseDialog: Boolean read fUseDialog write fUseDialog default True; end; TIELayerRotateLeft = class(TImageEnViewAction, IIELanguageUpdatable) private fRotateDegrees: Integer; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property RotateDegrees: Integer read fRotateDegrees write fRotateDegrees default 45; end; TIELayerRotateRight = class(TImageEnViewAction, IIELanguageUpdatable) private fRotateDegrees: Integer; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateLanguage(); published property RotateDegrees: Integer read fRotateDegrees write fRotateDegrees default 45; end; TIELayerConvertToImageLayer = class(TImageEnViewAction, IIELanguageUpdatable) private fQualityFactor: Double; fCropAlpha: Boolean; fConvertImages: Boolean; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published property QualityFactor : Double read fQualityFactor write fQualityFactor; property CropAlpha: Boolean read fCropAlpha write fCropAlpha default True; property ConvertImages: Boolean read fConvertImages write fConvertImages default True; end; TIELineLayerShowLabel = class(TImageEnViewAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIELayersSetPropertiesAction = class(TImageEnViewAction, IIELanguageUpdatable) private fLayerProp: string; fUndoMessage: string; function IsChecked(): Boolean; protected public constructor Create(AOwner: TComponent); override; procedure ExecuteTarget(Target: TObject); override; procedure UpdateTarget(Target: TObject); override; procedure UpdateLanguage(); published end; TIELayerVisible = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIELayerAspectRatioLocked = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIELayerLocked = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIELayerSizeToFit = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIEImageLayerRestoreSize = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIELayerRestoreAspectRatio = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private procedure SetPreferredOnly(Value: Boolean); function GetPreferredOnly(): Boolean; protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published property PreferredOnly: Boolean read GetPreferredOnly write SetPreferredOnly default True; end; TIELayerCropped = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIELayerResetRotate = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; TIEPolylineLayerPolylineClosed = class(TIELayersSetPropertiesAction, IIELanguageUpdatable) private protected public constructor Create(AOwner: TComponent); override; procedure UpdateLanguage(); published end; const CTRL_A_SHORTCUT = 16449; CTRL_C_SHORTCUT = 16451; CTRL_O_SHORTCUT = 16463; CTRL_P_SHORTCUT = 16464; CTRL_S_SHORTCUT = 16467; CTRL_V_SHORTCUT = 16470; CTRL_X_SHORTCUT = 16472; CTRL_Y_SHORTCUT = 16473; CTRL_Z_SHORTCUT = 16474; CTRL_ALT_S_SHORTCUT = 49235; implementation uses {$IFDEF IEINCLUDEPRINTDIALOGS} Printers, {$ENDIF} Sysutils, Forms, iewords, iesettings, dialogs; constructor TBaseImageEnViewAction.Create(AOwner: TComponent); begin inherited Create(AOwner); fRequireImage := False; fRequireSelection := False; fRequireSelectedLayer := False; Caption := 'ImageEn Action'; DisableIfNoHandler := false; end; function TBaseImageEnViewAction.HandlesTarget(Target: TObject): Boolean; begin Result := True; end; function TBaseImageEnViewAction.HaveActiveImageEnIO: boolean; begin Result := HaveActiveImageEnView; // It will always create a IO if it is required end; function TBaseImageEnViewAction.HaveActiveImageEnProc: boolean; begin Result := HaveActiveImageEnView; // It will always create a Proc if it is required end; function TBaseImageEnViewAction.HaveActiveImageEnView: boolean; begin Result := ActiveImageEnView <> nil; end; // True if the active ImageEnView contains an image function TBaseImageEnViewAction.HaveImage: boolean; begin Result := HaveActiveImageEnView and (ActiveImageEnView.IsEmpty2 = False); end; function TBaseImageEnViewAction.HaveSelection: boolean; begin Result := HaveActiveImageEnView and ActiveImageEnView.Selected; end; function TBaseImageEnViewAction.BaseEnabled: boolean; begin Result := HaveActiveImageEnView; if Result and fRequireImage then Result := HaveImage; if Result and fRequireSelection then Result := HaveSelection; if Result and fRequireSelectedLayer then Result := ActiveIELayersSelCount > 0; end; procedure TBaseImageEnViewAction.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; end; function TBaseImageEnViewAction.ActiveImageEnIO: TImageEnIO; begin Result := nil; if HaveActiveImageEnView then Result := ActiveImageEnView.IO; end; function TBaseImageEnViewAction.ActiveImageEnProc: TImageEnProc; begin Result := nil; if HaveActiveImageEnView then Result := ActiveImageEnView.Proc; end; // Return the speciifed or selected ImageEnView function TBaseImageEnViewAction.ActiveImageEnView: TImageEnView; begin Result := fImageEnView; if (Result = nil) and Assigned(Screen.ActiveControl) and (Screen.ActiveControl is TImageEnView) then Result := TImageEnView(Screen.ActiveControl); end; // Return one selected TIELayer. If nothing is selected, returns CurrentLayer function TBaseImageEnViewAction.FirstSelectedLayer: TIELayer; var I: Integer; begin Result := nil; if HaveActiveImageEnView = False then exit; Result := ActiveImageEnView.CurrentLayer; if Result.Selected = False then for I := 0 to ActiveImageEnView.LayersCount - 1 do if ActiveImageEnView.Layers[ i ].Selected then begin Result := ActiveImageEnView.Layers[ i ]; exit; end; end; function TBaseImageEnViewAction.ActiveIELayersSelCount(bCountBackgroundLayer: Boolean = True): Integer; begin Result := 0; if HaveActiveImageEnView then Result := ActiveImageEnView.LayersSelCount( bCountBackgroundLayer ); end; procedure TBaseImageEnViewAction.ActiveIELayerNotify(Event: TIELayerEvent = ielAction; idx: Integer = -1); begin if HaveActiveImageEnView then begin if idx < 0 then idx := ActiveImageEnView.LayersCurrent; if Assigned( ActiveImageEnView.OnLayerNotify ) then ActiveImageEnView.OnLayerNotify( ActiveImageEnView, idx, Event ); end; end; // Ensures that changes by Layer TActions are saved to the undo stack procedure TBaseImageEnViewAction.SaveUndoState(); begin fAutoUndoByCode := True; if HaveActiveImageEnView then begin if loAutoUndoChangesByUser in ActiveImageEnView.LayerOptions then fAutoUndoByCode := loAutoUndoChangesByCode in ActiveImageEnView.LayerOptions; if not fAutoUndoByCode then ActiveImageEnView.LayerOptions := ActiveImageEnView.LayerOptions + [ loAutoUndoChangesByCode ]; end; end; // Call after SaveUndoState() procedure TBaseImageEnViewAction.RestoreUndoState(); begin if HaveActiveImageEnView and ( fAutoUndoByCode = False ) then ActiveImageEnView.LayerOptions := ActiveImageEnView.LayerOptions - [ loAutoUndoChangesByCode ]; end; procedure TBaseImageEnViewAction.SaveUndo(const Caption: String; Source: TIEUndoSource; Operation: Integer); begin if HaveActiveImageEnProc and ActiveImageEnProc.AutoUndo and ( loAutoUndoChangesbyUser in ActiveImageEnView.LayerOptions ) then ActiveImageEnProc.SaveUndo( Caption, Source, True, Operation ); end; { TImageEnViewAutoShrink } constructor TImageEnViewAutoShrink.Create(AOwner: TComponent); begin inherited; ImageIndex := 39; UpdateLanguage(); end; procedure TImageEnViewAutoShrink.UpdateLanguage(); begin Caption := iemsg(IEMsg_AutoShrink); Hint := iemsg(IEMsg_DisplayLargeImagesAtThewindowSize); end; procedure TImageEnViewAutoShrink.ExecuteTarget(Target: TObject); var bAutoShrink: Boolean; begin if HaveActiveImageEnView then begin bAutoShrink := not ActiveImageEnView.AutoShrink; ActiveImageEnView.AutoShrink := bAutoShrink; if bAutoShrink then ActiveImageEnView.Update else ActiveImageEnView.Zoom := 100; end; end; procedure TImageEnViewAutoShrink.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.AutoShrink else Checked := False; end; { TImageEnViewAutoStretch } constructor TImageEnViewAutoStretch.Create(AOwner: TComponent); begin inherited; ImageIndex := 40; UpdateLanguage(); end; procedure TImageEnViewAutoStretch.UpdateLanguage(); begin Caption := iemsg(IEMsg_AutoStretch); Hint := iemsg(IEMsg_DisplaySmallImagesAtTheWindowSize); end; procedure TImageEnViewAutoStretch.ExecuteTarget(Target: TObject); var bAutoStretch: Boolean; begin if HaveActiveImageEnView then begin bAutoStretch := not ActiveImageEnView.AutoStretch; ActiveImageEnView.AutoStretch := bAutoStretch; if bAutoStretch then ActiveImageEnView.Update else ActiveImageEnView.Zoom := 100; end; end; procedure TImageEnViewAutoStretch.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.AutoStretch else Checked := False; end; { TImageEnViewBlank } constructor TImageEnViewBlank.Create(AOwner: TComponent); begin inherited; ImageIndex := 25; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewBlank.UpdateLanguage(); begin Caption := iemsg( IEMsg_Clear ); Hint := iemsg(IEMsg_ClearThisImage); end; procedure TImageEnViewBlank.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndo( IEMsg( IEMsg_Clear ), ieuImage, IEOP_CLEAR ); ActiveImageEnView.Blank; ActiveIELayerNotify(); end; end; { TImageEnViewClearAll } constructor TImageEnViewClearAll.Create(AOwner: TComponent); begin inherited; ImageIndex := 25; UpdateLanguage(); end; procedure TImageEnViewClearAll.UpdateLanguage(); begin Caption := iemsg(IEMsg_ClearAll); Hint := iemsg(IEMsg_ClearThisImage); end; procedure TImageEnViewClearAll.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndo( IEMsg( IEMsg_ClearAll ), ieuObjectsAndLayers, IEOP_CLEAR ); ActiveImageEnView.ClearAll(); ActiveIELayerNotify(); end; end; procedure TImageEnViewClearAll.UpdateTarget(Target: TObject); begin if HaveImage then Enabled := True else Enabled := HaveActiveImageEnView and ( ActiveImageEnView.LayersCount > 0 ); end; { TImageEnViewDeselect} constructor TImageEnViewDeselect.Create(AOwner: TComponent); begin inherited; fRequireSelection := True; ImageIndex := 12; UpdateLanguage(); end; procedure TImageEnViewDeselect.UpdateLanguage(); begin Caption := iemsg(IEMsg_Deselect); Hint := iemsg(IEMsg_ClearYourSelection); end; procedure TImageEnViewDeselect.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.DeSelect; end; { TImageEnViewFit } constructor TImageEnViewFit.Create(AOwner: TComponent); begin inherited; ImageIndex := 41; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewFit.UpdateLanguage(); begin Caption := iemsg(IEMsg_FitImage); Hint := iemsg(IEMsg_DisplayTheImageAtTheSizeOfTheWindow); end; procedure TImageEnViewFit.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := Round( ActiveImageEnView.Zoom ) = Round( ActiveImageEnView.GetIdealZoom ) else Checked := False; end; procedure TImageEnViewFit.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin ActiveImageEnView.AutoShrink := False; ActiveImageEnView.AutoStretch := False; ActiveImageEnView.Fit; end; end; { TImageEnViewFitToHeight } constructor TImageEnViewFitToHeight.Create(AOwner: TComponent); begin inherited; ImageIndex := 42; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewFitToHeight.UpdateLanguage(); begin Caption := iemsg(IEMsg_FitImageToHeight); Hint := iemsg(IEMsg_DisplayTheImageAtTheHeightOfTheWindow); end; procedure TImageEnViewFitToHeight.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin ActiveImageEnView.AutoShrink := False; ActiveImageEnView.AutoStretch := False; ActiveImageEnView.FitToHeight; end; end; { TImageEnViewFitToWidth } constructor TImageEnViewFitToWidth.Create(AOwner: TComponent); begin inherited; ImageIndex := 43; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewFitToWidth.UpdateLanguage(); begin Caption := iemsg(IEMsg_FitImageToWidth); Hint := iemsg(IEMsg_DisplayTheImageAtTheWidthOfTheWindow); end; procedure TImageEnViewFitToWidth.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin ActiveImageEnView.AutoShrink := False; ActiveImageEnView.AutoStretch := False; ActiveImageEnView.FitToWidth; end; end; { TImageEnViewLayersAdd } constructor TImageEnViewLayersAdd.Create(AOwner: TComponent); begin inherited; ImageIndex := 44; fLayerKind := ielkImage; UpdateLanguage(); end; procedure TImageEnViewLayersAdd.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddLayer); Hint := iemsg(IEMsg_AddANewLayerTothisImage); end; procedure TImageEnViewLayersAdd.ExecuteTarget(Target: TObject); var idx: Integer; imgFilename: string; begin if HaveActiveImageEnView then begin imgFilename := ''; if ( fLayerKind = ielkImage ) and HaveActiveImageEnView and ( loAutoPromptForImage in ActiveImageEnView.LayerOptions ) then begin imgFilename := ActiveImageEnView.IO.ExecuteOpenDialog(''); if imgFilename = '' then exit; end; SaveUndoState(); idx := imin( ActiveImageEnView.LayersCurrent + 1, ActiveImageEnView.LayersCount ); // Insert after selected layer if imgFilename = '' then ActiveImageEnView.LayersInsert( idx, ielkImage ) else begin ActiveImageEnView.LayersInsert( idx, imgFilename ); TIEImageLayer( ActiveImageEnView.CurrentLayer ).RestoreAspectRatio(); end; ActiveIELayerNotify( ielCreated, idx ); RestoreUndoState(); end; end; { TImageEnViewImageLayersAdd } constructor TImageEnViewImageLayersAdd.Create(AOwner: TComponent); begin inherited; ImageIndex := 166; UpdateLanguage(); end; procedure TImageEnViewImageLayersAdd.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddImageLayer); Hint := iemsg(IEMsg_AddANewLayerTothisImage); end; procedure TImageEnViewImageLayersAdd.ExecuteTarget(Target: TObject); var idx: Integer; imgFilename: string; begin if HaveActiveImageEnView then begin imgFilename := ''; if HaveActiveImageEnView and ( loAutoPromptForImage in ActiveImageEnView.LayerOptions ) then begin imgFilename := ActiveImageEnView.IO.ExecuteOpenDialog(''); if imgFilename = '' then exit; end; SaveUndoState(); idx := imin( ActiveImageEnView.LayersCurrent + 1, ActiveImageEnView.LayersCount ); // Insert after selected layer if imgFilename = '' then ActiveImageEnView.LayersInsert( idx, ielkImage ) else begin ActiveImageEnView.LayersInsert( idx, imgFilename ); TIEImageLayer( ActiveImageEnView.CurrentLayer ).RestoreAspectRatio(); end; ActiveIELayerNotify( ielCreated, idx ); RestoreUndoState(); end; end; { TImageEnViewShapeLayersAdd } constructor TImageEnViewShapeLayersAdd.Create(AOwner: TComponent); begin inherited; ImageIndex := 167; fShape := iesRectangle; UpdateLanguage(); end; procedure TImageEnViewShapeLayersAdd.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddShapeLayer); Hint := iemsg(IEMsg_AddANewLayerTothisImage); end; procedure TImageEnViewShapeLayersAdd.ExecuteTarget(Target: TObject); var idx: Integer; begin if HaveActiveImageEnView then begin SaveUndoState(); idx := imin( ActiveImageEnView.LayersCurrent + 1, ActiveImageEnView.LayersCount ); // Insert after selected layer ActiveImageEnView.LayersInsert( idx, fShape ); ActiveIELayerNotify( ielCreated, idx ); RestoreUndoState(); end; end; { TImageEnViewLineLayersAdd } constructor TImageEnViewLineLayersAdd.Create(AOwner: TComponent); begin inherited; ImageIndex := 168; UpdateLanguage(); end; procedure TImageEnViewLineLayersAdd.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddLineLayer); Hint := iemsg(IEMsg_AddANewLayerTothisImage); end; procedure TImageEnViewLineLayersAdd.ExecuteTarget(Target: TObject); var idx: Integer; begin if HaveActiveImageEnView then begin SaveUndoState(); idx := imin( ActiveImageEnView.LayersCurrent + 1, ActiveImageEnView.LayersCount ); // Insert after selected layer ActiveImageEnView.LayersInsert( idx, ielkLine ); ActiveIELayerNotify( ielCreated, idx ); RestoreUndoState(); end; end; { TImageEnViewPolylineLayersAdd } constructor TImageEnViewPolylineLayersAdd.Create(AOwner: TComponent); begin inherited; ImageIndex := 169; UpdateLanguage(); end; procedure TImageEnViewPolylineLayersAdd.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddPolylineLayer); Hint := iemsg(IEMsg_AddANewLayerTothisImage); end; procedure TImageEnViewPolylineLayersAdd.ExecuteTarget(Target: TObject); var idx: Integer; begin if HaveActiveImageEnView then begin SaveUndoState(); idx := imin( ActiveImageEnView.LayersCurrent + 1, ActiveImageEnView.LayersCount ); // Insert after selected layer ActiveImageEnView.LayersInsert( idx, ielkPolyline ); ActiveIELayerNotify( ielCreated, idx ); RestoreUndoState(); end; end; { TImageEnViewTextLayersAdd } constructor TImageEnViewTextLayersAdd.Create(AOwner: TComponent); begin inherited; ImageIndex := 170; fDefaultText := 'Double-click to edit text'; UpdateLanguage(); end; procedure TImageEnViewTextLayersAdd.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddTextLayer); Hint := iemsg(IEMsg_AddANewLayerTothisImage); end; procedure TImageEnViewTextLayersAdd.ExecuteTarget(Target: TObject); var idx: Integer; begin if HaveActiveImageEnView then begin SaveUndoState(); idx := imin( ActiveImageEnView.LayersCurrent + 1, ActiveImageEnView.LayersCount ); // Insert after selected layer ActiveImageEnView.LayersInsert( idx, fDefaultText, 0, clNone_, '' ); ActiveIELayerNotify( ielCreated, idx ); RestoreUndoState(); end; end; { TImageEnViewLayersMerge } constructor TImageEnViewLayersMerge.Create(AOwner: TComponent); begin inherited; ImageIndex := 123; fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TImageEnViewLayersMerge.UpdateLanguage(); begin Caption := iemsg( IEMsg_MergeLayers ); Hint := iemsg( IEMsg_MergeSelectedLayersIntoASingleLayer ); end; procedure TImageEnViewLayersMerge.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersMerge(); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TImageEnViewLayersMerge.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( ActiveIELayersSelCount > 1 ); end; { TImageEnViewLayersMergeAll } constructor TImageEnViewLayersMergeAll.Create(AOwner: TComponent); begin inherited; ImageIndex := 46; UpdateLanguage(); end; procedure TImageEnViewLayersMergeAll.UpdateLanguage(); begin Caption := iemsg( IEMsg_MergeAllLayers ); Hint := iemsg( IEMsg_MergeAllLayersOfTheImageIntoASingleOne ); end; procedure TImageEnViewLayersMergeAll.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersMergeAll( True ); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TImageEnViewLayersMergeAll.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ActiveImageEnView.LayersCount > 1; Enabled := bEnabled; end; { TImageEnViewLayersRemoveCurrent } constructor TImageEnViewLayersRemoveCurrent.Create(AOwner: TComponent); begin inherited; ImageIndex := 45; UpdateLanguage(); end; procedure TImageEnViewLayersRemoveCurrent.UpdateLanguage(); begin Caption := iemsg(IEMsg_RemoveLayer); Hint := iemsg(IEMsg_RemoveTheSelectedLayersFromTheImage); end; procedure TImageEnViewLayersRemoveCurrent.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersRemove(); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TImageEnViewLayersRemoveCurrent.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( ActiveIELayersSelCount( False ) > 0 ); // Cannot remove background layer end; { TImageEnViewLayersCreateFromClipboard } {$ifdef IEIncludeDeprecatedInV6} // Deprecated in 7.0.0 (2017-02-03) constructor TImageEnViewLayersCreateFromClipboard.Create(AOwner: TComponent); begin inherited; ImageIndex := 89; UpdateLanguage(); end; procedure TImageEnViewLayersCreateFromClipboard.UpdateLanguage(); begin Caption := iemsg(IEMsg_PasteAsLayer); Hint := iemsg(IEMsg_PasteTheContentOfTheClipboardAsANewlayer); end; procedure TImageEnViewLayersCreateFromClipboard.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.Proc.PasteFromClipboard( iecpLayer ); ActiveIELayerNotify( ielCreated ); end; procedure TImageEnViewLayersCreateFromClipboard.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ActiveImageEnView.Proc.CanPasteFromClipboard( iecpLayer ); Enabled := bEnabled; end; {$endif} { TImageEnViewLayersCreateFromFile } {$IFDEF IEINCLUDEOPENSAVEDIALOGS} constructor TImageEnViewLayersCreateFromFile.Create(AOwner: TComponent); begin inherited; ImageIndex := 90; UpdateLanguage(); end; procedure TImageEnViewLayersCreateFromFile.UpdateLanguage(); begin Caption := iemsg(IEMsg_LoadFileAsLayer) + Menu_Ellipses; Hint := iemsg(IEMsg_PromptForAnImageFileToLoadAsANewLayer); end; procedure TImageEnViewLayersCreateFromFile.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersCreateFromFile(''); RestoreUndoState(); ActiveIELayerNotify( ielCreated ); end; end; {$ENDIF} { TImageEnViewLayersMoveSendToBack } constructor TImageEnViewLayersMoveSendToBack.Create(AOwner: TComponent); begin inherited; ImageIndex := 91; UpdateLanguage(); end; procedure TImageEnViewLayersMoveSendToBack.UpdateLanguage(); begin Caption := iemsg(IEMsg_SendToBack); Hint := iemsg(IEMsg_PositionTheselectedLayerBehindAllOthers); end; procedure TImageEnViewLayersMoveSendToBack.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersMove( -2, IEN_Send_To_Back ); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TImageEnViewLayersMoveSendToBack.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ( ActiveImageEnView.LayersSelCount > 0 ) and ( ActiveImageEnView.LayersCurrent > 0 ); Enabled := bEnabled; end; { TImageEnViewLayersMoveSendBackward } constructor TImageEnViewLayersMoveSendBackward.Create(AOwner: TComponent); begin inherited; ImageIndex := 92; UpdateLanguage(); end; procedure TImageEnViewLayersMoveSendBackward.UpdateLanguage(); begin Caption := iemsg(IEMsg_SendBackward); Hint := iemsg(IEMsg_MoveTheSelectedLayerBackward); end; procedure TImageEnViewLayersMoveSendBackward.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersMove( -2, IEN_Send_Backward ); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TImageEnViewLayersMoveSendBackward.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ( ActiveImageEnView.LayersSelCount > 0 ) and ( ActiveImageEnView.LayersCurrent > 0 ); Enabled := bEnabled; end; { TImageEnViewLayersMoveBringToFront } constructor TImageEnViewLayersMoveBringToFront.Create(AOwner: TComponent); begin inherited; ImageIndex := 94; UpdateLanguage(); end; procedure TImageEnViewLayersMoveBringToFront.UpdateLanguage(); begin Caption := iemsg(IEMsg_BringToFront); Hint := iemsg(IEMsg_BringTheSelectedLayerToThefrontOfAllOthers); end; procedure TImageEnViewLayersMoveBringToFront.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersMove( -2, IEN_Bring_To_Front ); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TImageEnViewLayersMoveBringToFront.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ( ActiveImageEnView.LayersSelCount > 0 ) and ( ActiveImageEnView.LayersCurrent < ActiveImageEnView.LayersCount - 1 ); Enabled := bEnabled; end; { TImageEnViewLayersMoveBringForward } constructor TImageEnViewLayersMoveBringForward.Create(AOwner: TComponent); begin inherited; ImageIndex := 93; UpdateLanguage(); end; procedure TImageEnViewLayersMoveBringForward.UpdateLanguage(); begin Caption := iemsg(IEMsg_BringForward); Hint := iemsg(IEMsg_MoveTheSelectedLayerForward); end; procedure TImageEnViewLayersMoveBringForward.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersMove( -2, IEN_Bring_Forward ); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TImageEnViewLayersMoveBringForward.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ( ActiveImageEnView.LayersSelCount > 0 ) and ( ActiveImageEnView.LayersCurrent < ActiveImageEnView.LayersCount - 1 ); Enabled := bEnabled; end; { TImageEnViewLayersFixBorders } constructor TImageEnViewLayersFixBorders.Create(AOwner: TComponent); begin inherited; ImageIndex := 95; fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TImageEnViewLayersFixBorders.UpdateLanguage(); begin Caption := iemsg(IEMsg_CropTransparency); Hint := iemsg(IEMsg_RemoveTheTransparentBordersFromTheSelectedLayers); end; procedure TImageEnViewLayersFixBorders.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndo( IEMsg( IEMsg_CropTransparency ), ieuObjectsAndLayers, IEOP_OTHER ); ActiveImageEnView.LayersFixBorders( -2 ); ActiveIELayerNotify(); end; end; { TImageEnViewLayersSelectAll } constructor TImageEnViewLayersSelectAll.Create(AOwner: TComponent); begin inherited; ImageIndex := 124; UpdateLanguage(); end; procedure TImageEnViewLayersSelectAll.UpdateLanguage(); begin Caption := iemsg( IEMsg_SelectAllLayers ); Hint := iemsg( IEMsg_SelectAllLayersOfTheImage ); end; procedure TImageEnViewLayersSelectAll.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ActiveImageEnView.LayersCount > 1; { skip bg } Enabled := bEnabled; end; procedure TImageEnViewLayersSelectAll.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.LayersSelectAll(); ActiveIELayerNotify( ielSelected ); end; { TImageEnViewLayersDeselectAll } constructor TImageEnViewLayersDeselectAll.Create(AOwner: TComponent); begin inherited; ImageIndex := 125; fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TImageEnViewLayersDeselectAll.UpdateLanguage(); begin Caption := iemsg( IEMsg_DeselectAllLayers ); Hint := iemsg( IEMsg_DeselectAllLayersOfTheImage ); end; procedure TImageEnViewLayersDeselectAll.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.LayersDeselectAll(); ActiveIELayerNotify( ielDeselected ); end; { TImageEnViewLayersGroup } constructor TImageEnViewLayersGroup.Create(AOwner: TComponent); begin inherited; ImageIndex := 126; UpdateLanguage(); end; procedure TImageEnViewLayersGroup.UpdateLanguage(); begin Caption := iemsg( IEMsg_GroupLayers ); Hint := iemsg( IEMsg_AddSelectedLayersToASelectionGroup ); end; procedure TImageEnViewLayersGroup.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( ActiveIELayersSelCount > 1 ); end; procedure TImageEnViewLayersGroup.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersGroup(); RestoreUndoState(); ActiveIELayerNotify(); end; end; { TImageEnViewLayersUngroup } constructor TImageEnViewLayersUngroup.Create(AOwner: TComponent); begin inherited; ImageIndex := 127; fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TImageEnViewLayersUngroup.UpdateLanguage(); begin Caption := iemsg( IEMsg_UngroupLayers ); Hint := iemsg( IEMsg_RemoveSelectedLayersFromSelectionGroup ); end; procedure TImageEnViewLayersUngroup.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersUngroup(); RestoreUndoState(); ActiveIELayerNotify(); end; end; { TImageEnViewLayersPromptToOpen } {$IFDEF IEINCLUDEOPENSAVEDIALOGS} constructor TImageEnViewLayersPromptToOpen.Create(AOwner: TComponent); begin inherited; ShortCut := CTRL_O_SHORTCUT; ImageIndex := 7; fLockToIEN := False; UpdateLanguage(); end; procedure TImageEnViewLayersPromptToOpen.UpdateLanguage(); begin Caption := iemsg(IEMsg_Open); Hint := iemsg(IEMsg_LoadAnImageFromFile); end; procedure TImageEnViewLayersPromptToOpen.ExecuteTarget(Target: TObject); var sFilename: string; limitToType : TIOFileType; begin if HaveActiveImageEnIO then begin limitToType := -1; if fLockToIEN then limitToType := ioIEN; sFilename := ActiveImageEnIO.ExecuteOpenDialog('', '', false, 0, '', fDialogTitle, '', ioIEN, limitToType); if sFilename <> '' then begin ActiveImageEnIO.LoadFromFile(sFilename); if HaveActiveImageEnProc and ActiveImageEnProc.AutoUndo then begin ActiveImageEnProc.ClearAllUndo(); ActiveImageEnProc.ClearAllRedo(); end; ActiveIELayerNotify(); end; end; end; function TImageEnViewLayersPromptToOpen.GetFilename() : string; begin Result := ''; if HaveActiveImageEnIO then Result := ActiveImageEnIO.Params.FileName; end; procedure TImageEnViewLayersPromptToOpen.SetFilename(const value: string); begin if HaveActiveImageEnIO then ActiveImageEnIO.Params.FileName := Value; end; {$ENDIF} { TImageEnViewLayersSave } {$IFDEF IEINCLUDEOPENSAVEDIALOGS} constructor TImageEnViewLayersSave.Create(AOwner: TComponent); begin inherited; ShortCut := CTRL_S_SHORTCUT; ImageIndex := 8; fEnableOnlyWhenChanged := True; UpdateLanguage(); end; procedure TImageEnViewLayersSave.UpdateLanguage(); begin Caption := iemsg(IEMsg_Save); Hint := iemsg(IEMsg_SaveChangesToThisImageToFile); end; procedure TImageEnViewLayersSave.UpdateTarget(Target: TObject); var bEnabled: Boolean; begin bEnabled := BaseEnabled and ( GetFilename <> '' ); if fEnableOnlyWhenChanged and bEnabled then bEnabled := ActiveImageEnView.Modified; Enabled := bEnabled; end; procedure TImageEnViewLayersSave.ExecuteTarget(Target: TObject); var sFilename: string; begin if HaveActiveImageEnIO then begin sFilename := ActiveImageEnIO.Params.FileName; if sFilename = '' then sFilename := ActiveImageEnIO.ExecuteSaveDialog('', '', false, 0, '', '', '', ioIEN); if sFilename <> '' then begin ActiveImageEnIO.SaveToFile(sFilename); ActiveImageEnView.Modified := False; end; end; end; function TImageEnViewLayersSave.GetFilename() : string; begin Result := ''; if HaveActiveImageEnIO then Result := ActiveImageEnIO.Params.FileName; end; procedure TImageEnViewLayersSave.SetFilename(const value: string); begin if HaveActiveImageEnIO then ActiveImageEnIO.Params.FileName := Value; end; {$ENDIF} { TImageEnViewLayersPromptToSave } {$IFDEF IEINCLUDEOPENSAVEDIALOGS} constructor TImageEnViewLayersPromptToSave.Create(AOwner: TComponent); begin inherited; Shortcut := CTRL_ALT_S_SHORTCUT; ImageIndex := 9; fLockToIEN := False; UpdateLanguage(); end; procedure TImageEnViewLayersPromptToSave.UpdateLanguage(); begin Caption := iemsg(IEMsg_SaveAs) + Menu_Ellipses; Hint := iemsg(IEMsg_SaveThisImageToANewFilename); end; procedure TImageEnViewLayersPromptToSave.ExecuteTarget(Target: TObject); var sFilename: string; limitToType : TIOFileType; begin if HaveActiveImageEnIO then begin limitToType := -1; if fLockToIEN then limitToType := ioIEN; sFilename := ActiveImageEnIO.ExecuteSaveDialog('', '', false, 0, '', fDialogTitle, '', ioIEN, limitToType); if sFilename <> '' then begin ActiveImageEnIO.SaveToFile(sFilename); ActiveImageEnView.Modified := False; end; end; end; function TImageEnViewLayersPromptToSave.GetFilename() : string; begin Result := ''; if HaveActiveImageEnIO then Result := ActiveImageEnIO.Params.FileName; end; procedure TImageEnViewLayersPromptToSave.SetFilename(const value: string); begin if HaveActiveImageEnIO then ActiveImageEnIO.Params.FileName := Value; end; {$ENDIF} { TImageEnViewLayersCropBackground } constructor TImageEnViewLayersCropBackground.Create(AOwner: TComponent); begin inherited; ImageIndex := 154; fFillAlpha := 255; fAllowReduce := True; fAllowEnlarge := True; UpdateLanguage(); end; procedure TImageEnViewLayersCropBackground.UpdateLanguage(); begin Caption := iemsg( IEMsg_CropBackgroundToSelection ); Hint := iemsg( IEMsg_CropTheBackgroundImageToMatchSelectedLayers ); end; procedure TImageEnViewLayersCropBackground.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( ActiveIELayersSelCount( False ) > 0 ); end; procedure TImageEnViewLayersCropBackground.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersCropBackground( True, fFillAlpha, fAllowReduce, fAllowEnlarge ); RestoreUndoState(); ActiveIELayerNotify( ielResized, 0 ); end; end; { TImageEnViewLayersFastDrawing } constructor TImageEnViewLayersFastDrawing.Create(AOwner: TComponent); begin inherited; ImageIndex := 155; fDelayedHighQuality := True; fZoomFilter := rfLanczos3; UpdateLanguage(); end; procedure TImageEnViewLayersFastDrawing.UpdateLanguage(); begin Caption := iemsg( IEMsg_FastPreview ); Hint := iemsg( IEMsg_ReducePreviewQualityToImprovePerformance ); end; procedure TImageEnViewLayersFastDrawing.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.LayersFastDrawing <> iefNormal else Checked := False; end; procedure TImageEnViewLayersFastDrawing.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin // Fast drawing if ActiveImageEnView.LayersFastDrawing <> iefNormal then ActiveImageEnView.LayersFastDrawing := iefNormal else if fDelayedHighQuality then ActiveImageEnView.LayersFastDrawing := iefDelayed else ActiveImageEnView.LayersFastDrawing := iefFast; // Zoom filter if ActiveImageEnView.ZoomFilter <> rfNone then fZoomFilter := ActiveImageEnView.ZoomFilter; if ActiveImageEnView.LayersFastDrawing = iefFast then ActiveImageEnView.ZoomFilter := rfNone else ActiveImageEnView.ZoomFilter := fZoomFilter; ActiveImageEnView.DelayZoomFilter := ActiveImageEnView.LayersFastDrawing = iefDelayed; // Rotation anti-alias ActiveImageEnView.LayersRotationFilter := ierBicubic; ActiveImageEnView.LayersRotationAntialias := True; ActiveImageEnView.LayersRotationUseFilterOnPreview := ActiveImageEnView.LayersFastDrawing <> iefFast; ActiveImageEnView.Update(); end; end; { TImageEnViewEnableAdjustOrientation } constructor TImageEnViewEnableAdjustOrientation.Create(AOwner: TComponent); begin inherited; ImageIndex := 88; UpdateLanguage(); end; procedure TImageEnViewEnableAdjustOrientation.UpdateLanguage(); begin Caption := iemsg(IEMsg_AutoRotateDisplay); Hint := iemsg(IEMsg_AutomaticallyDisplayImageWithTheCorrectOrientation); end; procedure TImageEnViewEnableAdjustOrientation.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.Params.EnableAdjustOrientation := not ActiveImageEnIO.Params.EnableAdjustOrientation; end; procedure TImageEnViewEnableAdjustOrientation.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if Enabled and HaveActiveImageEnIO then Checked := ActiveImageEnIO.Params.EnableAdjustOrientation else Checked := False; end; { TImageEnViewPlaying } constructor TImageEnViewPlaying.Create(AOwner: TComponent); begin inherited; ImageIndex := 35; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewPlaying.UpdateLanguage(); begin Caption := iemsg(IEMsg_Animate); Hint := iemsg(IEMsg_DisplayTheanimationOfAGIFOrAVIFile); end; procedure TImageEnViewPlaying.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.Playing := not ActiveImageEnView.Playing; end; procedure TImageEnViewPlaying.UpdateTarget(Target: TObject); var bCanAnimate: Boolean; begin bCanAnimate := False; if BaseEnabled then bCanAnimate := (ActiveImageEnView.IO.Params.ImageCount > 1) and (ActiveImageEnView.IO.Params.FileType in {$ifdef IEINCLUDEDICOM} [ioAVI, ioGIF, ioDICOM] {$else} [ioAVI, ioGIF] {$endif}); Enabled := bCanAnimate; if HaveActiveImageEnView and bCanAnimate then Checked := ActiveImageEnView.Playing else Checked := False; end; { TImageEnViewPlayLoop } constructor TImageEnViewPlayLoop.Create(AOwner: TComponent); begin inherited; ImageIndex := 36; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewPlayLoop.UpdateLanguage(); begin Caption := iemsg(IEMsg_LoopPlayback); Hint := iemsg(IEMsg_ContinuouslyLoopThePlaybackOfAGIFOrAVIFile); end; procedure TImageEnViewPlayLoop.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.PlayLoop := not ActiveImageEnView.PlayLoop; end; procedure TImageEnViewPlayLoop.UpdateTarget(Target: TObject); var bCanAnimate: Boolean; begin bCanAnimate := False; if BaseEnabled then bCanAnimate := (ActiveImageEnView.IO.Params.ImageCount > 1) and (ActiveImageEnView.IO.Params.FileType in {$ifdef IEINCLUDEDICOM} [ioAVI, ioGIF, ioDICOM] {$else} [ioAVI, ioGIF] {$endif}); Enabled := bCanAnimate; if HaveActiveImageEnView and bCanAnimate then Checked := ActiveImageEnView.PlayLoop else Checked := False; end; { TImageEnViewZoomIn } constructor TImageEnViewZoomIn.Create(AOwner: TComponent); begin inherited Create(AOwner); ImageIndex := 22; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewZoomIn.UpdateLanguage(); begin Caption := iemsg(IEMsg_ZoomIn); Hint := iemsg(IEMsg_DisplayTheImageLarger); end; procedure TImageEnViewZoomIn.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin ActiveImageEnView.AutoShrink := False; ActiveImageEnView.AutoStretch := False; ActiveImageEnView.ZoomIn; end; end; { TImageEnViewZoomOut } constructor TImageEnViewZoomOut.Create(AOwner: TComponent); begin inherited; ImageIndex := 23; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewZoomOut.UpdateLanguage(); begin Caption := iemsg(IEMsg_ZoomOut); Hint := iemsg(IEMsg_DisplayTheImageSmaller); end; procedure TImageEnViewZoomOut.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin ActiveImageEnView.AutoShrink := False; ActiveImageEnView.AutoStretch := False; ActiveImageEnView.ZoomOut; end; end; { TImageEnViewZoomFullSize } constructor TImageEnViewZoomFullSize.Create(AOwner: TComponent); begin inherited; ImageIndex := 24; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewZoomFullSize.UpdateLanguage(); begin Caption := iemsg(IEMsg_ZoomToFullSize); Hint := iemsg(IEMsg_DisplayTheimageAtFullSize); end; procedure TImageEnViewZoomFullSize.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.Zoom = 100 else Checked := False; end; procedure TImageEnViewZoomFullSize.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin ActiveImageEnView.AutoShrink := False; ActiveImageEnView.AutoStretch := False; ActiveImageEnView.Zoom := 100; end; end; { TImageEnViewSetZoom } constructor TImageEnViewSetZoom.Create(AOwner: TComponent); begin inherited; ImageIndex := 96; fZoom := 50; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewSetZoom.UpdateLanguage(); begin Caption := iemsg(IEMsg_ZoomImage); Hint := iemsg(IEMsg_DisplayImageAtCustomZoom); end; procedure TImageEnViewSetZoom.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.Zoom = fZoom else Checked := False; end; procedure TImageEnViewSetZoom.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin ActiveImageEnView.AutoShrink := False; ActiveImageEnView.AutoStretch := False; ActiveImageEnView.Zoom := fZoom; end; end; { TImageEnViewMouseInteract } constructor TImageEnViewMouseInteract.Create(AOwner: TComponent); begin inherited; // end; procedure TImageEnViewMouseInteract.ExecuteTarget(Target: TObject); var bInclude: Boolean; begin if HaveActiveImageEnView then begin bInclude := not (fMouseInteract in ActiveImageEnView.MouseInteract); // Incompatible options if bInclude and (fMouseInteract = miResizeLayers) then ActiveImageEnView.MouseInteract := ActiveImageEnView.MouseInteract - [miRotateLayers]; if bInclude then ActiveImageEnView.MouseInteract := ActiveImageEnView.MouseInteract + [fMouseInteract] else ActiveImageEnView.MouseInteract := ActiveImageEnView.MouseInteract - [fMouseInteract]; if Self is TImageEnViewMouseCreateImageLayers then begin if TImageEnViewMouseCreateImageLayers( Self ).PromptForImage then ActiveImageEnView.LayerOptions := ActiveImageEnView.LayerOptions + [ loAutoPromptForImage ] else ActiveImageEnView.LayerOptions := ActiveImageEnView.LayerOptions - [ loAutoPromptForImage ]; end; // Options that affect other properties if bInclude then begin if fMouseInteract in [miZoom, miSelectZoom] then begin ActiveImageEnView.AutoStretch := False; ActiveImageEnView.AutoShrink := False; end; end; end; end; procedure TImageEnViewMouseInteract.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if ActiveImageEnView = nil then Checked := False else Checked := fMouseInteract in ActiveImageEnView.MouseInteract; end; { TImageEnViewMouseMoveLayers } constructor TImageEnViewMouseMoveLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miMoveLayers; ImageIndex := 48; UpdateLanguage(); end; procedure TImageEnViewMouseMoveLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_MoveLayers); Hint := iemsg(IEMsg_UseThemouseTomoveImageLayers); end; { TImageEnViewMouseMovingScroll } constructor TImageEnViewMouseMovingScroll.Create(AOwner: TComponent); begin inherited; fMouseInteract := miMovingScroll; ImageIndex := 49; UpdateLanguage(); end; procedure TImageEnViewMouseMovingScroll.UpdateLanguage(); begin Caption := iemsg(IEMsg_ScrollToCursor); Hint := iemsg(IEMsg_MoveTheMouseToscrollTheimage); end; { TImageEnViewMouseResizeLayers } constructor TImageEnViewMouseResizeLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miResizeLayers; ImageIndex := 50; UpdateLanguage(); end; procedure TImageEnViewMouseResizeLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_ResizeLayers); Hint := iemsg(IEMsg_UseTheMouseToresizeImageLayers); end; { TImageEnViewMouseRotateLayers } constructor TImageEnViewMouseRotateLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miRotateLayers; ImageIndex := 51; UpdateLanguage(); end; procedure TImageEnViewMouseRotateLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_RotateLayers); Hint := iemsg(IEMsg_UseTheMouseTorotateImageLayers); end; { TImageEnViewMouseScroll } constructor TImageEnViewMouseScroll.Create(AOwner: TComponent); begin inherited; fMouseInteract := miScroll; ImageIndex := 52; UpdateLanguage(); end; procedure TImageEnViewMouseScroll.UpdateLanguage(); begin Caption := iemsg(IEMsg_ScrollImage); Hint := iemsg(IEMsg_ClickTheImageAndDragTheMouseToScroll); end; { TImageEnViewMouseSelect } constructor TImageEnViewMouseSelect.Create(AOwner: TComponent); begin inherited; fMouseInteract := miSelect; ImageIndex := 53; UpdateLanguage(); end; procedure TImageEnViewMouseSelect.UpdateLanguage(); begin Caption := iemsg(IEMsg_RectangularSelect); Hint := iemsg(IEMsg_SelectArectangularAreaOfYourImage); end; { TImageEnViewMouseSelectCircle } constructor TImageEnViewMouseSelectCircle.Create(AOwner: TComponent); begin inherited; fMouseInteract := miSelectCircle; ImageIndex := 54; UpdateLanguage(); end; procedure TImageEnViewMouseSelectCircle.UpdateLanguage(); begin Caption := iemsg(IEMsg_CircularSelect); Hint := iemsg(IEMsg_SelectAcircularAreaOfYourImage); end; { TImageEnViewMouseSelectLasso } constructor TImageEnViewMouseSelectLasso.Create(AOwner: TComponent); begin inherited; fMouseInteract := miSelectLasso; ImageIndex := 55; UpdateLanguage(); end; procedure TImageEnViewMouseSelectLasso.UpdateLanguage(); begin Caption := iemsg(IEMsg_LassoSelect); Hint := iemsg(IEMsg_PerformAnIrregularSelectionOfYourImageByDraggingTheMouse); end; { TImageEnViewMouseSelectMagicWand } constructor TImageEnViewMouseSelectMagicWand.Create(AOwner: TComponent); begin inherited; fMouseInteract := miSelectMagicWand; ImageIndex := 56; UpdateLanguage(); end; procedure TImageEnViewMouseSelectMagicWand.UpdateLanguage(); begin Caption := iemsg(IEMsg_SelectByColor); Hint := iemsg(IEMsg_SelectAportionOfYourImageOfASimilarColor); end; { TImageEnViewMouseSelectPolygon } constructor TImageEnViewMouseSelectPolygon.Create(AOwner: TComponent); begin inherited; fMouseInteract := miSelectPolygon; ImageIndex := 57; UpdateLanguage(); end; procedure TImageEnViewMouseSelectPolygon.UpdateLanguage(); begin Caption := iemsg(IEMsg_PolygonSelect); Hint := iemsg(IEMsg_PerformAnIrregularSelectionOfYourImageByClickingTheMouse); end; { TImageEnViewMouseSelectZoom } constructor TImageEnViewMouseSelectZoom.Create(AOwner: TComponent); begin inherited; fMouseInteract := miSelectZoom; ImageIndex := 58; UpdateLanguage(); end; procedure TImageEnViewMouseSelectZoom.UpdateLanguage(); begin Caption := iemsg(IEMsg_ZoomToSelection); Hint := iemsg(IEMsg_SelectAnAreaOfTheImageToZoomInto); end; { TImageEnViewMouseZoom } constructor TImageEnViewMouseZoom.Create(AOwner: TComponent); begin inherited; fMouseInteract := miZoom; ImageIndex := 59; UpdateLanguage(); end; procedure TImageEnViewMouseZoom.UpdateLanguage(); begin Caption := iemsg(IEMsg_Zoom); Hint := iemsg(IEMsg_LeftclickTheimageToZoomInRightclickToZoomOut); end; { TImageEnViewMouseCreateImageLayers } constructor TImageEnViewMouseCreateImageLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miCreateImageLayers; ImageIndex := 141; fPromptForImage := True; UpdateLanguage(); end; procedure TImageEnViewMouseCreateImageLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddImageLayers); Hint := iemsg(IEMsg_ClickAndDragToCreateAnImageLayer); end; { TImageEnViewMouseCreateShapeLayers } constructor TImageEnViewMouseCreateShapeLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miCreateShapeLayers; ImageIndex := 142; UpdateLanguage(); end; procedure TImageEnViewMouseCreateShapeLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddShapeLayers); Hint := iemsg(IEMsg_ClickAndDragToCreateAShapeLayer); end; { TImageEnViewMouseCreateLineLayers } constructor TImageEnViewMouseCreateLineLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miCreateLineLayers; ImageIndex := 143; UpdateLanguage(); end; procedure TImageEnViewMouseCreateLineLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddLineLayers); Hint := iemsg(IEMsg_ClickAndDragToCreateALineLayer); end; { TImageEnViewMouseCreatePolylineLayers } constructor TImageEnViewMouseCreatePolylineLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miCreatePolylineLayers; ImageIndex := 144; UpdateLanguage(); end; procedure TImageEnViewMouseCreatePolylineLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddPolylineLayers); Hint := iemsg(IEMsg_ClickAndDragToCreateAPolylineLayer); end; { TImageEnViewMouseCreateTextLayers } constructor TImageEnViewMouseCreateTextLayers.Create(AOwner: TComponent); begin inherited; fMouseInteract := miCreateTextLayers; ImageIndex := 145; UpdateLanguage(); end; procedure TImageEnViewMouseCreateTextLayers.UpdateLanguage(); begin Caption := iemsg(IEMsg_AddTextLayers); Hint := iemsg(IEMsg_ClickAndDragToCreateATextLayer); end; { TImageEnViewDoPreviews } {$IFDEF IEINCLUDEDIALOGIP} constructor TImageEnViewDoPreviews.Create(AOwner: TComponent); begin inherited; ImageIndex := 110; fEffects := [peAll]; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewDoPreviews.UpdateLanguage(); begin Caption := iemsg( IEMsg_PreviewEffects ) + Menu_Ellipses; Hint := iemsg( IEMsg_PreviewEffectsToEditAndEnhanceTheImage ); end; procedure TImageEnViewDoPreviews.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.DoPreviews( fEffects ); end; {$ENDIF} { TImageEnViewDoAdjustPreviews } {$IFDEF IEINCLUDEDIALOGIP} constructor TImageEnViewDoAdjustPreviews.Create(AOwner: TComponent); begin inherited; ImageIndex := 28; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewDoAdjustPreviews.UpdateLanguage(); begin Caption := iemsg(IEMsg_AdjustColors) + Menu_Ellipses; Hint := iemsg(IEMsg_PerformColorEnhancementFunctionsOnTheImage); end; procedure TImageEnViewDoAdjustPreviews.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.DoPreviews( ppeColorAdjustments ); end; {$ENDIF} { TImageEnViewDoEffectPreviews } {$IFDEF IEINCLUDEDIALOGIP} constructor TImageEnViewDoEffectPreviews.Create(AOwner: TComponent); begin inherited; ImageIndex := 29; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewDoEffectPreviews.UpdateLanguage(); begin Caption := iemsg(IEMsg_ImageEffects) + Menu_Ellipses; Hint := iemsg(IEMsg_PerformEffectsOnTheimage); end; procedure TImageEnViewDoEffectPreviews.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.DoPreviews( ppeSpecialEffects ); end; {$ENDIF} { TImageEnViewDoEditPreviews } {$IFDEF IEINCLUDEDIALOGIP} constructor TImageEnViewDoEditPreviews.Create(AOwner: TComponent); begin inherited; ImageIndex := 111; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewDoEditPreviews.UpdateLanguage(); begin Caption := iemsg( IEMsg_EditImage ) + Menu_Ellipses; Hint := iemsg( IEMsg_PerformEditingFunctionsOnTheImage ); end; procedure TImageEnViewDoEditPreviews.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.DoPreviews( ppeEditingFunctions ); end; {$ENDIF} { TImageEnViewPromptToRotate } {$IFDEF IEINCLUDEDIALOGIP} constructor TImageEnViewPromptToRotate.Create(AOwner: TComponent); begin inherited; ImageIndex := 97; fAntiAliasMode := ierFast; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewPromptToRotate.UpdateLanguage(); begin Caption := iemsg(IEMsg_CustomRotate) + Menu_Ellipses; Hint := iemsg(IEMsg_RotateImageByACustomAngle); end; procedure TImageEnViewPromptToRotate.ExecuteTarget(Target: TObject); var WasAntiAlias : TIEAntialiasMode; begin if HaveActiveImageEnProc then begin WasAntiAlias := IEGlobalSettings().DefaultRotateAntiAlias; try IEGlobalSettings().DefaultRotateAntiAlias := fAntiAliasMode; ActiveImageEnProc.DoPreviews([peRotate]); finally IEGlobalSettings().DefaultRotateAntiAlias := WasAntiAlias; end; end; end; {$ENDIF} { TImageEnViewPromptToResize } {$IFDEF IEINCLUDEDIALOGIP} constructor TImageEnViewPromptToResize.Create(AOwner: TComponent); begin inherited; ImageIndex := 98; fResampleFilter := rfFastLinear; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewPromptToResize.UpdateLanguage(); begin Caption := iemsg(IEMsg_ResizeImage) + '...'; Hint := iemsg(IEMsg_SpecifyANewSizeForTheImage); end; procedure TImageEnViewPromptToResize.ExecuteTarget(Target: TObject); var WasResampleFilter : TResampleFilter; begin if HaveActiveImageEnProc then begin WasResampleFilter := IEGlobalSettings().DefaultResampleFilter; try IEGlobalSettings().DefaultResampleFilter := fResampleFilter; ActiveImageEnProc.DoPreviews([peResize]); finally IEGlobalSettings().DefaultResampleFilter := WasResampleFilter; end; end; end; {$ENDIF} { TImageEnViewConvertToGray } constructor TImageEnViewConvertToGray.Create(AOwner: TComponent); begin inherited; ImageIndex := 30; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewConvertToGray.UpdateLanguage(); begin Caption := iemsg(IEMsg_ConvertToGray); Hint := iemsg(IEMsg_ReduceThecolorsOfTheimageTograyscale); end; procedure TImageEnViewConvertToGray.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.ConvertToGray; end; { TImageEnViewHistAutoEqualize } constructor TImageEnViewHistAutoEqualize.Create(AOwner: TComponent); begin inherited; ImageIndex := 32; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewHistAutoEqualize.UpdateLanguage(); begin Caption := iemsg(IEMsg_AutoEqualizeColors); Hint := iemsg(IEMsg_EqualizesTheColorHistogramForTheSelectedRegion); end; procedure TImageEnViewHistAutoEqualize.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.HistAutoEqualize; end; { TImageEnViewNegative } constructor TImageEnViewNegative.Create(AOwner: TComponent); begin inherited; ImageIndex := 31; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewNegative.UpdateLanguage(); begin Caption := iemsg(IEMsg_Negative); Hint := iemsg(IEMsg_InvertThecolorsOfTheimage); end; procedure TImageEnViewNegative.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.Negative; end; { TImageEnViewRemoveRedEyes } constructor TImageEnViewRemoveRedEyes.Create(AOwner: TComponent); begin inherited; ImageIndex := 33; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewRemoveRedEyes.UpdateLanguage(); begin Caption := iemsg(IEMsg_RemoveRedEyes); Hint := iemsg(IEMsg_RemoveTheRedeyeEffectFromTheSelection); end; procedure TImageEnViewRemoveRedEyes.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.RemoveRedEyes; end; { TImageEnViewSharpen } constructor TImageEnViewSharpen.Create(AOwner: TComponent); begin inherited; fIntensity := 10; fNeighbourhood := 4; ImageIndex := 34; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewSharpen.UpdateLanguage(); begin Caption := iemsg(IEMsg_Sharpen); Hint := iemsg(IEMsg_ApplyASharpeningFilterToTheImage); end; procedure TImageEnViewSharpen.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.Sharpen(fIntensity, fNeighbourhood); end; { TImageEnViewFlipHorizontal } constructor TImageEnViewFlipHorizontal.Create(AOwner: TComponent); begin inherited; ImageIndex := 16; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewFlipHorizontal.UpdateLanguage(); begin Caption := iemsg(IEMsg_FlipHorizontal); Hint := iemsg(IEMsg_FlipTheimageFromLeftToRight); end; procedure TImageEnViewFlipHorizontal.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.Flip(fdHorizontal); end; { TImageEnViewFlipVertical } constructor TImageEnViewFlipVertical.Create(AOwner: TComponent); begin inherited; ImageIndex := 17; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewFlipVertical.UpdateLanguage(); begin Caption := iemsg(IEMsg_FlipVertical); Hint := iemsg(IEMsg_FlipTheimageFromTopToBottom); end; procedure TImageEnViewFlipVertical.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.Flip(fdVertical); end; { TImageEnViewRotateRight } constructor TImageEnViewRotateRight.Create(AOwner: TComponent); begin inherited; ImageIndex := 15; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewRotateRight.UpdateLanguage(); begin Caption := iemsg(IEMsg_RotateRight); Hint := iemsg(IEMsg_RotateTheImage90Clockwise); end; procedure TImageEnViewRotateRight.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.Rotate(270, ierFast); end; { TImageEnViewRotate180 } constructor TImageEnViewRotate180.Create(AOwner: TComponent); begin inherited; ImageIndex := 14; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewRotate180.UpdateLanguage(); begin Caption := iemsg(IEMsg_Rotate180); Hint := iemsg(IEMsg_RotateTheImage180Clockwise); end; procedure TImageEnViewRotate180.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.Rotate(180, ierFast); end; { TImageEnViewRotateLeft } constructor TImageEnViewRotateLeft.Create(AOwner: TComponent); begin inherited; ImageIndex := 13; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewRotateLeft.UpdateLanguage(); begin Caption := iemsg(IEMsg_RotateLeft); Hint := iemsg(IEMsg_RotateTheImage90CounterClockwise); end; procedure TImageEnViewRotateLeft.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.Rotate(90, ierFast); end; { TImageEnViewCrop } constructor TImageEnViewCrop.Create(AOwner: TComponent); begin inherited; fRequireSelection := True; fRequireImage := True; ImageIndex := 47; UpdateLanguage(); end; procedure TImageEnViewCrop.UpdateLanguage(); begin Caption := iemsg(IEMsg_CropToSelection); Hint := iemsg(IEMsg_CropTheImageToTheCurrentSelection); end; procedure TImageEnViewCrop.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc and HaveSelection then begin ActiveImageEnProc.Crop(ActiveImageEnView.SelectedRect.x, ActiveImageEnView.SelectedRect.y, ActiveImageEnView.SelectedRect.x + ActiveImageEnView.SelectedRect.Width, ActiveImageEnView.SelectedRect.y + ActiveImageEnView.SelectedRect.Height ); if HaveActiveImageEnView then ActiveImageEnView.Deselect; end; end; { TImageEnViewCutToClipboard } constructor TImageEnViewCutToClipboard.Create(AOwner: TComponent); begin inherited; Shortcut := CTRL_X_SHORTCUT; ImageIndex := 1; fCutSource := iecpAuto; UpdateLanguage(); end; procedure TImageEnViewCutToClipboard.UpdateLanguage(); begin Caption := iemsg(IEMsg_Cut); Hint := iemsg(IEMsg_CutTheSelectionToTheClipboard); end; procedure TImageEnViewCutToClipboard.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then begin ActiveImageEnProc.CutToClipboard( fCutSource ); ActiveIELayerNotify(); end; end; procedure TImageEnViewCutToClipboard.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnProc then bEnabled := ActiveImageEnProc.CanCutToClipboard( fCutSource ); Enabled := bEnabled; end; { TImageEnViewCopyToClipboard } constructor TImageEnViewCopyToClipboard.Create(AOwner: TComponent); begin inherited; Shortcut := CTRL_C_SHORTCUT; ImageIndex := 0; fCopySource := iecpAuto; UpdateLanguage(); end; procedure TImageEnViewCopyToClipboard.UpdateLanguage(); begin Caption := iemsg(IEMsg_Copy); Hint := iemsg(IEMsg_CopyTheCurrentImageOrSelectionToTheClipboard); end; procedure TImageEnViewCopyToClipboard.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then ActiveImageEnProc.CopyToClipboard( fCopySource ); end; procedure TImageEnViewCopyToClipboard.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnProc then bEnabled := ActiveImageEnProc.CanCopyToClipboard( fCopySource ); Enabled := bEnabled; end; { TImageEnViewPasteFromClipboard } constructor TImageEnViewPasteFromClipboard.Create(AOwner: TComponent); begin inherited; Shortcut := CTRL_V_SHORTCUT; ImageIndex := 2; fPasteDest := iecpAuto; UpdateLanguage(); end; procedure TImageEnViewPasteFromClipboard.UpdateLanguage(); begin Caption := iemsg(IEMsg_Paste); Hint := iemsg(IEMsg_PasteFromTheClipboard); end; procedure TImageEnViewPasteFromClipboard.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then begin ActiveImageEnProc.PasteFromClipboard( fPasteDest ); ActiveIELayerNotify(); end; end; procedure TImageEnViewPasteFromClipboard.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnProc then bEnabled := ActiveImageEnProc.CanPasteFromClipboard( fPasteDest ); Enabled := bEnabled; end; { TImageEnViewSelCutToClip } {$ifdef IEIncludeDeprecatedInV6} // Deprecated in 7.0.0 (2017-02-03) constructor TImageEnViewSelCutToClip.Create(AOwner: TComponent); begin inherited; fRequireImage := True; fRequireSelection := True; Shortcut := CTRL_X_SHORTCUT; ImageIndex := 0; UpdateLanguage(); end; procedure TImageEnViewSelCutToClip.UpdateLanguage(); begin Caption := iemsg(IEMsg_CutSelection); Hint := iemsg(IEMsg_CutTheSelectionToTheClipboard); end; procedure TImageEnViewSelCutToClip.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc and HaveSelection then ActiveImageEnProc.CutToClipboard( iecpSelection ); end; {$endif} { TImageEnViewSelCopyToClip } {$ifdef IEIncludeDeprecatedInV6} // Deprecated in 7.0.0 (2017-02-03) constructor TImageEnViewSelCopyToClip.Create(AOwner: TComponent); begin inherited; fRequireSelection := True; ImageIndex := 1; UpdateLanguage(); end; procedure TImageEnViewSelCopyToClip.UpdateLanguage(); begin Caption := iemsg(IEMsg_CopySelection); Hint := iemsg(IEMsg_CopyTheCurrentSelectionToTheclipboard); end; procedure TImageEnViewSelCopyToClip.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc and HaveSelection then ActiveImageEnProc.CopyToClipboard( iecpSelection ); end; {$endif} { TImageEnViewUndo } constructor TImageEnViewUndo.Create(AOwner: TComponent); begin inherited; Shortcut := CTRL_Z_SHORTCUT; ImageIndex := 3; fShowUndoAction := False; UpdateLanguage(); end; procedure TImageEnViewUndo.UpdateLanguage(); begin Caption := iemsg(IEMsg_Undo); Hint := iemsg(IEMsg_UndoThelastAction); end; procedure TImageEnViewUndo.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then begin ActiveImageEnProc.Undo( True ); ActiveIELayerNotify(); end; end; procedure TImageEnViewUndo.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnProc then bEnabled := ActiveImageEnProc.CanUndo; Enabled := bEnabled; if fShowUndoAction and bEnabled then Caption := iemsg( IEMsg_Undo ) + ' ' + ActiveImageEnProc.UndoCaptions[ 0 ] else Caption := iemsg( IEMsg_Undo ); end; { TImageEnViewRedo } constructor TImageEnViewRedo.Create(AOwner: TComponent); begin inherited; Shortcut := CTRL_Y_SHORTCUT; ImageIndex := 4; fShowRedoAction := False; UpdateLanguage(); end; procedure TImageEnViewRedo.UpdateLanguage(); begin Caption := iemsg(IEMsg_Redo); Hint := iemsg(IEMsg_RedoTheLastActionThatWasUndone); end; procedure TImageEnViewRedo.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnProc then begin ActiveImageEnProc.Redo( True ); ActiveIELayerNotify(); end; end; procedure TImageEnViewRedo.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnProc then bEnabled := ActiveImageEnProc.CanRedo; Enabled := bEnabled; if fShowRedoAction and bEnabled then Caption := iemsg( IEMsg_Redo ) + ' ' + ActiveImageEnProc.RedoCaptions[ 0 ] else Caption := iemsg( IEMsg_Redo ); end; { TImageEnViewPromptToOpen } {$IFDEF IEINCLUDEOPENSAVEDIALOGS} constructor TImageEnViewPromptToOpen.Create(AOwner: TComponent); begin inherited; ShortCut := CTRL_O_SHORTCUT; ImageIndex := 7; fDefaultFilter := -1; fLimitToFileType := -1; UpdateLanguage(); end; procedure TImageEnViewPromptToOpen.UpdateLanguage(); begin Caption := iemsg(IEMsg_Open); Hint := iemsg(IEMsg_LoadAnImageFromFile); end; procedure TImageEnViewPromptToOpen.ExecuteTarget(Target: TObject); var sFilename: string; begin if HaveActiveImageEnIO then begin sFilename := ActiveImageEnIO.ExecuteOpenDialog('', '', false, 0, '', fDialogTitle, '', fDefaultFilter, fLimitToFileType); if sFilename <> '' then begin ActiveImageEnIO.LoadFromFile(sFilename); if HaveActiveImageEnProc and ActiveImageEnProc.AutoUndo then begin ActiveImageEnProc.ClearAllUndo(); ActiveImageEnProc.ClearAllRedo(); end; ActiveIELayerNotify(); end; end; end; function TImageEnViewPromptToOpen.GetFilename() : string; begin Result := ''; if HaveActiveImageEnIO then Result := ActiveImageEnIO.Params.FileName; end; procedure TImageEnViewPromptToOpen.SetFilename(const value: string); begin if HaveActiveImageEnIO then ActiveImageEnIO.Params.FileName := Value; end; {$ENDIF} { TImageEnViewSave } {$IFDEF IEINCLUDEOPENSAVEDIALOGS} constructor TImageEnViewSave.Create(AOwner: TComponent); begin inherited; fRequireImage := True; ShortCut := CTRL_S_SHORTCUT; ImageIndex := 8; fEnableOnlyWhenChanged := True; UpdateLanguage(); end; procedure TImageEnViewSave.UpdateLanguage(); begin Caption := iemsg(IEMsg_Save); Hint := iemsg(IEMsg_SaveChangesToThisImageToFile); end; procedure TImageEnViewSave.UpdateTarget(Target: TObject); var bEnabled: Boolean; begin bEnabled := BaseEnabled; if fEnableOnlyWhenChanged and bEnabled then bEnabled := ActiveImageEnView.Modified; Enabled := bEnabled; end; procedure TImageEnViewSave.ExecuteTarget(Target: TObject); var sFilename: string; begin if HaveActiveImageEnIO then begin sFilename := ActiveImageEnIO.Params.FileName; if sFilename = '' then sFilename := ActiveImageEnIO.ExecuteSaveDialog('', '', false); if sFilename <> '' then begin ActiveImageEnIO.SaveToFile(sFilename); ActiveImageEnView.Modified := False; end; end; end; function TImageEnViewSave.GetFilename() : string; begin Result := ''; if HaveActiveImageEnIO then Result := ActiveImageEnIO.Params.FileName; end; procedure TImageEnViewSave.SetFilename(const value: string); begin if HaveActiveImageEnIO then ActiveImageEnIO.Params.FileName := Value; end; {$ENDIF} { TImageEnViewPromptToSave } {$IFDEF IEINCLUDEOPENSAVEDIALOGS} constructor TImageEnViewPromptToSave.Create(AOwner: TComponent); begin inherited; fRequireImage := True; Shortcut := CTRL_ALT_S_SHORTCUT; ImageIndex := 9; fDefaultFilter := -1; fLimitToFileType := -1; UpdateLanguage(); end; procedure TImageEnViewPromptToSave.UpdateLanguage(); begin Caption := iemsg(IEMsg_SaveAs) + Menu_Ellipses; Hint := iemsg(IEMsg_SaveThisImageToANewFilename); end; procedure TImageEnViewPromptToSave.ExecuteTarget(Target: TObject); var sFilename: string; begin if HaveActiveImageEnIO then begin sFilename := ActiveImageEnIO.ExecuteSaveDialog('', '', false, 0, '', fDialogTitle, '', fDefaultFilter, fLimitToFileType); if sFilename <> '' then begin ActiveImageEnIO.SaveToFile(sFilename); ActiveImageEnView.Modified := False; end; end; end; function TImageEnViewPromptToSave.GetFilename() : string; begin Result := ''; if HaveActiveImageEnIO then Result := ActiveImageEnIO.Params.FileName; end; procedure TImageEnViewPromptToSave.SetFilename(const value: string); begin if HaveActiveImageEnIO then ActiveImageEnIO.Params.FileName := Value; end; {$ENDIF} { TImageEnViewDoIOPreviews } {$IFDEF IEINCLUDEDIALOGIO} constructor TImageEnViewDoIOPreviews.Create(AOwner: TComponent); begin inherited; fRequireImage := True; fPreviewParams := [ppAll]; ImageIndex := 10; UpdateLanguage(); end; procedure TImageEnViewDoIOPreviews.UpdateLanguage(); begin Caption := iemsg(IEMsg_SaveProperties) + Menu_Ellipses; Hint := iemsg(IEMsg_SpecifyAdvancedPropertiesForThisImage); end; procedure TImageEnViewDoIOPreviews.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.DoPreviews(fPreviewParams); end; {$ENDIF} { TImageEnViewDoPrintPreviewDialog } const // Print layers but not annotations Print_Annotations = False; Print_Layers = True; {$IFDEF IEINCLUDEPRINTDIALOGS} constructor TImageEnViewDoPrintPreviewDialog.Create(AOwner: TComponent); begin inherited; fRequireImage := True; fDialogType := iedtDialog; ShortCut := CTRL_P_SHORTCUT; ImageIndex := 27; UpdateLanguage(); end; procedure TImageEnViewDoPrintPreviewDialog.UpdateLanguage(); begin Caption := iemsg(IEMsg_PrintPreview) + Menu_Ellipses; Hint := iemsg(IEMsg_DisplayAPreviewOfThisImageForPrinting); end; procedure TImageEnViewDoPrintPreviewDialog.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.DoPrintPreviewDialog( fDialogType, '', Print_Annotations, '', Print_Layers ); end; {$ENDIF} { TImageEnViewPrintImageNormal } {$IFDEF IEINCLUDEPRINTDIALOGS} constructor TImageEnViewPrintImageNormal.Create(AOwner: TComponent); begin inherited; fRequireImage := True; ImageIndex := 26; UpdateLanguage(); end; procedure TImageEnViewPrintImageNormal.UpdateLanguage(); begin Caption := iemsg(IEMsg_Print); Hint := iemsg(IEMsg_PrintThisImageAtItsOriginalSize); end; procedure TImageEnViewPrintImageNormal.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then begin Printer.BeginDoc; ActiveImageEnIO.PrintImage(Printer.Canvas, 0, 0, 0, 0, ievpCenter, iehpCenter, iesNormal, 0, 0, 1, Print_Annotations, Print_Layers ); Printer.EndDoc; end; end; {$ENDIF} { TImageEnViewPrintImageFitToPage } {$IFDEF IEINCLUDEPRINTDIALOGS} constructor TImageEnViewPrintImageFitToPage.Create(AOwner: TComponent); begin inherited; fRequireImage := True; ImageIndex := 26; UpdateLanguage(); end; procedure TImageEnViewPrintImageFitToPage.UpdateLanguage(); begin Caption := iemsg(IEMsg_PrintToPage); Hint := iemsg(IEMsg_PrintThisImageToFitThePage); end; procedure TImageEnViewPrintImageFitToPage.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then begin Printer.BeginDoc; ActiveImageEnIO.PrintImage(Printer.Canvas, 0, 0, 0, 0, ievpCenter, iehpCenter, iesFitToPage, 0, 0, 1, Print_Annotations, Print_Layers ); Printer.EndDoc; end; end; {$ENDIF} { TImageEnViewSelectAcquireSource } {$IFDEF IEINCLUDEIEXACQUIRE} constructor TImageEnViewSelectAcquireSource.Create(AOwner: TComponent); begin inherited; fApis := [ieaTwain, ieaWIA]; ImageIndex := 38; UpdateLanguage(); end; procedure TImageEnViewSelectAcquireSource.UpdateLanguage(); begin Caption := iemsg(IEMsg_SelectAcquisitionSource) + Menu_Ellipses; Hint := iemsg(IEMsg_SelectTheCameraOrScannerToAcquireImagesFrom); end; procedure TImageEnViewSelectAcquireSource.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.SelectAcquireSource(fApis); end; {$ENDIF} { TImageEnViewAcquire } {$IFDEF IEINCLUDEIEXACQUIRE} constructor TImageEnViewAcquire.Create(AOwner: TComponent); begin inherited; ImageIndex := 37; UpdateLanguage(); end; procedure TImageEnViewAcquire.UpdateLanguage(); begin Caption := iemsg(IEMsg_Acquire) + Menu_Ellipses; Hint := iemsg(IEMsg_RetrieveAnImageFromACameraOrScanner); end; procedure TImageEnViewAcquire.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then begin SaveUndo( IEMsg( IEMsg_Acquire ), ieuImage, IEOP_OTHER ); ActiveImageEnIO.Acquire; end; end; {$ENDIF} { TImageEnViewSeekFirst } constructor TImageEnViewSeekFirst.Create(AOwner: TComponent); begin inherited; fRequireImage := True; ImageIndex := 18; UpdateLanguage(); end; procedure TImageEnViewSeekFirst.UpdateLanguage(); begin Caption := iemsg(IEMsg_FirstFrame); Hint := iemsg(IEMsg_DisplayTheFirstFrameOfThisImage); end; procedure TImageEnViewSeekFirst.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.Seek(ieioSeekFirst); end; procedure TImageEnViewSeekFirst.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnIO then bEnabled := (ActiveImageEnIO.Params.ImageCount > 1) and (ActiveImageEnIO.Params.ImageIndex > 0); Enabled := bEnabled; end; { TImageEnViewSeekPrior } constructor TImageEnViewSeekPrior.Create(AOwner: TComponent); begin inherited; fRequireImage := True; ImageIndex := 19; UpdateLanguage(); end; procedure TImageEnViewSeekPrior.UpdateLanguage(); begin Caption := iemsg(IEMsg_PreviousFrame); Hint := iemsg(IEMsg_DisplayThePriorFrameOfThisImage); end; procedure TImageEnViewSeekPrior.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.Seek(ieioSeekPrior); end; procedure TImageEnViewSeekPrior.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnIO then bEnabled := (ActiveImageEnIO.Params.ImageCount > 1) and (ActiveImageEnIO.Params.ImageIndex > 0); Enabled := bEnabled; end; { TImageEnViewSeekNext } constructor TImageEnViewSeekNext.Create(AOwner: TComponent); begin inherited; fRequireImage := True; ImageIndex := 20; UpdateLanguage(); end; procedure TImageEnViewSeekNext.UpdateLanguage(); begin Caption := iemsg(IEMsg_NextFrame); Hint := iemsg(IEMsg_DisplayTheNextFrameOfThisImage); end; procedure TImageEnViewSeekNext.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.Seek(ieioSeekNext); end; procedure TImageEnViewSeekNext.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnIO then bEnabled := (ActiveImageEnIO.Params.ImageCount > 1) and (ActiveImageEnIO.Params.ImageIndex < ActiveImageEnIO.Params.ImageCount - 1); Enabled := bEnabled; end; { TImageEnViewSeekLast } constructor TImageEnViewSeekLast.Create(AOwner: TComponent); begin inherited; fRequireImage := True; ImageIndex := 21; UpdateLanguage(); end; procedure TImageEnViewSeekLast.UpdateLanguage(); begin Caption := iemsg(IEMsg_LastFrame); Hint := iemsg(IEMsg_DisplayTheLastFrameOfThisImage); end; procedure TImageEnViewSeekLast.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnIO then ActiveImageEnIO.Seek(ieioSeekLast); end; procedure TImageEnViewSeekLast.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled and HaveActiveImageEnIO then bEnabled := (ActiveImageEnIO.Params.ImageCount > 1) and (ActiveImageEnIO.Params.ImageIndex < ActiveImageEnIO.Params.ImageCount - 1); Enabled := bEnabled; end; { TImageEnViewShowRulers } constructor TImageEnViewShowRulers.Create(AOwner: TComponent); begin inherited; fRulers := [rdHorizontal, rdVertical]; ImageIndex := 132; UpdateLanguage(); end; procedure TImageEnViewShowRulers.UpdateLanguage(); begin Caption := iemsg( IEMsg_ShowRulers ); Hint := iemsg( IEMsg_ShowMeasurementRulersBesideImage ); end; procedure TImageEnViewShowRulers.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView = False then exit; if ActiveImageEnView.ShowRulers = fRulers then ActiveImageEnView.ShowRulers := [] else ActiveImageEnView.ShowRulers := fRulers; end; procedure TImageEnViewShowRulers.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.ShowRulers = fRulers else Checked := False; end; procedure TImageEnViewShowRulers.SetRulers(Value : TRulerDirs); begin if Value = [] then Value := [rdHorizontal, rdVertical]; fRulers := Value; if HaveActiveImageEnView and ( ActiveImageEnView.ShowRulers <> [] ) then ActiveImageEnView.ShowRulers := fRulers; end; { TImageEnViewShowUnitsBase } constructor TImageEnViewShowUnitsBase.Create(AOwner: TComponent); begin inherited; // end; procedure TImageEnViewShowUnitsBase.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.RulerParams.Units := fUnit; end; procedure TImageEnViewShowUnitsBase.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ActiveImageEnView.ShowRulers <> []; Enabled := bEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.RulerParams.Units = fUnit; end; { TImageEnViewRulerUnitsPixels } constructor TImageEnViewRulerUnitPixels.Create(AOwner: TComponent); begin inherited; ImageIndex := 133; fUnit := ieruPixels; UpdateLanguage(); end; procedure TImageEnViewRulerUnitPixels.UpdateLanguage(); begin Caption := iemsg( IEMsg_CapPixels ); Hint := iemsg( IEMsg_ShowRulerInPixels ); end; { TImageEnViewRulerUnitInches } constructor TImageEnViewRulerUnitInches.Create(AOwner: TComponent); begin inherited; ImageIndex := 134; fUnit := ieruInches; UpdateLanguage(); end; procedure TImageEnViewRulerUnitInches.UpdateLanguage(); begin Caption := iemsg( IEMsg_CapInches ); Hint := iemsg( IEMsg_ShowRulerInInches ); end; { TImageEnViewRulerUnitMillimeters } constructor TImageEnViewRulerUnitMillimeters.Create(AOwner: TComponent); begin inherited; ImageIndex := 135; fUnit := ieruMillimeters; UpdateLanguage(); end; procedure TImageEnViewRulerUnitMillimeters.UpdateLanguage(); begin Caption := iemsg( IEMsg_Millimeters ); Hint := iemsg( IEMsg_ShowRulerInMillimeters ); end; { TImageEnViewRulerUnitCentimeters } constructor TImageEnViewRulerUnitCentimeters.Create(AOwner: TComponent); begin inherited; ImageIndex := 136; fUnit := ieruCentimeters; UpdateLanguage(); end; procedure TImageEnViewRulerUnitCentimeters.UpdateLanguage(); begin Caption := iemsg( IEMsg_Centimeters ); Hint := iemsg( IEMsg_ShowRulerInCentimeters ); end; { TImageEnViewCropToolEnable } constructor TImageEnViewCropToolEnable.Create(AOwner: TComponent); begin inherited; ImageIndex := 138; fCropMode := iectmRECTANGLE; fWasMouseInteract := [ miZoom ]; fWasCursor := crIEZoomIn; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewCropToolEnable.UpdateLanguage(); begin Caption := iemsg(IEMsg_EnableCropping); Hint := iemsg(IEMsg_EnableCropping); end; procedure TImageEnViewCropToolEnable.ExecuteTarget(Target: TObject); var enableCrop: Boolean; begin if HaveActiveImageEnView = False then exit; enableCrop := not (ActiveImageEnView.MouseInteract = [ miCropTool ]); // Toggle current selection if enableCrop then begin fWasMouseInteract := ActiveImageEnView.MouseInteract; fWasCursor := ActiveImageEnView.Cursor; ActiveImageEnView.CropToolInteraction.Mode := fCropMode; ActiveImageEnView.MouseInteract := [ miCropTool ]; ActiveImageEnView.Cursor := crIECrossSight; end else begin ActiveImageEnView.MouseInteract := fWasMouseInteract; ActiveImageEnView.Cursor := fWasCursor; end; end; procedure TImageEnViewCropToolEnable.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled; if HaveActiveImageEnView then Checked := ActiveImageEnView.MouseInteract = [ miCropTool ] else Checked := False; end; procedure TImageEnViewCropToolEnable.SetCropMode(Value : TIECropToolInteractionMode); begin fCropMode := Value; if HaveActiveImageEnView and ( ActiveImageEnView.CropToolInteraction.Mode <> fCropMode ) then begin ActiveImageEnView.CropToolInteraction.Mode := fCropMode; ActiveImageEnView.Invalidate(); end; end; { TImageEnViewCropToolEnactCrop } constructor TImageEnViewCropToolEnactCrop.Create(AOwner: TComponent); begin inherited; ImageIndex := 139; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewCropToolEnactCrop.UpdateLanguage(); begin Caption := iemsg(IEMsg_CropToSelection); Hint := iemsg(IEMsg_CropTheImageToTheCurrentSelection); end; procedure TImageEnViewCropToolEnactCrop.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.CropToolInteraction.Crop(); end; procedure TImageEnViewCropToolEnactCrop.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ( ActiveImageEnView.MouseInteract = [ miCropTool ] ) and ( ActiveImageEnView.CropToolInteraction.Selected ); Enabled := bEnabled; end; { TImageEnViewCropToolCancelCrop } constructor TImageEnViewCropToolCancelCrop.Create(AOwner: TComponent); begin inherited; ImageIndex := 140; fRequireImage := True; UpdateLanguage(); end; procedure TImageEnViewCropToolCancelCrop.UpdateLanguage(); begin Caption := iemsg(IEMsg_CancelCropping); Hint := iemsg(IEMsg_ClearTheCurrentCropSelection); end; procedure TImageEnViewCropToolCancelCrop.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then ActiveImageEnView.CropToolInteraction.Cancel(); end; procedure TImageEnViewCropToolCancelCrop.UpdateTarget(Target: TObject); var bEnabled: boolean; begin bEnabled := BaseEnabled; if bEnabled then bEnabled := ( ActiveImageEnView.MouseInteract = [ miCropTool ] ) and ( ActiveImageEnView.CropToolInteraction.Selected ); Enabled := bEnabled; end; { TImageEnViewLayersAlign } constructor TImageEnViewLayersAlign.Create(AOwner: TComponent); begin inherited; // end; procedure TImageEnViewLayersAlign.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView then begin SaveUndoState(); ActiveImageEnView.LayersAlign( fAlignment ); RestoreUndoState(); if fAlignment in [ ilaMatchWidth, ilaMatchHeight ] then ActiveIELayerNotify( ielResized ) else ActiveIELayerNotify( ielMoved ); end; end; procedure TImageEnViewLayersAlign.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( ActiveIELayersSelCount() > 1 ); end; { TImageEnViewLayersAlignLeftEdges } constructor TImageEnViewLayersAlignLeftEdges.Create(AOwner: TComponent); begin inherited; fAlignment := ilaAlignLeftEdges; ImageIndex := 146; UpdateLanguage(); end; procedure TImageEnViewLayersAlignLeftEdges.UpdateLanguage(); begin Caption := iemsg(IEMsg_AlignLeftEdges); Hint := iemsg(IEMsg_AlignSelectedLayersToTheEdgeOfTheLeftmostLayer); end; { TImageEnViewLayersAlignRightEdges } constructor TImageEnViewLayersAlignRightEdges.Create(AOwner: TComponent); begin inherited; fAlignment := ilaAlignRightEdges; ImageIndex := 147; UpdateLanguage(); end; procedure TImageEnViewLayersAlignRightEdges.UpdateLanguage(); begin Caption := iemsg(IEMsg_AlignRightEdges); Hint := iemsg(IEMsg_AlignSelectedLayersToTheEdgeOfTheRightmostLayer); end; { TImageEnViewLayersAlignTopEdges } constructor TImageEnViewLayersAlignTopEdges.Create(AOwner: TComponent); begin inherited; fAlignment := ilaAlignTopEdges; ImageIndex := 148; UpdateLanguage(); end; procedure TImageEnViewLayersAlignTopEdges.UpdateLanguage(); begin Caption := iemsg(IEMsg_AlignTopEdges); Hint := iemsg(IEMsg_AlignSelectedLayersToTheEdgeOfTheTopmostLayer); end; { TImageEnViewLayersAlignBottomEdges } constructor TImageEnViewLayersAlignBottomEdges.Create(AOwner: TComponent); begin inherited; fAlignment := ilaAlignBottomEdges; ImageIndex := 149; UpdateLanguage(); end; procedure TImageEnViewLayersAlignBottomEdges.UpdateLanguage(); begin Caption := iemsg(IEMsg_AlignBottomEdges); Hint := iemsg(IEMsg_AlignSelectedLayersToTheEdgeOfTheBottommostLayer); end; { TImageEnViewLayersAlignHorizontalCenters } constructor TImageEnViewLayersAlignHorizontalCenters.Create(AOwner: TComponent); begin inherited; fAlignment := ilaAlignHorizontalCenters; ImageIndex := 150; UpdateLanguage(); end; procedure TImageEnViewLayersAlignHorizontalCenters.UpdateLanguage(); begin Caption := iemsg(IEMsg_AlignHorizontalCenters); Hint := iemsg(IEMsg_AlignSelectedLayersToHaveTheSameHorizontalCenter); end; { TImageEnViewLayersAlignVerticalCenters } constructor TImageEnViewLayersAlignVerticalCenters.Create(AOwner: TComponent); begin inherited; fAlignment := ilaAlignVerticalCenters; ImageIndex := 151; UpdateLanguage(); end; procedure TImageEnViewLayersAlignVerticalCenters.UpdateLanguage(); begin Caption := iemsg(IEMsg_AlignVerticalCenters); Hint := iemsg(IEMsg_AlignSelectedLayersToHaveTheSameVerticalCenter); end; { TImageEnViewLayersMatchWidth } constructor TImageEnViewLayersMatchWidth.Create(AOwner: TComponent); begin inherited; fAlignment := ilaMatchWidth; ImageIndex := 152; UpdateLanguage(); end; procedure TImageEnViewLayersMatchWidth.UpdateLanguage(); begin Caption := iemsg(IEMsg_MatchWidth); Hint := iemsg(IEMsg_ResizeAllSelectedLayersToTheWidthOfTheWidestLayer); end; { TImageEnViewLayersMatchHeight } constructor TImageEnViewLayersMatchHeight.Create(AOwner: TComponent); begin inherited; fAlignment := ilaMatchHeight; ImageIndex := 153; UpdateLanguage(); end; procedure TImageEnViewLayersMatchHeight.UpdateLanguage(); begin Caption := iemsg(IEMsg_MatchHeight); Hint := iemsg(IEMsg_ResizeAllSelectedLayersToTheHeightOfTheTallestLayer); end; { TIELayerSoftShadow } constructor TIELayerSoftShadow.Create(AOwner: TComponent); begin inherited; ImageIndex := 160; fRadius := 3; fIntensity := 100; fShadowColor := CreateRGB(0, 0, 0); fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TIELayerSoftShadow.UpdateLanguage(); begin Caption := iemsg( IEMsg_SoftShadow ); Hint := iemsg( IEMsg_AddASoftShadowToTheSelectedLayer ); end; procedure TIELayerSoftShadow.ExecuteTarget(Target: TObject); var I: Integer; enableSS: Boolean; begin if HaveActiveImageEnView() = False then exit; SaveUndo( IEMsg( IEMsg_SoftShadow ), ieuLayer, IEOP_LAYERPROPS ); enableSS := not FirstSelectedLayer.SoftShadow.Enabled; for I := 0 to ActiveImageEnView.LayersCount - 1 do if ActiveImageEnView.Layers[ I ].Selected then begin ActiveImageEnView.Layers[ I ].SoftShadow.Enabled := enableSS; ActiveImageEnView.Layers[ I ].SoftShadow.Radius := fRadius; ActiveImageEnView.Layers[ I ].SoftShadow.Intensity := fIntensity; ActiveImageEnView.Layers[ I ].SoftShadow.ShadowColor := fShadowColor; end; ActiveImageEnView.Update(); ActiveIELayerNotify(); end; procedure TIELayerSoftShadow.UpdateTarget(Target: TObject); var isEnabled: boolean; begin isEnabled := BaseEnabled; // Shadows not supported for background layer if isEnabled and ( ActiveIELayersSelCount = 1 ) and ( FirstSelectedLayer.GetIndex() = 0 ) then isEnabled := False; Enabled := isEnabled; if isEnabled then Checked := FirstSelectedLayer.SoftShadow.Enabled else Checked := False; end; { TIEImageLayerExecuteOpenDialog } constructor TIEImageLayerExecuteOpenDialog.Create(AOwner: TComponent); begin inherited; ImageIndex := 163; fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TIEImageLayerExecuteOpenDialog.UpdateLanguage(); begin Caption := iemsg( IEMsg_SelectImage ); Hint := iemsg( IEMsg_BrowseForAnImageToLoadIntoTheLayer ); end; procedure TIEImageLayerExecuteOpenDialog.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView() and ( FirstSelectedLayer is TIEImageLayer ) then if TIEImageLayer( FirstSelectedLayer ).ExecuteOpenDialog() then ActiveIELayerNotify(); end; procedure TIEImageLayerExecuteOpenDialog.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( FirstSelectedLayer is TIEImageLayer ); end; { TIEImageLayerExecuteOpenDialog } constructor TIELayerEditText.Create(AOwner: TComponent); begin inherited; ImageIndex := 173; fRequireSelectedLayer := True; fUseDialog := True; UpdateLanguage(); end; procedure TIELayerEditText.UpdateLanguage(); begin Caption := iemsg( IEMsg_EditLayerText ); Hint := iemsg( IEMsg_EditTheTextOfTheSelectedLayer ); end; procedure TIELayerEditText.ExecuteTarget(Target: TObject); var lyr: TIELayer; currText, newText: string; begin if HaveActiveImageEnView() = False then exit; lyr := FirstSelectedLayer; if fUseDialog = False then begin ActiveImageEnView().LayersActivateTextEditor( lyr.GetIndex ); end else begin if lyr is TIELineLayer then currText := TIELineLayer( lyr ).LabelText else if lyr is TIETextLayer then currText := TIETextLayer( lyr ).Text else exit; newText := InputBox(iemsg(IEMsg_EditLayerText), iemsg(IEMsg_EditLayerText) + ':', currText); if newText = currText then exit; SaveUndo( IEMsg( IEMsg_EditLayerText ), ieuLayer, IEOP_LAYERPROPS ); if lyr is TIELineLayer then begin TIELineLayer( lyr ).LabelText := newText; if ( newText <> '' ) and ( TIELineLayer( lyr ).LabelPosition = ielpHide ) then TIELineLayer( lyr ).LabelPosition := ielpAtEnd; end else if lyr is TIETextLayer then TIETextLayer( lyr ).Text := newText; ActiveImageEnView.Update(); ActiveIELayerNotify(); end; end; procedure TIELayerEditText.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( FirstSelectedLayer.Kind in [ ielkText, ielkLine ]); end; { TIELayerRotateLeft } constructor TIELayerRotateLeft.Create(AOwner: TComponent); begin inherited; ImageIndex := 13; fRequireSelectedLayer := True; fRotateDegrees := 45; UpdateLanguage(); end; procedure TIELayerRotateLeft.UpdateLanguage(); begin Caption := iemsg( IEMsg_RotateLeft ); Hint := iemsg( IEMsg_RotateTheLayerCounterClockwise ); end; procedure TIELayerRotateLeft.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView() then begin SaveUndoState(); ActiveImageEnView.LayersRotateAll( fRotateDegrees, True); RestoreUndoState(); ActiveIELayerNotify( ielRotated ); end; end; { TIELayerRotateRight } constructor TIELayerRotateRight.Create(AOwner: TComponent); begin inherited; ImageIndex := 15; fRotateDegrees := 45; fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TIELayerRotateRight.UpdateLanguage(); begin Caption := iemsg( IEMsg_RotateRight ); Hint := iemsg( IEMsg_RotateTheLayerClockwise ); end; procedure TIELayerRotateRight.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView() then begin SaveUndoState(); ActiveImageEnView.LayersRotateAll( -1 * fRotateDegrees, True); RestoreUndoState(); ActiveIELayerNotify( ielRotated ); end; end; { TIELayerConvertToImageLayer } constructor TIELayerConvertToImageLayer.Create(AOwner: TComponent); begin inherited; ImageIndex := 165; fRequireSelectedLayer := True; fQualityFactor := 2; fCropAlpha := True; fConvertImages := True; UpdateLanguage(); end; procedure TIELayerConvertToImageLayer.UpdateLanguage(); begin Caption := iemsg( IEMsg_ConvertToImageLayer ); Hint := iemsg( IEMsg_ConvertTheLayerToAnImage ); end; procedure TIELayerConvertToImageLayer.ExecuteTarget(Target: TObject); begin if HaveActiveImageEnView() then begin SaveUndoState(); ActiveImageEnView.LayersConvertToImageLayers( LYR_SELECTED_LAYERS, fQualityFactor, fCropAlpha, fConvertImages ); RestoreUndoState(); ActiveIELayerNotify(); end; end; procedure TIELayerConvertToImageLayer.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( fConvertImages or ( FirstSelectedLayer.Kind <> ielkImage )); end; { TIELineLayerShowLabel } constructor TIELineLayerShowLabel.Create(AOwner: TComponent); begin inherited; ImageIndex := 172; fRequireSelectedLayer := True; UpdateLanguage(); end; procedure TIELineLayerShowLabel.UpdateLanguage(); begin Caption := iemsg( IEMsg_ShowLabel ); Hint := iemsg( IEMsg_AttachATextLabelToThisLine ); end; procedure TIELineLayerShowLabel.ExecuteTarget(Target: TObject); var I: Integer; labelViz: Boolean; setText: String; begin if HaveActiveImageEnView() = False then exit; SaveUndo( IEMsg( IEMsg_ShowLabel ), ieuLayer, IEOP_LAYERPROPS ); // make it visible? labelViz := ( TIELineLayer( FirstSelectedLayer).LabelPosition = ielpHide ) or ( TIELineLayer( FirstSelectedLayer).LabelText = '' ); setText := IEGlobalSettings().DefaultLayerText; if setText = '' then setText := ' '; // Label must have text to make it visible for I := 0 to ActiveImageEnView.LayersCount - 1 do if ActiveImageEnView.Layers[ I ].Selected and ( ActiveImageEnView.Layers[ I ] is TIELineLayer ) then with TIELineLayer( ActiveImageEnView.Layers[ I ] ) do begin if labelViz = False then LabelPosition := ielpHide else if LabelPosition = ielpHide then LabelPosition := ielpAtEnd; if labelViz and ( LabelText = '' ) then LabelText := setText; end; ActiveImageEnView.Update(); ActiveIELayerNotify(); end; procedure TIELineLayerShowLabel.UpdateTarget(Target: TObject); begin Enabled := BaseEnabled and ( FirstSelectedLayer is TIELineLayer ); if Enabled then Checked := ( TIELineLayer( FirstSelectedLayer ).LabelPosition <> ielpHide ) and ( TIELineLayer( FirstSelectedLayer ).LabelText <> '' ) else Checked := False; end; { TIELayersSetPropertiesAction } constructor TIELayersSetPropertiesAction.Create(AOwner: TComponent); begin inherited; fRequireSelectedLayer := True; end; procedure TIELayersSetPropertiesAction.UpdateLanguage(); begin // end; function TIELayersSetPropertiesAction.IsChecked(): Boolean; begin Result := False; if HaveActiveImageEnView() = False then exit; if Self is TIELayerVisible then Result := FirstSelectedLayer.Visible else if Self is TIELayerAspectRatioLocked then Result := FirstSelectedLayer.AspectRatioLocked else if Self is TIELayerLocked then Result := FirstSelectedLayer.Locked else if Self is TIELayerCropped then Result := FirstSelectedLayer.Cropped else if Self is TIEPolylineLayerPolylineClosed and ( FirstSelectedLayer is TIEPolylineLayer ) then Result := TIEPolylineLayer( FirstSelectedLayer ).PolylineClosed // Don't need for: TIELayerSizeToFit, TIEImageLayerRestoreSize, TIELayerRestoreAspectRatio, TIELayerResetRotate end; procedure TIELayersSetPropertiesAction.ExecuteTarget(Target: TObject); var newValue: string; begin if HaveActiveImageEnView() then begin if Self is TIELayerResetRotate then newValue := IntToStr( 0 ) else newValue := IEBool2StrS( not IsChecked()); ActiveImageEnView.LayersSetPropertiesEx( LYR_SELECTED_LAYERS, nil, fLayerProp, newValue, loAutoUndoChangesbyUser in ActiveImageEnView.LayerOptions, fUndoMessage); if ( Self is TIELayerAspectRatioLocked ) or ( Self is TIEImageLayerRestoreSize ) or ( Self is TIELayerRestoreAspectRatio ) or ( Self is TIELayerSizeToFit ) then ActiveIELayerNotify( ielResized ) else if Self is TIELayerResetRotate then ActiveIELayerNotify( ielRotated ) else // For: TIELayerVisible, TIEPolylineLayerPolylineClosed, TIELayerCropped, TIELineLayerShowLabel, TIELayerLocked ActiveIELayerNotify(); end; end; procedure TIELayersSetPropertiesAction.UpdateTarget(Target: TObject); begin if Self is TIELayerSizeToFit then Enabled := BaseEnabled and ( FirstSelectedLayer.Kind in [ ielkText, ielkLine ]) else if Self is TIEImageLayerRestoreSize then Enabled := BaseEnabled and ( FirstSelectedLayer is TIEImageLayer ) else if Self is TIEPolylineLayerPolylineClosed then Enabled := BaseEnabled and ( FirstSelectedLayer is TIEPolylineLayer ) else if Self is TIELayerResetRotate then Enabled := BaseEnabled and ( FirstSelectedLayer.Rotate <> 0 ) else Enabled := BaseEnabled; if Enabled then Checked := IsChecked(); end; { TIELayerVisible } constructor TIELayerVisible.Create(AOwner: TComponent); begin inherited; ImageIndex := 161; fLayerProp := IELP_Visible; UpdateLanguage(); end; procedure TIELayerVisible.UpdateLanguage(); begin Caption := iemsg( IEMsg_Visible ); Hint := iemsg( IEMsg_DisplayTheCurrentLayer ); fUndoMessage := iemsg( IEMsg_Visible ); end; { TIELayerAspectRatioLocked } constructor TIELayerAspectRatioLocked.Create(AOwner: TComponent); begin inherited; ImageIndex := 156; fLayerProp := IELP_AspectRatioLocked; UpdateLanguage(); end; procedure TIELayerAspectRatioLocked.UpdateLanguage(); begin Caption := iemsg( IEMsg_LockAspectRatio ); Hint := iemsg( IEMsg_PreventResizingFromAffectingTheAspectRatioOfTheSelectedLayer ); fUndoMessage := iemsg( IEMsg_LockAspectRatio ); end; { TIELayerLocked } constructor TIELayerLocked.Create(AOwner: TComponent); begin inherited; ImageIndex := 157; fLayerProp := IELP_Locked; UpdateLanguage(); end; procedure TIELayerLocked.UpdateLanguage(); begin Caption := iemsg( IEMsg_LockPosition ); Hint := iemsg( IEMsg_PreventMovementOfTheSelectedLayer ); fUndoMessage := iemsg( IEMsg_LockPosition ); end; { TIELayerSizeToFit } constructor TIELayerSizeToFit.Create(AOwner: TComponent); begin inherited; ImageIndex := 159; fLayerProp := IELP_SizeToFit; UpdateLanguage(); end; procedure TIELayerSizeToFit.UpdateLanguage(); begin Caption := iemsg( IEMsg_SizeToFit ); Hint := iemsg( IEMsg_ResizeTheLayerToMatchItsContent ); fUndoMessage := iemsg( IEMsg_SizeToFit ); end; { TIEImageLayerRestoreSize } constructor TIEImageLayerRestoreSize.Create(AOwner: TComponent); begin inherited; ImageIndex := 162; fLayerProp := IELP_RestoreSize; UpdateLanguage(); end; procedure TIEImageLayerRestoreSize.UpdateLanguage(); begin Caption := iemsg( IEMsg_ResetSize ); Hint := iemsg( IEMsg_RestoreTheOriginalSizeOfTheSelectedLayer ); fUndoMessage := iemsg( IEMsg_ResetSize ); end; { TIELayerRestoreAspectRatio } constructor TIELayerRestoreAspectRatio.Create(AOwner: TComponent); begin inherited; ImageIndex := 158; fLayerProp := IELP_RestorePreferredAspectRatio; UpdateLanguage(); end; procedure TIELayerRestoreAspectRatio.UpdateLanguage(); begin Caption := iemsg( IEMsg_RestoreAspectRatio ); Hint := iemsg( IEMsg_RestoreTheOriginalAspectRatioOfTheSelectedLayer ); fUndoMessage := iemsg( IEMsg_RestoreAspectRatio ); end; procedure TIELayerRestoreAspectRatio.SetPreferredOnly(Value: Boolean); begin if value then fLayerProp := IELP_RestorePreferredAspectRatio else fLayerProp := IELP_RestoreAspectRatio end; function TIELayerRestoreAspectRatio.GetPreferredOnly(): Boolean; begin Result := fLayerProp = IELP_RestorePreferredAspectRatio; end; { TIELayerCropped } constructor TIELayerCropped.Create(AOwner: TComponent); begin inherited; ImageIndex := 171; fLayerProp := IELP_Cropped; UpdateLanguage(); end; procedure TIELayerCropped.UpdateLanguage(); begin Caption := iemsg( IEMsg_CropLayerToBackground ); Hint := iemsg( IEMsg_HideAnyPartOfTheSelectedLayerLyingOutsideTheBackground ); fUndoMessage := iemsg( IEMsg_CropLayerToBackground ); end; { TIEPolylineLayerPolylineClosed } constructor TIEPolylineLayerPolylineClosed.Create(AOwner: TComponent); begin inherited; ImageIndex := 164; fLayerProp := IELP_PolylineClosed; UpdateLanguage(); end; procedure TIEPolylineLayerPolylineClosed.UpdateLanguage(); begin Caption := iemsg( IEMsg_ClosePolyline ); Hint := iemsg( IEMsg_JoinTheFirstAndLastPointsOfThePolylineToCreateAPolygon ); fUndoMessage := iemsg( IEMsg_ClosePolyline ); end; { TIELayerResetRotate } constructor TIELayerResetRotate.Create(AOwner: TComponent); begin inherited; ImageIndex := 174; fLayerProp := IELP_Rotate; UpdateLanguage(); end; procedure TIELayerResetRotate.UpdateLanguage(); begin Caption := iemsg( IEMsg_ResetRotation ); Hint := iemsg( IEMsg_ResetTheRotationOfTheSelectedLayer ); fUndoMessage := iemsg( IEMsg_ResetRotation ); end; {$ELSE} // {$IFDEF IEINCLUDEACTIONS}} interface implementation {$ENDIF} {!! TImageEnView Actions ImageEn includes a large set of actions for ImageEnView, ImageEnMView , ImageEnFolderMView and ImageEnVect components to allow you to rapidly develop your UI. To use actions: 1. Add a TActionList component to your form 2. Double-click your TActionList to open it 3. Select "New Standard Action" 4. Scroll down to the ImageEnView actions, select the ones you require and click OK 5. Select your actions and set the ImageEnView property to your component 6. Assign the actions to menu items and buttons Demos Demos\Other\Actions\Actions.dpr Demos\Other\Actions_Layers\Actions.dpr Notes: - You must set the ImageEnView property of the actions - You can set to localize the actions - See the list of the default ImageIndexes if you are planning to add graphics to your actions General Actions Action Name Description Associated Method Extra Properties TImageEnViewAutoShrink Auto-Shrink Display large images at the window size - TImageEnViewAutoStretch Auto-Stretch Display small images at the window size - TImageEnViewBlank Clear Clear the image - TImageEnViewClearAll Clear All Clear the image and layers - TImageEnViewDeselect Deselect Clear your selection - TImageEnViewFit Fit Image Display the image at the size of the window - TImageEnViewFitToHeight Fit Image to Height Display the image at the height of the window - TImageEnViewFitToWidth Fit Image to Width Display the image at the width of the window - TImageEnViewEnableAdjustOrientation Auto-Rotate Display Automatically display image with the correct orientation - TImageEnViewPlaying Animate Display the animation of a GIF or AVI file - TImageEnViewPlayLoop Loop Playback Continuously loop the playback of a GIF or AVI file " - TImageEnViewShowRulers Show Rulers Show measurement rulers beside image - TImageEnViewRulerUnitPixels Pixels Show ruler in pixels - TImageEnViewRulerUnitInches Inches Show ruler in onches - TImageEnViewRulerUnitMillimeters Millimeters Show ruler in millimeters - TImageEnViewRulerUnitCentimeters Centimeters Show ruler in centimeters - TImageEnViewZoomIn Zoom In Display the image larger - TImageEnViewZoomOut Zoom Out Display the image smaller - TImageEnViewZoomFullSize Zoom to Full Size Display the image at full size - TImageEnViewSetZoom Zoom to x% Display the image at x% Zoom Zoom
Layer Actions Action Name Description Associated Method Extra Properties TImageEnViewLayersAdd Add Layer Add a new layer to this image * LayerKind TImageEnViewImageLayersAdd Add Image Layer Add a new image layer to this image * - TImageEnViewShapeLayersAdd Add Shape Layer Add a new shape layer to this image * TImageEnViewLineLayersAdd Add Line Layer Add a new line layer to this image * - TImageEnViewPolylineLayersAdd Add Polyline Layer Add a new polyline layer to this image * - TImageEnViewTextLayersAdd Add Text Layer Add a new text layer to this image * TIETextLayer.Text>DefaultText TImageEnViewLayersCreateFromFile Load File as Layer... Prompts for an image file and loads it as a new layer - TImageEnViewLayersCropBackground/C> Crop Background to Selection Crop the background image to match selected layers FillAlpha, AllowReduce, AllowEnlarge TImageEnViewLayersDeselectAll Deselect All Layers Deselect all layers of the image - TImageEnViewLayersFastDrawing Fast Preview Reduce preview quality to improve performance , , , DelayedHighQuality, TImageEnViewLayersMerge Merge Layers Merge selected layers into a single layer - TImageEnViewLayersMergeAll Merge All Layers Merge all layers of the image into a single layer - TImageEnViewLayersPromptToOpen Open Load layers from a file , DialogTitle, LockToIEN, TImageEnViewLayersPromptToSave Save as Save layers to a new filename , DialogTitle, LockToIEN, TImageEnViewLayersRemoveCurrent Remove Layer Remove the selected layers from the image - TImageEnViewLayersSave Save Save changes to file EnableOnlyWhenChanged, TImageEnViewLayersSelectAll Select All Layers Select all layers of the image -
Layer Alignment Actions Action Name Description Associated Method Extra Properties TImageEnViewLayersAlignLeftEdges Align on Left Align selected layers to the edge of the left-most layer ilaAlignLeftEdges - TImageEnViewLayersAlignRightEdges Align on Right Align selected layers to the edge of the right-most layer ilaAlignRightEdges - TImageEnViewLayersAlignTopEdges Align Tops Align selected layers to the edge of the top-most layer ilaAlignTopEdges - TImageEnViewLayersAlignBottomEdges Align Bottoms Align selected layers to the edge of the bottom-most layer ilaAlignBottomEdges - TImageEnViewLayersAlignHorizontalCenters Align Horizontal Centers Align selected layers to have the same horizontal center ilaAlignHorizontalCenters - TImageEnViewLayersAlignVerticalCenters Align Vertical Centers Align selected layers to have the same vertical center ilaAlignVerticalCenters - TImageEnViewLayersMatchWidth Match Widths Resize all selected layers to the width of the widest layer ilaMatchWidth - TImageEnViewLayersMatchHeight Match Heights Resize all selected layers to the height of the tallest layer ilaMatchHeight -
Layer Property Actions TIELayerAspectRatioLocked Lock Aspect Ratio Prevent resizing from affecting the aspect ratio of the selected layer - TIELayerConvertToImageLayer Convert to Image Layer Convert the layer to an image QualityFactor, CropAlpha, ConvertImages TIELayerCropped Crop Layer to Background Hide any part of the layer that is outside the background - TIELayerEditText Edit Layer Text Edit the text of the selected layer / UseDialog TIELayerLocked Lock Position Prevent movement of the selected layer - TIELayerResetRotate Reset Rotation Reset the rotation of the selected layer - TIELayerRestoreAspectRatio Restore Aspect Ratio Restore the original aspect ratio of the selected layer PreferredOnly TIELayerRotateLeft Rotate Left Rotate the layer counter-clockwise RotateDegrees TIELayerRotateRight Rotate Right Rotate the layer clockwise RotateDegrees TIELayerSizeToFit Size to Fit Resize the layer to match its content , - TIELayerSoftShadow Soft Shadow Add a soft shadow to the selected layer Radius, Intensity, ShadowColor TIELayerVisible Visible Display the current layer - TIEImageLayerRestoreSize Reset Size Restore the original size of the selected layer - TIEImageLayerExecuteOpenDialog Select Image Browse for an image to load into the layer - TIELineLayerShowLabel Show Label Attach a text label to the selected layer - TIEPolylineLayerPolylineClosed Close Polyline Join the first and last points of the polyline to create a polygon - TImageEnViewLayersFixBorders Crop Transparency Remove transparent borders from the selected layers - TImageEnViewLayersGroup Group Layers Add selected layers to a selection group - TImageEnViewLayersMoveBringToFront Bring to Front Bring the selected layer to the front of all others - TImageEnViewLayersMoveBringForward Bring Forward Move the selected layer forward - TImageEnViewLayersMoveSendToBack Send to Back Position the selected layer behind all others - TImageEnViewLayersMoveSendBackward Send Backwards Move the selected layer backward - TImageEnViewLayersUngroup Ungroup Layers Remove selected layers from selection group -
Layer Mouse Actions Action Name Description Associated Method Extra Properties TImageEnViewMouseMoveLayers Move Layers Use the mouse to move image layers miMoveLayers - TImageEnViewMouseResizeLayers Resize Layers Use the mouse to resize image layers miResizeLayers - TImageEnViewMouseRotateLayers Rotate Layers Use the mouse to rotate image layers miRotateLayers - TImageEnViewMouseCreateImageLayers Add Image Layer Click and drag to create an image layer * miCreateImageLayers (creating a PromptForImage TImageEnViewMouseCreateShapeLayers Add Shape Layer Click and drag to create a shape layer * miCreateShapeLayers (creating a - TImageEnViewMouseCreateLineLayers Add Line Layer Click and drag to create a line layer * miCreateLineLayers (creating a - TImageEnViewMouseCreatePolylineLayers Add Polyline Layer Click and drag to create a polyline layer * miCreatePolylineLayers (creating a - TImageEnViewMouseCreateTextLayers Add Text Layer Click and drag to create a text layer * miCreateTextLayers (creating a -
General Mouse Actions Action Name Description Associated Method Extra Properties TImageEnViewMouseMovingScroll Scroll to Cursor Move the mouse to scroll the image miMovingScroll - TImageEnViewMouseScroll Scroll Image Click the image and drag the mouse to scroll miScroll - TImageEnViewMouseSelect Rectangular Select Select a rectangular area of your image miSelect - TImageEnViewMouseSelectCircle Circular Select Select a circular area of your image miSelectCircle - TImageEnViewMouseSelectLasso Lasso Select Perform an irregular selection of your image by dragging the mouse miSelectLasso - TImageEnViewMouseSelectMagicWand Select by Color Select a portion of your image of a similar color miSelectMagicWand - TImageEnViewMouseSelectPolygon Polygon Select Perform an irregular selection of your image by clicking the mouse miSelectPolygon - TImageEnViewMouseSelectZoom Zoom to Selection Select an area of the image to zoom into miSelectZoom - TImageEnViewMouseZoom Zoom Left-click the image to Zoom In. Right-click to Zoom Out miZoom -
Crop Tool Interaction Action Name Description Associated Method Extra Properties TImageEnViewCropToolEnable Enable Cropping Enable cropping mode to select an area of image to maintain CropMode- TImageEnViewCropToolEnactCrop Crop to Selection Crop the image to the selection - TImageEnViewCropToolCancelCrop Cancel Cropping Clear the current crop selection -
Proc Actions Action Name Description Associated Method Extra Properties TImageEnViewDoPreviews Do Effects Display the Effects dialog for editing and enhancing the image (all or a specific effect) Effects TImageEnViewDoAdjustPreviews Adjust Colors Perform color enhancement functions on the image () - TImageEnViewDoEffectPreviews Image Effects Perform effects on the image () - TImageEnViewDoEditPreviews Edit Image Perform editing functions on the image: rotate, resize, crop, etc. () - TImageEnViewPromptToResize Prompt to Resize Display the previews dialog to allow the user to resample (resize) the image ResampleFilter TImageEnViewPromptToRotate Prompt to Rotate Display the previews dialog to allow the user to rotate the image to a custom angle AntiAliasMode TImageEnViewRotateRight Rotate Right Rotate the image 90° clockwise - TImageEnViewRotate180 Rotate 180° Rotate the image 180° clockwise - TImageEnViewRotateLeft Rotate Left Rotate the image 90° counter-clockwise - TImageEnViewFlipHorizontal Flip Horizontal Flip the image from top to bottom - TImageEnViewFlipVertical Flip Vertical Flip the image from left to right - TImageEnViewCrop Crop to Selection Remove all parts of the image outside the current selection - TImageEnViewCutToClipboard Cut Cut the current image or selection to the clipboard Cut Source TImageEnViewCopyToClipboard Copy Copy the current image or selection to the clipboard Copy Source TImageEnViewPasteFromClipboard Paste Paste an image from the clipboard Paste Dest TImageEnViewUndo Undo Undo the last action ShowUndoAction TImageEnViewRedo Redo Redo the last action that was undone ShowRedoAction TImageEnViewConvertToGray Convert to Gray Reduce the colors of the image to grayscale - TImageEnViewHistAutoEqualize Auto Equalize Colors Equalizes the color histogram for the selected region - TImageEnViewNegative Negative Invert the colors of the image - TImageEnViewRemoveRedEyes Remove Red-Eyes Remove the red-eye effect from the selection - TImageEnViewSharpen Sharpen Apply a sharpening filter to the image Intensity, Neighbourhood
IO Actions Action Name Description Associated Method Extra Properties TImageEnViewPromptToOpen Open Load an image from file , DialogTitle, DefaultFilter, LimitToFileType, TImageEnViewSave Save Save changes to this image to file EnableOnlyWhenChanged, TImageEnViewPromptToSave Save as Save this image to a new filename , DialogTitle, DefaultFilter, LimitToFileType, TImageEnViewDoIOPreviews Save Properties Specify advanced properties for this image PreviewParams TImageEnViewDoPrintPreviewDialog Print Preview Display a preview of this image for printing DialogType TImageEnViewPrintImageNormal Print Print this image at its original size - TImageEnViewPrintImageFitToPage Print to Page Print this image to fit the page - TImageEnViewSelectAcquireSource Select Acquisition Source Select the camera or scanner to acquire images from Apis TImageEnViewAcquire Acquire Retrieve an image from a camera or scanner - TImageEnViewSeekFirst First Frame Display the first frame of this image - TImageEnViewSeekPrior Previous Frame Display the prior frame of this image - TImageEnViewSeekNext Next Frame Display the next frame of this image - TImageEnViewSeekLast Last Frame Display the last frame of this image -
* Use or to set properties of the new layer !!} {!! Actions ImageIndex List The following is a list of the default ImageIndexes of ImageEn Actions: ImageIndex Image 0 Cut 1 Copy 2 Paste 3 Undo 4 Redo 5 Delete 6 Delete All 7 Open 8 Save 9 Save As 10 Save Properties 11 Select All 12 Deselect 13 Rotate Left 14 Rotate 180 15 Rotate Right 16 Flip Horizontal 17 Flip Vertical 18 Seek First 19 Seek Prior 20 Seek Next 21 Seek Last 22 Zoom In 23 Zoom Out 24 Zoom 100% 25 Clear 26 Print 27 Print Preview 28 Adjust Colors 29 Image Effects 30 Grayscale 31 Negative 32 Auto-Equalize Colors 33 Remove Red Eyes 34 Sharpen 35 Playing 36 Play Loop 37 Aquire 38 Select Acquire Source 39 Auto-Shrink 40 Auto-Stretch 41 Fit 42 Fit to Height 43 Fit to Width 47 Crop 49 Mouse Scroll to Cursor 52 Mouse Scroll 53 Mouse Select 54 Mouse Select Circle 55 Mouse Select Lasso 56 Mouse Select Magic Wand 57 Mouse Select Polygon 58 Mouse Select Zoom 59 Mouse Zoom 88 Auto-Rotate Display 96 Set Zoom 97 Prompt to Rotate 98 Prompt to Resize 110 Preview Effects 111 Edit Image 132 Show Rulers 133 Pixels (Units) 134 Inches (Units) 135 Millimeters (Units) 136 Centimeters (Units) 138 Enable Cropping 139 Crop to Selection 140 Cancel Cropping
Layers Only 44 Add Layer 45 Remove Layer 46 Merge All Layers 48 Mouse Move Layers 50 Mouse Resize Layers 51 Mouse Rotate Layers 89 Create layer from Clipboard 90 Prompt for layer file 91 Send layer to back 92 Send layer backward 93 Bring layer forward 94 Bring layer to front 95 Crop Transparency 123 Merge Layers 124 Select All Layers 125 Deselect All Layers 126 Group Layers 127 Ungroup Layers 141 Mouse Create Image Layers 142 Mouse Create Shape Layers 143 Mouse Create Line Layers 144 Mouse Create Polyline Layers 145 Mouse Create Text Layers 146 Layers Align on Left 147 Layers Layers Align on Right 148 Layers Align Tops 149 Layers Align Bottoms 150 Layers Align Horizontal Centers 151 Layers Align Vertical Centers 152 Layers Match Widths 153 Layers Match Heights 154 Crop Background to Layer Selection 155 Layers Fast Preview 156 Lock Aspect Ratio 157 Lock Position 158 Restore Aspect Ratio 159 Size to Fit 160 Soft Shadow 161 Visible 162 Reset Size 163 Select Image 164 Close Polyline 165 Convert to Image Layer 166 Add Image Layer 167 Add Shape Layer 168 Add Line Layer 169 Add Polyline Layer 170 Add Text Layer 171 Crop Layer to Background 172 Show Label 173 Edit Layer Text 174 Reset Rotation
ImageEnMView and ImageEnFolderMView Only ImageIndex Image 60 Display Mode Single 61 Prompt to Add Image 62 Image Save Properties 63 Print Selected Thumbs 64 Print All Thumbs 112 Thumbnail View 113 Details View 114 Sort by Filename 115 Sort by File Type 116 Sort by File Size 117 Sort by Create Date 118 Sort by Edit Date 119 Sort by Image Size 120 Sort by Other 121 Sort Ascending 122 Sort Descending 128 Column View 129 File List View 130 Large Thumb View 131 Show Column
ImageEnFolderMView Only ImageIndex Image 99 Refresh Folder 100 Open File 101 Go Up 102 Move Files 103 Copy Files 104 Delete Files 105 Copy Files to Clipboard 106 Paste Files from Clipboard 107 Rename File 108 Prompt for Folder 109 Create Folder 137 Include Subfolders
ImageEnVect Only ImageIndex Image 65 Merge Objects to Back 66 Merge All to Back 67 Bring Object to Front 68 Bring Object Forward 69 Send Object to Back 70 Send Object Backward 71 Mouse Measure Area 72 Mouse Measure Length 73 Mouse Insert Line 74 Mouse Insert Rectangle 75 Mouse Insert Ellipse 76 Mouse Insert Image 77 Mouse Insert Text 78 Mouse Select Object 79 Mouse Measure Distance 80 Mouse Insert Ruler 81 Mouse Insert Polyline 82 Mouse Insert Angle 83 Mouse Insert Memo 84 Mouse Insert Line Label 85 Mouse Edit Polyline 86 Mouse Unstamp 87 Crop Image to Objects
!!} end.