… | |
… | |
1923 | |
1923 | |
1924 | delete $self->{ox}; |
1924 | delete $self->{ox}; |
1925 | $self->SUPER::realloc; |
1925 | $self->SUPER::realloc; |
1926 | } |
1926 | } |
1927 | |
1927 | |
|
|
1928 | sub clear { |
|
|
1929 | my ($self) = @_; |
|
|
1930 | |
|
|
1931 | $self->set_text (""); |
|
|
1932 | } |
|
|
1933 | |
1928 | sub set_text { |
1934 | sub set_text { |
1929 | my ($self, $text) = @_; |
1935 | my ($self, $text) = @_; |
1930 | |
1936 | |
1931 | return if $self->{text} eq "T$text"; |
1937 | return if $self->{text} eq "T$text"; |
1932 | $self->{text} = "T$text"; |
1938 | $self->{text} = "T$text"; |
… | |
… | |
2038 | : ($self->{w} - $size->[0]) * 0.5); |
2044 | : ($self->{w} - $size->[0]) * 0.5); |
2039 | |
2045 | |
2040 | $self->{oy} = int ($self->{valign} < 0 ? $self->{padding_y} |
2046 | $self->{oy} = int ($self->{valign} < 0 ? $self->{padding_y} |
2041 | : $self->{valign} > 0 ? $self->{h} - $size->[1] - $self->{padding_y} |
2047 | : $self->{valign} > 0 ? $self->{h} - $size->[1] - $self->{padding_y} |
2042 | : ($self->{h} - $size->[1]) * 0.5); |
2048 | : ($self->{h} - $size->[1]) * 0.5); |
|
|
2049 | |
|
|
2050 | $self->{layout}->render ($self->{ox}, $self->{oy}, $self->{style}); |
2043 | }; |
2051 | }; |
2044 | |
2052 | |
2045 | # unless ($self->{list}) { |
2053 | # unless ($self->{list}) { |
2046 | # $self->{list} = CFPlus::OpenGL::glGenList; |
2054 | # $self->{list} = CFPlus::OpenGL::glGenList; |
2047 | # CFPlus::OpenGL::glNewList $self->{list}; |
2055 | # CFPlus::OpenGL::glNewList $self->{list}; |
… | |
… | |
2049 | # CFPlus::OpenGL::glEndList; |
2057 | # CFPlus::OpenGL::glEndList; |
2050 | # } |
2058 | # } |
2051 | # |
2059 | # |
2052 | # CFPlus::OpenGL::glCallList $self->{list}; |
2060 | # CFPlus::OpenGL::glCallList $self->{list}; |
2053 | |
2061 | |
2054 | $self->{layout}->render ($self->{ox}, $self->{oy}, $self->{style}); |
2062 | $self->{layout}->draw; |
2055 | } |
2063 | } |
2056 | |
2064 | |
2057 | #sub destroy { |
2065 | #sub destroy { |
2058 | # my ($self) = @_; |
2066 | # my ($self) = @_; |
2059 | # |
2067 | # |
… | |
… | |
2645 | can_events => 1, |
2653 | can_events => 1, |
2646 | @_ |
2654 | @_ |
2647 | ); |
2655 | ); |
2648 | } |
2656 | } |
2649 | |
2657 | |
|
|
2658 | sub invoke_button_down { |
|
|
2659 | my ($self, $ev, $x, $y) = @_; |
|
|
2660 | |
|
|
2661 | 1 |
|
|
2662 | } |
|
|
2663 | |
2650 | sub invoke_button_up { |
2664 | sub invoke_button_up { |
2651 | my ($self, $ev, $x, $y) = @_; |
2665 | my ($self, $ev, $x, $y) = @_; |
2652 | |
2666 | |
2653 | $self->emit ("activate") |
2667 | $self->emit ("activate") |
2654 | if $x >= 0 && $x < $self->{w} |
2668 | if $x >= 0 && $x < $self->{w} |
… | |
… | |
3298 | |
3312 | |
3299 | if ($y0 < $y + $h && $y < $y1) { |
3313 | if ($y0 < $y + $h && $y < $y1) { |
3300 | my $layout = $self->get_layout ($para); |
3314 | my $layout = $self->get_layout ($para); |
3301 | |
3315 | |
3302 | $layout->render ($para->{indent}, $y - $y0); |
3316 | $layout->render ($para->{indent}, $y - $y0); |
|
|
3317 | $layout->draw; |
3303 | |
3318 | |
3304 | if (my @w = @{ $para->{widget} }) { |
3319 | if (my @w = @{ $para->{widget} }) { |
3305 | my @s = $layout->get_shapes; |
3320 | my @s = $layout->get_shapes; |
3306 | |
3321 | |
3307 | for (@w) { |
3322 | for (@w) { |
… | |
… | |
3540 | $widget->{animspeed} = List::Util::max 0.05, $widget->{animspeed}; |
3555 | $widget->{animspeed} = List::Util::max 0.05, $widget->{animspeed}; |
3541 | $widget->{anim_start} = $self->{animspeed} * int Event::time / $self->{animspeed}; |
3556 | $widget->{anim_start} = $self->{animspeed} * int Event::time / $self->{animspeed}; |
3542 | $self->{timer} = Event->timer ( |
3557 | $self->{timer} = Event->timer ( |
3543 | parked => 1, |
3558 | parked => 1, |
3544 | cb => sub { |
3559 | cb => sub { |
3545 | return unless $::CONN && $widget; |
3560 | return unless $::CONN; |
3546 | |
3561 | |
|
|
3562 | my $w = $widget |
|
|
3563 | or return; |
|
|
3564 | |
3547 | ++$widget->{frame}; |
3565 | ++$w->{frame}; |
3548 | $widget->update_face; |
3566 | $w->update_face; |
|
|
3567 | |
|
|
3568 | # somehow, $widget can go away |
3549 | $widget->update; |
3569 | $w->update; |
3550 | |
|
|
3551 | $widget->update_timer; |
3570 | $w->update_timer; |
3552 | }, |
3571 | }, |
3553 | ); |
3572 | ); |
3554 | |
3573 | |
3555 | $self->update_face; |
3574 | $self->update_face; |
3556 | $self->update_timer; |
3575 | $self->update_timer; |
… | |
… | |
3583 | |
3602 | |
3584 | if (my $anim = $::CONN->{anim}[$self->{anim}]) { |
3603 | if (my $anim = $::CONN->{anim}[$self->{anim}]) { |
3585 | if ($anim && @$anim) { |
3604 | if ($anim && @$anim) { |
3586 | delete $self->{wait_face}; |
3605 | delete $self->{wait_face}; |
3587 | $self->{face} = $anim->[ $self->{frame} % @$anim ]; |
3606 | $self->{face} = $anim->[ $self->{frame} % @$anim ]; |
3588 | $self->{tex} = $::CONN->{texture}[ $::CONN->{faceid}[$self->{face}] ]; |
3607 | if (my $tex = $self->{tex} = $::CONN->{texture}[ $::CONN->{faceid}[$self->{face}] ]) { |
|
|
3608 | unless ($tex->{name} || $tex->{loading}) { |
|
|
3609 | $tex->upload (sub { $self->reconfigure }); |
|
|
3610 | } |
|
|
3611 | } |
3589 | } |
3612 | } |
3590 | } |
3613 | } |
3591 | } |
3614 | } |
3592 | |
3615 | |
3593 | sub size_request { |
3616 | sub size_request { |
3594 | my ($self) = @_; |
3617 | my ($self) = @_; |
3595 | |
3618 | |
3596 | if ($::CONN) { |
3619 | if ($::CONN) { |
3597 | if (my $faceid = $::CONN->{faceid}[$self->{face}]) { |
3620 | if (my $faceid = $::CONN->{faceid}[$self->{face}]) { |
3598 | if (my $tex = $::CONN->{texture}[$faceid]) { |
3621 | if (my $tex = $self->{tex} = $::CONN->{texture}[$faceid]) { |
3599 | $self->{tex} = $tex; |
3622 | if ($tex->{name}) { |
3600 | return ($self->{size_w} || $tex->{w}, $self->{size_h} || $tex->{h}); |
3623 | return ($self->{size_w} || $tex->{w}, $self->{size_h} || $tex->{h}); |
|
|
3624 | } elsif (!$tex->{loading}) { |
|
|
3625 | $tex->upload (sub { $self->reconfigure }); |
|
|
3626 | } |
3601 | } else { |
3627 | } else { |
3602 | $self->{wait_face} ||= $::CONN->connect_face_update ($faceid, sub { |
3628 | $self->{wait_face} ||= $::CONN->connect_face_update ($faceid, sub { |
3603 | $self->realloc; |
3629 | $self->reconfigure; |
3604 | }); |
3630 | }); |
3605 | } |
3631 | } |
3606 | } |
3632 | } |
3607 | } |
3633 | } |
3608 | |
3634 | |
… | |
… | |
4193 | } |
4219 | } |
4194 | |
4220 | |
4195 | sub update { |
4221 | sub update { |
4196 | my ($self) = @_; |
4222 | my ($self) = @_; |
4197 | |
4223 | |
4198 | $::WANT_REFRESH++; |
4224 | $::WANT_REFRESH->start; |
4199 | } |
4225 | } |
4200 | |
4226 | |
4201 | sub add { |
4227 | sub add { |
4202 | my ($self, @children) = @_; |
4228 | my ($self, @children) = @_; |
4203 | |
4229 | |