drawpile / Drawpile

A collaborative drawing program
http://drawpile.net/
GNU General Public License v3.0
1.05k stars 133 forks source link

Layer thumbnails #1265

Open askmeaboutlo0m opened 7 months ago

askmeaboutlo0m commented 7 months ago

It's been requested several times that Drawpile should provide a preview image for layers, similar to other programs.

The "obvious" way this could work is to show the layer thumbnails in the layer list and update them gradually as they change. It should crop the area with visible pixels, since otherwise you'd just see a mostly blank thumbnail. However, this would be a massive detriment to performance, layers in Drawpile change at a much higher than with offline drawing programs and the canvases tend to be much larger. It's like the navigator, but multiplied by the number of layers.

Thumbnail generation must be disabled by default. Only layers currently within view must be updated, the rest ignored until they scroll into view. It must run with low priority in the background and at a very low frequency. You'd also have to figure out what layers actually changed, which is not currently something that's tracked in any way. This must not cause performance degradation when you have layer thumbnails disabled.

Due to all the problems it causes, I'm against the feature outright. Instead, I'd propose generating a thumbnail when you hover your cursor over a layer and showing it as a tooltip. This can just generate a preview ad hoc when the user initiates it, rather than constantly eating away at your CPU cycles and battery. It also wouldn't require tracking changes to the layers. I don't know if this solution would actually satiate whatever desire there is for the existence layer thumbnails though, since layer thumbnails are not something I've ever found a use in myself.

amoruwu commented 7 months ago

Isn't a layer-view mode like a layer preview? Only showing the layer you're on.

MorrowShore commented 7 months ago

The feature would look similar to this: (GIMP) image

It naturally causes problems and performance hits, especially if it's on a public session with more than dozens of layers being updated in real time.

However the feature is very useful in private workflows, especially when you don't spend the time to name layers or remember them.

We think a preview being shown upon hover is a good compromise, but having the option to see it for every layer at once would be great too, even if it's barely updated and has an extremely low resolution.

There is also the idea of auto-tinting the layer with the dominant or average color present in it, although it sounds like a nightmare to implement. image

amoruwu commented 7 months ago

I guess it's useful for private workflows, but I don't know about collaboration program needing it. layer-view mode could be used instead, allowing to zoom in ETC. On a big canvas it would be pretty much impossible to see your art such as stated here.

Wade821 commented 1 month ago

This issue actually has an idea to manage small, useless previews with something for the navigator actually. Several people have asked about being able to "zoom in" on the navigator such that it shows just their working area instead of the entire canvas. Such a feat could be handled by using selection tool, then right click on the navigator to "Zoom to selection" or "Reset View".

In a similar fashion, using the selection tool could be utilized to generate layer thumbnails as a separate option based on a pre-selected area or reset to the whole canvas. Such options could live under the layer menu and right click layer option (with an indicator that this applies to all thumbnails).

The main issue comes with any changes to canvas size with needing to update those parameters dynamically or reset them to display the whole canvas by default (cropped to the area in which pixels exist for visibility).