darktable icon indicating copy to clipboard operation
darktable copied to clipboard

Bézier handles for path masks

Open marc-fouquet opened this issue 8 months ago • 0 comments

Changing the UI for editing path masks. This is discussed in #14236 .

  • The single control point for curvature has been removed.
  • Instead the actual Bézier control points are used for this now. By default they move symmetrically, preserving the old behaviour.
  • Shift-Dragging allows to move control points independently, for more freedom in shaping the mask.

Issues/possible areas of improvement:

  1. Exposing the possibility of moving handles separately may break assumptions of the code that calculates the Bézier outline and the final mask, especially with regards to feathering. However in tests this seems to work mostly OK (except for 2). There is the possibility of creating wonky masks by using extreme inputs (i.e. loops, cases where the border control point is not on the border but inside the shape), but this has been possible before as well.
  2. In rare situations the border outline incorrectly renders a full circle around a node.
  3. Nodes move slightly when being selected (just click, no drag). This was the same before, not sure if it is intended.
  4. It would be nicer, if the user could press and release shift while dragging and therefore change between symmetry modes on the fly. This is not possible because the state of the shift key is not available in _path_events_mouse_moved.

Includes an updated tooltip in English, German, Italian and French.

(I tried the clang-format tool from the contributing guidelines, but this tool wants to change lots of code that I did not touch. These commits only contain my actual changes.)

marc-fouquet avatar Jun 23 '24 16:06 marc-fouquet