… | |
… | |
2344 | } |
2344 | } |
2345 | |
2345 | |
2346 | sub update { |
2346 | sub update { |
2347 | my ($self) = @_; |
2347 | my ($self) = @_; |
2348 | |
2348 | |
2349 | $CFClient::UI::ROOT->on_post_alloc ($self => sub { |
2349 | delete $self->{knob_w}; |
|
|
2350 | $self->SUPER::update; |
|
|
2351 | } |
|
|
2352 | |
|
|
2353 | sub _draw { |
|
|
2354 | my ($self) = @_; |
|
|
2355 | |
|
|
2356 | unless ($self->{knob_w}) { |
2350 | $self->set_value ($self->{range}[0]); |
2357 | $self->set_value ($self->{range}[0]); |
2351 | |
2358 | |
2352 | my ($value, $lo, $hi, $page) = @{$self->{range}}; |
2359 | my ($value, $lo, $hi, $page) = @{$self->{range}}; |
2353 | my $range = ($hi - $page - $lo) || 1e-100; |
2360 | my $range = ($hi - $page - $lo) || 1e-100; |
2354 | |
2361 | |
… | |
… | |
2360 | $value = ($value - $lo) / $range; |
2367 | $value = ($value - $lo) / $range; |
2361 | $value = $value * $self->{scale} + $self->{offset}; |
2368 | $value = $value * $self->{scale} + $self->{offset}; |
2362 | |
2369 | |
2363 | $self->{knob_x} = $value - $knob_w * 0.5; |
2370 | $self->{knob_x} = $value - $knob_w * 0.5; |
2364 | $self->{knob_w} = $knob_w; |
2371 | $self->{knob_w} = $knob_w; |
2365 | }); |
2372 | } |
2366 | |
|
|
2367 | $self->SUPER::update; |
|
|
2368 | } |
|
|
2369 | |
|
|
2370 | sub _draw { |
|
|
2371 | my ($self) = @_; |
|
|
2372 | |
2373 | |
2373 | $self->SUPER::_draw (); |
2374 | $self->SUPER::_draw (); |
2374 | |
2375 | |
2375 | glScale $self->{w}, $self->{h}; |
2376 | glScale $self->{w}, $self->{h}; |
2376 | |
2377 | |