brushes and brush engines
Boudewijn Rempt
boud at valdyas.org
Tue Mar 18 14:03:42 CET 2008
Ok... This started because I wanted to clean up the tablet settings
for the brush/smudge paintop a biti and started coding an extensible
paintop settings dropdown to replace the current size/opacity/darken
toolbar. Then we discussed confusing naming on irc and I suddenly hit
by a flash of lightning.
Current situation:
* KisBrush and friends: determine the "tip", "stamp", "footprint" or
"dab" for some paintops. There is always one active KisBrush, even
though the paintop may not use it at all. Brushes are selected from
a tabbed drop-down from a toolbar.
* KisPaintop: these are the actual brush engines. Krita can have many
different brush engines. Some use brushes, others are procedural.
Paintops can have settings that can be saved and loaded, kind of
presets, but that are currently not visualized in the gui. Paintops are
selected from a combobox and the settings are visualized in a toolbar.
Proposal:
* Rename KisBrush to KisStamp, KisTip or KisBrushTip. All derived classes
follow suit.
* Rename KisPaintop to KisBrushEngine. All derived classes follow suit.
* Extend KisBrushEngineSettings (former KisPaintopSettings) with the name
of the associated paintop and parameters like the KisBrushTip instance.
* Remove the current brush button from the toolbar
* Replace it with a toolbar showing five active "presets" -- a preset is a
KisBrushopSettings instance.
* For applicable KisBrushEngines, the settings include a particular
KisBrushTip. KisBrushTip is no longer an independent canvas resource.
* Add a dropdown that can be used to manage presets for a KisBrushEngine
* Include a nice selection of default presets.
* Instead of an active paintop, use an active preset. Add a secondary
and tertiary active preset that can be selected using ctrl+freehand and
shift-freehand (or something like that) Which preset from the
selection-of-five is primary, secondary and tertiary can be determined
by click+modifier on the toolbar.
* The presets can be saved and will be loaded on startup again
* additionally, the preset selection buttons will allow on-the-fly
changing of the current preset through a drop-down button that shows the
same page as the preset manager/designer
Advantages:
* our code becomes less confusing: I'm getting tired of having to explain
the different between KisBrush and KisPaintop.
* the ui becomes less confusing when using paintops that don't use brushes
* it becomes easier to quickly switch between paintops while working.
Difficulties:
* a unique graphical representation of a preset for the toolbox:
perhaps brush engine icon + a small stroke? That would make the present buttons
fairly wide. And I think it's essential to show more than one brush
preset at one time in the toolbar.
* We want to have only one collection of brush tips shared by all
brush engines that use brush tips. Besides, the autobrush brush tip is used outside
the brush engines, too.
* We'll look more like Photoshop than like Corel Painter after this
change.
Implementation:
I'll have to make some changes in the canvas resource provider,
the control box and add gui classes to implement the preset
designer/manager. I've got already some code for that.
By the way:
It looks like the "hang" when using darken and the tablet is caused by
the darken color transform somehow being really, really slow
Boudewijn
More information about the kimageshop
mailing list