diff --git a/content/hub/docs/folder/Technical-Guide.md b/content/hub/docs/folder/Technical-Guide.md index aba0bec..33327a5 100644 --- a/content/hub/docs/folder/Technical-Guide.md +++ b/content/hub/docs/folder/Technical-Guide.md @@ -73,7 +73,7 @@ A convert branch is used to adjust the latest GIMP master branch to support the The current strategy is to place any heavily modified file that supports multiple feature branches—through the addition of new data structures—into a convert branch. This approach helps consolidate overlapping changes in one place, while maintaining the core code that performs the main functions in separate feature branches. -The convert branches are: +The current convert branches are: - **convert-to-artbox:** The main branch that combines all other convert branches. - **convert-data-remote:** Handles the gimp-data remote url. @@ -96,16 +96,11 @@ These conflicts can be resolved fairly easily due to the automated construction #### Example of a Convert Branch -A unusually complex convert branch like 'convert-paintbrush-all-merged' is itself a combined branch that integrates multiple smaller changes. +A unusually complex convert branch like 'convert-paintbrush-all-merged' is a branch that integrates multiple smaller changes, it's commit history is more than one change. - convert-paintbrush-all-merged: Integrates modifications to the paintbrush tool, history is intact. - - convert-paintbrush-simple-boundary - - convert-paintbrush-simple-boundary - - convert-paintbrush-status-alt - - convert-paintbrush-erase - ... -These sub-branches implement smaller, specific changes. If a conflict arises between convert-paintbrush-all-merged and the GIMP development branch, an interactive rebase can be done to edit and resolve that particular commit. +If a conflict arises between convert-paintbrush-all-merged and the GIMP development branch, an interactive rebase can be done to edit and resolve that particular commit. ### Feature Branches diff --git a/content/hub/feature-test/folder/Dynamic-Velocity-Output.md b/content/hub/feature-test/folder/Dynamic-Velocity-Output.md index 8f560d7..34651e3 100644 --- a/content/hub/feature-test/folder/Dynamic-Velocity-Output.md +++ b/content/hub/feature-test/folder/Dynamic-Velocity-Output.md @@ -4,28 +4,29 @@ type: docs # Objective -Make sense of the mapping graphs for dynamic features by removing the velocity inversion. +Remove the velocity inversion, so that the dynamic mapping graphs representation is accurate. ## Related Links - Branches: Artbox and [feature-remove-inverted-dynamic-velocity](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/feature-remove-inverted-dynamic-velocity?ref_type=heads) +- https://gitlab.gnome.org/GNOME/gimp/-/issues/958 ## Design Revisions | **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 | +| **1. Remove Velocity Inversion** | The velocity calculations are inverted | The maximum and minimum values are inverted in the spacing curve graph | The velocity calculations are no longer inverted, and the velocity mapping graph is accurate | ## MR Description -This MR removes the velocity inversion in the dynamic features, ensuring the velocity mapping is more intuitive and accurate. +This merge request removes the velocity inversion in dynamics, simplifying the velocity mapping for easier use. ### 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. + - `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. +- This change corrects the velocity mapping in dynamic features, helping users understand and control brush settings without dealing with inverted values. diff --git a/content/hub/feature-test/folder/Paintbrush-Options.md b/content/hub/feature-test/folder/Paintbrush-Options.md index fcc46b9..c201fc5 100644 --- a/content/hub/feature-test/folder/Paintbrush-Options.md +++ b/content/hub/feature-test/folder/Paintbrush-Options.md @@ -1,7 +1,3 @@ ---- -type: docs ---- - # Objective Improve the usability of the Paintbrush GUI. @@ -14,18 +10,19 @@ Improve the usability of the Paintbrush GUI. ## Related Links -- Branches: Artbox and [feature-paintbrush-options](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/feature-paintbrush-options?ref_type=heads) +- Branches: Artbox and [convert-paintbrush-all-merged](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/convert-paintbrush-all-merged?ref_type=heads) ## Design Revisions -| **Revision** | **Current Design** | **Issues** | **Changes** | -|--------------------------------------------|---------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------|-----------------------------------------------------------| -| **1. Remove Reset Brush Button** | Option sliders have a reset button to default values. | Rarely used; adds complexity to the GUI. | Remove the reset to default button. | -| **2. Remove Brush Link Button** | Brush link button allows linking to brush editor options. | Difficult to explain and justify; causes confusion | Remove the link button. | -| **3. Add Expander for Additional Options** | Options added to the end of paintbrush settings; more options will be added in the future | Lesser-used options clutter the interface and reduce dock space efficiency | Add an "Additional Options" expander for lesser-used items | -| **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 | +| **Revision** | **Current Design** | **Issues** | **Changes** | +|--------------|---------------------|------------|-------------| +| **1. Remove Reset Brush Button** | Option sliders have a reset button to default brush values. | Rarely used in some workflows; adds complexity to the GUI. | Remove the reset to default button. Instead, Ctrl + Click on the slider to reset it to the brush default. | +| **2. Adapt Brush Link Button** | Brush link button allows linking to brush editor options and brush changes. | Difficult to explain and used in some workflows, not all; causes confusion. | Rename the button to Brush Update Button. Make it optional via a Tool Options -> Paintbrush preference. Add more clarity and information to the tooltip. | +| **3. Add Expander for Additional Options** | Options are added to the end of Paintbrush settings; more options will be added in the future. | Lesser-used options clutter the interface and reduce dock space efficiency. | Add an "Additional Options" expander for lesser-used items. | +| **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 only when Enable Dynamics is checked. | +| **5. Compact Resource Chooser** | Picking a resource such as a brush or a dynamic is done via a chooser in the Paintbrush GUI. | The chooser takes up two rows of the dockable panel due to a label above the combo box. The icons on either side are distorted to fill the gap, which looks poor. GUI space is wasted. | Remove the label to make the chooser more compact. The purpose of the chooser is self-evident and does not need a label. | +| **6. Smooth Stroke Position** | 'Smooth Stroke' is located lower down in the dock. | It’s a frequently used option for painting. | Move it higher up in the dock within 'Stroke Effects'. | +| **7. Stroke Effects Expander** | New feature. | Options clutter the Paintbrush GUI, or don't flow visually. | Create a 'Stroke Effects' expander to organize these related options. The state of the expander is saved and restored. | ## MR Description @@ -34,24 +31,27 @@ This MR enhances the Paintbrush GUI in several ways, making it more intuitive an ### 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. + - 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. + - 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. + - Introduced a new "Additional Options" expander in the Paintbrush options panel. This organizes less frequently used options (such as 'Lock Brush to View' and 'Simple Brush Boundary' toggles) into a collapsible section, saving space and reducing clutter in 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. + - 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. + - 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. + - 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. + +7. **Stroke Effects Expander**: + - Added a new "Stroke Effects" expander to group related stroke options into one collapsible section. The state of the expander is saved and restored across sessions, preserving the user's preference for a consistent experience. ### 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. +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. diff --git a/content/hub/feature-test/folder/Path-Tool.md b/content/hub/feature-test/folder/Path-Tool.md new file mode 100644 index 0000000..a6ffe7f --- /dev/null +++ b/content/hub/feature-test/folder/Path-Tool.md @@ -0,0 +1,38 @@ +--- +type: docs +--- + +# Objective + +Enhance path editing features. + +## Related Links + +- Branches: Artbox, [feature-snap-to-path-distance](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/feature-snap-to-path-distance?ref_type=heads), [feature-path-editing](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/feature-path-editing?ref_type=heads) + +## Design Revisions + +| **Revision** | **Current Design** | **Issues** | **Changes** | +|---------------|---------------------|-------------|-------------| +| **1. Path Snap Distance** | Snapping uses a single distance for snapping to grid, guides, and paths. | Users can't adjust snapping precision separately for paths. | Introduced an independent `Active Paths` preference option. | +| **2. Path Visibility Control** | Created don't automatically show visibility. | Users need to manually enable visibility for newly created paths. | Added visibility control for paths at creation via a new `Visible` property. | + +## MR Description + +This merge request improves the snapping and visibility options for paths, allowing users finer control over snap distances for paths and automatic visibility for new paths. + +### Changes + +1. **Path Snap Distance**: + - Extended the `gimp_image_snap_point` function in `gimpimage-snap.c` to accept new `epsilon_path_x` and `epsilon_path_y` parameters, which allow different snapping tolerances for paths compared to grid or guide snapping. + - Updated `gimp_display_shell_snap_coords` to include the `snap_path_distance` property, adding flexibility to set path-specific snap distance through `snap_path_distance` configured in the display. + +2. **Path Visibility Control**: + - Introduced a new `visible` property in `GimpToolPathPrivate`, allowing paths to be visible upon creation. This property ensures new paths are visible by default unless otherwise configured. + - Added `PROP_VISIBLE` to `gimp_tool_path_class_init` in `gimp_tool_path.c` to manage path visibility and bind it to the vector tool settings. + - In `gimp_vector_options`, added a new checkbox in the GUI labeled "Visible Path" to control path visibility in the tool options. + +### Benefit + +- **Improved Snap Control**: Users can now adjust snap distances independently for paths, providing more precise control based on the type of element (e.g., paths versus grids). +- **Enhanced Workflow with Auto-Visibility**: Automatically making paths visible at creation enhances user feedback and reduces manual toggling, streamlining the editing process. diff --git a/content/hub/feature-test/folder/Resource-Control.md b/content/hub/feature-test/folder/Resource-Control.md index c5fd578..2300b38 100644 --- a/content/hub/feature-test/folder/Resource-Control.md +++ b/content/hub/feature-test/folder/Resource-Control.md @@ -37,7 +37,7 @@ 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 | - +| **9. Tool Preset Name in Tool Options Title** | New Feature | See the active Tool Preset name requires the Tool Preset Editor to be open or the Tool Preset selector to be in list mode | Added the active Tool Preset name after the Tool name in the Tool Options title. Tool Name | Tool Preset Name | ## 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: @@ -72,6 +72,9 @@ This merge request improves the usability and data-saving mechanisms for resourc 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. +10. **Tool Preset Name in Tool Options Title:** + - Added the active Tool Preset name after the Tool name in the Tool Options title. Tool Name | Tool Preset Name. We can see which Tool Preset is active from the Tool Options Title. + ### Benefit These changes aim to provide better control over resources and presets, allowing users to manage their assets more intuitively and prevent unintended modifications. diff --git a/content/hub/feature-test/folder/Simple-Sliders.md b/content/hub/feature-test/folder/Simple-Sliders.md index d2c2f6f..2003bdf 100644 --- a/content/hub/feature-test/folder/Simple-Sliders.md +++ b/content/hub/feature-test/folder/Simple-Sliders.md @@ -10,18 +10,20 @@ Simplify the slider interaction and provide a less distracting slider cursor. | **Revision** | **Current Design** | **Issues** | **Proposed Changes** | |---------------|---------------------|-------------|----------------------| -| **1. Click to Slide** | Clicking the numerical area of the slider does not move the slider. | Adjusting values at the top range requires careful cursor control to avoid accidentally activating the numerical input. | Disable slider activation by a single click in the numerical input area. | +| **1. Click to Slide** | Clicking the numerical area of the slider does not move the slider. | Adjusting values at the top range requires careful cursor control to avoid accidentally activating the numerical input. | Remove detection of left clicking in the numerical input area. | +| **2. Click to Enter Number** | Clicking the numerical area of activates the number entry. | This disrupts slider use. | Clicking the slider activates the numerical entry and allows the slider to slide | +| **3. Grab icons changed** | Grabbing hand icons are used | This is obscuring and cartoon like | Use sb_up_arrow and sb_h_double_arrow, up and side-to-side. | ## MR Description -This MR removes the ability to activate the numerical input field with a single click, improving slider usability. +This MR improving slider usability for painters, interaction is simple. It also changes the cursors from grabbing hands to sb_up_arrow and sb_h_double_arrow, up and side-to-side. ### Benefit - Sliders will always slide on a single click, improving usability during tasks like painting. -- Up arrows allow a precise selection and don't visually jump from cursor to hands, less distraction. ### Loss -- Numerical input must now be adjusted using +/-, arrow keys, page up/down, middle-click, or by double-clicking the numerical area. This change impacts quick single-click numerical edits. +- Left clicking the numerical input entry will cause the slider to jump to that position and the value will change. +- User has to adapt by right clicking the numerical input for a number change without slider and value jump. diff --git a/content/hub/feature-test/folder/Tool-Preset-Editor.md b/content/hub/feature-test/folder/Tool-Preset-Editor.md new file mode 100644 index 0000000..d5ae4b2 --- /dev/null +++ b/content/hub/feature-test/folder/Tool-Preset-Editor.md @@ -0,0 +1,32 @@ +# Objective + +Enhance the Tool Preset Editor. + +## Related Links + +- Branches: [Artbox](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/artbox?ref_type=heads) + +## Design Revisions + +| **Revision** | **Current Design** | **Issues** | **Changes** | +|----------------------------|--------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------| +| **1. Icon Picker Update** | The icon picker is very small on a HDPI screen. | Limited icon visibility, reducing ease of use and feature discovery. | Added a new `icon_tool_preset` boolean property to adjust the picker size in the Tool Preset Editor, enlarging and centering the icon picker. | +| **2. Tool Preset Expander** | Tool Preset editor apply options are listed without context. | Lack of organization leads to a cluttered UI in the Tool Preset Editor and an oversized dock. | Implemented an expandable frame grouping preset toggle options under "Preset Application Filter" for a cleaner, and minimum height, layout. | + +## MR Description + +This MR improves the tool preset editor's usability and enhances icon picker customization, focusing on visual improvements and configurable options for a more intuitive user experience. + +### Changes + +1. **Icon Picker Update**: + - Added a new `icon_tool_preset` boolean property to conditionally adjust the picker size for the Tool Preset Editor. + - The icon picker is placed in the center of the editor. + +2. **Tool Preset Expander**: + - Added a collapsible `Preset Application Filter` frame in the Tool Preset Editor to contain various preset options as checkboxes. + - Used the GTK expander widget to create a compact interface that keeps options accessible while minimizing visual clutter. + +### Benefit + +- The enlarged icon picker and organized Tool Preset Editor improve visual feedback and provide a structured layout for managing complex tool configurations. The `Preset Application Filter` expander reduces interface clutter and reduces dock height, optimizing usability. diff --git a/content/hub/feature-test/folder/Tool-Tips.md b/content/hub/feature-test/folder/Tool-Tips.md new file mode 100644 index 0000000..2808fb7 --- /dev/null +++ b/content/hub/feature-test/folder/Tool-Tips.md @@ -0,0 +1,35 @@ +--- +type: docs +--- + +# Objective + +Improve the quality of the user interface experience by optionally deactivating distracting tool tips. + +## Related Links + +- Branches: [Artbox](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/artbox?ref_type=heads) + +## Design Revisions + +| **Revision** | **Current Design** | **Issues** | **Changes** | +|--------------------------|------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| +| **1. Configurable Tooltips** | Tooltips cannot be turned off | Users cannot stop distracting tips from flickering on and off | Introduced a new Preferences option, `Show tool tips`, allowing users to toggle some tooltips on or off. | + +## MR Description + +This MR introduces a Preference option for tooltips, enabling users to manage tooltip visibility according to their preference. This applies to UI components like Tool Buttons, Dock Tabs, and Paintbrush sliders, minimizing distractions while retaining essential tool guidance for those who want it. + +### Changes + +1. **Configurable Tooltip Property**: + - Added a new `show_tool_tips` property to the `GimpGuiConfig` structure, making tooltip display configurable through the codebase. + +2. **Tooltip Preference Integration**: + - Integrated the tooltip preference under `Preferences -> Interface -> Help System -> General -> Show tool tips`, allowing users to toggle tooltip visibility easily within the UI. + +### Benefit + +- The addition of the `show_tool_tips` option enhances user control over the interface, reducing UI clutter for users who prefer minimal tool guidance, while retaining tooltip functionality for those who rely on detailed tool descriptions. Though primarily a workaround to reduce tooltip distractions, a more granular solution could be implemented for further customization. + +--- diff --git a/content/hub/feature-test/folder/Warp-Tool.md b/content/hub/feature-test/folder/Warp-Tool.md new file mode 100644 index 0000000..21f8cef --- /dev/null +++ b/content/hub/feature-test/folder/Warp-Tool.md @@ -0,0 +1,74 @@ +--- + +type: docs + +--- + +# Objective + +Enable warping functionality for Layer Groups in Artbox to support a flexible design process, allowing artists to dynamically adjust work within highly structured files containing hundreds of layers. + +## Related Links + +- Branches: [Artbox](https://gitlab.gnome.org/pixelmixer/artbox/-/tree/artbox?ref_type=heads) +- Youtube [Demo](https://youtu.be/nUbQFMhGr1s) + +## Design Revisions + +| **Revision** | **Current Design** | **Issues** | **Changes** | +|--------------------------------|----------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------| +| **1. Warp Layer Groups** | Layers can only be warped individually. | Warping a group of layers together is unsupported, limiting transformations on complex structures. | Introduced the ability to warp entire layer groups, including their masks. | +| **2. Group Masks Warping** | New Feature | Masks don’t always need to be warped, requiring flexibility. | Added a Warp Transform option to enable or disable group mask warping. | +| **3. Configurable Warp Margin**| Layers can exceed defined boundaries during transformations, leading to clipping or distortion. | Warping beyond layer boundaries results in inconsistent or incomplete transformations. | Added a configurable `Margin` slider for group expansion to accommodate boundary extensions. | +| **4. Tool Restart in Usable State** | Tool can restart in any mode, including `Erase` and `Smooth`, even if no content is available to warp. | Starting in `Erase` or `Smooth` mode with no warp content to modify creates a usability issue. | Tool now restarts in `Move` mode if the previous action leaves it in an unusable state. | +| **5. Last Undo Notification** | Tool doesn’t indicate when the last available undo is reached. | Users may attempt further undo actions without realizing they’ve reached the limit, causing confusion. | Added a status message to notify users when they’ve reached the last undo, helping them manage next steps carefully. | +| **6. Layer Change Notification** | Users can switch layers while performing a group warp. | Switching layers mid-warp may cause data inconsistencies and unexpected visual results in the warped layer. | Added a notification that prompts users to commit the current warp before switching layers and reselects the warp layer. | +| **7. Display Change Auto-Commit** | Users can switch displays mid-warp without committing, leading to potential data loss or visual issues. | Changing displays mid-warp can prevent the warp tool’s indicator circle from drawing correctly on either display. | Auto-commit on display switch ensures correct behavior and prepares the tool for immediate use on the new display. | +| **8. Warp Item Validation** | New Feature | Warping incompatible items, locked layers, or empty content may cause errors or slowdown. | Added `is_valid_warp_item` to validate items in groups, checking for locked, empty, or out-of-bounds layers. | + +## MR Description + +This MR extends the Warp Transform Tool to support group warping, including options for group mask handling and configurable margins. It also includes improvements in usability notifications, automatic warp commits, and item validation. + +### Changes + +1. **Warp Layer Groups**: + - Introduced `WarpGroup` structure to handle warping across multiple items within a layer group. + - Enhanced functions like `gimp_warp_tool_group_commit` and `initialize_warp_tool` to process Layer Groups, including bounding box calculations and grouped warping. + +2. **Warp Group Masks**: + - Added a toggle (`PROP_GROUP_WARP_GROUP_MASKS`) in `gimp_warp_options_gui` to control mask warping within groups. + - This boolean setting allows users to include group masks in the warp transformations, depending on artistic needs. + +3. **Configurable Warp Margin**: + - Implemented the `PROP_GROUP_MARGIN` setting for customizable margins around layer groups. + - This margin prevents content clipping during warp transformations by providing a configurable buffer, adjustable from 16 to 2048 pixels. + +4. **Tool Restart in Usable State**: + - Ensures the tool restarts in `Move` mode if previous actions would otherwise leave it in `Erase` or `Smooth` modes, which require existing content to function. + +5. **Last Undo Notification**: + - Provides a status message alerting users when they are at the final undo step, guiding them to proceed carefully. + +6. **Layer Change Notification**: + - In group warping mode, the tool prompts users to commit the current warp before switching layers. + - The warp layer is automatically reselected, ensuring that users complete changes on the active layer before proceeding with other edits. + +7. **Display Change Auto-Commit**: + - When the user changes displays mid-warp, the tool automatically commits the current warp. + - This adjustment maintains data consistency across displays and prepares the tool for immediate use on the new display. + +8. **Warp Item Validation**: + - Introduced `is_valid_warp_item` to validate items within groups for compatibility with the warp process. + - This function checks if an item is in `tmp_expand_layers`, is content-locked, has a valid bounding box, and intersects with the warped area. + - Items are further examined using an enhanced `gimp_pickable_auto_shrink` function, allowing classification of items as empty, uniform, or containing non-black pixels to optimize warp applicability. + +### Benefit + +These updates provide extended control over complex layer group warping, improve visual feedback, and prevent boundary clipping during transformations. The ability to warp group masks improves consistency for multi-layer transformations, while the margin setting allows for flexibility with expanded areas within the canvas. Usability improvements—such as automatic commits on display switches, notifications for undo limits, and compatibility validation for warp items—enhance workflow efficiency and user experience. Artists who work in a non-destructive, layered format can now refine their work at any stage using the Warp Transform on nested Layer Groups. + +### Known Issues + +- **Undo/Redo Limitations**: Undo then Redo may fail due to an unknown issue with Layer Group mask handling. It’s advised to save before warping, and use autosave and incremental saving. +- **Experimental Freeze Feature**: Freezing the Layer Stack container to improve update speed and restrict GUI interaction causes erratic behavior in the Layer Stack post-warp. This experimental feature can be enabled via a code flag. Layer Group warping requires further testing and code review due to the complexity of the operation. + diff --git a/content/hub/guides/folder/Building-a-Debug-Version.md b/content/hub/guides/folder/Building-a-Debug-Version.md index 5f5af79..e624bd7 100644 --- a/content/hub/guides/folder/Building-a-Debug-Version.md +++ b/content/hub/guides/folder/Building-a-Debug-Version.md @@ -155,7 +155,7 @@ if [[ -z "$GIMP_PREFIX" ]]; then fi # Verify GIMP binary path -gimp_binary="${GIMP_PREFIX}/bin/gimp-2.99" +gimp_binary="${GIMP_PREFIX}/bin/gimp-3.0" if [[ ! -x "$gimp_binary" ]]; then echo "Error: GIMP not found or not executable at $gimp_binary" read -n 1 -r -s -p "Press any key to exit..." @@ -195,9 +195,9 @@ Testing debug symbols with a breakpoint at 'main'. Enter 'info sharedlibrary' at the (gdb) prompt to view availablity. Enter 'continue' at the (gdb) prompt to launch GIMP in debug mode. -Reading symbols from /home/mark/code/gnome/bin/gimp-2.99... +Reading symbols from /home/mark/code/gnome/bin/gimp-3.0... Breakpoint 1 at 0x154fc1: file ../app/main.c, line 544. -Starting program: /home/mark/code/gnome/bin/gimp-2.99 +Starting program: /home/mark/code/gnome/bin/gimp-3.0 This GDB supports auto-downloading debuginfo from the following URLs: @@ -248,7 +248,7 @@ script_dir="$(dirname "$(realpath "$0")")" source "$script_dir/build_env.sh" -gdbserver :9999 `which gimp-2.99` --g-fatal-warnings +gdbserver :9999 `which gimp-3.0` --g-fatal-warnings ``` @@ -261,7 +261,7 @@ bash gdbserver.sh The server will output something like: ```bash -Process /home/mark/code/gnome/bin/gimp-2.99 created; pid = 14224 +Process /home/mark/code/gnome/bin/gimp-3.0 created; pid = 14224 Listening on port 9999 ``` @@ -276,7 +276,7 @@ To return to the graphical interface, use `Ctrl + Alt + F7` (or `F2` on some sys Once in a TTY, log in and run GDB to connect to the GDB server: ```bash -gdb /home/mark/code/gnome/bin/gimp-2.99 +gdb /home/mark/code/gnome/bin/gimp-3.0 ``` Then, connect to the GDB server and resume execution: