Skip to content

Commit

Permalink
up date feature descriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
script-fu committed Oct 16, 2024
1 parent b1573fe commit dab3cae
Show file tree
Hide file tree
Showing 11 changed files with 210 additions and 14 deletions.
18 changes: 16 additions & 2 deletions content/hub/feature-test/folder/Dynamic-Brush-Spacing.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ Improve the quality of the brush spacing with respect to velocity.
|--------------------------------------------|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| **1. Remove Spacing Limits** | Spacing is set to 200% for fast | Spacing does not respect the Paint Tool slider settings | Spacing respects the slider values |


## Notes

This feature branch was a proposed solution to https://gitlab.gnome.org/GNOME/gimp/-/issues/1863
Expand All @@ -25,4 +24,19 @@ This feature branch was a proposed solution to https://gitlab.gnome.org/GNOME/gi
![without-feature](/images/diagrams/brush-velocity-without-feature.webp)

**With Feature:** Top is a slow stroke, middle line fast, lower is slow to fast.
![with-feature](/images/diagrams/brush-velocity-with-feature.webp)
![with-feature](/images/diagrams/brush-velocity-with-feature.webp)

## MR Description

This MR refines the calculation of dynamic brush spacing, removing unnecessary scaling and simplifying the logic.

### Changes

- **Simplified Dynamic Spacing Calculation**:
- Removed the formula that scaled spacing up to 200%.
- Now, dynamic spacing is directly multiplied by `core->spacing`, ensuring a simpler and more predictable behavior.
- The minimum spacing is clamped to `EPSILON` to prevent it from becoming too small.

### Benefit

- The new approach provides cleaner, more predictable spacing behavior, adhering more closely to user-defined values without arbitrary limits.
12 changes: 8 additions & 4 deletions content/hub/feature-test/folder/Dynamic-Multiply-Modes.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,20 @@ Make a beautiful brush stroke.
**Feature:** The left side is with Pressure and Fade multiply enabled, right side is without
![feature](/images/diagrams/brush-dynamic-multiply-modes.webp)

## MR Description

This MR adds dynamic multiply modes (`Pressure Multiply` and `Fade Multiply`) to the `gimp_dynamics_output_get_linear_value` function, enabling finer control over brush strokes.

#### Changes:
- **Pressure Dynamics**:
### Changes

- **Pressure Dynamics**:
- Added `options->brush_pressure_multiply` check.
- If enabled and there are existing factors, the pressure is multiplied. Otherwise, it's added as usual.

- **Fade Dynamics**:
- **Fade Dynamics**:
- Added `options->fade_options->fade_multiply` check.
- If enabled and there are existing factors, the fade is multiplied. Otherwise, it's added.

#### Benefit:
### Benefit

- Allows users to multiply or add pressure and fade dynamics for more precise brush control.
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ Uses a log function, no discernable slowdown on a _fast_ pc.
**With Feature:** Left side is a slow to fast stroke, right side has inverted velocity mapping
![with-feature](/images/diagrams/brush-velocity-compression-with-feature.webp)

---

### Summary
## MR Description

This feature improves the velocity handling in `gimpmotionbuffer.c` by implementing a logarithmic velocity compression function and refining the smoothing algorithm. The key changes and their benefits are:

### Changes

- **Logarithmic Velocity Compression:**
- Introduces a new compression function that maps raw velocities to a compressed range using a logarithmic scale.
- Enhances sensitivity for low velocities, allowing for finer control during slow movements.
Expand All @@ -47,6 +47,6 @@ This feature improves the velocity handling in `gimpmotionbuffer.c` by implement
- Refactors code to correctly update `buffer->last_coords.velocity` after assignments to prevent unintended overwrites.
- Includes detailed comments explaining the purpose of constants like `V_MAX`, `k`, and `V_THRESHOLD`, aiding future maintenance and readability.

**Impact:**
### Benefit

These enhancements result in more responsive and natural tool dynamics within GIMP's drawing tools, offering users improved control and a better overall experience when interacting with dynamic brushes and other velocity-dependent features.
14 changes: 14 additions & 0 deletions content/hub/feature-test/folder/Dynamic-Velocity-Output.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,17 @@ Make sense of the mapping graphs for dynamic features by removing the velocity i
| **Revision** | **Current Design** | **Issues** | **Changes** |
|--------------------------------------------|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| **1. Remove Velocity Inversion** | Velocity is math inverted | The max and min values are inverted in the spacing curve graph | The velocity math is not inverted and the graph for velocity mapping is accurate |

## MR Description

This MR removes the velocity inversion in the dynamic features, ensuring the velocity mapping is more intuitive and accurate.

### Changes

- **Remove Velocity Inversion**:
- The velocity is no longer inverted (`1.0 - coords->velocity` removed).
- Now, `coords->velocity` is mapped directly, making the graph for velocity mapping more accurate.

### Benefit

- This change ensures that the velocity mapping in the dynamic features behaves correctly, making it easier for users to understand and control their brush settings without inverted values.
13 changes: 13 additions & 0 deletions content/hub/feature-test/folder/Filter-Restores-Last-Tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,16 @@ Removes a longstanding GUI issue.
|--------------------------------------------|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| **1. Restore the previous tool after using a filter** | The filter is the active tool | Confusing to the user to deselect the active tool when a filter is used, and to keep the filter as the active tool | Restore the previous tool when a filter dialog is closed |

## MR Description

This MR fixes a GUI issue by restoring the previous tool after using a filter, preventing user confusion.

### Changes

- **Restore Previous Tool After Filter Use**:
- Added code to retrieve the previous tool from the context.
- After a filter dialog closes (whether committed or canceled), the previous tool is restored using `gimp_context_set_tool`.

### Benefit

- Ensures the user's previous tool is restored after using a filter, providing a more intuitive and seamless experience in the tool palette.
24 changes: 22 additions & 2 deletions content/hub/feature-test/folder/Paint-Tool.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,27 @@ Improve the quality of the painting experience in Artbox
| **2. Indicate Erase Mode** | New Feature | It's not possible to tell if the paintbrush is about to erase whilst looking at the cursor | Detect the 'Eraser Tool' and 'Erase Paint' mode, change the cursor to a dashed circle |
| **3. Simple Brush Boundary** | Image brushes are drawn as complex outlines based on the image | They can make a distracting paintbrush when the image is large and noisy | Draw a simple circular boundary if the 'Simple Brush Boundary' option is checked in the Paintbrush Options |

## MR Description

## Notes
This MR improves the painting experience by refining brush cursor behavior and adding new visual cues, with technical adjustments to enhance usability and provide better feedback during painting.

This feature branch only works when merged with the 'artbox' branch or rebased onto the 'options-paintbrush-simple-boundary' branch
### Changes

1. **Easy Cursor Location**:
- Introduced a new function `gimp_draw_brush_cursor` that ensures a minimum cursor size, even when the brush is very small or not visible (e.g., zero-pressure).
- Defined constants `FINDER_SIZE` and `CORE_SIZE` to ensure a small 'filled' contact circle is always drawn, making the cursor easier to locate.
- If the brush outline is too small, `should_locate` triggers a fallback locator circle.

2. **Indicate Erase Mode**:
- The new `gimp_is_erasing_paint` function detects when the user is in 'Eraser Tool' mode or the 'Erase Paint' blending mode.
- When erasing is active, the cursor switches to a dashed circle by invoking `gimp_draw_arc_circle`, providing clear visual feedback.
- A small filled circle is also drawn at the center to help users identify the brush's contact point.

3. **Simple Brush Boundary**:
- Added a new boolean option `brush_simple_boundary` in the Paintbrush Options GUI.
- In the `gimp_paint_tool_draw` function, the standard complex outline of the brush (derived from the image brush mask) is bypassed when this option is enabled.
- Instead, a simple circular boundary is drawn by the `draw_brush_circle` function, providing a cleaner, less noisy visual representation for large or complex brushes.

### Benefit

- These updates improve the visual clarity and feedback of the brush cursor during painting. The small contact circle ensures the cursor is always visible, the dashed circle gives clear feedback in erase mode, and the simple brush boundary reduces distractions from complex brush shapes.
29 changes: 29 additions & 0 deletions content/hub/feature-test/folder/Paintbrush-Options.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,32 @@ Improve the usability of the Paintbrush GUI.
| **4. Separate Dynamics** | 'Enable Dynamics' contains the 'Fade and Colour' options| The 'Fade and Colour' options take up a lot of space, and do not need to be visible all the time.| Add a "Dynamic Fade and Colour" expander, visible when Enable Dynamics is checked |
| **5. Compact Resource Chooser** | Picking a resource such as a brush or a dynamic is done via a chooser, see the Paintbrush GUI | The chooser is takes up two rows of the dockable due to a label above the combo box. The icons on either side are distorted to fill the gap, which looks bad. GUI space is wasted | Remove the label and the chooser becomes compact. The purpose of the chooser is self evident and does not need a label|
| **6.Smooth Stroke Position** | 'Smooth Stroke' is in low down in the dock | It's a frequently used option for painting | Move higher up the dock |

## MR Description

This MR enhances the Paintbrush GUI in several ways, making it more intuitive and streamlined by removing unnecessary elements and organizing options more efficiently.

### Changes

1. **Remove Reset Brush Button**:
- Removed the reset buttons for brush size, aspect ratio, angle, spacing, and hardness from the Paintbrush options. The code for resetting these properties, along with the corresponding signals, was removed to simplify the interface.

2. **Remove Brush Link Button**:
- Removed the 'Link to Brush Editor' button, which previously allowed linking the paintbrush options to the brush editor options. This simplifies the GUI by removing a confusing feature that was rarely used.

3. **Add Expander for Additional Options**:
- Introduced a new "Additional Options" expander in the Paintbrush options panel. This organizes less frequently used options (such as the 'Lock Brush to View' and 'Simple Brush Boundary' toggles) into a collapsible section, saving space and removing clutter from the GUI.

4. **Separate Dynamics (Fade and Colour)**:
- Moved the 'Fade and Colour' options (related to brush dynamics) into a separate expander that appears only when 'Enable Dynamics' is checked. This keeps the interface cleaner by hiding these advanced options when dynamics are not in use.
- Added `fade-multiply` and `brush-pressure-multiply` toggles to enable pressure and fade dynamics, providing more fine-tuned control.

5. **Compact Resource Chooser**:
- Removed the label from the resource chooser (used for selecting brushes, dynamics, etc.), making the chooser more compact and saving space in the dockable panel. The chooser’s function is self-explanatory, so the label was deemed unnecessary.

6. **Smooth Stroke Position**:
- Moved the 'Smooth Stroke' options higher up in the Paintbrush options panel, reflecting its frequent use. This improves accessibility and better aligns with user expectations.

### Benefit

- This set of changes significantly improves the usability and efficiency of the Paintbrush GUI. By reducing visual clutter, hiding advanced options behind expanders, and simplifying the interface, users can now navigate the Paintbrush settings more easily while still accessing the features they need.
16 changes: 15 additions & 1 deletion content/hub/feature-test/folder/Presets-Restore.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,18 @@ Improve the usability of Tool Presets in Artbox.

| **Revision** | **Current Design** | **Issues** | **Changes** |
|--------------------------------------------|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| **1. Double click active preset to restore** | Clicking an active preset has no affect | User has to select another preset then reselect to restore options to the save preset | Double clicking restores the preset
| **1. Double click active preset to restore** | Clicking an active preset has no affect | User has to select another preset then reselect to restore options to the save preset | Double clicking restores the preset. |

## MR Description

This MR improves the usability of Tool Presets by allowing users to restore a preset's settings with a double-click, making the preset selection more intuitive.

### Changes

1. **Double-Click to Restore Active Preset**:
- Previously, clicking on an already active preset had no effect, requiring the user to select a different preset before selecting the desired one to restore its settings.
- The `gimp_container_icon_view_item_activated` function was updated to call `gimp_context_tool_preset_changed` when a preset is double-clicked, restoring the preset's tool options immediately.

### Benefit

- This change simplifies the process of restoring Tool Preset options, providing a more efficient workflow by eliminating unnecessary clicks. Now, double-clicking an active preset will quickly restore its saved settings, improving the overall user experience.
40 changes: 39 additions & 1 deletion content/hub/feature-test/folder/Resource-Control.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Improve the usability and data saving of resources and Tool Presets in Artbox.

| **Revision** | **Current Design** | **Issues** | **Changes** |
|--------------------------------------------|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| **1. Deactivate automatic resource saving** | Saves are done when GIMP exits | Tweaks to resources in session can corrupt carefully set up tools with unwanted changes. | A Preference to 'Save resource changes on exit'
| **1. Deactivate automatic resource saving** | Saves are done when GIMP exits | Tweaks to resources in session can corrupt carefully set up tools with unwanted changes. | A Preference to 'Save resource changes on exit'
| **2. Save specific resource changes immediately** | Saves are done when GIMP exits | Changes to resources are lost if GIMP crashes or exits with a crash. | Save immediately when clicked |
| **3. Save As** | Saves are done with default naming | The name of the saved resource is not the same as the filename, this is confusing. | Save immediately with a naming option, Save As...|
| **4. Save All** | If saves are done by the user on demand, as described in (2) or (3), a new issue arises| Changes to resources may be forgotten during the session. Saving one by one is error prone and time consuming | Add 'Save all the active tool assets' button and a 'Save all changes' button on the Preset Editor |
Expand All @@ -37,3 +37,41 @@ Improve the usability and data saving of resources and Tool Presets in Artbox.
| **7. Edit Brush deals with Parametric and Image types** | See Brushes Menu items | Confusion over brush types | Double clicking an image type opens the image for editing, Double clicking a parametric type opens the Brush Editor |
| **8. Inform the user about locked resources** | Folder locked resources can not be edited | User confusion | An informative message is displayed in the Brush Editor if the resource is locked |
| **9. Copy and Paste as New Brush** | New Feature | Create a brush from the active drawable | Added to the Brushes Menu via a Script-Fu plug-in |

## MR Description

This merge request improves the usability and data-saving mechanisms for resources and Tool Presets in Artbox. Below is a summary of the key changes made to enhance the user experience with resources, including active tool presets, and their associated assets:

### Changes

1. **Resource Saving Preferences:**
- Introduced a new preference to toggle automatic resource saving on exit, preventing unwanted overwriting of user-set Tool Options during a session. This allows users to disable automatic saving and manually save specific changes when needed.

2. **Immediate Resource Saving:**
- Added functionality to save specific resource changes immediately upon request, ensuring that any modifications are persisted, even if the session ends unexpectedly. This avoids data loss in case of a crash.

3. **Save As:**
- A 'Save As' feature was added, allowing users to name and save resources with custom filenames, enhancing clarity and preventing confusion between resource names and file names.

4. **Save All:**
- Introduced a 'Save All' option to the Preset Editor, enabling users to save all active changes across tool presets, brushes, palettes, and other resources, reducing the need for manual per-resource saves.

5. **Simplified Menus and Button Bar:**
- Cleaned up the interface by providing an option to hide the 'Copy Resource Location' menu item, which was seldom used, thereby reducing menu clutter.
- Rearranged the Button Bar to reflect the new saving behaviors and align with the revised menus for consistency.

6. **Brush Editor Enhancements:**
- Adjusted the behavior for brush types so that double-clicking on image-type brushes opens the image for editing, while double-clicking on parametric brushes opens the Brush Editor. This resolves the confusion around brush types.

7. **Locked Resource Notification:**
- When a resource is locked (due to folder permissions), the user will now receive an informative message in the Brush Editor, improving clarity on why the resource cannot be modified.

8. **Create New Brush from Drawable:**
- Added the ability to copy and paste a drawable as a new brush via a Script-Fu plug-in, accessible from the Brushes Menu.

9. **Save Active Tool Assets:**
- Introduced a 'Save All Active Tool Assets' feature, allowing users to save all the active tool assets (brush, gradient, palette, dynamics) in a session for easier resource management. Note: the concept of saving a 'tool package' is not yet implemented.

### Benefit

These changes aim to provide better control over resources and presets, allowing users to manage their assets more intuitively and prevent unintended modifications.
15 changes: 15 additions & 0 deletions content/hub/feature-test/folder/Script-Fu.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,18 @@ Extend Script-Fu to include additional functions that help the user.
| (gimp-context-get-display) | Get the active display ID |
| (gimp-context-eraser-toggle) | Toggle the tool to the eraser. |
| (gimp-items-set-visible) | Set the visibility of a vector list of items |

## MR Description

This MR extends Script-Fu by adding several additional functions to improve scripting capabilities and enhance the user experience.

### Changes

1. **New Script-Fu Functions**:
- `(gimp-context-get-display)`: Retrieves the active display ID. This ID can then be used with other display-related functions like `(gimp-display-present display-id)`.
- `(gimp-context-eraser-toggle)`: Toggles the active tool between the eraser and the previously active tool.
- `(gimp-items-set-visible)`: Allows setting the visibility of a vector list of items in bulk. This can help streamline visibility management for layers, paths, or other drawable items.

### Benefit

- These additional functions enhance the flexibility of Script-Fu, enabling users to toggle between tools, manage visibility across multiple items, and integrate display information into their scripts, leading to more powerful automation and customization.
Loading

0 comments on commit dab3cae

Please sign in to comment.