Brainstorming/UI

This page is dedicated to main interface ideas. When you add your ideas, please focus on visual mock-ups and their discussion. Also check the GIMP UI brainstorm for inspiration from the GIMP world. There are also some interesting Krita design documents.

Symmetrical drawing tool ( Caleidoscope )
Often times when drawing you need to do a lot of symmetrical work a lot of time and energy could be saved by allowing one to create virtual planes in pseudo-3D that act as mirrors that mirror what you are doing on one side or in one plane and mirror (and transform it) to another.

To see a crude example (where you have little control) load up sumopaint and look at the symmetry drawing tool.

http://www.sumopaint.com/app/

Ancient Amiga's "Deluxe Paint" (c. 1991) had this feature, as well as n-way mirroring across a central point (great for caleydoscopic patterns), and tile mirroring.


 * -This has been added to the development version. It's still a little awkward though, and there doesn't seem to be a way to reposition the mirror point. --DementedSnake 21:28, 26 February 2012 (UTC)

TabletPC Support
As TabletPC are getting more and more common MyPaint should support them better. TabletPCs have some differences to normal Desktop PPCs or Notebooks:
 * You can paint directly on the screen
 * You can easily rotate the screen
 * You don't have any keyboard (Only a limited number of special keys)
 * Not easy to use right or middle mouse button
 * Relative small displays (&lt;= 14&quot;)

The goal for my mockup as to create an interface were:
 * every thing is reachable with the left mouse button
 * no overlapping, separate windows
 * easy adjustable
 * not wasting to much screen space
 * easy to discover for new users
 * possess a 'hide/unhide' button



Tablet Touch support
New Wacom Tablets have in addition to the pen also a touch support.

This Events can be captured and used for panning (scrolling) and zooming.

The benefit is you don't have to switch hands or reach for the keybord

Behavior
Several of the popup windows have behaviors that could be improved


 * Fix color wheel popup so that it doesn't disappear if the cursor crosses the center after entering the selection area.
 * If secondary windows are present but do not have focus when their hotkey is pressed, bring them to the front rather than close them. (Brush window in particular)

--Songwind apogee 18:12, 2 July 2009 (UTC)

Popup Defined:

a Transient window which closes when mouse focus leaves or the key that triggered the popup is pressed again.



Context Pie
Horizontal movements change the brush size, vertical movements the opacity. The inner button of each piece opens some dialog, the two outer buttons immediately select something, eg. the most recent two brushes or colors. Open Problem: visualize the opacity/size that is really chosen. Size could be solved by changing the cursor shape.

Also, it might be better to have multiple small submenus instead of a big one that contains everything.

Markup Pie Menus
posted by SeanJM If the right click menu brought up the markup menu, a lot of tablet users wouldn't need the keyboard. Comment posted by SeanJM

Brush History Popup
posted by SeanJM

Brushes popup
Posted by SeanJM popolon reflected that he wanted the brushes to have customizable thumbnails; where you could load your own custom thumbnail. However there are problems that arise with static images in a dynamic program. The brush window would draw strokes that are updated in real time if any settings are changed. And since there are so many variable settings that would change the appearance of a brush, thumbnails are not an option--as they can quickly mis-represent the brush. Posted by SeanJM

Palette
Simpler... --SeanJM 15:11, 22 September 2009 (UTC) Cleaned up the Wiki

Multiple Palettes:
Mockup by android272

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

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

Behavior
A window is a persistent window that will close once the [x] is clicked. It does not show up in the taskbar of the OS. The taskbar should be for individual applications NOT THE WINDOWS THEY CREATE. Creating windows that are on the taskbar leads to clutter and decreases legibility of other applications on the taskbar.

A "Gtk-like" layer dialog for blending modes


I paste here a simple mockup built around an inkscape screenshot of the layer dialog. I imagine it simple ; with the opacity setting & blending mode. The only new thing I bring, it's maybe a system of notification icon ; mainly my idea is to have a little icon ( here I create a little triangle ; but thats can be anything else ) that notify about the layer blending mode is another one of a regular normal one. A notification of the same type can be done if a protect alpha transparency is done in next version. That's all ! --Deevad 15:01, 13 September 2009

Workspace dialog


Dialog window with tools to manage your workspace: zoom and rotate. Zoom and rotation tools are already implemented, but they provide lack of functionality. A dialog like this one may help with this problem.

Toolbar Dialog and Brush Outlines
Wasn't sure where to put this, so I hope here is fine.

This is just an example of how one might show the brush outline while in a menu, changing it.



--DementedSnake 09:56, 27 June 2012 (UTC)

Simple "Saving file $FILENAME" dialog while saving files
author: Jerry Segers, Jr.

Current state: Currently while saving, Mypaint simply freezes the ui except the mouse pointer. This is not a problem per se when the file size is small enough, but with relatively large (relative to your processor and disk access speed) image this leads to confusion... e.g. "did it crash? did I just lose an hour's work!?" In my case I'm working on a 3 layer (so far) .ora file with pixel dimensions of approximately 14000x10800. With my hardware, this takes ~23 seconds to save.

Proposed change: I propose a simple dialog that pops up while saving, and stays put a minimum of a 1/10 second (no flash and gone please). For extra bonus points, you could put on a progress indicator (determinate or indeterminate I'm not picky).

Pros: No confusion as to whether Mypaint has crashed. Positive feedback that you successfully saved your work.

cons: Implementation cost (in effort and time) Usage cost (in processor cycles) possibly annoying to some users who want an absolutely minimalist interface.

Docking Zone


Screenshots of my attempt to implement MyPaint using PyGTk's implementation of GDL (used in Anjuta and Inkscape). I opted for flexibility: thus, the canvas also acts as a dock, although it's title bar (called grip) is removed. --japtar10101



Status Bar
And since there's a chance of landing on porn if you get that address wrong, it's here: http://omploader.org/vMnd4Nw --Naught101

Brush editor
It would be good to visually simplify the Brush editor by grouping and hiding most options until they are needed. Brush settings could be grouped under: in each group, the specific settings would be displayed, and in a separate section of the window, the specific attributes of that setting (pressure, speed, direction, random). I reckon it'd be good if that section was hidden unless needed. Since I'm too lazy to do a mockup, I reckon a large-icon-tab-on-left interface would be best for the groups, a la konversation: http://commons.wikimedia.org/wiki/File:Kontact-Screenshot.png. I think the group's settings window should stay basically as it is now, and the setting's attibute window should be docked to the left of that, and be hidable in the same way that the "colour history" and "details" parts of the Color selector are. Maybe I'll try an do a mockup later... --Naught101 11:21, 22 February 2010 (UTC)
 * "shape" (angle, radius, elliptical ratio, etc.)
 * "colour" (HSV, opacity)
 * "effects" (blur, smudge, eraser, etc)
 * "dynamics" (jitter, dabs/s, etc.)

Drawing and measuring guide


not much text and the language is bad but I hope you understand what I want to tell you. Leo

Choice file size and resolution


Now, the format of the working zone are the place that it has on the memory of my computer and the resolution are 72dpi. It's good for painting for web but in graphic industry of printing we need to choice a size and a resolution. If we have to draw a picture of 12 picas per 8 picas to but in the text of a book, we need to see the limit of the 12px8p zone and adjust the resolution to 300dpi. It's very important because we should drawing in the good size to go in the space on the text and need have the good quality to print. It's good to have a very big space to draw but you should add a frame that we can move to have guide when we draw and select what we want to export in jpg.

Frame manager and frame editor


Mypaint needs a simple way to manage multiple frames to export. Frames wouold be especially useful when dealing with concept art for production. Having an infinite canvas means that the artist has unlimited space to draw character concepts. Having them on one canvas enables the director to quickly compare them and decide which work and which dont and also if the style is consistent.

Being able to individually frame a number of these concepts for export to separate files would not only save a lot of time, but would also make life easier when managing these files (to same dir as the ora source file). Re exporting their frames should overwrite them- that way the artist can work on multiple drawings in one single file!!

A simple frame manager (looks a bit like the layers gui) can be used in order to intuitively and quickly manage a concept canvas. here are the presentation slides:

https://docs.google.com/present/view?id=dc7366f8_131sr6k54hh

1. file>document frame editor opens the frame manager window (looks a bit like the layers)

2. Create new frame creates a new frame.

3. when the frame is selected, it shows on the canvas (frame editor). Double clicking renames it. The tick box on the right tells mypaint to export it when saving. The x mark on the left deletes it...

4. The frame editor has corner handles to resize. It shows the name of the frame,its size. Double clicking on size lets user input numeric values.

5.File>export all frames exports all the frames that have a star symbol as png files or jpg files. Maybe instead of a star symbol we can have a JPG, PNG, or X (empty) symbols - clicking to toggle between the three values). X/empty means dont render

the saving file
Add the possibility to save on a format readable by adobe softwares with a with background and no compression.

Help Lines
Insert in mypaint a tool to create "help lines" to be snapped in drawing

( a new menu?? for example a menu called Help Lines with create circle, create line,create etc etc, show/hide help lines)
 * I can create a rectangle, a circle, a straight line, a curved line with a tool

(Show-> Display Help Lines F4) curved with any or part of shapes
 * these object are on a layer of their own, that can be show/hide with a menu or with a shortcut key
 * These "help Lines" can be modified/dragged using the square
 * The cursor "snap" on these lines when they are showed to create a perfect circle, a perfect straight line, a perfect

May be required the need to special canvas that only work this tipes of lines/paths, for not saturate the program and the final size of the final archive

Perspective Lines
Insert in MyPaint a tool that when selected, automatically draws perspective guide lines.

You click once to select your perspective point, then every click thereafter, a line is automatically drawn toward that '''perspective point. '''



When drawn in, the thickest part of the line is near the foreground, and the line gradually tapers back thinner as it approaches the perspective point.

Perspective Controles
After activating the Perspective Tool, once the user's cursor inters the canvas a "Horizon line" (HL) is drawn like dragging a horizontal guide in inkscape. except once the user clicks for the first time the HL is placed on the canvas as well as the first "Vanishing Point" (VP).

Clicking the Perspective Tool again will allow you to add more VPs.

Hovering over the HL, or any VP or guide will allow you to to move them. Moving the HL will move all VPs on the HL as well as all guides on those VPs.



Guide Layers
The guide lines are on a layer, that way you can set the opacity, lock and move the guides just as you would a normal layer.



Multifunctional select tool


Selected area could be transformed in many ways: mirrored, rotated, scaled, etc.

Suggestion : May be a square, circle or free-hand select tool, for a detailed selection of some elements.

Layers Transparency locks that affect active layer
Author(s): Todor Imreorov Pros: painted pixels on any layer can be used as a selection mask, it SIMPLIFIES the process Cons: mypaint would look into pixel data. Having many layers with a lock on might make it too heavy on mypaint. Also having a giant file.

Great selection feature.
Author: Rusty G.

I enjoyed making this demonstration of ideas... their are other software out their which are similar to these ideas. I do love these concepts.



Pros: A layer mask devoted to each layer would be nice for this tool, to save the selections. I don't care about the other options I'd just use gimp. It's not like Gimp selections. Cons: Maybe could not export svg...? (I don't know...)

Suggestion : This idea can be combined with "Multifunctional selection tool" [] in a only one tool

Use layers as transparency locks (or masks). The whole idea is to have transparency still locked (layer A+B), while you work on your active layer (C).
The standard way transparency is locked usually puts a lock only on the active layer and that lock does not work when we paint on other layers. How about if mypaint had the ability to use the transparency lock of all layers that have it- any number of layers, and those locks would affect any active layer always(even newly created ones). We will be able to take the alpha of one layer and use it on another, or on a newly created one! Here is a user case (NEW): https://docs.google.com/present/view?id=dc7366f8_101s87gptg5

That feature that will let users add texture and shadow to an object -non destructively on a new layer, without the need and complexity of masks and selection tools - it is in fact simplifying the concept of masks. Also confusion of the user can be easily avoided by having enough GUI feedback. One way to hint that there is a lock is to have an indication on the canvas itself that hints that the Lock is ON and the user is in alpha lock mode. And maybe even have a quick keyboard shortcut/button to toggle alpha lock mode on and off-Much like masks in zbrush.



== Having locks for specific layers gives you the ability to use them as alpha masks. That way you can lock areas which you dont want to paint on globally. Two ducks with one stone- the artist gets transparency locks and selection masks in one. Putting multiple layers on "Lock" lets you combine the masks. Other possible developments in that direction are: - Ticking an "Invert" box lets you invert the transparency lock on all masks - combining two or more alpha locks (by enabling their layer's transparency locks) - Making an alpha mask semi-effective by reducing the opacity of its layer

I sat down and made a mock up to explain visually. Here: == https://docs.google.com/present/view?id=dc7366f8_101s87gptg5

why are alpha locks useful? http://vimeo.com/20846279

Proposal forum thread: http://forum.intilinux.com/mypaint-development-and-suggestions/lock-transparency-on-layer-while-drawing-on-any-other-layer/msg7303/#msg7303

Also note that encountering this for the first time is not too different from the classic user case and wont confuse people. It will just add a whole new level of flexibility. It can be used just like the classic way- the user can still toggle the active layer's transparency lock and painting on it will be the same  as it would in photoshop. Painting on other layers (with the lock still on) however will have a completely new powerful effect

Undo/Timeline/Scrap
It would be useful to have a more elaborate version of the undo slider of the status bar described about. Perhaps you could rightclick on it, and get a bigger bar with timestamps, markers for scrap snapshots, etc.

Project Manager
It would be useful to be able to store different versions of a painting as directed graph. Instead of random scraps, a work-in-progress would be a tree of experimental versions. You'd want a nice GUI of the graph with thumbnails, of course.

Guides and References Manager
This could either be a single window with a tabs, or two windows, but the functionality would be split into guides (paths that can constrain the brush) and references (linked or generated content that can be used to aid painting).



''Note: both panes would have an "Add" button that would bring up a menu or dialog to select what type of guide/reference you would like to add, and an "Edit" button that would bring up a custom dialog to edit the specific properties/settings on a guide/reference. Both would also have a checkbox for setting whether or not to display edit handles on the canvas for the selected guide/reference.''

Guides
The guides manger would allow you to manage one or more guides. Guides would be presented in a list. The selected guide in the list would be considered the "Active Guide". When a guide was selected, edit handles would appear on the canvas so that you could edit the guide. These could optionally be turned off so they wouldn't interfere with the workspace. The ability to have more than one guide would be a huge advantage when doing 2 and 3 point perspectives.

Guides would work in one of six different ways that would be set globally (from the dropdown at the top of the guide pane).



Note: dotted lines are two guides, red line is stroke path (traveling left to right), and the blue is the painted stroke with the given snap type.

1) No Snap: would disabled snapping on all guides.

2) Snap to Active Guide: would snap the brush to the active guide (the guide selected in the guide list) no matter where you drew on the canvas.

3) Snap to Nearest Guide: would snap the brush to the nearest guide. The brush could snap to more than one guide across the entire brush stroke, allowing you to transfer the brush from one guide to another (such as two crossing line guides).

4) Snap to Nearest Guide - Sticky: would behave like "Snap to Nearest Guide", only the brush would stay snapped to the initially used guide throughout the entire brush stroke.

5) Snap to Guide by Distance: would snap to any guide once the brush fell within a globally defined distance from a guide path.

6) Snap to Guide by Distance - Sticky: would behave like "Snap to Guide by Distance", only once a guide had been snapped to, the brush would stay snapped to that guide for the rest of the brush stroke no matter how far from the guide you moved the brush.

Guide Types
While there could be many ways to derive a guide path there are three basic types that would prove useful: Line, Line Segment/Ruler, and Custom SVG Path. One possible other guide might be a angle measure/arc guide - but I haven't included that one.



Line Guide


Note: green represents the handle the user is interacting with.

The "Line Guide" is a guide defined as a line passing through two points on the canvas. Each point has a handle through which the line can be edited. One handle is considered the "pivot" handle, and the other is the "rotation" handle. When the user moves the "pivot" handle, the entire line moves (the "pivot" handle moves the "rotation" handle, so that the line remains at the same angle and the "rotation" handle remains the same distance relative to the "pivot" handle). When the user moves the "rotation" handle the line angle changes (the "rotation" handle moves independently of the "pivot" handle, allowing the line angle and the "rotation" handle position relative to the "pivot" handle to change). The angle of the line might be displayed while the user was dragging the rotation handle. When the user double clicks (double pen taps) a handle, the handles switch (the "rotation" handle becomes the "pivot" handle, etc.). In the "Guides Manager", the popup editor for the "Line Guide" might allow you to turn on clipping for the "pivot" handle so that the line becomes a ray passing from the "pivot" handle through the "rotation" handle.

This guide would make it very easy to set up 1, 2, and 3 point perspectives - the "pivot" handle would be the viewpoint for each line. The ability to have the line operate as a ray would make a 1 point perspective a little more easy.

Line Segment/Ruler Guide
The "Line Segment/Ruler Guide" would allow you to have a line segment guide on the canvas as well as give you measurements.

Custom SVG Path Guide
The "Custom SVG Path Guide" would pull in a path from an SVG file, and display that on the canvas. It would use the "Generic Transformation Widget" to move/scale/rotate (see below for more details on the "Generic Transformation Widget"). This means the user could create there own guides (ellipses, rectangles, french curves, custom arcs, profiles, etc.).

Generic Transformation Widget


Note: green represents the handle the user is interacting with.

The "Generic Transformation Widget" would be an on canvas widget that would provide handles to quickly move/rotate/scale-zoom an arbitrary item. It could be used on references and guides, as well as layers (if layer transformation was add), the canvas itself (to move/rotate/zoom your view), or any other time you need to transform something.

The widget would be able to be either modeless or modal as the situation required (in layer transformations (modal) you would want the ability to dismiss the transformation with the pen, without using the keyboard, so a little button on the widget to preform a commit would be nice).

The inner-most handle would allow you to preform a move.

The ring around that would allow you to preform a rotate. When your cursor was over this ring, an icon indicating rotation would appear in the center handle. When the user double clicks (double pen taps) on this handle, rotation would be reset to the default.

The outer ring would be for scaling/zoom. If the aspect ratio was not locked there would be an additional two handles for scaling on each axis. Each handle would have a small arrow pointing in the direction of the scaling. The remainder of the ring would have an arrow pointing to the top left corner of the item. Again, an icon indicating the action of the handle would be displayed in the inner most handle. Double clicking on the main portion of the scale ring would reset the scale to the default (original). Double clicking on one of the axis scaling handles would scale that axis relative to the other axis so that the aspect ratio was back to the original ratio.

Optionally the widget could also display additional scaling handles at the edges of the bounding box:



You could also specify the widget to display minimal handles when using bounding box handles:



In this case the bounding box handle would combine the scale and rotate into a single handle (when you move a handle, moving in and out (parallel to the line drawn from the move handle) would scale, and side to side would rotate).

The optional bounding box handles, minimal handles, and aspect ratio lock could be set on an individual guide or reference, allowing the user to select the widget that works best for their needs (some custom guides might work best without bounding box handles, other might want aspect ratio locked, etc.).

Some examples of the widget in use:



BrushQuicklist
The BrushQuicklist would be a visual representation of brushkey-brushes (brushes associated with a shortcut [a number between 1 and 9]) so as to make it easier to see which brushsetting is stored on which key and also to make the ui "tablet friendlier".



Additional input devices
Allow generic HID input devices to be linked to functionality. Main use case would be a joystick/space navigator/whatever to scroll, zoom and turn used with the other hand than the drawing tablet pen.

Layer groups
Layers are treated in the same way as normal files, they can be moved, renamed, put in folders and so on. With folders, turning on/off visibility/locking doesn't toggle everything inside them, but just makes the folder invisible/locked while the state of everything in it is saved.



"You're Painting Over Something" Indicator Light
Author(s): Andrew Ulrich

Current state: It is a common practice among artists during the creation of an image to designate certain layers for certain parts of an image. A problem that I encounter frequently is when I paint a certain part of an image, I forget to switch to the layer I have designated for that part of the image. This sometimes causes me to accidentally paint over areas on a layer when what I really wanted to do is paint on a layer above so that they're kept separate.

Proposed change: A passive solution to this problem is to have a sort of "indicator light" that will turn on when you're painting over something on the current layer. It could be as simple as a small square somewhere that changes color to indicate that it is "on". As far as implementation, it could work by determining whether you're changing pixels that have alpha greater than a designated threshold during your stroke. If it's above the threshold, turn the light on.

To accomodate larger brushes, it might also determine what percentage of the pixels you're changing with your stroke are over the alpha threshold, and only turn the light on when you're changing more than a specified percentage.

The indicator light itself could be a button that opens a form where you can set the threshold or turn off the light completely.

Other more imposing solutions might be to essentially "help" the artist to paint on the right layer, either by detecting certain parameters and auto-switching to the appropriate layer based on those params, or by disabling the stroke when it is outside of the params specified for that layer. However, that would require a lot more work and configuration.

Pros: It is a simple, non-imposing way to remind people that they're painting over something rather than painting on a separate layer. It still gives you the freedom to decide what to paint over on a layer at any time, just with a better assurance that you're fully aware that that's what you're doing.

Cons: It's still possible to accidentally paint over something because you're not paying attention to the light, but at least it's easier to tell.

"Detail work" mode with pen/mouse warping
Author(s): Eclecticos 08:48, 8 April 2014 (UTC)

Current state: I sometimes draw using a small external USB tablet (Wacom 4" x 5"). Since the small tablet maps to the entire screen or window, small gestures on the tablet correspond to large gestures on the screen. This makes it hard to write or draw small things unless I zoom the view. Even when using my large external tablet, I sometimes need to zoom for detail work. Often, however, zoom is not really what I want -- I only want to change what my hand does, not what my eyes see!

Proposed change: A "detail mode" in which large physical movements of the pen or mouse are interpreted as smaller logical ones.

Pros: This feature helps compensate for the limitations of my tablet and my physical dexterity. It lets me (the user) unobtrusively do detail work while preserving the larger physical display. That is less distracting than zooming in and out. I may want to see the whole picture at once, and move easily between different parts of that picture in order to draw in different places or pick up colors or strokes from different places.

I think this would be useful for everyone, but I have a special reason for wanting to write or draw small things neatly without zooming. Not only do I want to preserve the original screen view for myself, I want to preserve it for others who are watching! I use MyPaint as my whiteboard when teaching university classes (with an LCD projector) and also in technical meetings. So other pepole are watching me write and draw in real time as I talk. They want to keep seeing the entire picture -- the fact that I can't write quickly and neatly on a small tablet is not their problem.

(MyPaint is much better than a normal whiteboard -- I can undo and highlight and zoom and pan and rotate and use layers and brushes and colors, I can use the cursor to point to what I'm talking about, and at the end of the class I can save the whiteboard and post it for the students. I've recommended this to others.)

Cons: None that I see. I believe this should be quite feasible to implement.

Design details:
 * Suppose the pen or mouse is at position (x,y) when detail mode is activated. Then this position is still interpreted as (x,y), but any other pen or mouse position (x+Δx, y+Δy) is interpreted as (x+(Δx/2), y+(Δy/2)).
 * Note that the MyPaint window must retain focus as long as the warped position (x+(Δx/2), y+(Δy/2)) is in the window, even if the true position (x+Δx, y+Δy) is not.
 * How aggressive should detail mode be?
 * The formula above will reduce physical movements by a factor of 2 during detail work. This might be a good default.
 * However, the actual factor is a user preference that could be adjusted in the Preferences dialogue, or perhaps through a key.
 * The mode could be temporarily activated by holding down the Shift key.
 * Activated at (x,y) when the Shift key is depressed, and deactivated when the Shift key is released. Thus, to do detail work around the current position, press Shift and hold it down while drawing.
 * To toggle the detail work mode, use Caps Lock. If Caps Lock is on, then you are in detail mode by default, and Shift temporarily deactivates it instead.
 * Yes, I know that Shift is currently used to draw a line. But this is a lesser-used feature that could perhaps be moved to another key such as Tab, if you like the proposed Shift/CapsLock design.
 * There should perhaps be a visual indicator of whether you're in detail mode.
 * Probably the appearance of the cursor should change.
 * In the case of a tablet in absolute mode, perhaps a faint outline should be shown of the detail area that the tablet currently maps to.  Whether to show this might be a user preference.

An alternative option is that movements are scaled down when drawing, but not when pointing/panning/etc.
 * So roughly speaking, scaling centered at (x,y) is turned on when the pen or mouse is depressed at (x,y), instead of when Shift is depressed.
 * However, scaling shouldn't turn off instantly when the pen is lifted, because then the cursor would jump from (x+(Δx/2), y+(Δy/2)) to (x+Δx, y+Δy) at the end of the first stroke and then the next stroke would start unexpectedly at (x+Δx, y+Δy). That would give awful results in multiple-stroke settings such as cross-hatching or writing text.  It might be adequate simply to wait and turn off scaling 1 second after the pen is lifted?  In other words, once the user starts drawing at (x,y), a kind of detail mode around (x,y) is activated until the user pauses in drawing, at which point the cursor jumps back to normal.

These designs could be combined. In a fancy version, there could be three scaling factors, and the applicable ones would be multiplied together:


 * A drawing scaling factor to be applied while drawing (default 1). This would also be adjustable in the Preferences dialogue and would be device-dependent.  For example, I might change this to 2 for my small tablet, but leave it at 1 for my mouse and my large tablet.
 * A "detail mode" scaling factor to be applied while Shift is down or Caps Lock is on (default 2). This would be adjustable in the Preferences dialogue but would not be device-dependent.  Again, detail mode might be indicated by a different appearance of the cursor.
 * Possibly a default scaling factor used at all times (default 1). This would be adjustable in the Preferences dialogue and would be device-dependent.
 * In the case of a tablet, however, it is important to make sure that it is still possible to reach the whole screen. Solutions:
 * Set the tablet to use relative position like a mouse rather than absolute position.
 * Use hyperbolic (fisheye) coordinates centered on a weighted average of recent pointer positions.
 * Scroll near the edges of the tablet. I.e., when you approach the edge of the tablet, which is the boundary of the current detail area, that outline begins to slide, bringing the pointer with it.
 * More details on request about how to design and combine these three effects.
 * E.g., the user might enter drawing mode at one (x,y) coordinate before or after pressing Shift at another (x,y) coordinate.
 * There are also issues of what happens if the user holds down Shift before moving the cursor into the MyPaint window, etc.

File / Merge ... command
There should be a File / Merge ... dialog that allows you to open another image file (possibly .ora) and add its layers to the current drawing.

By default these imported layers would be added above the current drawing's layers. A checkbox could allow the user to instead add them below (but above the background). Of course, the user can subsequently reorder the layers, or use Layer / Move.

An alternative design would be to make "add above current drawing" and "add below current drawing" be options in the ordinary File / Open ... dialog. This keeps related functions together, but users might have more trouble finding the feature.

How to name the new layers:
 * Use the layer names provided by the opened file, if any. If some layers are untitled, then use e.g., "Untitled layer #3" as when creating a new layer.
 * If any of the layers are untitled or have the same names as an existing layer, then prefix all of the layer names by the base filename of the opened file, e.g., "MyFile: big sky" or "MyFile: Untitled layer #3".
 * As a special case, if there is just a single new layer and it is untitled, then the base filename of the opened file can be used as the layer name, e.g., "MyFile".

This seems like an easy feature to add. Lacking this feature, it seems that the only way to combine multiple images is to use an external program. (Merging .ora files seems like a relatively easy script to write. But as far as I know no one has written it, and one would expect to find it right in mypaint.  I also can't figure out how to do it with ImageMagick.)

Eclecticos 15:20, 13 May 2014 (UTC)

This page is dedicated to main interface ideas. When you add your ideas, please focus on visual mock-ups and their discussion. Also check the GIMP UI brainstorm for inspiration from the GIMP world. There are also some interesting Krita design documents.

Symmetrical drawing tool ( Caleidoscope )
Often times when drawing you need to do a lot of symmetrical work a lot of time and energy could be saved by allowing one to create virtual planes in pseudo-3D that act as mirrors that mirror what you are doing on one side or in one plane and mirror (and transform it) to another.

To see a crude example (where you have little control) load up sumopaint and look at the symmetry drawing tool.

http://www.sumopaint.com/app/

Ancient Amiga's "Deluxe Paint" (c. 1991) had this feature, as well as n-way mirroring across a central point (great for caleydoscopic patterns), and tile mirroring.


 * -This has been added to the development version. It's still a little awkward though, and there doesn't seem to be a way to reposition the mirror point. --DementedSnake 21:28, 26 February 2012 (UTC)

TabletPC Support
As TabletPC are getting more and more common MyPaint should support them better. TabletPCs have some differences to normal Desktop PPCs or Notebooks:
 * You can paint directly on the screen
 * You can easily rotate the screen
 * You don't have any keyboard (Only a limited number of special keys)
 * Not easy to use right or middle mouse button
 * Relative small displays (&lt;= 14&quot;)

The goal for my mockup as to create an interface were:
 * every thing is reachable with the left mouse button
 * no overlapping, separate windows
 * easy adjustable
 * not wasting to much screen space
 * easy to discover for new users
 * possess a 'hide/unhide' button



Tablet Touch support
New Wacom Tablets have in addition to the pen also a touch support.

This Events can be captured and used for panning (scrolling) and zooming.

The benefit is you don't have to switch hands or reach for the keybord

Behavior
Several of the popup windows have behaviors that could be improved


 * Fix color wheel popup so that it doesn't disappear if the cursor crosses the center after entering the selection area.
 * If secondary windows are present but do not have focus when their hotkey is pressed, bring them to the front rather than close them. (Brush window in particular)

--Songwind apogee 18:12, 2 July 2009 (UTC)

Popup Defined:

a Transient window which closes when mouse focus leaves or the key that triggered the popup is pressed again.



Context Pie
Horizontal movements change the brush size, vertical movements the opacity. The inner button of each piece opens some dialog, the two outer buttons immediately select something, eg. the most recent two brushes or colors. Open Problem: visualize the opacity/size that is really chosen. Size could be solved by changing the cursor shape.

Also, it might be better to have multiple small submenus instead of a big one that contains everything.

Markup Pie Menus
posted by SeanJM If the right click menu brought up the markup menu, a lot of tablet users wouldn't need the keyboard. Comment posted by SeanJM

Brush History Popup
posted by SeanJM

Brushes popup
Posted by SeanJM popolon reflected that he wanted the brushes to have customizable thumbnails; where you could load your own custom thumbnail. However there are problems that arise with static images in a dynamic program. The brush window would draw strokes that are updated in real time if any settings are changed. And since there are so many variable settings that would change the appearance of a brush, thumbnails are not an option--as they can quickly mis-represent the brush. Posted by SeanJM

Palette
Simpler... --SeanJM 15:11, 22 September 2009 (UTC) Cleaned up the Wiki

Multiple Palettes:
Mockup by android272

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

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

Behavior
A window is a persistent window that will close once the [x] is clicked. It does not show up in the taskbar of the OS. The taskbar should be for individual applications NOT THE WINDOWS THEY CREATE. Creating windows that are on the taskbar leads to clutter and decreases legibility of other applications on the taskbar.

A "Gtk-like" layer dialog for blending modes


I paste here a simple mockup built around an inkscape screenshot of the layer dialog. I imagine it simple ; with the opacity setting & blending mode. The only new thing I bring, it's maybe a system of notification icon ; mainly my idea is to have a little icon ( here I create a little triangle ; but thats can be anything else ) that notify about the layer blending mode is another one of a regular normal one. A notification of the same type can be done if a protect alpha transparency is done in next version. That's all ! --Deevad 15:01, 13 September 2009

Workspace dialog


Dialog window with tools to manage your workspace: zoom and rotate. Zoom and rotation tools are already implemented, but they provide lack of functionality. A dialog like this one may help with this problem.

Toolbar Dialog and Brush Outlines
Wasn't sure where to put this, so I hope here is fine.

This is just an example of how one might show the brush outline while in a menu, changing it.



--DementedSnake 09:56, 27 June 2012 (UTC)

Simple "Saving file $FILENAME" dialog while saving files
author: Jerry Segers, Jr.

Current state: Currently while saving, Mypaint simply freezes the ui except the mouse pointer. This is not a problem per se when the file size is small enough, but with relatively large (relative to your processor and disk access speed) image this leads to confusion... e.g. "did it crash? did I just lose an hour's work!?" In my case I'm working on a 3 layer (so far) .ora file with pixel dimensions of approximately 14000x10800. With my hardware, this takes ~23 seconds to save.

Proposed change: I propose a simple dialog that pops up while saving, and stays put a minimum of a 1/10 second (no flash and gone please). For extra bonus points, you could put on a progress indicator (determinate or indeterminate I'm not picky).

Pros: No confusion as to whether Mypaint has crashed. Positive feedback that you successfully saved your work.

cons: Implementation cost (in effort and time) Usage cost (in processor cycles) possibly annoying to some users who want an absolutely minimalist interface.

Docking Zone


Screenshots of my attempt to implement MyPaint using PyGTk's implementation of GDL (used in Anjuta and Inkscape). I opted for flexibility: thus, the canvas also acts as a dock, although it's title bar (called grip) is removed. --japtar10101



Status Bar
And since there's a chance of landing on porn if you get that address wrong, it's here: http://omploader.org/vMnd4Nw --Naught101

Brush editor
It would be good to visually simplify the Brush editor by grouping and hiding most options until they are needed. Brush settings could be grouped under: in each group, the specific settings would be displayed, and in a separate section of the window, the specific attributes of that setting (pressure, speed, direction, random). I reckon it'd be good if that section was hidden unless needed. Since I'm too lazy to do a mockup, I reckon a large-icon-tab-on-left interface would be best for the groups, a la konversation: http://commons.wikimedia.org/wiki/File:Kontact-Screenshot.png. I think the group's settings window should stay basically as it is now, and the setting's attibute window should be docked to the left of that, and be hidable in the same way that the "colour history" and "details" parts of the Color selector are. Maybe I'll try an do a mockup later... --Naught101 11:21, 22 February 2010 (UTC)
 * "shape" (angle, radius, elliptical ratio, etc.)
 * "colour" (HSV, opacity)
 * "effects" (blur, smudge, eraser, etc)
 * "dynamics" (jitter, dabs/s, etc.)

Drawing and measuring guide


not much text and the language is bad but I hope you understand what I want to tell you. Leo

Choice file size and resolution


Now, the format of the working zone are the place that it has on the memory of my computer and the resolution are 72dpi. It's good for painting for web but in graphic industry of printing we need to choice a size and a resolution. If we have to draw a picture of 12 picas per 8 picas to but in the text of a book, we need to see the limit of the 12px8p zone and adjust the resolution to 300dpi. It's very important because we should drawing in the good size to go in the space on the text and need have the good quality to print. It's good to have a very big space to draw but you should add a frame that we can move to have guide when we draw and select what we want to export in jpg.

Frame manager and frame editor


Mypaint needs a simple way to manage multiple frames to export. Frames wouold be especially useful when dealing with concept art for production. Having an infinite canvas means that the artist has unlimited space to draw character concepts. Having them on one canvas enables the director to quickly compare them and decide which work and which dont and also if the style is consistent.

Being able to individually frame a number of these concepts for export to separate files would not only save a lot of time, but would also make life easier when managing these files (to same dir as the ora source file). Re exporting their frames should overwrite them- that way the artist can work on multiple drawings in one single file!!

A simple frame manager (looks a bit like the layers gui) can be used in order to intuitively and quickly manage a concept canvas. here are the presentation slides:

https://docs.google.com/present/view?id=dc7366f8_131sr6k54hh

1. file>document frame editor opens the frame manager window (looks a bit like the layers)

2. Create new frame creates a new frame.

3. when the frame is selected, it shows on the canvas (frame editor). Double clicking renames it. The tick box on the right tells mypaint to export it when saving. The x mark on the left deletes it...

4. The frame editor has corner handles to resize. It shows the name of the frame,its size. Double clicking on size lets user input numeric values.

5.File>export all frames exports all the frames that have a star symbol as png files or jpg files. Maybe instead of a star symbol we can have a JPG, PNG, or X (empty) symbols - clicking to toggle between the three values). X/empty means dont render

the saving file
Add the possibility to save on a format readable by adobe softwares with a with background and no compression.

Help Lines
Insert in mypaint a tool to create "help lines" to be snapped in drawing

( a new menu?? for example a menu called Help Lines with create circle, create line,create etc etc, show/hide help lines)
 * I can create a rectangle, a circle, a straight line, a curved line with a tool

(Show-> Display Help Lines F4) curved with any or part of shapes
 * these object are on a layer of their own, that can be show/hide with a menu or with a shortcut key
 * These "help Lines" can be modified/dragged using the square
 * The cursor "snap" on these lines when they are showed to create a perfect circle, a perfect straight line, a perfect

May be required the need to special canvas that only work this tipes of lines/paths, for not saturate the program and the final size of the final archive

Perspective Lines
Insert in MyPaint a tool that when selected, automatically draws perspective guide lines.

You click once to select your perspective point, then every click thereafter, a line is automatically drawn toward that '''perspective point. '''



When drawn in, the thickest part of the line is near the foreground, and the line gradually tapers back thinner as it approaches the perspective point.

Perspective Controles
After activating the Perspective Tool, once the user's cursor inters the canvas a "Horizon line" (HL) is drawn like dragging a horizontal guide in inkscape. except once the user clicks for the first time the HL is placed on the canvas as well as the first "Vanishing Point" (VP).

Clicking the Perspective Tool again will allow you to add more VPs.

Hovering over the HL, or any VP or guide will allow you to to move them. Moving the HL will move all VPs on the HL as well as all guides on those VPs.



Guide Layers
The guide lines are on a layer, that way you can set the opacity, lock and move the guides just as you would a normal layer.



Multifunctional select tool


Selected area could be transformed in many ways: mirrored, rotated, scaled, etc.

Suggestion : May be a square, circle or free-hand select tool, for a detailed selection of some elements.

Layers Transparency locks that affect active layer
Author(s): Todor Imreorov Pros: painted pixels on any layer can be used as a selection mask, it SIMPLIFIES the process Cons: mypaint would look into pixel data. Having many layers with a lock on might make it too heavy on mypaint. Also having a giant file.

Great selection feature.
Author: Rusty G.

I enjoyed making this demonstration of ideas... their are other software out their which are similar to these ideas. I do love these concepts.



Pros: A layer mask devoted to each layer would be nice for this tool, to save the selections. I don't care about the other options I'd just use gimp. It's not like Gimp selections. Cons: Maybe could not export svg...? (I don't know...)

Suggestion  This idea can be combined with "Multifunctional selection tool" [] in a only one tool

Use layers as transparency locks (or masks). The whole idea is to have transparency still locked (layer A+B), while you work on your active layer (C).
The standard way transparency is locked usually puts a lock only on the active layer and that lock does not work when we paint on other layers. How about if mypaint had the ability to use the transparency lock of all layers that have it- any number of layers, and those locks would affect any active layer always(even newly created ones). We will be able to take the alpha of one layer and use it on another, or on a newly created one! Here is a user case (NEW): https://docs.google.com/present/view?id=dc7366f8_101s87gptg5

That feature that will let users add texture and shadow to an object -non destructively on a new layer, without the need and complexity of masks and selection tools - it is in fact simplifying the concept of masks. Also confusion of the user can be easily avoided by having enough GUI feedback. One way to hint that there is a lock is to have an indication on the canvas itself that hints that the Lock is ON and the user is in alpha lock mode. And maybe even have a quick keyboard shortcut/button to toggle alpha lock mode on and off-Much like masks in zbrush.



== Having locks for specific layers gives you the ability to use them as alpha masks. That way you can lock areas which you dont want to paint on globally. Two ducks with one stone- the artist gets transparency locks and selection masks in one. Putting multiple layers on "Lock" lets you combine the masks. Other possible developments in that direction are: - Ticking an "Invert" box lets you invert the transparency lock on all masks - combining two or more alpha locks (by enabling their layer's transparency locks) - Making an alpha mask semi-effective by reducing the opacity of its layer

I sat down and made a mock up to explain visually. Here: == https://docs.google.com/present/view?id=dc7366f8_101s87gptg5

why are alpha locks useful? http://vimeo.com/20846279

Proposal forum thread: http://forum.intilinux.com/mypaint-development-and-suggestions/lock-transparency-on-layer-while-drawing-on-any-other-layer/msg7303/#msg7303

Also note that encountering this for the first time is not too different from the classic user case and wont confuse people. It will just add a whole new level of flexibility. It can be used just like the classic way- the user can still toggle the active layer's transparency lock and painting on it will be the same  as it would in photoshop. Painting on other layers (with the lock still on) however will have a completely new powerful effect

Undo/Timeline/Scrap
It would be useful to have a more elaborate version of the undo slider of the status bar described about. Perhaps you could rightclick on it, and get a bigger bar with timestamps, markers for scrap snapshots, etc.

Project Manager
It would be useful to be able to store different versions of a painting as directed graph. Instead of random scraps, a work-in-progress would be a tree of experimental versions. You'd want a nice GUI of the graph with thumbnails, of course.

Guides and References Manager
This could either be a single window with a tabs, or two windows, but the functionality would be split into guides (paths that can constrain the brush) and references (linked or generated content that can be used to aid painting).



''Note: both panes would have an "Add" button that would bring up a menu or dialog to select what type of guide/reference you would like to add, and an "Edit" button that would bring up a custom dialog to edit the specific properties/settings on a guide/reference. Both would also have a checkbox for setting whether or not to display edit handles on the canvas for the selected guide/reference.''

Guides
The guides manger would allow you to manage one or more guides. Guides would be presented in a list. The selected guide in the list would be considered the "Active Guide". When a guide was selected, edit handles would appear on the canvas so that you could edit the guide. These could optionally be turned off so they wouldn't interfere with the workspace. The ability to have more than one guide would be a huge advantage when doing 2 and 3 point perspectives.

Guides would work in one of six different ways that would be set globally (from the dropdown at the top of the guide pane).



Note: dotted lines are two guides, red line is stroke path (traveling left to right), and the blue is the painted stroke with the given snap type.

1) No Snap: would disabled snapping on all guides.

2) Snap to Active Guide: would snap the brush to the active guide (the guide selected in the guide list) no matter where you drew on the canvas.

3) Snap to Nearest Guide: would snap the brush to the nearest guide. The brush could snap to more than one guide across the entire brush stroke, allowing you to transfer the brush from one guide to another (such as two crossing line guides).

4) Snap to Nearest Guide - Sticky: would behave like "Snap to Nearest Guide", only the brush would stay snapped to the initially used guide throughout the entire brush stroke.

5) Snap to Guide by Distance: would snap to any guide once the brush fell within a globally defined distance from a guide path.

6) Snap to Guide by Distance - Sticky: would behave like "Snap to Guide by Distance", only once a guide had been snapped to, the brush would stay snapped to that guide for the rest of the brush stroke no matter how far from the guide you moved the brush.

Guide Types
While there could be many ways to derive a guide path there are three basic types that would prove useful: Line, Line Segment/Ruler, and Custom SVG Path. One possible other guide might be a angle measure/arc guide - but I haven't included that one.



Line Guide


Note: green represents the handle the user is interacting with.

The "Line Guide" is a guide defined as a line passing through two points on the canvas. Each point has a handle through which the line can be edited. One handle is considered the "pivot" handle, and the other is the "rotation" handle. When the user moves the "pivot" handle, the entire line moves (the "pivot" handle moves the "rotation" handle, so that the line remains at the same angle and the "rotation" handle remains the same distance relative to the "pivot" handle). When the user moves the "rotation" handle the line angle changes (the "rotation" handle moves independently of the "pivot" handle, allowing the line angle and the "rotation" handle position relative to the "pivot" handle to change). The angle of the line might be displayed while the user was dragging the rotation handle. When the user double clicks (double pen taps) a handle, the handles switch (the "rotation" handle becomes the "pivot" handle, etc.). In the "Guides Manager", the popup editor for the "Line Guide" might allow you to turn on clipping for the "pivot" handle so that the line becomes a ray passing from the "pivot" handle through the "rotation" handle.

This guide would make it very easy to set up 1, 2, and 3 point perspectives - the "pivot" handle would be the viewpoint for each line. The ability to have the line operate as a ray would make a 1 point perspective a little more easy.

Line Segment/Ruler Guide
The "Line Segment/Ruler Guide" would allow you to have a line segment guide on the canvas as well as give you measurements.

Custom SVG Path Guide
The "Custom SVG Path Guide" would pull in a path from an SVG file, and display that on the canvas. It would use the "Generic Transformation Widget" to move/scale/rotate (see below for more details on the "Generic Transformation Widget"). This means the user could create there own guides (ellipses, rectangles, french curves, custom arcs, profiles, etc.).

Generic Transformation Widget


Note: green represents the handle the user is interacting with.

The "Generic Transformation Widget" would be an on canvas widget that would provide handles to quickly move/rotate/scale-zoom an arbitrary item. It could be used on references and guides, as well as layers (if layer transformation was add), the canvas itself (to move/rotate/zoom your view), or any other time you need to transform something.

The widget would be able to be either modeless or modal as the situation required (in layer transformations (modal) you would want the ability to dismiss the transformation with the pen, without using the keyboard, so a little button on the widget to preform a commit would be nice).

The inner-most handle would allow you to preform a move.

The ring around that would allow you to preform a rotate. When your cursor was over this ring, an icon indicating rotation would appear in the center handle. When the user double clicks (double pen taps) on this handle, rotation would be reset to the default.

The outer ring would be for scaling/zoom. If the aspect ratio was not locked there would be an additional two handles for scaling on each axis. Each handle would have a small arrow pointing in the direction of the scaling. The remainder of the ring would have an arrow pointing to the top left corner of the item. Again, an icon indicating the action of the handle would be displayed in the inner most handle. Double clicking on the main portion of the scale ring would reset the scale to the default (original). Double clicking on one of the axis scaling handles would scale that axis relative to the other axis so that the aspect ratio was back to the original ratio.

Optionally the widget could also display additional scaling handles at the edges of the bounding box:



You could also specify the widget to display minimal handles when using bounding box handles:



In this case the bounding box handle would combine the scale and rotate into a single handle (when you move a handle, moving in and out (parallel to the line drawn from the move handle) would scale, and side to side would rotate).

The optional bounding box handles, minimal handles, and aspect ratio lock could be set on an individual guide or reference, allowing the user to select the widget that works best for their needs (some custom guides might work best without bounding box handles, other might want aspect ratio locked, etc.).

Some examples of the widget in use:



BrushQuicklist
The BrushQuicklist would be a visual representation of brushkey-brushes (brushes associated with a shortcut [a number between 1 and 9]) so as to make it easier to see which brushsetting is stored on which key and also to make the ui "tablet friendlier".



Additional input devices
Allow generic HID input devices to be linked to functionality. Main use case would be a joystick/space navigator/whatever to scroll, zoom and turn used with the other hand than the drawing tablet pen.

Layer groups
Layers are treated in the same way as normal files, they can be moved, renamed, put in folders and so on. With folders, turning on/off visibility/locking doesn't toggle everything inside them, but just makes the folder invisible/locked while the state of everything in it is saved.



"You're Painting Over Something" Indicator Light
Author(s): Andrew Ulrich

Current state: It is a common practice among artists during the creation of an image to designate certain layers for certain parts of an image. A problem that I encounter frequently is when I paint a certain part of an image, I forget to switch to the layer I have designated for that part of the image. This sometimes causes me to accidentally paint over areas on a layer when what I really wanted to do is paint on a layer above so that they're kept separate.

Proposed change: A passive solution to this problem is to have a sort of "indicator light" that will turn on when you're painting over something on the current layer. It could be as simple as a small square somewhere that changes color to indicate that it is "on". As far as implementation, it could work by determining whether you're changing pixels that have alpha greater than a designated threshold during your stroke. If it's above the threshold, turn the light on.

To accomodate larger brushes, it might also determine what percentage of the pixels you're changing with your stroke are over the alpha threshold, and only turn the light on when you're changing more than a specified percentage.

The indicator light itself could be a button that opens a form where you can set the threshold or turn off the light completely.

Other more imposing solutions might be to essentially "help" the artist to paint on the right layer, either by detecting certain parameters and auto-switching to the appropriate layer based on those params, or by disabling the stroke when it is outside of the params specified for that layer. However, that would require a lot more work and configuration.

Pros: It is a simple, non-imposing way to remind people that they're painting over something rather than painting on a separate layer. It still gives you the freedom to decide what to paint over on a layer at any time, just with a better assurance that you're fully aware that that's what you're doing.

Cons: It's still possible to accidentally paint over something because you're not paying attention to the light, but at least it's easier to tell.

"Detail work" mode with pen/mouse warping
Author(s): Eclecticos 08:48, 8 April 2014 (UTC)

Current state: I sometimes draw using a small external USB tablet (Wacom 4" x 5"). Since the small tablet maps to the entire screen or window, small gestures on the tablet correspond to large gestures on the screen. This makes it hard to write or draw small things unless I zoom the view. Even when using my large external tablet, I sometimes need to zoom for detail work. Often, however, zoom is not really what I want -- I only want to change what my hand does, not what my eyes see!

Proposed change: A "detail mode" in which large physical movements of the pen or mouse are interpreted as smaller logical ones.

Pros: This feature helps compensate for the limitations of my tablet and my physical dexterity. It lets me (the user) unobtrusively do detail work while preserving the larger physical display. That is less distracting than zooming in and out. I may want to see the whole picture at once, and move easily between different parts of that picture in order to draw in different places or pick up colors or strokes from different places.

I think this would be useful for everyone, but I have a special reason for wanting to write or draw small things neatly without zooming. Not only do I want to preserve the original screen view for myself, I want to preserve it for others who are watching! I use MyPaint as my whiteboard when teaching university classes (with an LCD projector) and also in technical meetings. So other pepole are watching me write and draw in real time as I talk. They want to keep seeing the entire picture -- the fact that I can't write quickly and neatly on a small tablet is not their problem.

(MyPaint is much better than a normal whiteboard -- I can undo and highlight and zoom and pan and rotate and use layers and brushes and colors, I can use the cursor to point to what I'm talking about, and at the end of the class I can save the whiteboard and post it for the students. I've recommended this to others.)

Cons: None that I see. I believe this should be quite feasible to implement.

Design details:
 * Suppose the pen or mouse is at position (x,y) when detail mode is activated. Then this position is still interpreted as (x,y), but any other pen or mouse position (x+Δx, y+Δy) is interpreted as (x+(Δx/2), y+(Δy/2)).
 * Note that the MyPaint window must retain focus as long as the warped position (x+(Δx/2), y+(Δy/2)) is in the window, even if the true position (x+Δx, y+Δy) is not.
 * How aggressive should detail mode be?
 * The formula above will reduce physical movements by a factor of 2 during detail work. This might be a good default.
 * However, the actual factor is a user preference that could be adjusted in the Preferences dialogue, or perhaps through a key.
 * The mode could be temporarily activated by holding down the Shift key.
 * Activated at (x,y) when the Shift key is depressed, and deactivated when the Shift key is released. Thus, to do detail work around the current position, press Shift and hold it down while drawing.
 * To toggle the detail work mode, use Caps Lock. If Caps Lock is on, then you are in detail mode by default, and Shift temporarily deactivates it instead.
 * Yes, I know that Shift is currently used to draw a line. But this is a lesser-used feature that could perhaps be moved to another key such as Tab, if you like the proposed Shift/CapsLock design.
 * There should perhaps be a visual indicator of whether you're in detail mode.
 * Probably the appearance of the cursor should change.
 * In the case of a tablet in absolute mode, perhaps a faint outline should be shown of the detail area that the tablet currently maps to.  Whether to show this might be a user preference.

An alternative option is that movements are scaled down when drawing, but not when pointing/panning/etc.
 * So roughly speaking, scaling centered at (x,y) is turned on when the pen or mouse is depressed at (x,y), instead of when Shift is depressed.
 * However, scaling shouldn't turn off instantly when the pen is lifted, because then the cursor would jump from (x+(Δx/2), y+(Δy/2)) to (x+Δx, y+Δy) at the end of the first stroke and then the next stroke would start unexpectedly at (x+Δx, y+Δy). That would give awful results in multiple-stroke settings such as cross-hatching or writing text.  It might be adequate simply to wait and turn off scaling 1 second after the pen is lifted?  In other words, once the user starts drawing at (x,y), a kind of detail mode around (x,y) is activated until the user pauses in drawing, at which point the cursor jumps back to normal.

These designs could be combined. In a fancy version, there could be three scaling factors, and the applicable ones would be multiplied together:


 * A drawing scaling factor to be applied while drawing (default 1). This would also be adjustable in the Preferences dialogue and would be device-dependent.  For example, I might change this to 2 for my small tablet, but leave it at 1 for my mouse and my large tablet.
 * A "detail mode" scaling factor to be applied while Shift is down or Caps Lock is on (default 2). This would be adjustable in the Preferences dialogue but would not be device-dependent.  Again, detail mode might be indicated by a different appearance of the cursor.
 * Possibly a default scaling factor used at all times (default 1). This would be adjustable in the Preferences dialogue and would be device-dependent.
 * In the case of a tablet, however, it is important to make sure that it is still possible to reach the whole screen. Solutions:
 * Set the tablet to use relative position like a mouse rather than absolute position.
 * Use hyperbolic (fisheye) coordinates centered on a weighted average of recent pointer positions.
 * Scroll near the edges of the tablet. I.e., when you approach the edge of the tablet, which is the boundary of the current detail area, that outline begins to slide, bringing the pointer with it.
 * More details on request about how to design and combine these three effects.
 * E.g., the user might enter drawing mode at one (x,y) coordinate before or after pressing Shift at another (x,y) coordinate.
 * There are also issues of what happens if the user holds down Shift before moving the cursor into the MyPaint window, etc.

File / Merge ... command
There should be a File / Merge ... dialog that allows you to open another image file (possibly .ora) and add its layers to the current drawing.

By default these imported layers would be added above the current drawing's layers. A checkbox could allow the user to instead add them below (but above the background). Of course, the user can subsequently reorder the layers, or use Layer / Move.

An alternative design would be to make "add above current drawing" and "add below current drawing" be options in the ordinary File / Open ... dialog. This keeps related functions together, but users might have more trouble finding the feature.

How to name the new layers:
 * Use the layer names provided by the opened file, if any. If some layers are untitled, then use e.g., "Untitled layer #3" as when creating a new layer.
 * If any of the layers are untitled or have the same names as an existing layer, then prefix all of the layer names by the base filename of the opened file, e.g., "MyFile: big sky" or "MyFile: Untitled layer #3".
 * As a special case, if there is just a single new layer and it is untitled, then the base filename of the opened file can be used as the layer name, e.g., "MyFile".

This seems like an easy feature to add. Lacking this feature, it seems that the only way to combine multiple images is to use an external program. (Merging .ora files seems like a relatively easy script to write. But as far as I know no one has written it, and one would expect to find it right in mypaint.  I also can't figure out how to do it with ImageMagick.)

Eclecticos 15:20, 13 May 2014 (UTC)

Transparent background to allow desktop annotation
Author(s): Eclecticos 22:49, 7 June 2014 (UTC)

Current state: All visible layers are composed over a white background (or a checkered background when "Layer Solo" is turned on).

Proposed change: Add a "Transparent" mode in which the drawing has no background. Other windows behind the MyPaint window would show through.

Pros: This makes it possible to use MyPaint as a desktop annotation tool while teaching a class or giving a talk. It also makes it easy to annotate screenshots for offline use.

Cons: None that I know of.

Example: See mockup below. In general, suppose you are showing content such as a PowerPoint slide, a video, or a webpage:
 * Open a MyPaint window in Fullscreen+Transparent mode. This lets you draw "on top" of the other content.
 * Switching focus between PowerPoint and MyPaint is just a matter of using Alt-Tab or whatever you usually use to switch focus in your window manager.
 * It would be helpful, though, to have a way of pinning the MyPaint window on top even when the window below has focus.
 * The annotation is preserved until you clear it with Ctrl+N. This is useful if you have an animated slide or a "build" consisting of a sequence of similar slides.
 * MyPaint allows you to have several different annotation layers and switch among them by using PgUp and PgDn in Layer Solo mode.
 * Floating tool windows (or docked tool panes) such as the Colors Window and Layers Window can still be used as desired (see mockup below) and would still have their usual white background.

I already use MyPaint as my whiteboard in class, but I can't draw spontaneously on top of other content I'm showing. I would have to make a PNG or screenshot of that content and then open that in MyPaint.

Remark: There is indeed a market for tools like this, since some exist already. They're not nearly as nice to draw with as MyPaint, though, nor as powerful. So please add this simple feature to enlarge your userbase!
 * Windows: Epic Pen, Presentation Assistant - Screen Draw, ZoomIt
 * Mac: Highlight, Desktastic, Ink2Go



Optional refinements:


 * When exiting Transparent mode, ordinarily the background would return to white. But a popup dialog could offer a choice:

Keep current background? Screenshot     White

The "Screenshot" option will augment the image with a new bottommost layer called "Screenshot," consisting of the material that is currently behind the MyPaint window. That lets you preserve a picture of what's being annotated along with the annotations -- useful if you want to save the image to a file or just flip back to the MyPaint window later.


 * Similarly, the Save and Export commands should offer a popup dialog when issued in Transparent mode:

Save current background? Screenshot     None


 * When entering Transparent mode, sometimes there would be no effect because the bottommost layer would completely hide the material behind the MyPaint window -- all pixels are 100% opaque. (For example, a "Screenshot" layer.)  In this case there should be a popup:

Delete opaque background layer "Screenshot"? Delete    Hide     Make transparent    Cancel

The "Delete" option would get rid of the old screenshot layer so that the current background shows through again. "Hide" would keep the layer but make it invisible, and "Make transparent" would set the layer to (e.g.) 25% opacity.


 * The New command should preserve Transparent mode, and it should be saved in user preferences.