Bladeren bron

ContextMenu Event; changed AOwner to Sender in Events; CropArea UserData default=-1

Massimo Magnano 2 jaren geleden
bovenliggende
commit
5c7e3a466d

+ 32 - 6
bgraimagemanipulation.pas

@@ -331,12 +331,16 @@ type
 
   { TBGRAImageManipulation }
 
-  TCropAreaEvent = procedure (AOwner: TBGRAImageManipulation; CropArea: TCropArea) of object;
-  TCropAreaLoadEvent = function (AOwner: TBGRAImageManipulation; CropArea: TCropArea;
+  TCropAreaEvent = procedure (Sender: TBGRAImageManipulation; CropArea: TCropArea) of object;
+  TCropAreaLoadEvent = function (Sender: TBGRAImageManipulation; CropArea: TCropArea;
                                  const XMLConf: TXMLConfig; const Path:String):Integer of object;
-  TCropAreaSaveEvent = procedure (AOwner: TBGRAImageManipulation; CropArea: TCropArea;
+  TCropAreaSaveEvent = procedure (Sender: TBGRAImageManipulation; CropArea: TCropArea;
                                  const XMLConf: TXMLConfig; const Path:String) of object;
 
+  TBGRAIMContextPopupEvent = procedure(Sender: TBGRAImageManipulation; CropArea: TCropArea;
+                                       AnchorSelected :TDirection; MousePos: TPoint; var Handled: Boolean) of object;
+
+
   TBGRAImageManipulation = class(TBGRAGraphicCtrl)
   private
     { Private declarations }
@@ -357,6 +361,7 @@ type
     fSizeLimits: TSizeLimits;
     fImageBitmap, fResampledBitmap, fBackground, fVirtualScreen: TBGRABitmap;
     rNewCropAreaDefault: TBGRANewCropAreaDefault;
+    rOnContextPopup: TBGRAIMContextPopupEvent;
 
     function getAnchorSize: byte;
     function getPixelsPerInch: Integer;
@@ -405,6 +410,7 @@ type
     procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: integer); override;
     procedure MouseMove(Shift: TShiftState; X, Y: integer); override;
     procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: integer); override;
+    procedure DoContextPopup(MousePos: TPoint; var Handled: Boolean); override;
   public
     { Public declarations }
 
@@ -422,8 +428,8 @@ type
 
     //Crop Areas Manipulation functions
     function addCropArea(AArea : TRectF; AAreaUnit: TResolutionUnit = ruNone;
-                         AUserData: Integer = 0) :TCropArea;
-    function addScaledCropArea(AArea : TRect; AUserData: Integer = 0) :TCropArea;
+                         AUserData: Integer = -1) :TCropArea;
+    function addScaledCropArea(AArea : TRect; AUserData: Integer = -1) :TCropArea;
     procedure delCropArea(ACropArea :TCropArea);
     procedure clearCropAreas;
     procedure getAllResampledBitmaps(ACallBack :TgetAllBitmapsCallback);
@@ -460,6 +466,12 @@ type
 
              //CropArea Parameter is the Old Selected Area, use SelectedCropArea property for current
     property OnSelectedCropAreaChanged:TCropAreaEvent read rOnSelectedCropAreaChanged write rOnSelectedCropAreaChanged;
+
+    property OnContextPopup: TBGRAIMContextPopupEvent read rOnContextPopup write rOnContextPopup;
+(*    property OnStartDrag: TStartDragEvent;
+    property OnDragDrop: TDragDropEvent;
+    property OnDragOver: TDragOverEvent;
+    property OnEndDrag: TEndDragEvent;*)
   end;
 
 
@@ -1811,7 +1823,7 @@ begin
   fOwner :=AOwner;
   rAllow :=False;
   rShowBorder :=False;
-  rResolutionUnit:=ruPixelsPerInch;
+  rResolutionUnit:=ruPixelsPerCentimeter;
 end;
 
 { TBGRANewCropAreaDefault }
@@ -3969,6 +3981,20 @@ begin
   end;
  end;
 
+procedure TBGRAImageManipulation.DoContextPopup(MousePos: TPoint; var Handled: Boolean);
+var
+   xAnchorSelected :TDirection;
+   xCursor :TCursor;
+   mouseCropArea:TCropArea;
+
+begin
+  if Assigned(rOnContextPopup) then
+  begin
+    mouseCropArea :=Self.isOverAnchor(MousePos, xAnchorSelected, {%H-}xCursor);
+    rOnContextPopup(Self, mouseCropArea, xAnchorSelected, MousePos, Handled);
+  end;
+end;
+
 
  { ============================================================================ }
  { =====[ Register Function ]================================================== }

+ 1 - 3
test/test_bgraimagemanipulation/unitbgraimagemanipulationdemo.lfm

@@ -1614,15 +1614,13 @@ object FormBGRAImageManipulationDemo: TFormBGRAImageManipulationDemo
     MinHeight = 40
     MinWidth = 30
     EmptyImage.Allow = True
-    EmptyImage.ResolutionUnit = ruPixelsPerCentimeter
     EmptyImage.ResolutionWidth = 21
     EmptyImage.ResolutionHeight = 29.7000007629395
     EmptyImage.ShowBorder = True
+    NewCropAreaDefault.AspectRatio = '3:4'
     OnCropAreaAdded = AddedCrop
     OnCropAreaDeleted = DeletedCrop
     OnCropAreaChanged = ChangedCrop
-    OnCropAreaLoad = CropAreaLoad
-    OnCropAreaSave = CropAreaSave
     OnSelectedCropAreaChanged = SelectedChangedCrop
   end
   object BCPanelCropAreas: TBCPanel

+ 8 - 24
test/test_bgraimagemanipulation/unitbgraimagemanipulationdemo.pas

@@ -149,10 +149,6 @@ type
     procedure btZDownClick(Sender: TObject);
     procedure btZFrontClick(Sender: TObject);
     procedure btZUpClick(Sender: TObject);
-    function CropAreaLoad(AOwner: TBGRAImageManipulation; CropArea: TCropArea; const XMLConf: TXMLConfig;
-      const Path: String): Integer;
-    procedure CropAreaSave(AOwner: TBGRAImageManipulation; CropArea: TCropArea; const XMLConf: TXMLConfig;
-      const Path: String);
     procedure edNameChange(Sender: TObject);
     procedure edUnit_TypeChange(Sender: TObject);
     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
@@ -169,10 +165,10 @@ type
     procedure rgAspectSelectionChanged(Sender: TObject);
     procedure btApplyAspectRatioClick(Sender: TObject);
 
-    procedure AddedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
-    procedure DeletedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
-    procedure ChangedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
-    procedure SelectedChangedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
+    procedure AddedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
+    procedure DeletedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
+    procedure ChangedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
+    procedure SelectedChangedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
     procedure SpeedButton1Click(Sender: TObject);
   private
     { private declarations }
@@ -526,18 +522,6 @@ begin
        end;
 end;
 
-function TFormBGRAImageManipulationDemo.CropAreaLoad(AOwner: TBGRAImageManipulation; CropArea: TCropArea;
-  const XMLConf: TXMLConfig; const Path: String): Integer;
-begin
-  //
-end;
-
-procedure TFormBGRAImageManipulationDemo.CropAreaSave(AOwner: TBGRAImageManipulation; CropArea: TCropArea;
-  const XMLConf: TXMLConfig; const Path: String);
-begin
-  //
-end;
-
 procedure TFormBGRAImageManipulationDemo.edNameChange(Sender: TObject);
 var
    CropArea :TCropArea;
@@ -707,7 +691,7 @@ begin
         end;
 end;
 
-procedure TFormBGRAImageManipulationDemo.AddedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
+procedure TFormBGRAImageManipulationDemo.AddedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
 var
   curIndex :Integer;
 
@@ -723,7 +707,7 @@ begin
    FillBoxUI(CropArea);
 end;
 
-procedure TFormBGRAImageManipulationDemo.DeletedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
+procedure TFormBGRAImageManipulationDemo.DeletedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
 var
    delIndex :Integer;
 begin
@@ -740,7 +724,7 @@ begin
   //MessageDlg('Deleting Crop Area', 'Deleting '+CropArea.Name, mtInformation, [mbOk], 0);
 end;
 
-procedure TFormBGRAImageManipulationDemo.ChangedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
+procedure TFormBGRAImageManipulationDemo.ChangedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
 begin
   if (cbBoxList.Items.Objects[cbBoxList.ItemIndex] = CropArea) then
   begin
@@ -752,7 +736,7 @@ begin
   end;
 end;
 
-procedure TFormBGRAImageManipulationDemo.SelectedChangedCrop(AOwner: TBGRAImageManipulation; CropArea: TCropArea);
+procedure TFormBGRAImageManipulationDemo.SelectedChangedCrop(Sender: TBGRAImageManipulation; CropArea: TCropArea);
 var
    newIndex :Integer;
 begin