Fading Memories

About

Ramblings about books and other things that will soon fade from my memory.

Boudewijn Rempt

index | rss1.0

There's more...

Creative Commons License
The original artwork is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.

Categories, too

Find


Archives

Other things here at rempt.xs4all.nl

2007-11-08

Live Filter Previews

Gone are the dialog-bound preview widgets of yesteryear! Yesterday I managed to have a live filter preview in Krita for the first time:

As you can see, it's not perfect. There are some artefacts that suggest that I have an off-by-something error somewhere...

The idea is to have user-definable, draggable area that's filtered by the filter and settings currently selected in the non-modal dialog box you see top-right, automatically updated some time after you made your last change to the settings. Then, when you're satisfied you can selected to either create a live filter mask (which can have any shape, of course), or destructively filter the current layer, which takes into account the selection (of course).

The draggable and resizable part will probably only be done for 2.1; right now I'm already quite deliriously happy that we've gotten this far.

It's been a long slog getting this far: I had hoped to be done in May, but real life (like buying and renovating an old house and getting a new job) interfered. Not to mention bugs, design errors resulting in two redesigns and the occasional priority shift because we needed to refactor selections, redisplay code, the filter api and other stuff just to get here.

But what we've achieved now is pretty cool, even with all the bugs:

We've got a layer stack that can contain paint layers (with a fixed, i.e., dried, and a changeable, i.e, wet, part), group layers, adjustment layers (that act as a filter foil on top of a stack of layers), copy layers (that copy the result of another layer to a new place in the layer tree) or Flake object layers.

All these layers can contain a stack of masks: selections (containing both vector shapes and per-pixel selectedness) that you can paint on and that can control transparency, apply transformations (like rotation or moving), apply any filter or simply indentify selectedness of pixels for a particular layer.