Difference between revisions of "Brush Creation and Edit Instances"

From GIMP GUI Redesign
Jump to: navigation, search
(Discussion with Mark Sweeney)
(Current Status)
 
(23 intermediate revisions by the same user not shown)
Line 16: Line 16:
 
# Each brush asset category enables the editing kind, for instance, raster or parametric brushes have a dedicated way (conditional option) to open this asset as an image or as a vector, respectively.
 
# Each brush asset category enables the editing kind, for instance, raster or parametric brushes have a dedicated way (conditional option) to open this asset as an image or as a vector, respectively.
  
===1st Proposal to Contextual Menu to [Brushes Menu] (Two Levels)===
+
===Proposal Two Levels Simplified===
Use the two levels in a way to organize the tasks between creation and interaction to edit, duplicate and delete them.
+
It was needled the Parametric Brush and Raster Brush to classify the kinds of them: Parametric and Raster Brush (shaped versions).
 
 
====|<|Contextual Menu [Brushes Dock]====
 
 
 
'''First Level'''
 
|<|Contextual Menu
 
    Brushes Edit Menu [1]    >
 
    Create a Brush:...      [label divisor]
 
    Parametric...            [2]
 
    Elliptic Feathery...    [3]
 
    Elliptical...            [3]
 
    Rectangular Feathery...  [3]
 
    Rectangular...          [3]
 
    Custom Brush...          [4]
 
    ---
 
    Add Tab                  >
 
    Close Tab
 
    Detach Tab
 
    Lock Tab to Dock
 
    ---
 
    ...
 
 
 
'''Second Level (opening Brushes Menu)'''
 
|<|Contextual Menu
 
  \_Brushes Menu [1]    >
 
                        \_Edit Brush [5]
 
                        ---
 
                        \_Duplicate Brush
 
                        \_Copy Brush Location
 
                        \_Show in File Manager
 
                        \_Delete Brush
 
                        ---
 
                        Refresh Brushes
 
 
 
=====Messages and Scripts=====
 
* [1] The original name of the menu was 'Brushes Menu' to 'Brushes Edit Menu' to render clear the function of this menu.
 
* In each message box of [2] and [3] options, when we have mouseover, we need to write or repeat the kind of brush that will be created, for instance:<br>
 
** [2] To parametric kind, "Create .vbr parametric brush."<br>
 
** [3] To raster kind, an example, instead in Elliptical, Feathered... "Create an elliptical brush with feathered edges" > "Create a .gbr raster elliptic brush with feathered edges. "
 
* To dialogue of windows of the scripts, we need to identify the kind of brush that we are creating, raster or parametric.<br>
 
* [4] To Custom Brush, we need to create a new script to create custom raster brushes. IMO, this script must be capable of creating an empty .xcf archive with a feature to set the size layer, the layer number, if is grayscale or RGB, transparent or white background.<br>The message of the 'mouseover' option could be: "Create a custom raster brush."
 
* [5] a conditional option: if is parametric send it to Parametric Editor, if is raster open the archive as an image.
 
* The ideal naming of the second-level options is to have the name of the asset in each voice, for instance:<br>instead of having a simple '\_Edit Brush' to have \_Edit 'Brush Name #1'<br>In this way, we can avoid making wrong choices.
 
 
 
===2nd Proposal to Contextual [Brushes Menu] (One Level)===
 
Use a unique level, in this case the 2nd level, to organize the tasks between creation and interaction to edit, duplicate and delete them.
 
 
 
 
====|<|Contextual Menu of the [Brushes Menu]====
 
====|<|Contextual Menu of the [Brushes Menu]====
At this level, after clicking on the |<| button, the menu will be slim with only the traditional features of the tabs. In this way, the workflow is more linear and the whole Creation/Edit is placed only on the 2nd level of the Contextual Menu when we click on 'Brushes Menu'.
 
 
'''First Level'''
 
|<|Contextual Menu  >
 
                      \_Add Tab >
 
                      \_Close Tab
 
                      \_Detach Tab
 
                      \_Lock Tab to Dock
 
                      ---
 
                      ...
 
 
 
'''Second Level opening [Brushes Menu]'''
 
'''Second Level opening [Brushes Menu]'''
 
  |<|Contextual Menu
 
  |<|Contextual Menu
 
   \_Brushes Menu  >
 
   \_Brushes Menu  >
                   \_Edit Brush [1]
+
                   Edit Brush               [1]
                   Create a Brush:...      [Divisor label]
+
                   New Brush        >
                  \_Parametric...          [2]
 
                  Raster Brush:...         [Divisor label]
 
                  Elliptic feathery...    [3]
 
                  Elliptic...              [3]
 
                  Rectangular feathery...  [3]
 
                  Rectangular...          [3]
 
                  Custom Brush...          [4]  
 
 
                   ---
 
                   ---
                   \_Duplicate Brush
+
                   Duplicate Brush
                   \_Copy Brush Location
+
                   Copy Brush Location
                   \_Show in File Manager
+
                   Show in File Manager
                   \_Delete Brush
+
                   Delete Brush
 
                   ---
 
                   ---
                   Refresh Brushes
+
                   Refresh Brushes  
 
 
=====Messages and Scripts=====
 
* [1] A conditional option: if is parametric send it to Parametric Editor, if is raster open the archive as an image.
 
* The ideal naming of the second-level options is to have the name of the asset in each voice, for instance:
 
** Instead of having a simple [_Edit Brush] have [_Edit 'Brush Name #1] In this way, we can avoid making wrong choices.
 
** In each message box of [2] and [3] options, when we have mouseover, we need to write or repeat the kind of brush that will be created, for instance:
 
* [2] To parametric kind, "Create .vbr parametric brush."
 
* [3] To raster kind, an example, instead in Elliptical, Feathered... "Create an elliptical brush with feathered edges" > "Create a .gbr raster elliptical brush with feathered edges."
 
** Also, I thought to simplify the terms Elliptical to Elliptic and Fetheared to Feathery.
 
* [4] To Custom Brush, we need to create a new script for custom raster brushes. IMO, this script must be capable of creating an empty .xcf archive with a feature to set the size layer, the layer number, if is grayscale or RGB, transparent or white background. The message of the 'mouseover' option could be: "Create a custom raster brush."
 
* To window dialogues of the scripts, we need to identify the kind of brush that we are creating, raster or parametric.
 
  
===3rd Proposal One Level More Simplified===
+
|<|Contextual Menu (Opening 'New Brush' menu)
It was needled the Raster Brush to classify the kinds of them: Animated (.gih) and Static (.gbr)
 
====|<|Contextual Menu of the [Brushes Menu]====
 
'''Second Level opening [Brushes Menu]'''
 
|<|Contextual Menu
 
 
   \_Brushes Menu  >
 
   \_Brushes Menu  >
                   \_Edit Brush [1]
+
                   New Brush         >
                  Create a Brush:...      [Divisor label]
 
 
                   \_Parametric...          [2]
 
                   \_Parametric...          [2]
                   \_Raster Brush...
+
                   \_Raster Brush   >
                     \_Animated Brush...    [3]
+
                     Elliptic...
                      ---
+
                    Elliptic feathery...
                      Static Brush:...      [4]
+
                    Rectangular...
                      Elliptic...
+
                    Rectangular feathery...
                      Elliptic feathery...
 
                      Rectangular...
 
                      Rectangular feathery...  
 
                  ---
 
                  \_Duplicate Brush
 
                  \_Copy Brush Location
 
                  \_Show in File Manager
 
                  \_Delete Brush
 
                  ---
 
                  Refresh Brushes
 
  
 
=====Messages and Scripts=====
 
=====Messages and Scripts=====
 
* [1] A conditional option: if is parametric send it to Parametric Editor, if is raster open the archive as an image.
 
* [1] A conditional option: if is parametric send it to Parametric Editor, if is raster open the archive as an image.
* The ideal naming of the second-level options is to have the name of the asset in each voice, for instance:
+
* In each message box of [2] option, when we have mouseover, we need to write or repeat the kind of brush that will be created, for instance: to parametric kind, 'New Parametric Brush...'. This option opens the Parametric Brush Editor.
** Instead of having a simple [_Edit Brush] have [_Edit 'Brush Name #1] In this way, we can avoid making wrong choices.
 
** In each message box of [2] and [3] options, when we have mouseover, we need to write or repeat the kind of brush that will be created, for instance:
 
* [2] To parametric kind, "Create .vbr parametric brush.", this option opens the .vbr Editor.
 
* [3] To Custom Brush, we need to create a new script for custom raster brushes. IMO, this script must be capable of creating an empty .xcf archive with a feature to set the size layer, the layer number, if is grayscale or RGB,
 
transparent or white background. The message of the 'mouseover' option could be: "Create a custom raster brush."
 
* [4] Eventually, the shape brushes could placed needled in 'Raster Brush...' [3]. The people is hard to cut certain things on GIMP ;)
 
This is a compromise.
 
 
 
===Discussion with Mark Sweeney===
 
 
 
The ideal naming of the second-level options is to have the name of the asset in each voice, for instance:
 
Instead of having a simple [_Edit Brush] have [_Edit 'Brush Name #1] In this way, we can avoid making wrong choices.
 
 
 
This would be the name of the currently selected brush? I'm not sure that is possible with the current code, menus are named in a file.
 
 
 
Humm, yes this is true because the raster is binary and I am not sure what exactly it has as info... I'm writing a draft specification where the description or name of the raster brush asset will be own info in the binary.
 
 
 
So, is better to do a note and link it with my draft issue.
 
 
 
 
 
> Personally I'd just drop the mkbrush script, see vid. The brush editor has loads of room for extra buttons.
 
 
 
Ok, this is a way more linear to solve the issue... I ask if is hard to integrate the Brush Editor, which now is only linked with .vbr: is possible to integrate with a script such as mkbrush.scm and have the options to make the .gbr?
 
 
 
I think that for the animated brushes, we need another interface and a script completely different because we have the matrix with 4 dimensions and many behaviours for them. In this sense, I prefer to talk about another issue that, some time ago, Jehan created.
 
  
https://gitlab.gnome.org/GNOME/gimp/-/issues/2781
+
==Brush Editor | To Create/Edit Brushes (Raster (.gbr and .gih) or Parametric)==
 +
===Current Status===
 +
[[File:brush-editor.png|thumb|none|250px|The current Parametric Brush Editor used to shows the raster brush.]]
 +
The current Brush Editor is usable only to create and modify the .vbr brushes (parametric).
 +
The idea is to make it usable to create also raster brushes (.gbr and a simple .gih brush with a ''unique dimension'').
  
 +
===Contextual Menu Proposal |<|===
 +
Using the Brush Editor the Contextual Menu of the Brushes Menu is more easy to understand and slim. When we use [1] or [2] we have access to Brush Editor to create and edit different kind of brushes (rasters and parametric).
 
  |<|Contextual Menu
 
  |<|Contextual Menu
 
   \_Brushes Menu  >
 
   \_Brushes Menu  >
                   \_Edit Brush [1]
+
                   Edit Brush               [1]
                   \_New Brush
+
                   New Brush         >      [2]
                   \_Duplicate Brush
+
                  ---
                   \_Copy Brush Location
+
                   Duplicate Brush
                   \_Show in File Manager
+
                   Copy Brush Location
                   \_Delete Brush
+
                   Show in File Manager
 +
                   Delete Brush
 
                   ---
 
                   ---
                   Reload Brushes
+
                   Refresh Brushes
>
 
> In the above menu example, 'New Brush' would bring up a dialog, where the user would then select the brush type to create.
 
  
Ok, I have thought also in this possibility but is another level where opens a script to make other options.
+
===Improvements and New Features===
 +
# The Shape selector must have a button to load a seed stain for irregular shapes or informal stains. Already we can create the simple .gbr brushes with simple shapes, e.g., circle, square or diamond the current buttons could be used to link with specific scripts as such we already exist or these procedures be improved with a different code. When we are creating the animated brushes, we can have an aid filter to create the variations in these stains to complete the array of the .gih brushes. In this way, it could be simplified the load the stains in different layers of the .gih brush.
 +
# A selector to have RGB or Grayscale Brushes. IMO is very useful to have both types for raster and parametric brushes.
 +
# Selector of Kind Brush: Parametric or Raster.<br>
 +
## If Parametric we have the current features already existent.
 +
## If Raster we need to decide if is a .gbr or .gih brush. For them we have made choices around the stains, regular or irregular. In these cases, we have different procedures:
 +
## If it is a .'''gbr''' raster, the condition is more simple and the final brush has the shape stain chosen by the user. After we have the instance to control '''Size''', '''Spikes'''(?!), '''Opacity'''(?!), '''Hardness''', '''Aspect ratio''', '''Angle and Spacing''' to finalize the brush creation with a '''Save Brush'''.
 +
### If it is a .'''gih''' raster, we have different choices for the '''unique dimension''' of the brush:</br>How many variations we want (Cells = Layers) and which parameter we will use for these variations (angular, incremental, pressure, velocity or random).<br> Another important simplification is to have an ''aid app to create variations of the seed stain to load each Cell'' = Layer.<br>IMO, I think using Morphing, Hardness/Opacity variations. When we have a ''morphing'' effect we need ''two stains'' to make an efficient variation for painting brushes.<br>The general idea is to have a fast way to create .gih brushes for painting tasks without complex interactions with the array matrix of the .gih. The scope of these brushes is similar to the current Acrylics series, for instance. To elaborate and complex brushes, we think that the current method using the array is yet useful... or we need also to think of a plugin to solve, in short, some arrays of .gih brushes.
 +
#### After making the choices of .gih brush we proceed to creation of brush.
  
I have thought that was better have single scripts to make single things... what do you think?
+
====Size Brush====
 +
For the raster brushes normally we have two size dimensions, ''length'' and ''width''. On the Parametric Brush Editor, we have a radius, I propose to use the ''diameter'' (in this way we have the same method to build raster and parametric brushes). For instance, if you need a parametric brush of 100 pixels we need to create a brush with 50 pixels radius on the current editor.
  
But, if is true the possibility to create the .gbr brushes via Brush Editor... this issue could not have importance...
+
====Current features of Brush Editor applied for the raster brushes====
 +
The controls of '''Hardness''', '''Aspect Ratio''', '''Angle''' and '''Spacing''' are usable completely to create raster stains with similar characteristics of .vbr brushes.<br>
 +
'''Spikes''' - are usable also to create different geometric shapes of the regular circle, square and diamond raster brushes.<br>
 +
'''Opacity''' - I am not sure if is useful to have an 'Opacity control' for the raster stains... the hardness has a similar or an approximated effect but works as a border feathering.
  
For the Animated brush I think that is necessary another script more focused to create the 'infrastructure' , (e.g., the quantity of layers for an specific array) and after we continues using the current option to create de matrix of the animated brushes.
+
===Preview of brushes===
 +
The current preview is focused on the .vbr parameter. To have a universal preview for all brushes, parametric or raster, we need to implement a preview based on the '''Path''' with '''Paint Along Path''' (dynamics On or Off).<br>Each time that we make a change in the editor the path is loaded with the new instance of values present on the Brush Editor.<br>For the condition of static shape, with a raster brush, we need to see if is sufficient the feature of '''Edit/Stroke Selection''' (''Paint along the selection outline''). For instance, using a small circular shape selection is possible to have almost the effect of the dab... is an approximated effect.
  
 
==Fields to Author, License and Comments==
 
==Fields to Author, License and Comments==

Latest revision as of 11:14, 11 March 2024

Current Edit and Creation Instances of Raster and Parametric Brushes

On GIMP the brushes parametric and raster are shown together, in the same list on Brushes Dialog. This causes some issues when a user tries to edit a brush:

  1. If is parametric the brush opens correctly the parametric brush editor;
  2. If is raster the brush is opened also on the parametric brush editor (evidently, isn't possible to edit the raster here).
  3. Bug 994 - Improvements on brush creation and their filtering (tags) | Proposal (edit)

Is curious to note that the contextual is the same for the two kinds but it recognizes when is a parametric brush... the 'Open Brush as image...' is disabled.

Simplifying the flow to create/edit raster brushes directly on the dialogue lists

Ideally is fine to have a unique dialog list to show parametric (.vbr) and (.gbr, .gih) brushes... is necessary to correct any kind the way to edit them.

The menu of these assets in my opinion must be modified in this way:

  1. Divide the brush assets by category (raster and parametric). Would be interesting to have a default tag embedded and independent of user choices.
  2. Each brush asset category enables the editing kind, for instance, raster or parametric brushes have a dedicated way (conditional option) to open this asset as an image or as a vector, respectively.

Proposal Two Levels Simplified

It was needled the Parametric Brush and Raster Brush to classify the kinds of them: Parametric and Raster Brush (shaped versions).

|<|Contextual Menu of the [Brushes Menu]

Second Level opening [Brushes Menu]

|<|Contextual Menu
  \_Brushes Menu  >
                  Edit Brush               [1]
                  New Brush         >
                  ---
                  Duplicate Brush
                  Copy Brush Location
                  Show in File Manager
                  Delete Brush
                  ---
                  Refresh Brushes 
|<|Contextual Menu  (Opening 'New Brush' menu)
  \_Brushes Menu  >
                  New Brush         >
                  \_Parametric...          [2]
                  \_Raster Brush    >
                    Elliptic...
                    Elliptic feathery...
                    Rectangular...
                    Rectangular feathery...
Messages and Scripts
  • [1] A conditional option: if is parametric send it to Parametric Editor, if is raster open the archive as an image.
  • In each message box of [2] option, when we have mouseover, we need to write or repeat the kind of brush that will be created, for instance: to parametric kind, 'New Parametric Brush...'. This option opens the Parametric Brush Editor.

Brush Editor | To Create/Edit Brushes (Raster (.gbr and .gih) or Parametric)

Current Status

The current Parametric Brush Editor used to shows the raster brush.

The current Brush Editor is usable only to create and modify the .vbr brushes (parametric). The idea is to make it usable to create also raster brushes (.gbr and a simple .gih brush with a unique dimension).

Contextual Menu Proposal |<|

Using the Brush Editor the Contextual Menu of the Brushes Menu is more easy to understand and slim. When we use [1] or [2] we have access to Brush Editor to create and edit different kind of brushes (rasters and parametric).

|<|Contextual Menu
  \_Brushes Menu  >
                  Edit Brush               [1]
                  New Brush         >      [2]
                  ---
                  Duplicate Brush
                  Copy Brush Location
                  Show in File Manager
                  Delete Brush
                  ---
                  Refresh Brushes

Improvements and New Features

  1. The Shape selector must have a button to load a seed stain for irregular shapes or informal stains. Already we can create the simple .gbr brushes with simple shapes, e.g., circle, square or diamond the current buttons could be used to link with specific scripts as such we already exist or these procedures be improved with a different code. When we are creating the animated brushes, we can have an aid filter to create the variations in these stains to complete the array of the .gih brushes. In this way, it could be simplified the load the stains in different layers of the .gih brush.
  2. A selector to have RGB or Grayscale Brushes. IMO is very useful to have both types for raster and parametric brushes.
  3. Selector of Kind Brush: Parametric or Raster.
    1. If Parametric we have the current features already existent.
    2. If Raster we need to decide if is a .gbr or .gih brush. For them we have made choices around the stains, regular or irregular. In these cases, we have different procedures:
    3. If it is a .gbr raster, the condition is more simple and the final brush has the shape stain chosen by the user. After we have the instance to control Size, Spikes(?!), Opacity(?!), Hardness, Aspect ratio, Angle and Spacing to finalize the brush creation with a Save Brush.
      1. If it is a .gih raster, we have different choices for the unique dimension of the brush:</br>How many variations we want (Cells = Layers) and which parameter we will use for these variations (angular, incremental, pressure, velocity or random).
        Another important simplification is to have an aid app to create variations of the seed stain to load each Cell = Layer.
        IMO, I think using Morphing, Hardness/Opacity variations. When we have a morphing effect we need two stains to make an efficient variation for painting brushes.
        The general idea is to have a fast way to create .gih brushes for painting tasks without complex interactions with the array matrix of the .gih. The scope of these brushes is similar to the current Acrylics series, for instance. To elaborate and complex brushes, we think that the current method using the array is yet useful... or we need also to think of a plugin to solve, in short, some arrays of .gih brushes.
        1. After making the choices of .gih brush we proceed to creation of brush.

Size Brush

For the raster brushes normally we have two size dimensions, length and width. On the Parametric Brush Editor, we have a radius, I propose to use the diameter (in this way we have the same method to build raster and parametric brushes). For instance, if you need a parametric brush of 100 pixels we need to create a brush with 50 pixels radius on the current editor.

Current features of Brush Editor applied for the raster brushes

The controls of Hardness, Aspect Ratio, Angle and Spacing are usable completely to create raster stains with similar characteristics of .vbr brushes.
Spikes - are usable also to create different geometric shapes of the regular circle, square and diamond raster brushes.
Opacity - I am not sure if is useful to have an 'Opacity control' for the raster stains... the hardness has a similar or an approximated effect but works as a border feathering.

Preview of brushes

The current preview is focused on the .vbr parameter. To have a universal preview for all brushes, parametric or raster, we need to implement a preview based on the Path with Paint Along Path (dynamics On or Off).
Each time that we make a change in the editor the path is loaded with the new instance of values present on the Brush Editor.
For the condition of static shape, with a raster brush, we need to see if is sufficient the feature of Edit/Stroke Selection (Paint along the selection outline). For instance, using a small circular shape selection is possible to have almost the effect of the dab... is an approximated effect.

Fields to Author, License and Comments

In the dialogues to build brushes on GIMP is interesting to have three new fields:

  1. Author Name
  2. License
  3. Comments

Tag Field

Many brushes could be organized by the designer in origin. When a brush is created the author could organize the tags that each brush has by default. This feature is a great way to customize the author's sets and a facility to use the sets on GIMP.