From cbf27fcf77a003b1f35bd27cc1967a159b61980b Mon Sep 17 00:00:00 2001 From: pixelmixer Date: Tue, 5 Nov 2024 19:23:38 +0000 Subject: [PATCH] bump to 3.0 --- content/hub/docs/folder/Technical-Guide.md | 11 +-- .../folder/Dynamic-Velocity-Output.md | 11 +-- .../feature-test/folder/Paintbrush-Options.md | 42 +++++------ content/hub/feature-test/folder/Warp-Tool.md | 74 +++++++++++++++++++ .../guides/folder/Building-a-Debug-Version.md | 12 +-- 5 files changed, 110 insertions(+), 40 deletions(-) create mode 100644 content/hub/feature-test/folder/Warp-Tool.md 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/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: