New properties to manage groups/sublayers:
* Layer.layers: property to access sublayers of a group
* Layer.stackIndex: property with the index of the layer in the list
of layers
* Layer.parent setter: to move the layer to other group
Improves the performance when we edit big images (shrink + crop +
image allocations are the performance issues we have when we're
editing big images).
The real solution for image allocations would be to change the
internal representation of images to a tile-based images with a cache
of tiles. But that is not planned in the short-term.
The purpose of this fix is enable drawing of one pixel with contour
tool is active and we drag the cursor inside of the same
pixel (https://community.aseprite.org/t/3509).
Added 3 tests in polygon_tests.cpp to test polygon function when the
expected results is a simple pixel.
When we were viewing an huge sprite, a temporal buffer (os::Surface*)
used to render it would increase its size to the size of the
canvas. After that, whatever other sprite that we saw (even for the
smallest one) we were unnecessary clearing the entire (huge) internal
buffer with os::Surface::clear() on each render.
This problem was visible only using the new render engine.
* Fixed Jumble tool behavior: When brush is circular, all the brush
bounds (square) where randomized. And at the end all the pixels were
re-randomized.
* Solved the double-point in IntertwineAsLines from
62802cfbdfbd85edd5a339361de70c36d74925dc in an alternative way: Just
don't draw the first point when we join consecutive 2 points
strokes (the issue here is that freehand controller generates
strokes of two points, so every call on joinStroke() of
IntertwineAsLines has only two points, we have to check if we're
drawing the first stroke, and if we are drawing the second 2 points
stroke, we skip the first pixel to avoid drawing it two times,
solved with IntertwineAsLines::m_firstStroke).
The purpose of this fix is draw correctly the
first stroke point as result of a joinStroke() execution
from class IntertwineAsLines when following
conditions are meet:
- pencil tool
- pixel perfect OFF,
- custom brush
- try to draw a line of 2 pixel.
The original issue was detected by the tests functions
based in useTool function on Lua scripts.
The issue was presented in tool.lua.