|
@@ -85,6 +85,7 @@ type
|
|
FOriginalRect: TRectShape;
|
|
FOriginalRect: TRectShape;
|
|
FOriginalRectUntransformed: TRectF;
|
|
FOriginalRectUntransformed: TRectF;
|
|
FOriginalRectEditor: TBGRAOriginalEditor;
|
|
FOriginalRectEditor: TBGRAOriginalEditor;
|
|
|
|
+ FIsEditingGradient: boolean;
|
|
procedure BindOriginalEvent(ABind: boolean);
|
|
procedure BindOriginalEvent(ABind: boolean);
|
|
function DoToolDown({%H-}toolDest: TBGRABitmap; {%H-}pt: TPoint; {%H-}ptF: TPointF; rightBtn: boolean): TRect; override;
|
|
function DoToolDown({%H-}toolDest: TBGRABitmap; {%H-}pt: TPoint; {%H-}ptF: TPointF; rightBtn: boolean): TRect; override;
|
|
function DoToolMove({%H-}toolDest: TBGRABitmap; {%H-}pt: TPoint; {%H-}ptF: TPointF): TRect; override;
|
|
function DoToolMove({%H-}toolDest: TBGRABitmap; {%H-}pt: TPoint; {%H-}ptF: TPointF): TRect; override;
|
|
@@ -94,6 +95,7 @@ type
|
|
procedure OnTryStop({%H-}sender: TCustomLayerAction); override;
|
|
procedure OnTryStop({%H-}sender: TCustomLayerAction); override;
|
|
procedure StopEdit;
|
|
procedure StopEdit;
|
|
function IsVectorOriginal: boolean;
|
|
function IsVectorOriginal: boolean;
|
|
|
|
+ function IsGradientOriginal: boolean;
|
|
function IsOtherOriginal: boolean;
|
|
function IsOtherOriginal: boolean;
|
|
function IsBitmap: boolean;
|
|
function IsBitmap: boolean;
|
|
procedure MakeImageOriginal;
|
|
procedure MakeImageOriginal;
|
|
@@ -121,7 +123,7 @@ implementation
|
|
|
|
|
|
uses LazPaintType, LCVectorTextShapes, LCVectorialFill, BGRASVGOriginal,
|
|
uses LazPaintType, LCVectorTextShapes, LCVectorialFill, BGRASVGOriginal,
|
|
ULoading, BGRATransform, math, UStateType, UImageDiff, Controls, BGRAPen, UResourceStrings, ugraph,
|
|
ULoading, BGRATransform, math, UStateType, UImageDiff, Controls, BGRAPen, UResourceStrings, ugraph,
|
|
- LCScaleDPI, LCVectorClipboard;
|
|
|
|
|
|
+ LCScaleDPI, LCVectorClipboard, BGRAGradientOriginal;
|
|
|
|
|
|
const PointSize = 6;
|
|
const PointSize = 6;
|
|
|
|
|
|
@@ -200,12 +202,19 @@ begin
|
|
FRightButton:= rightBtn;
|
|
FRightButton:= rightBtn;
|
|
FLeftButton:= not rightBtn;
|
|
FLeftButton:= not rightBtn;
|
|
FLastPos := ptF;
|
|
FLastPos := ptF;
|
|
- if IsVectorOriginal then
|
|
|
|
|
|
+ if IsVectorOriginal or IsGradientOriginal then
|
|
begin
|
|
begin
|
|
- BindOriginalEvent(true);
|
|
|
|
- Manager.Image.CurrentState.LayeredBitmap.MouseDown(rightBtn, FShiftState, ptF.X,ptF.Y, cur, handled);
|
|
|
|
- BindOriginalEvent(false);
|
|
|
|
- if handled then Cursor := OriginalCursorToCursor(cur);
|
|
|
|
|
|
+ if not FIsEditingGradient then
|
|
|
|
+ begin
|
|
|
|
+ FIsEditingGradient:= true;
|
|
|
|
+ result := OnlyRenderChange;
|
|
|
|
+ end else
|
|
|
|
+ begin
|
|
|
|
+ BindOriginalEvent(true);
|
|
|
|
+ Manager.Image.CurrentState.LayeredBitmap.MouseDown(rightBtn, FShiftState, ptF.X,ptF.Y, cur, handled);
|
|
|
|
+ BindOriginalEvent(false);
|
|
|
|
+ if handled then Cursor := OriginalCursorToCursor(cur);
|
|
|
|
+ end;
|
|
end else
|
|
end else
|
|
begin
|
|
begin
|
|
if (FOriginalRect=nil) and
|
|
if (FOriginalRect=nil) and
|
|
@@ -256,7 +265,7 @@ var
|
|
begin
|
|
begin
|
|
FLastPos := ptF;
|
|
FLastPos := ptF;
|
|
Result:= EmptyRect;
|
|
Result:= EmptyRect;
|
|
- if IsVectorOriginal then
|
|
|
|
|
|
+ if IsVectorOriginal or (IsGradientOriginal and FIsEditingGradient) then
|
|
begin
|
|
begin
|
|
BindOriginalEvent(true);
|
|
BindOriginalEvent(true);
|
|
Manager.Image.CurrentState.LayeredBitmap.MouseMove(FShiftState, ptF.X,ptF.Y, cur, handled);
|
|
Manager.Image.CurrentState.LayeredBitmap.MouseMove(FShiftState, ptF.X,ptF.Y, cur, handled);
|
|
@@ -372,6 +381,7 @@ begin
|
|
end;
|
|
end;
|
|
if IsVectorOriginal then GetVectorOriginal.DeselectShape;
|
|
if IsVectorOriginal then GetVectorOriginal.DeselectShape;
|
|
Manager.Image.CurrentState.LayeredBitmap.ClearEditor;
|
|
Manager.Image.CurrentState.LayeredBitmap.ClearEditor;
|
|
|
|
+ FIsEditingGradient:= false;
|
|
FreeAndNil(FOriginalRect);
|
|
FreeAndNil(FOriginalRect);
|
|
FreeAndNil(FOriginalRectEditor);
|
|
FreeAndNil(FOriginalRectEditor);
|
|
Cursor := crDefault;
|
|
Cursor := crDefault;
|
|
@@ -383,10 +393,15 @@ begin
|
|
result := Manager.Image.LayerOriginalClass[Manager.Image.CurrentLayerIndex]=TVectorOriginal;
|
|
result := Manager.Image.LayerOriginalClass[Manager.Image.CurrentLayerIndex]=TVectorOriginal;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TEditShapeTool.IsGradientOriginal: boolean;
|
|
|
|
+begin
|
|
|
|
+ result := Manager.Image.LayerOriginalClass[Manager.Image.CurrentLayerIndex]=TBGRALayerGradientOriginal;
|
|
|
|
+end;
|
|
|
|
+
|
|
function TEditShapeTool.IsOtherOriginal: boolean;
|
|
function TEditShapeTool.IsOtherOriginal: boolean;
|
|
begin
|
|
begin
|
|
result := Manager.Image.LayerOriginalKnown[Manager.Image.CurrentLayerIndex] and
|
|
result := Manager.Image.LayerOriginalKnown[Manager.Image.CurrentLayerIndex] and
|
|
- (Manager.Image.LayerOriginalClass[Manager.Image.CurrentLayerIndex]<>TVectorOriginal);
|
|
|
|
|
|
+ not IsVectorOriginal and not IsGradientOriginal;
|
|
end;
|
|
end;
|
|
|
|
|
|
function TEditShapeTool.IsBitmap: boolean;
|
|
function TEditShapeTool.IsBitmap: boolean;
|
|
@@ -471,7 +486,7 @@ begin
|
|
end;
|
|
end;
|
|
viewMatrix := AffineMatrix(xAxis-orig,yAxis-orig,orig);
|
|
viewMatrix := AffineMatrix(xAxis-orig,yAxis-orig,orig);
|
|
|
|
|
|
- if IsVectorOriginal then
|
|
|
|
|
|
+ if IsVectorOriginal or (IsGradientOriginal and FIsEditingGradient) then
|
|
begin
|
|
begin
|
|
if Assigned(VirtualScreen) then
|
|
if Assigned(VirtualScreen) then
|
|
result := Manager.Image.CurrentState.LayeredBitmap.DrawEditor(VirtualScreen,
|
|
result := Manager.Image.CurrentState.LayeredBitmap.DrawEditor(VirtualScreen,
|
|
@@ -603,7 +618,7 @@ begin
|
|
if FLeftButton or FRightButton then
|
|
if FLeftButton or FRightButton then
|
|
begin
|
|
begin
|
|
Manager.Image.DraftOriginal := false;
|
|
Manager.Image.DraftOriginal := false;
|
|
- if IsVectorOriginal then
|
|
|
|
|
|
+ if IsVectorOriginal or (IsGradientOriginal and FIsEditingGradient) then
|
|
begin
|
|
begin
|
|
BindOriginalEvent(true);
|
|
BindOriginalEvent(true);
|
|
Manager.Image.CurrentState.LayeredBitmap.MouseUp(FRightButton, FShiftState, FLastPos.X,FLastPos.Y, cur, handled);
|
|
Manager.Image.CurrentState.LayeredBitmap.MouseUp(FRightButton, FShiftState, FLastPos.X,FLastPos.Y, cur, handled);
|
|
@@ -612,7 +627,7 @@ begin
|
|
Cursor := OriginalCursorToCursor(cur);
|
|
Cursor := OriginalCursorToCursor(cur);
|
|
result := OnlyRenderChange;
|
|
result := OnlyRenderChange;
|
|
end;
|
|
end;
|
|
- if not handled then
|
|
|
|
|
|
+ if not handled and IsVectorOriginal then
|
|
begin
|
|
begin
|
|
m := AffineMatrixInverse(Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex]);
|
|
m := AffineMatrixInverse(Manager.Image.LayerOriginalMatrix[Manager.Image.CurrentLayerIndex]);
|
|
GetVectorOriginal.MouseClick(m*FLastPos);
|
|
GetVectorOriginal.MouseClick(m*FLastPos);
|