Rewrite the layout system in Alloy to use relative positioning of components rather than absolute. Meaning: the xy bounds of a component are now offset from the layout-parent's position. This makes updating positions very cheap, most importantly when scrolling views.
However, it complicates intersection testing, specifically when testing for pointer events, and even more crucially, when doing visibility culling via extent-visible-p.
While at it there were also some minor improvements to the linear layouts and possibly others.
The following APIs were changed as part of the rewrite:
Moved translate to the core renderer protocol
Added constrain-visibility
Added reset-visibility
Removed call-with-constrained-visibility
Added convenience accessors for a layout-element's bounds
Renamed suggest-bounds to suggest-size
Renamed ideal-bounds to ideal-size
Updated (setf bounds) to elide calling methods if the size has not changed, eliminating re-layouting when only the position was updated.
Rewrite the layout system in Alloy to use relative positioning of components rather than absolute. Meaning: the xy
bounds
of a component are now offset from thelayout-parent
's position. This makes updating positions very cheap, most importantly when scrolling views.However, it complicates intersection testing, specifically when testing for pointer events, and even more crucially, when doing visibility culling via
extent-visible-p
.While at it there were also some minor improvements to the
linear
layouts and possibly others.The following APIs were changed as part of the rewrite:
translate
to the core renderer protocolconstrain-visibility
reset-visibility
call-with-constrained-visibility
layout-element
's boundssuggest-bounds
tosuggest-size
ideal-bounds
toideal-size
(setf bounds)
to elide calling methods if the size has not changed, eliminating re-layouting when only the position was updated.