The shape manager is a separate, floating window that creates, renames, edits, groups and deletes the drawn shapes used by masks. Open or close it from its toggle button in the darkroom bottom toolbar. It stays on top of the main window without stealing focus, so you can keep drawing on the canvas while it’s open, and you’re free to move it wherever suits your screen.
It shares its shape system with the per-module masking & blending controls (found in the Masking & Blending tool of the left panel, for whichever module currently has focus): a shape drawn here is the same object a module can use as a mask, and vice-versa.
The top row of buttons creates new shapes — the same Brush, Circle, Ellipse, Polygon and Gradient tools as the drawn mask interface. Below them is a list of every mask and shape defined for the current image. You can also right-click empty space in that list and choose Add new shape … to create a standalone shape directly here, without going through a module.
Groups of shapes that form a module’s mask appear with a heading of the form Mask <module name>, with their component shapes nested below. After the groups comes a list of every individual shape that exists for the image but isn’t (yet) part of any mask. A marker to the right of a shape name indicates that it is in use by a mask.
Shapes
Each new shape gets an automatic name made of its type (brush, circle, ellipse, polygon, gradient) and an incrementing number. Double-click a name to rename it — meaningful names help a lot when reusing a selection across masks.
- Click a shape name to display just that shape and its controls on the canvas. This is the reliable way to grab one shape among many overlapping ones. Selecting a shape on the canvas from within a module’s mask controls likewise highlights it here.
- Right-click a top-level shape name (one not nested in a group) for Duplicate shape, Delete shape, and Cleanup unused shapes (removes every shape in the list that no mask currently uses). The same menu also exposes the shape’s size, feathering, rotation and opacity as sliders you can adjust right there, without selecting it on the canvas first.
Note
Ansel keeps every shape ever defined for an image until you explicitly remove it. If you export with the development history, all defined shapes are written to the XMP. A very long list of shapes can exceed the size limit of some file formats and make XMP writing fail on export — prune unused shapes when in doubt.
Masks and groups
A mask is a group of shapes applied in list order (top to bottom), each combining with the running mask through one of four set operators. Because order matters, shapes can be moved up and down the list.
Click a group name to expand it and show its shapes (also drawn on the image). Showing a mask from within a module expands the matching group here.
Right-click a group name for:
| Add new shape … Creates a shape and adds it directly into this group. |
| Add shape … Adds one of the image’s existing, currently-unused shapes into this group. |
| Cleanup unused shapes Removes every shape in the list that no mask currently uses. |
| Delete mask Removes the whole group. |
Right-click a shape inside a group to control its contribution:
| Operation | Invert shape Inverts the polarity of the shape. |
| Union / Intersection / Difference / Exclusion The set operator combining this shape with the preceding mask. Only offered when exactly one shape is selected. |
| Move up / Move down Reorders the shape within the group. |
| Remove shape from mask Takes the shape out of the group without deleting the shape itself — it remains in the image’s shape list, available to reuse elsewhere. |
To build your own group, select several shapes, right-click and choose Group the forms.
Set operators
Set operators define how each shape combines with the mask built from the shapes above it, taking a pixel to be “selected” when its opacity is greater than zero. The examples below combine a Gradient with a Polygon, showing the effect of each operator applied to the Polygon:


UnionThe default. The result selects pixels that are in the existing mask or in the added shape (the maximum value is taken where they overlap). | ![]() |
IntersectionThe result selects only pixels that are in both the existing mask and the added shape (the minimum value is taken where they overlap) — useful to “imprint” one shape onto another. | ![]() |
DifferenceThe result keeps pixels that are in the existing mask but not in the added shape — useful to cut a region out of a selection. | ![]() |
ExclusionThe result selects pixels that are in the existing mask or the added shape but not both (an exclusive or). | ![]() |
Union
Intersection
Difference
Exclusion