Bug 231991 - History brush: Painting an older image revision over the current version via a brush
Summary: History brush: Painting an older image revision over the current version via ...
Status: CONFIRMED
Alias: None
Product: krita
Classification: Applications
Component: Tools (other bugs)
Version First Reported In: unspecified
Platform: Unlisted Binaries Linux
: NOR wishlist
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-03-24 11:44 UTC by Eike Hein
Modified: 2020-11-04 00:49 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Eike Hein 2010-03-24 11:44:42 UTC
I'd like to be able to use an older revision of the image being edited as the "paint" for the brush tool.

For a longer explanation, I'm going to talk about Photoshop and Gimp, purely as a means for reference.

In both applications, there is a "History" dockable dialog that lists past revisions of the image being edited, complete with a thumbnail preview of each revision. Clicking one such list entry reverts the image to that revision.

Both applications also have brush tools that can make use of a number of different "paints". For example, a solid color or a gradient, or an image tile.

Unlike Gimp, however, Photoshop offers an interesting combination of these two as a further "paint": There is a "History Brush" tool that allows one to paint an older document revision, selected in the "History" dockable dialog, over the current revision, using a particular brush shape and settings. It's essentially similar to painting with an image tile, just that the tile has the same size as the image and happens to be a past revision of the image.

As a practical example, imagine having a colorful image open, and then applying a desaturation operation to it. Now you can select the history brush tool, chose a revision of the image prior to it being desaturated as the source, and selectively paint back the color, to accentuate things, etc.

This is indispensable to my workflow; it's somewhat of my pet feature. It's a way of working I enjoy tremendously. Being able to paint back an old revisision in places just frees you up a lot in how you work on a piece. It's a bit of a safety net. You have to think less about what you're doing beforehand, since you can always easily paint back older revisions in the areas where you need them, without doing a wholesale undo.

I started talking about this with Bart Coppens and others as far as two years back, however Krita's Undo/Redo system apparently wasn't yet mature enough at that point to be able to reconstruct arbitrary past revisions of the image quickly and simply enough to feed into the brush engine. Since Krita has made tremendous progress since then, I'm hoping implenting this might be a lot more feasible today. Lukas encouraged me to file it, anyhow ;-).
Comment 1 Halla Rempt 2016-01-24 14:14:12 UTC
WISHGROUP: Stretchgoal
Comment 2 Halla Rempt 2017-11-27 09:48:09 UTC
Wow, seven years ago already. We learned a couple of weeks ago what makes the photoshop history brush possible: they don't have undo/redo commands, but store a shallow copy of the image for every step.
Comment 3 Eike Hein 2017-11-27 09:53:44 UTC
Did you talk to them or what was the source of that info? (Sounds like a story ...)
Comment 4 Halla Rempt 2017-11-27 10:00:43 UTC
Yes, Dmitry met one of the adobe chief c++ hackers and had a nice, long discussion. There's also a video: https://www.youtube.com/watch?v=QGcVXgEVMJg
Comment 5 Eike Hein 2017-11-27 10:03:17 UTC
Thank you!
Comment 6 Tiar 2020-11-04 00:49:44 UTC
I believe that, unfortunately, it's still not that easy to implement even with the last year's Tusooa work on snapshots docker. (Check out the snapshots docker; it might help you, too).

My workflow is that I just paint on usually one layer, maybe two, sometimes I add more and then group them; and when I want to move to another stage, I just duplicate the layer or the group. Then I can easily compare two versions and I can refix things I broke in the new revision by merging down the good results but erasing the bad ones, etc. It's not as easy as you describe it in PS but it works for me, at least.