This is a planning idea for new PaintCore for GIMP 2.8 or beyond. 1: The "Why?". Current paint core is just not flexible enough and migration to GEGL based paint core is planned anyway. So why not do the best possible paint core since we are redoing it anyway? 2: What is the goal? In general: Best possible digital "painting" tools. That should NOT include any natural painting things like watercolor emulation or alike but full featured tool for use on digital medium for image processing, touch-up etc. What does the above mean? * Easily extensible framework for creation of painting tools * Fully dynamic painting, meaning that every adjustable aspect is user input controllable * Easily distributable paint tool presets that allow a the complete tool context to be saved and loaded either on same or different machine How I see that happening? Step one: Event handler for paint tools. This is a very important bit for fully featured tools. All devices have some dynamic properties that are useful in painting on the digital canvas. * Mice have velocity(and acceleration), cheap tablets add pressure, more expensive ones may add even more axis. * All movement has direction * Purely calculated axis like random can be extremely useful. * Paint tools want events at a constant distance or at a constant distance AND rate. Devices will never provide exactly what is needed so adjustment is required. The extra events need to be discarded and events that are missing interpolated. The method of interpolation depends on the axis in question. So event handler should: * be able to handle a number of device axis and apply per device curves * support calculated axis based on what device provides and also support applying device curves * support a dynamic selection of arbitrary purely calculated axis (random, iterator, sin, cos, sawtooth, box); * be able to deliver constant distance and constant rate events Step two: Paint Core Paint core should provide framework for interacting with the canvas, controlling the event handler and the saving and loading of paint tool contexts as Paintbrushes, Erasers, Sponges etc with previews. Paint core should also facilitate curves based mapping of event handler axis to tool parameters. All paint tools expose parameters that may be mapped to any axis event handler can provide. Step X: Paint tools: Brush tool: Simple painting tool, support for all current brush formats is a must. Must support at least scaling and rotation of brushes. Airbrush tool: Almost the same as brush tool but orders constant rate of events from event handler. etc tools: Use paint tool framework, only the paint action itself differs. That's just my Idea for the step two of my last piece from a while ago on brushes in GIMP. Sven, Pippin, Peter, everybody - comments? _______________________________________________ Gimp-developer mailing list Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer