Enclose and Fill Tool Proposal

I will do some tests and comment on my opinion, I am also a CSP user and the fact that this tool has been implemented seems wonderful to me.

1 Like

Thank you for the explanations as they do clarify a lot of stuff like how the exclude region works and how selecting a transparent area can be considered a open shape.

One thing that might have not be clear in my previous post is the the invert under the tooltip is actually part of the tooltip. Part of my suggestion is clarifying what invert does to each mode. As i think some of these logic operations might not be clear to all users. and sometimes the wording might misguide a user, as for example:
I have a circle on a transparent layer
I select to fill transparent regions.
If i select around the circle it will fill inside the circle, great that’s what I expected.
Now, lets check invert and select the same area:
The result is the inside of the circle is not filled, the outside area + the lines making the circle a filled.

Which by your explanation of how invert works by inverting the mask makes sense. However that only makes sense if you know a mask is being created under the hood, that’s completely invisible to the user. The tooltip for the invert checkbox also doesn’t mention anything of the sort it says “check this option to fill all regions except the selected ones”.

Going by that i would expect to fill the area around the circle but not the circle lines. It can also generate some semantic problems cause if you are inverting transparent regions some users might think it would select and fill the area that’s not transparent.

I know i might be stretching matters but as someone who has been directly answering people doubts about krita for i think 2 to 3 years, i know that some of this stuff will confuse a lot of the users. so even if the process under the hood is the same the result for the user will be different. Reason why i think its important such things are explained.

The invert checkbox would continue to have its tooltip unchanged. though might be good to change it to suggest a mask is being created for the fill.

That being said, one thing i believe is that tool tips should reflect what the user will perceive not what is happening under the hood especially for a program like krita. However i understand that not everyone might agree with this.

In this one in particular my intention was to show that it would fill the whole area but would respect boundaries like the fill tool does but maybe better wording would be good.

I agree the tooltip might be a bit confusing especially the first part, but what you are describing with:

is exactly what i meant to say in my tooltip. Though i guess i really messed up my wording.

I will say that paint selected area describes better what i am seeing happening than include contour regions. cause to me contour regions doesn’t convey much meaning to the user. but i would also like to see other users input as by no means i think any of these suggestions are perfect.

Haha , that explains a lot, thats exaclty what i was doing lol would be good to add that transparent layer areas and transparent areas not encloses are considered open.

testing here after understanding how the transparency of the layer can be understood as a open shape it does something. I was selecting a shape on a empty layer, after creating a boundary with color and selecting on top of this it did something.

indeed a tutorial would be super helpful.

as a CSP user i will say the only thing i am missing in this tool is a close gap detection, i do think that this tool offers out of the box things that in csp i had to download custom assets made by users. these ones 1759451, 1759448 and 1759450

Again amazing work you have been doing, and thank you for your work so far.

1 Like

Well the first thing I noticed is that the tool takes a while and the second thing is that it doesn’t fill drawings like this.

I was modifying the options but the result was always the same.

For the rest, filling in some sections of the drawing works the same as in csp :smiley:

Now it works, I don’t know what happened, I just closed and reopened Krita, I didn’t really make any changes.


Yes, it is slower than csp. I didn’t try to optimize it yet. I n some places I think I can make it a bit faster; in others it’s bounded by the other functionality in krita (like floodfill).

The tool doesn’t treat the borders of the image into account to select the regions to be filled, which seems to be what csp does. I’m guessing that the lineart layer extends a bit outside the canvas limits and that could be what’s triggering that odd behavior. Can you share that image with me to make some tests?


And yes, no problem, can I send it to you privately?, since it’s a commission that I am doing :laughing:

Yes, send me a pm here with a link. If you prefer it I can give you my email.

I’m sending you a private message now :blush:

@SchrodingerCat thanks. I tested the tool with your image. My guess is that you actually changed the mode, but I may be wrong.

If I use the “regions of specific color” with white as a color and make a enclosing region similar to the one in your videos, then everything inside the lines is filled. On the other hand, if I use the “regions surrounded by specific color” with black, then only some regions are selected.

The “issue” I think is that this tool doesn’t take the image borders as a boundary, like csp seems to do. This means that what is outside the image is considered transparent. If one uses “regions of specific color” then all the white regions are selected because they are inbetween the black lines and a transparent region that is outside the image but inside the enclosing shape, so they are considered closed. If one uses “regions surrounded by specific color” then some of the white shapes are not totally surrounded by black because they are next to transparent on the bottom, so they are not considered closed an they are not filled.

At least that’s what I think is happening.

So, my question to all of you is: should the tool in Krita behave like the one in csp and take into account the image borders? I didn’t do it that way because the layers’ contents can extend ouside the image bounds. But maybe here is better to have it like csp.

i would say if it improves performance, then yes. As i think in the end the most used case would be fill inside the canvas area, and i think making adjustments doesnt take too long in the case something wasnt filled cause it was outside before.


I agree with @LunarKreatures, if that improves performance I would say yes.


I’m for staying on canvas area.


Well, I finally made some changes related to the issue of taking the image limits into account: Make the enclose and fill tool take into account canvas limits. (!1506) · Merge requests · Graphics / Krita · GitLab

The results are now pretty similar to those of CSP.


Amazing work with this tool, very useful for workflow, keep it up!!!



I was a little bit away from this topic, but today I’ve used the enclose and fill tool for first time

Time saver!

Filled 1362 frames in less than 90minutes :star_struck:

Many thanks @Deif_Lou for this function :smiling_face_with_three_hearts:, tuning options are pretty interesting too :heart_eyes:

I’ve only one remark
That’s might be a specific use case, I don’t know
But on my 1362 frames, most of time I used the same rectangular area to as enclosing region

I’m wondering if there’s a way for example to define a selection, and consider it the Enclosing method
Then you can define a selection area (made of one or many selection area) and just click inside selection to use it as the enclosing area :slight_smile:
And then just have to move to next frame and click again :grimacing:



I have similar suggestions here:

1 Like

Hi @Grum999. Wouldn’t that be mitigated to some extent by having the fill tool or enclose and fill tool operate in several frames at once? I think that is the approach used in other apps, although I can’t remember where I saw it specifically. You would make the region taking into account more than 1 frame and then different fills are performed in those frames.

Edit: Toon Boom has something like that:

I suppose you mean you select the frames on which you want to apply tool, and when enclose is done, all frames are processed
This could be very useful as an option yes :+1:

But on my case I like to be able to check each frame to ensure that fill area is right (if not large enough doesn’t matter, but at least to be sure to not enclose something that should not be enclosed - I manage theses frames one by one)

With a method that need to select each frame before, you really need to be sure that what you’ll enclose is good without real preview of what you’ve really enclosed on frames :slight_smile:

It could work for few frames (having lightbuld ON) but with hundred or thousand of frames… :thinking:

Possibility to use fill tool on more than one frame at once is a very interesting feature too :slight_smile:


1 Like

@Grum999 is your request to “sample” the same point across multiple frames and if the region is the same (e.g. the object is static) then fill it?

Hi @Hologram

First idea for enclose and fill tool is for example:

  1. Create a selection
  2. Use it to be able to fill everything that fit defined rules for all selected frames (or all frames, need to think about this case…)

The second idea, according to example provided by @Deif_Lou is for default fill tool, being able to fill across all selected frames (or all frames)

In example:

  • click on red point will fill rectangles from frames 1 and 2
  • click on orange point will fill rectangles from frames 1, 2 and 3

The most complicated I think is to provide a clean user interface
Most people I think don’t use Krita’s animation possibilities and options to work on multiples frames shouldn’t be visible if current selected layer is not animated I think (goal: do not provide useless option when not working on animation)
Option could be a combobox with choice: current frame, selected frames, all frames


1 Like

With animation usion using the currently active onion skin frames might be nice since the onion skin is made easy to select a range of frame and toggles their visibility on screen also. Not as many frames at once but should prove to be stable to use.