Browse Source

#287 do not hide while changing fill opacity

circular17 3 years ago
parent
commit
6781e3c00e

+ 1 - 0
lazpaint/lazpaintmainform.pas

@@ -703,6 +703,7 @@ type
     procedure VectorialFill_Change(Sender: TObject);
     procedure vectorialFill_ClickLabel(Sender: TObject);
     procedure VectorialFill_TypeChange(Sender: TObject);
+    procedure VectorialFill_OpacityChange(Sender: TObject);
     procedure VectorialFill_Resize(Sender: TObject);
     procedure VectorialFill_EditGradTexPoints(Sender: TObject);
     procedure VectorialFill_AdjustToShape(Sender: TObject);

+ 6 - 0
lazpaint/maintoolbar.inc

@@ -11,6 +11,7 @@ procedure TFMain.CreateToolbarElements;
     vf.OnFillChange:=    @VectorialFill_Change;
     vf.AutoSize := False;
     vf.OnFillTypeChange:=    @VectorialFill_TypeChange;
+    vf.OnOpacityChange:=     @VectorialFill_OpacityChange;
     vf.OnAdjustToShape:=     @VectorialFill_AdjustToShape;
     vf.OnEditGradTexPoints:= @VectorialFill_EditGradTexPoints;
     vf.OnResize:= @VectorialFill_Resize;
@@ -1070,6 +1071,11 @@ begin
   vf.Width := vf.PreferredSize.cx;
 end;
 
+procedure TFMain.VectorialFill_OpacityChange(Sender: TObject);
+begin
+  HideFill(3000, true);
+end;
+
 procedure TFMain.VectorialFill_ShowBackFill(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 begin
   ShowFill(VectorialFill_Back, Panel_BackFill);

+ 9 - 0
lazpaintcontrols/lcvectorialfillcontrol.pas

@@ -75,6 +75,7 @@ type
     FOnEditGradTexPoints: TNotifyEvent;
     FOnChooseColor: TChooseColorEvent;
     FOnFillChange: TNotifyEvent;
+    FOnOpacityChange: TNotifyEvent;
     FOnFillTypeChange: TNotifyEvent;
     FOnTextureClick: TNotifyEvent;
     FOnTextureChange: TNotifyEvent;
@@ -84,6 +85,7 @@ type
     procedure DoOnEditGradTexPoints(Sender: TObject);
     procedure DoOnFillChange(Sender: TObject);
     procedure DoOnFillTypeChange(Sender: TObject);
+    procedure DoOnOpacityChange(Sender: TObject);
     procedure DoOnTextureClick(Sender: TObject);
     procedure DoOnTextureChange(Sender: TObject);
     procedure DoOnResize; override;
@@ -122,6 +124,7 @@ type
     property EditingGradTexPoints: boolean read GetEditingGradTexPoints write SetEditingGradTexPoints;
     property OnChooseColor: TChooseColorEvent read FOnChooseColor write SetOnChooseColor;
     property OnFillChange: TNotifyEvent read FOnFillChange write FOnFillChange;
+    property OnOpacityChange: TNotifyEvent read FOnOpacityChange write FOnOpacityChange;
     property OnTextureChange: TNotifyEvent read FOnTextureChange write FOnTextureChange;
     property OnAdjustToShape: TNotifyEvent read FOnAdjustToShape write FOnAdjustToShape;
     property OnEditGradTexPoints: TNotifyEvent read FOnEditGradTexPoints write FOnEditGradTexPoints;
@@ -421,6 +424,11 @@ begin
   if Assigned(FOnFillTypeChange) then FOnFillTypeChange(self);
 end;
 
+procedure TLCVectorialFillControl.DoOnOpacityChange(Sender: TObject);
+begin
+  if Assigned(FOnOpacityChange) then FOnOpacityChange(self);
+end;
+
 procedure TLCVectorialFillControl.DoOnTextureChange(Sender: TObject);
 begin
   if Assigned(FOnTextureChange) then FOnTextureChange(self);
@@ -443,6 +451,7 @@ begin
   FInterface.OnAdjustToShape:=@DoOnAdjustToShape;
   FInterface.OnEditGradTexPoints:=@DoOnEditGradTexPoints;
   FInterface.OnFillTypeChange:=@DoOnFillTypeChange;
+  FInterface.OnOpacityChange:=@DoOnOpacityChange;
   FInterface.OnMouseMove:=@InterfaceMouseMove;
   FInterface.OnMouseDown:=@InterfaceMouseDown;
   FInterface.OnMouseUp:=@InterfaceMouseUp;

+ 7 - 1
lazpaintcontrols/lcvectorialfillinterface.pas

@@ -80,7 +80,7 @@ type
     FPreview: TImage;
     FButtonFillNone, FButtonFillSolid,
     FButtonFillGradient, FButtonFillTexture: TToolButton;
-    FOnFillChange, FOnFillTypeChange: TNotifyEvent;
+    FOnFillChange, FOnFillTypeChange, FOnOpacityChange: TNotifyEvent;
     FButtonEditGradTexPoints, FButtonAdjustToShape: TToolButton;
     FOnEditGradTexPoints, FOnAdjustToShape: TNotifyEvent;
 
@@ -204,6 +204,7 @@ type
     property OnAdjustToShape: TNotifyEvent read FOnAdjustToShape write FOnAdjustToShape;
     property OnEditGradTexPoints: TNotifyEvent read FOnEditGradTexPoints write FOnEditGradTexPoints;
     property OnFillTypeChange: TNotifyEvent read FOnFillTypeChange write FOnFillTypeChange;
+    property OnOpacityChange: TNotifyEvent read FOnOpacityChange write FOnOpacityChange;
     property OnChooseColor: TChooseColorEvent read FOnChooseColor write FOnChooseColor;
     property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
     property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
@@ -574,6 +575,7 @@ begin
     c := GradEndColor;
     c.alpha := FUpDownEndAlpha.Value;
     GradEndColor:= c;
+    if assigned(FOnOpacityChange) then FOnOpacityChange(self);
   end;
 end;
 
@@ -581,7 +583,10 @@ procedure TVectorialFillInterface.UpDownSolidAlphaChange(Sender: TObject;
   AByUser: boolean);
 begin
   if AByUser then
+  begin
     SolidColor:= ColorToBGRA(FShapeSolidColor.Brush.Color, FUpDownSolidAlpha.Value);
+    if assigned(FOnOpacityChange) then FOnOpacityChange(self);
+  end;
 end;
 
 procedure TVectorialFillInterface.UpDownStartAlphaChange(Sender: TObject;
@@ -594,6 +599,7 @@ begin
     c := GradStartColor;
     c.alpha := FUpDownStartAlpha.Value;
     GradStartColor:= c;
+    if assigned(FOnOpacityChange) then FOnOpacityChange(self);
   end;
 end;