shell bypass 403
######################################################################
######################################################################
## ScaleController -- this is the module that controls 3-D window scaling
## when you drag the mouse in the display window.
package PDL::Graphics::TriD::ScaleController;
use base qw/PDL::Graphics::TriD::ButtonControl/;
use fields qw/Dist/;
sub new {
my($type,$win,$dist) = @_;
my $this = $type->SUPER::new( $win);
$this->{Dist} = $dist;
$win->add_resizecommand(sub {print "Resized window: ",join(",",@_),"\n" if $PDL::debug_trid; $this->set_wh(@_); });
return $this;
}
# coordinates normalised relative to center
sub xy2norm {
my($this,$x,$y) = @_;
print "xy2norm: this->{W}=$this->{W}; this->{H}=$this->{H}; this->{SC}=$this->{SC}\n" if($PDL::Graphics::TriD::verbose);
$x -= $this->{W}/2; $y -= $this->{H}/2;
$x /= $this->{SC}; $y /= $this->{SC};
return ($x,$y);
}
sub mouse_moved {
my($this,$x0,$y0,$x1,$y1) = @_;
# $this->{Dist} *=
${$this->{Dist}} *=
$this->xy2fac($this->xy2norm($x0,$y0),$this->xy2norm($x1,$y1));
}
##############################################################
#
# a very simple unsophisticated scaler that
# takes advantage of the nice infrastructure provided by
# TJL
#
##############################################################
package PDL::Graphics::TriD::SimpleScaler;
use base qw/PDL::Graphics::TriD::ScaleController/;
# x,y to distance from center
sub xy2fac {
my($this,$x0,$y0,$x1,$y1) = @_;
my $dy = $y0-$y1;
return $dy>0 ? 1+2*$dy : 1/(1-2*$dy);
}
1;