void Slider::Update () { register Perspective* p = shown; int h, oldwidth, oldheight; float aspect; Scene* s; Shape ns; oldwidth = p->width; oldheight = p->height; *p = *view; aspect = float(p->height) / float(p->width); SizeKnob(); if (p->width != oldwidth || p->height != oldheight) { h = Math::round(aspect * float(shape->width)); if (h == shape->height) { Draw(); } else { shape->height = h; if ((s = Parent()) != nil) { s->Change(this); } } } else if ( prevl != left || prevb != bottom || prevr != right || prevt != top ) { Draw(); } }
void Slider::Reshape (Shape& ns) { if (shown->width == 0) { *shape = ns; } else { shape->width = (canvas == nil) ? ns.width : xmax + 1; float aspect = float(shown->height) / float(shown->width); int h = Math::round(aspect * float(shape->width)); if (h != shape->height) { shape->height = h; Scene* p = Parent(); if (p != nil) { p->Change(this); } } } }