1 | package DC::UI; |
1 | package DC::UI; |
2 | |
2 | |
3 | use utf8; |
3 | use common::sense; |
4 | use strict; |
|
|
5 | |
4 | |
6 | use List::Util (); |
5 | use List::Util (); |
7 | |
6 | |
8 | use Guard (); |
7 | use Guard (); |
9 | |
8 | |
… | |
… | |
223 | |
222 | |
224 | ############################################################################# |
223 | ############################################################################# |
225 | |
224 | |
226 | package DC::UI::Base; |
225 | package DC::UI::Base; |
227 | |
226 | |
228 | use strict; |
227 | use common::sense; |
229 | |
228 | |
230 | use DC::OpenGL; |
229 | use DC::OpenGL; |
231 | |
230 | |
232 | sub new { |
231 | sub new { |
233 | my $class = shift; |
232 | my $class = shift; |
… | |
… | |
643 | |
642 | |
644 | package DC::UI::DrawBG; |
643 | package DC::UI::DrawBG; |
645 | |
644 | |
646 | our @ISA = DC::UI::Base::; |
645 | our @ISA = DC::UI::Base::; |
647 | |
646 | |
648 | use strict; |
647 | use common::sense; |
|
|
648 | |
649 | use DC::OpenGL; |
649 | use DC::OpenGL; |
650 | |
650 | |
651 | sub new { |
651 | sub new { |
652 | my $class = shift; |
652 | my $class = shift; |
653 | |
653 | |
… | |
… | |
3054 | |
3054 | |
3055 | ############################################################################# |
3055 | ############################################################################# |
3056 | |
3056 | |
3057 | package DC::UI::Slider; |
3057 | package DC::UI::Slider; |
3058 | |
3058 | |
3059 | use strict; |
3059 | use common::sense; |
3060 | |
3060 | |
3061 | use DC::OpenGL; |
3061 | use DC::OpenGL; |
3062 | |
3062 | |
3063 | our @ISA = DC::UI::DrawBG::; |
3063 | our @ISA = DC::UI::DrawBG::; |
3064 | |
3064 | |
… | |
… | |
3150 | if ($GRAB == $self) { |
3150 | if ($GRAB == $self) { |
3151 | my ($x, $w) = $self->{vertical} ? ($y, $self->{h}) : ($x, $self->{w}); |
3151 | my ($x, $w) = $self->{vertical} ? ($y, $self->{h}) : ($x, $self->{w}); |
3152 | |
3152 | |
3153 | my (undef, $lo, $hi, $page) = @{$self->{range}}; |
3153 | my (undef, $lo, $hi, $page) = @{$self->{range}}; |
3154 | |
3154 | |
3155 | $x = ($x - $self->{click}[1]) / ($w * $self->{scale}); |
3155 | $x = ($x - $self->{click}[1]) / ($w * $self->{scale} || 1e999); |
3156 | |
3156 | |
3157 | $self->set_value ($self->{click}[0] + $x * ($hi - $page - $lo)); |
3157 | $self->set_value ($self->{click}[0] + $x * ($hi - $page - $lo)); |
3158 | } else { |
3158 | } else { |
3159 | return 0; |
3159 | return 0; |
3160 | } |
3160 | } |