I see... the problem shows up when you have 3 layers of nesting. It
works fine for 2, but breaks for 3.
w = SCWindow.new("test", Rect(50, 50, 500, 500)).front;
f = SCCompositeView(w, Rect(50, 50, 150, 200)).background_(Color.red
(alpha: 0.3))
.relativeOrigin_(true);
g = SCCompositeView(f, Rect(10, 10, 100, 100)).background_
(Color.blue(alpha: 0.3))
.relativeOrigin_(true);
h = SCCompositeView(g, Rect(30, 15, 60, 40)).background_
(Color.yellow(alpha: 0.3))
.relativeOrigin_(true);
SCStaticText(h, Rect(10, 10, 40, 20)).background_
(Color.white).string_("hello");
w.refresh;
Since it would be bad to fix it for 3 layers but leave it broken
for 4, here's a stress test.
(
var ratio = rrand(1.25, 1.6), x = 0, lastx = 0, lastView;
if(0.5.coin) { ratio = ratio.reciprocal };
w = SCWindow("Albers ad infinitum", Rect(10, 10, 600, 600));
lastView = w;
while { x < 299 } {
lastView = SCCompositeView(lastView,
Rect(x - lastx, (x - lastx) * ratio, 600 - (2*x), 600 - (2*x)))
.background_(Color.rand.alpha_(rrand(0.3, 0.7)))
.relativeOrigin_(true);
lastx = x;
x = x + rrand(12, 36);
};
w.front;
)
For comparison, the same without relative origins. Both should look
the same. (Quite pretty... Josef was no fool.)
(
var ratio = rrand(1.25, 1.6), x = 0, lastx = 0, lastView;
if(0.5.coin) { ratio = ratio.reciprocal };
w = SCWindow("Albers ad infinitum", Rect(10, 10, 600, 600));
lastView = w;
while { x < 299 } {
lastView = SCCompositeView(lastView,
Rect(x, x * ratio, 600 - (2*x), 600 - (2*x)))
.background_(Color.rand.alpha_(rrand(0.3, 0.7)))
.relativeOrigin_(false);
lastx = x;
x = x + rrand(12, 36);
};
w.front;
)
hjh
: H. James Harkins
: jamshark70@xxxxxxxxxxxxxxxxx
: http://www.dewdrop-world.net
.::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..:
"Come said the Muse,
Sing me a song no poet has yet chanted,
Sing me the universal." -- Whitman
_______________________________________________
Sc-devel mailing list
Sc-devel@xxxxxxxxxxxxxxx
http://lists.create.ucsb.edu/mailman/listinfo/sc-devel