Iportnovs en

I have added some new features to MyPaint, and enhaced others. Here is an overview. Git repo is available at http://gitorious.org/~iportnov/mypaint/iportnovs-clone. For several reasons i was out of mypaint developing for a time, so parts of this page are outdated. All features, which were implemented, are in "old_master" branch in my gitorious repo. I've done a port of some of that features to current mypaint git. That code is available in `master' branch in my repo.

How to get/build/install
To get it:

git clone git://gitorious.org/~iportnov/mypaint/iportnovs-clone.git

NB if you are building "old_master" branch for some reason: new dependency have been introduced: python-configobj. In Debian/Ubuntu, simply 'apt-get install python-configobj'. In master branch, there are currently no new dependencies.

To build, run 'scons'. To install, type

sudo scons install

or

sudo scons install prefix=/your/prefix/here

if you want to install in non-standart location.

NB: Config format was changed in "old_master" branch. It reads old configs, but neither 0.7.1 nor 0.8* cannot read that configs. Current master works with current mypaint configs fine.

Internationalization
MyPaint can now be localized in any language, using gettext infrastructure. I created russian translation.

Palette
Based on palette work by Jon Nordby, but i fully rewrote almost all code.



Slots marked by small circle are user chosen, others are generated automatically. To put current color to palette, press right mouse button on selected slot. To select color from palette, left-click it. To mark/unmark color as user chosen, press middle mouse button on it. (mouse buttons are configurable here, see below). You can also drag-and-drop colors in palette, or from/to palette and other applications such as GColor2 or Agave.

Palette is saved in XML format format in ~/.mypaint/palette.xml. That XML format is based on draft of color swatches standart format. Palette is also saved when saving as OpenRaster with the document, so you can load palette from current document (menu Color -> Load palette from document).

You can save/load palettes in XML or Gimp's .gpl format, using corresponding menu commands. You can also export current palette as .png.

Now, palette window has two modes: locked(default) and edit, this is toggled by the button at top. In locked mode, user can only pick colors from palette.

Resources sharing
I think we should provide as many ways for people to share their resources (brushes, backgrounds, palettes, and so on), as we can. In my repo following ways are implemented:


 * Import/export of brush packages (they are simple .zip files); Import package with `Import brush package' in `Brush' menu; Export with `Export group' in brush group context menu in brush selection window.
 * Saving palette as XML or GPL, opening such palettes or importing palette groups from them.

Masks
This code is only in "old_master" branch.

This is first implementation. You can mark any layer as `mask'. Also there is new input for brushes - mask. You can, for example, make brush opacity depend on `mask' input. It's like stencil (in my mind). `Mask` value is calculated as summ of alpha values (opacity) of all `mask' layers. It's good working now with brushes that draws small dabs, with small (or zero) jitter. With big dabs, it's looking... humm... funny.

Autosave
This code is only in "old_master" branch.

MyPaint is not very stable now, so autosave is needed. `Save as scrap' is fully orthogonal to autosave.
 * I have never ever managed to crash it while painting... better fix that bug instead that you are having! If we don't find it soon, please fill a bugreport, so it doesn't get forgotten. maxy 16:33, 14 August 2009 (UTC)

Layers dialog
This code from "old_master" branch is partly in main mypaint repo (and 0.8* releases).



This dialog allows you to set each layer's name (which is saved in .ora) opacity, visibility and mask mode. TODO: save layers visibility and mask mode in .ora.

Layers can be moved in stack with drag-and-drop in dialog. Also, you can drag an image from filemanager to layers dialog to add it as a layer or drag a layer from the dialog to filemanager to save it as transparent .png.

Brush groups
This code was rewritten in main mypaint repo.



Each brush have an 'group' attribute, which is set in the brush settings dialog. In the brush list window, brushes are grouped by this attribute. By default, all brushes belongs to 'Default' group. To move the brush from one group to another:
 * 1) set 'Group:' attribute in brush settings
 * 2) save brush settings,
 * 3) press 'Refresh' button at the bottom of brush list window (in 'Edit:' expander). Or simply drag a brush to another group.

With ctrl-drag, you can `copy' brush to another group (so, make it belong to several groups). Simple drag-n-drop will `move' brush.

At the top of brush selection window there is a box with recently used brushes (4 by default, may be configured). It's updated each time you select a brush and saved on exit/restart.

Stylus tilt support
This code is already in main mypaint repo.

This adds two inputs for brushes: tilt_declination and tilt_ascension (I got names from astronomy). Declination is 90 when stylus is perpendicular to tablet and 0 when it's parallel to tablet. `Right ascension' is 0 when stylus nib points to you and changes clockwise from -180 to +180.

Example brushes
I made a set of brushes, which have some parameters dependent on stylus tilt. You can get it: http://iportnov.ru/files/tilt_brushes.zip and install - simply unpack .zip to ~/.mypaint/brushes/ or using menu Brushes -> Import brush package.

Settings
This code is only in "old_master" branch. Current mypaint supports some settings, but in another way.

Many things are customizable now in Edit -> Settings.



Popolon improvement suggestion for palette

 * the + are to insert between columns/rows, it would be clearer at the intersections.
 * The - are for removing columns/rows, they should keep at their place.

This allow to reorg them for a more compact palette shape.

Gray Zone Padding
Based on request from tobi on IRC--I agree. --SeanJM 13:18, 8 November 2009 (UTC)

Inner Saturation Lightness Selector Options
Based on comments from n-pigeon and maxy on IRC. --SeanJM 12:46, 8 November 2009 (UTC)

Harmony Wheel
We haven't yet decided on the optimal path to head to in regards to displaying the harmony swatches to the user. So what I have done is put up 3 options to begin a conversation. Included are pros and cons to each.

Filled Swatches
--SeanJM 15:07, 27 October 2009 (UTC)

Current colorsampler implementation (in Git)
Currently, standart `color harmonies' are indicated on 12-sector color ring. Complementary colors are indicated with small circles, `triangle' harmony - with triangles, etc.

One can press `Palette from harmonies' button to obtain palette of basic tones/shades of currently selected harmonic colors. Palette generation is only in "old_master" branch.

Simple harmonies (such as `triangle', 'square' etc) are very basic and are not enough/fine in many cases. So, there is a way to get simple harmony as a basis and adjust it more or less, using palette.

When auto-generating a palette, colors are automatically grouped, so you can delete/rename/drag-n-drop that groups.

Note that background color and view of widgets depend on your GTK theme. Expanded/enrolled state of expanders is saved on exit/restart.

Portnov

Palette
--SeanJM 15:11, 22 September 2009 (UTC) Removed the "Edit Mode" button in favor of a clearer more traditional right click menu

The Icons Clear Color: Add Column: Delete Column: Add Row: Delete Row: New Group:

Right Click Menu
--SeanJM 11:26, 25 September 2009 (UTC)

Layers Window
--SeanJM 14:54, 29 October 2009 (UTC)

Maxy's thoughts
A big issue for me is the tiny saturation/value selector that is currently in the center of the hue selector. One idea is to separate it, or even make the center of the hue selector clickable to popup a normal-sized saturation/value selector (click and drag, release = select). This also would make space to show several hue rings (but admittedly this looks a bit crowded and does not make the choice simpler). maxy 13:11, 19 September 2009 (UTC)

An optically less confusing alternative if the saturation/value selector is removed. maxy 13:47, 19 September 2009 (UTC)


 * Update: The full-disc saturation/value selector proposed by Sean makes this quite a bit better already. maxy 18:38, 23 September 2009 (UTC)

Upcoming 0.8.0 Release
see Release Worklist