Skip to content

Commit fd438fc

Browse files
committed
Remove PintaCore dependency from the tool handles.
1 parent 623b6dc commit fd438fc

File tree

4 files changed

+31
-17
lines changed

4 files changed

+31
-17
lines changed

Pinta.Tools/Editable/EditEngines/BaseEditEngine.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,8 @@ public ShapeEngine? ActiveShapeEngine {
167167
/// </summary>
168168
public IEnumerable<IToolHandle> Handles =>
169169
SEngines.SelectMany (engine => engine.ControlPointHandles).Append (hover_handle);
170-
private readonly MoveHandle hover_handle = new ();
170+
171+
private readonly MoveHandle hover_handle;
171172

172173
private readonly Gdk.Cursor grab_cursor = GdkExtensions.CursorFromName (Pinta.Resources.StandardCursors.Grab);
173174

@@ -235,6 +236,8 @@ public BaseEditEngine (
235236

236237
owner = passedOwner;
237238

239+
hover_handle = new (workspace);
240+
238241
ResetShapes ();
239242
}
240243

@@ -765,7 +768,7 @@ public virtual void HandleMouseDown (Document document, ToolMouseEventArgs e)
765768
bool clicked_generated_point = false;
766769

767770
PointD current_window_point = workspace.CanvasPointToView (unclamped_point);
768-
MoveHandle test_handle = new ();
771+
MoveHandle test_handle = new (workspace);
769772

770773
// Check if the user is directly clicking on a control point.
771774
if (closestControlPoint != null) {
@@ -1235,7 +1238,7 @@ private void DrawControlPoints (Context g, ShapeEngine shape, bool draw_controls
12351238
continue;
12361239

12371240
shape.ControlPointHandles.Add (
1238-
new MoveHandle {
1241+
new MoveHandle (workspace) {
12391242
Active = true,
12401243
CanvasPosition = point.Position,
12411244
Selected = (point == SelectedPoint) && draw_selection

Pinta.Tools/Handles/MoveHandle.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,13 @@ public sealed class MoveHandle : IToolHandle
1616

1717
private const double RADIUS = 4.5;
1818

19+
private readonly IWorkspaceService workspace;
20+
21+
public MoveHandle (IWorkspaceService workspace)
22+
{
23+
this.workspace = workspace;
24+
}
25+
1926
public PointD CanvasPosition { get; set; }
2027

2128
/// <summary>
@@ -48,7 +55,7 @@ public bool ContainsPoint (PointD window_point)
4855
public void Draw (Gtk.Snapshot snapshot)
4956
{
5057
Gsk.PathBuilder pathBuilder = Gsk.PathBuilder.New ();
51-
PointD windowPt = PintaCore.Workspace.CanvasPointToView (CanvasPosition);
58+
PointD windowPt = workspace.CanvasPointToView (CanvasPosition);
5259
pathBuilder.AddCircle (windowPt.ToGraphenePoint (), (float) RADIUS);
5360
Gsk.Path path = pathBuilder.ToPath ();
5461

@@ -71,7 +78,7 @@ private RectangleD ComputeWindowRect ()
7178
{
7279
const double DIAMETER = 2 * RADIUS;
7380

74-
PointD windowPt = PintaCore.Workspace.CanvasPointToView (CanvasPosition);
81+
PointD windowPt = workspace.CanvasPointToView (CanvasPosition);
7582
return new RectangleD (windowPt.X - RADIUS, windowPt.Y - RADIUS, DIAMETER, DIAMETER);
7683
}
7784

Pinta.Tools/Handles/RectangleHandle.cs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,28 @@ namespace Pinta.Tools;
1010
/// </summary>
1111
public class RectangleHandle : IToolHandle
1212
{
13+
private readonly IWorkspaceService workspace;
14+
1315
private PointD start_pt;
1416
private PointD end_pt;
1517
private Size image_size;
1618
private readonly ImmutableArray<MoveHandle> handles;
1719
private MoveHandle? active_handle;
1820
private PointD? drag_start_pos;
1921

20-
public RectangleHandle ()
22+
public RectangleHandle (IWorkspaceService workspace)
2123
{
24+
this.workspace = workspace;
25+
2226
handles = [
23-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeNW) },
24-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeSW) },
25-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeNE) },
26-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeSE) },
27-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeW) },
28-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeN) },
29-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeE) },
30-
new (){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeS) },
27+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeNW) },
28+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeSW) },
29+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeNE) },
30+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeSE) },
31+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeW) },
32+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeN) },
33+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeE) },
34+
new (workspace){ Cursor = GdkExtensions.CursorFromName (Resources.StandardCursors.ResizeS) },
3135
];
3236

3337
foreach (var handle in handles)
@@ -79,7 +83,7 @@ public bool BeginDrag (in PointD canvasPos, in Size imageSize)
7983

8084
image_size = imageSize;
8185

82-
PointD viewPos = PintaCore.Workspace.CanvasPointToView (canvasPos);
86+
PointD viewPos = workspace.CanvasPointToView (canvasPos);
8387
UpdateHandleUnderPoint (viewPos);
8488

8589
if (active_handle is null)
@@ -122,7 +126,7 @@ public bool HasDragged (PointD canvasPos)
122126
if (drag_start_pos is null)
123127
throw new InvalidOperationException ("Drag operation has not been started!");
124128

125-
PointD viewPos = PintaCore.Workspace.CanvasPointToView (canvasPos);
129+
PointD viewPos = workspace.CanvasPointToView (canvasPos);
126130
return drag_start_pos.Value.Distance (viewPos) > 1;
127131
}
128132

Pinta.Tools/Tools/SelectTool.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public SelectTool (IServiceProvider services) : base (services)
5252
tools = services.GetService<IToolService> ();
5353
workspace = services.GetService<IWorkspaceService> ();
5454

55-
handle = new () { InvertIfNegative = true };
55+
handle = new (workspace) { InvertIfNegative = true };
5656

5757
workspace.SelectionChanged += AfterSelectionChange;
5858
}

0 commit comments

Comments
 (0)