fill: rework Sample Merged for new layer stack API
authorAndrew Chadwick <andrewc-git@piffle.org>
Thu, 9 Jan 2014 12:18:12 +0000 (12:18 +0000)
committerAndrew Chadwick <andrewc-git@piffle.org>
Tue, 4 Feb 2014 00:57:40 +0000 (00:57 +0000)
commit4370c8904dde4befd085a098ff38102c50749bc0
treec5bb8b6d88c9ac165104cd9cdaeb956658965b2e
parent4c009e1c74eba98f96f7e477bcf28de6bddeb979
fill: rework Sample Merged for new layer stack API

Just doing a big pile of Merge Downs is not the same thing as compositing a
tree-structured layers stack properly. It's inefficient too, for flood
fill. Instead, composite the tiles that flood_fill() needs to sample from
using a temporary on-demand adaptor, caching the readonly source tiles for
efficiency when fills reenter already visited tiles.

Abstract out the main flood_fill() routine so it isn't tied to a particular
source surface implementation.

Layer stacks can now be flood_fill()ed into another layer (although they
don't support read+write tile access), so Sample Merged just becomes a side
effect of using the root layer stack as source.
lib/command.py
lib/layer.py
lib/tiledsurface.py