static status computeSlider(Slider s) { if ( notNil(s->request_compute) ) { int ny, vx, vy, lx, ly, sx, sy, hx, hy; int w, h; int sw, sh; obtainClassVariablesObject(s); compute_slider(s, &ny, &vx, &vy, &lx, &ly, &sx, &sy, &hx, &hy); h = SLIDER_HEIGHT; h = max(h, ly+valInt(getHeightFont(s->label_font))); h = max(h, vy+valInt(getHeightFont(s->value_font))); if ( s->show_value == ON ) { char buf[100]; string str; sprintf(buf, INTPTR_FORMAT, valInt(s->high)); str_set_ascii(&str, buf); str_size(&str, s->value_font, &sw, &sh); w = hx + sw; } else w = hx; CHANGING_GRAPHICAL(s, assign(s->area, w, toInt(w)); assign(s->area, h, toInt(h))); assign(s, request_compute, NIL); }
static status requestGeometryView(View v, Int x, Int y, Int w, Int h) { Editor e = v->editor; if ( notDefault(w) ) w = mul(w, getExFont(e->font)); if ( notDefault(h) ) h = mul(h, getHeightFont(e->font)); return requestGeometryWindow((PceWindow) v, x, y, w, h); }
static void compute_slider(Slider s, int *ny, int *vx, int *vy, int *lx, int *ly, int *sx, int *sy, int *hx, int *hy) { int hv = (s->show_value == ON ? valInt(getHeightFont(s->value_font)) : 0); int hl, hm; compute_label_slider(s, vx, &hl); hm = max(hl, max(hv, SLIDER_HEIGHT)); *ny = (hm - hl) / 2; *sy = (hm - SLIDER_HEIGHT) / 2; *vy = *ly = *hy = (hm - hv) / 2; if ( s->show_value == ON ) { int shw, slw, sh, cw = 4, tw; char buf[100]; string str; buf[0] = '['; format_value(s, &buf[1], s->high); strcat(buf, "]"); str_set_ascii(&str, buf); str_size(&str, s->value_font, &shw, &sh); format_value(s, buf, s->low); str_set_ascii(&str, buf); str_size(&str, s->value_font, &slw, &sh); if ( convert_value(s->low) < 0.0 && (tw = (c_width('-', s->value_font) + slw)) > shw ) shw = tw; *lx = *vx + shw + cw; *sx = *lx + slw + cw; *hx = *sx + valInt(s->width) + cw; } else { *lx = *sx = *vx; *hx = *sx + valInt(s->width); } }