resize resize behavior for SCView and its subclasses

resize takes nine different arguments defining the behavior when window is resized.

If relativeOrigin is true, then each view responds relatively to the stretches of its parent view.

If relativeOrigin is false, then each view responds relatively to the stretches of the top view, even if the top view is not its parent.

1 2 3

4 5 6

7 8 9

1 - fixed to left, fixed to top

2 - horizontally elastic, fixed to top

3 - fixed to right, fixed to top

4 - fixed to left, vertically elastic

5 - horizontally elastic, vertically elastic

6 - fixed to right, vertically elastic

7 - fixed to left, fixed to bottom

8 - horizontally elastic, fixed to bottom

9 - fixed to right, fixed to bottom

Examples

// resize behaviours

// use the PopUpMenus to mix resize modes

(

var a, relative=true; //change to absolute for absolute origin behaviour

a = { |i|

var w, b, x,k,t,p;

k=i;

i = i + 1;

w = Window("resize:"+i, Rect(10 + (k%3 * 220), Window.screenBounds.height- [250,460,670].at(k/3), 200, 180));

b = w.view.bounds;

x = CompositeView(w, w.view.bounds.insetBy(20,20)).relativeOrigin_(relative)

.background_(Color.rand)

.resize_(i);

y = CompositeView(x, x.bounds.insetBy(20,20)).relativeOrigin_(relative)

.background_(Color.rand)

.resize_(i);

relative.if{y.bounds=y.bounds.moveBy(-20,-20)} ;

y.decorator = FlowLayout(y.bounds).gap_(0.0 @ 0.0);

t = StaticText(y, Rect(0, 0, 40, 40))

.background_(Color.rand.alpha_(0.8))

.resize_(i)

.string_(i)

.font_(Font("Helvetica", 26));

p=PopUpMenu(y,40@40).items_((1..9).collect(_.asString)).value_(i-1).resize_(i)

.action_{|m| t.string_((m.value+1).asString); [p,t].do(_.resize_(m.value+1))};

w.front;

w.onClose = {a.do(_.close) };

} ! 9;

)

// the popupmenu contains the various modes

(

w = Window("soundfile test", Rect(200, 200, 720, 250));

p = PopUpMenu(w, Rect(10,10,80,24))

.items_( Array.fill(9, {arg i; (i+1).asString;}) )

.action_({ arg sbs;

a.resize_(sbs.value+1);

});

f = SoundFile.new;

f.openRead("sounds/a11wlk01.wav".absolutePath);

a = SoundFileView(w, Rect(10,40, 700, 180))

.soundfile_(f)

.readWithTask(0, f.numFrames, showProgress: false )

.resize_(1);

w.front;

)