App-PLab
view release on metacpan or search on metacpan
bin/PrAverB view on Meta::CPAN
unless ( $dbl) {
if ( $me-> {lastStateSelected}) {
$me-> {state} = $me-> {state} ? 0 : 1;
$me-> repaint;
return 1;
}
} elsif ( $btn == mb::Left) {
$me-> {state} = $me-> {state} ? 0 : 1;
$me-> repaint;
$w-> fig_propdialog( $me);
return 1;
}
return 0;
}
sub selected
{
return 0 unless $_[0]-> {owner}->{selectedRect};
return $_[0] == $_[0]-> {owner}->{selectedRect};
}
sub select
{
return if $_[0]-> selected;
$_[0]-> {owner}->{selectedRect} = $_[0];
$_[0]-> {IV}-> repaint;
$_[0]-> {IV}-> update_view;
}
sub open_transaction
{
my ( $w, $iv) = ( $_[0]->{owner}, $_[0]-> {IV});
my ( $me, $mode, $x, $y, $ax, $ay) = @_;
$w-> iv_entermode( $iv, $mode);
my @r = @{$_[0]-> {bounds}};
$me-> repaint;
$iv-> update_view;
$iv-> {xorData} = [ $iv-> point2screen( @r[0,1,0,3,2,3,2,1])];
$iv-> {xorPolyData} = [ $iv-> point2screen( @{$_[0]-> {rect}})];
$w-> IV_xorrect( $iv);
$w-> IV_xorpoly( $iv) unless $me->{rectLike};
$iv-> {screenPoints} = [ $x, $y];
$iv-> {points} = [ $ax, $ay];
}
sub close_transaction
{
my ( $w, $iv) = ( $_[0]->{owner}, $_[0]-> {IV});
$iv-> pointer( $iv-> {savePointer});
$iv-> {transaction} = undef;
$iv-> capture(0);
$w-> IV_xorpoly( $iv) unless $_[0]->{rectLike};
$w-> IV_xorrect( $iv);
$iv-> repaint;
$w-> modified( 1);
}
sub repaint
{
$_[0]-> {IV}-> invalidate_rect( $_[0]-> get_screen_bounds);
}
sub on_paint
{
my ( $me, $w, $iv, $canvas) = @_;
my @r = $iv-> point2screen( @{$_-> {rect}});
push @r, @r[0,1];
$canvas-> polyline(\@r);
if ( defined $me->{number}) {
$canvas-> text_out( $me->{number}, $iv-> point2screen( $me->{bounds}->[0], $me->{bounds}->[1]));
}
if ( $w-> {selectedRect} && $me == $w-> {selectedRect} && !$iv->{transaction}) {
my $c = $canvas-> color;
my $pc = $w->{ini}->{Color_Selection} + 0;
$pc = ~($pc) & 0xFFFFFF;
$canvas-> color( $pc);
$canvas-> rop( rop::XorPut);
@r = $me-> get_screen_bounds;
my $hw = $r[0]+($r[2]-$r[0])/2;
my $hh = $r[1]+($r[3]-$r[1])/2;
if ( $me->{state} == 0) {
$canvas-> bar( $r[0],$r[1],$r[0]+4,$r[1]+4);
$canvas-> bar( $hw-2,$r[1],$hw+2,$r[1]+4);
$canvas-> bar( $r[2]-5,$r[1],$r[2]-1,$r[1]+4);
$canvas-> bar( $r[0],$r[3]-5,$r[0]+4,$r[3]-1);
$canvas-> bar( $hw-2,$r[3]-5,$hw+2,$r[3]-1);
$canvas-> bar( $r[2]-5,$r[3]-5,$r[2]-1,$r[3]-1);
$canvas-> bar( $r[0],$hh-2,$r[0]+4,$hh+2);
$canvas-> bar( $r[2]-5,$hh-2,$r[2]-1,$hh+2);
} else {
$canvas-> arc( $r[0]+16, $r[1]+16, 8, 8, 180, 270);
$canvas-> arc( $r[0]+16, $r[3]-16, 8, 8, 90, 180);
$canvas-> arc( $r[2]-16, $r[3]-16, 8, 8, 0, 90);
$canvas-> arc( $r[2]-16, $r[1]+16, 8, 8, 270, 360);
$canvas-> line( $r[0]+2, $hh - 5, $r[0]+2, $hh + 5);
$canvas-> line( $hw - 5, $r[1]+2, $hw + 5, $r[1]+2);
$canvas-> line( $r[2]-2, $hh - 5, $r[2]-2, $hh + 5);
$canvas-> line( $hw - 5, $r[3]-2, $hw + 5, $r[3]-2);
}
$r[0] += 3;
$r[1] += 3;
$r[2] -= 3;
$r[3] -= 3;
$canvas-> rectangle( @r);
$canvas-> rop( rop::CopyPut);
$canvas-> color( $c);
}
}
sub compare_to
{
my @d = map {
my $g = $_[0]-> {bounds}-> [$_] - $_[1]-> {bounds}->[$_];
$g = 0 if abs($g) < 8; # XXX
$g;
} 0,1;
return ($d[1] != 0) ? -$d[1] : $d[0];
}
package AveWindow;
( run in 0.760 second using v1.01-cache-2.11-cpan-39bf76dae61 )