Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / Pastel / Geometry / Rectangle.pm
CommitLineData
86530b38
AT
1package Pastel::Geometry::Rectangle;\r
2@ISA = qw (Pastel::Mixin::Mixin Pastel::Shape);\r
3use strict;\r
4\r
5use constant OUT_BOTTOM => 8;\r
6use constant OUT_LEFT => 1;\r
7use constant OUT_RIGHT=> 4;\r
8use constant OUT_TOP => 2;\r
9\r
10sub new {\r
11 my $class = shift;\r
12 my $self = {};\r
13 bless $self, ref($class) || $class;\r
14 $self->_init(@_);\r
15 return $self;\r
16}\r
17\r
18sub _init {\r
19 my ($self, @args) =@_;\r
20 my ($x, $y, $width, $height)=\r
21 $self->_rearrange(["X", "Y", "WIDTH", "HEIGHT"], @args);\r
22 $self->{x} = defined($x) ? $x : 0;\r
23 $self->{y} = defined($y) ? $y : 0;\r
24 $self->{w} = defined($width) ? $width : 0;\r
25 $self->{h} = defined($height)? $height : 0;\r
26\r
27 return $self;\r
28}\r
29\r
30\r
31sub to_string {\r
32 my $self = shift;\r
33 return ref($self)." Location:[".$self->{x}.",".$self->{y}."] Width:".$self->{w}." Height:".$self->{h};\r
34 }\r
35\r
36sub get_x {\r
37 return $_[0]->{x};\r
38}\r
39\r
40sub set_x {\r
41 $_[0]->{x} = $_[1];\r
42}\r
43\r
44sub get_y {\r
45 return $_[0]->{y};\r
46}\r
47\r
48sub set_y {\r
49 $_[0]->{y} = $_[1];\r
50}\r
51\r
52sub get_width {\r
53 return $_[0]->{w};\r
54}\r
55\r
56sub set_width {\r
57 $_[0]->{w} = $_[1];\r
58}\r
59\r
60sub get_height {\r
61 return $_[0]->{h};\r
62}\r
63\r
64sub set_height {\r
65 $_[0]->{h} = $_[1];\r
66}\r
67\r
68sub _draw {\r
69 my $self = shift;\r
70 my $graphics = shift;\r
71 my $style = $self->get_style($graphics);\r
72my $data = "<rect x=\"".$self->get_x()."\" y=\"".$self->get_y()."\" width=\"".$self->get_width()."\" height=\"".$self->get_height()."\" style=\"".$style."\" \/>";\r
73return $data;\r
74 \r
75}\r
76\r
77sub is_empty {\r
78 my $self = shift;\r
79 return ($self->get_width() <= 0) || ($self->get_height() <= 0);\r
80}\r
81\r
82sub set_rect {\r
83 my $self = shift;\r
84 my @args = @_;\r
85 #If argument is a Pastel::Geometry::Rectangle\r
86 if ($args[0]->isa("Pastel::Geometry::Rectangle") ){\r
87 $self->set_x($args[0]->get_x());\r
88 $self->set_y($args[0]->get_y());\r
89 $self->set_width($args[0]->get_width());\r
90 $self->set_height($args[0]->get_height());\r
91 }\r
92 else{\r
93 $self->set_x($args[0]);\r
94 $self->set_y($args[1]);\r
95 $self->set_width($args[2]);\r
96 $self->set_height($args[3]);\r
97 }\r
98}\r
99 \r
100sub _outcode {\r
101 my $self = shift;\r
102 my ($x, $y) = @_;\r
103 my $out = 0;\r
104 \r
105 if($self->get_width() <= 0){\r
106 $out |= $self->OUT_LEFT | $self->OUT_RIGHT;\r
107 }elsif ( $x < $self->{x}){\r
108 $out |= $self->OUT_LEFT;\r
109 }elsif ( $x > ($self->{x} + $self->{w})){\r
110 $out |= $self->OUT_RIGHT;\r
111 }\r
112\r
113 if($self->get_height() <=0 ){\r
114 $out |= $self->OUT_TOP | $self->OUT_BOTTOM;\r
115 } elsif ($y < $self->{y}){\r
116 $out |= $self->OUT_TOP;\r
117 } elsif ($y > ( $self->{y} + $self->{h})){\r
118 $out |= $self->OUT_BOTTOM;\r
119 }\r
120 # print "Inside outcode\n";\r
121# print $self->OUT_LEFT;\r
122 return $out;\r
123}\r
124 \r
125\r
1261;\r