Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / Pastel / Shape.pm
CommitLineData
86530b38
AT
1package Pastel::Shape;\r
2use strict;\r
3\r
4# Perl interface for the Geometry objects. The function get_bounds()\r
5# Called by all the Geometry objects. Parameters passed are the\r
6# Point coordinates\r
7\r
8sub _get_bounds {\r
9 my ( $self, @args ) = @_;\r
10 my ( $max_x, $max_y, $min_x, $min_y ); # Hold the maximum and\r
11 # the minimum coordinates\r
12\r
13 $max_x = $args[0];\r
14 $max_y = $args[1];\r
15 $min_x = $args[0];\r
16 $min_y = $args[1];\r
17\r
18 for ( my $i = 0 ; $i < @args ; $i += 2 ) { #Pick even number X values\r
19 if ( $args[$i] > $max_x ) {\r
20 $max_x = $args[$i];\r
21 }\r
22 elsif ( $args[$i] < $min_x ) {\r
23 $min_x = $args[$i];\r
24 }\r
25\r
26 }\r
27\r
28 for ( my $i = 1 ; $i < @args ; $i += 2 ) { #Pick odd number Y values\r
29 if ( $args[$i] > $max_y ) {\r
30 $max_y = $args[$i];\r
31 }\r
32 elsif ( $args[$i] < $min_y ) {\r
33 $min_y = $args[$i];\r
34 }\r
35 }\r
36\r
37 my $bb = Pastel::Geometry::Rectangle->new(\r
38 $min_x, $min_y,\r
39 ( $max_x - $min_x ),\r
40 ( $max_y - $min_y )\r
41 );\r
42 return $bb;\r
43\r
44}\r
45\r
46sub set_stroke_color {\r
47 my $self = shift;\r
48 $self->{stroke_color} = $_[0];\r
49}\r
50\r
51sub get_stroke_color {\r
52 my $self = shift;\r
53 if ( $self->{stroke_color} ) {\r
54 return $self->{stroke_color};\r
55 }\r
56 else {\r
57 return undef;\r
58 }\r
59\r
60}\r
61\r
62sub set_stroke {\r
63 my $self = shift;\r
64 my $stroke = shift;\r
65 $self->{stroke} = $stroke;\r
66}\r
67\r
68sub get_style {\r
69 my $self = shift;\r
70 my $graphics = shift;\r
71 my $string = "";\r
72\r
73 # First check whether fill is set\r
74 # "Fill" is set by the fill method of Pastel::Graphics\r
75 if ( defined( $self->{fill} ) ) {\r
76 my $fill = $self->{fill};\r
77\r
78 #If fill is a "color" object\r
79 if ( $fill->isa("Pastel::Color") ) {\r
80\r
81 # $string .= "fill:".$self->get_fill()->to_hex().';';\r
82 # $string .= "fill-opacity:".$self->get_fill()->get_alpha().';';\r
83 $string .= $self->get_fill()->to_svg_fill() . ';';\r
84 }\r
85\r
86 #If fill is a Gradient object\r
87 if ( $fill->isa("Pastel::GradientI") ) {\r
88 $string .= "fill:url(" . $self->get_fill()->get_ref() . ");";\r
89 $graphics->add_to_defs($fill);\r
90 }\r
91\r
92 #If fill rule is set\r
93 if ( $self->get_fill_rule() ) {\r
94 $string .= "fill-rule:" . $self->get_fill_rule() . ';';\r
95 }\r
96 }\r
97 else {\r
98 $string .= 'fill:none;';\r
99 }\r
100\r
101 if ( $graphics->get_stroke() ) {\r
102\r
103 my $paint;\r
104 \r
105 if ( $self->get_stroke_color() ) {\r
106 $paint = $self->get_stroke_color();\r
107 }\r
108 else {\r
109 $paint = $graphics->get_paint();\r
110 }\r
111 if ( $paint->isa("Pastel::Color") ) {\r
112 $string .= $paint->to_svg();\r
113 }\r
114\r
115 if ( $paint->isa("Pastel::GradientI") ) {\r
116 $string .= "stroke:url(" . $paint->get_ref() . ');';\r
117 $graphics->add_to_defs($paint);\r
118 }\r
119\r
120 my $stroke = $graphics->get_stroke();\r
121 $string .= $stroke->to_svg();\r
122\r
123 }\r
124\r
125 return "$string";\r
126}\r
127\r
128sub get_fill {\r
129 return $_[0]->{fill};\r
130}\r
131\r
132sub set_fill {\r
133 my $self = shift;\r
134 $self->{fill} = shift;\r
135}\r
136\r
137sub set_fill_rule {\r
138 my $self = shift;\r
139 my $rule = shift;\r
140 $self->{fill_rule} = $rule;\r
141}\r
142\r
143sub get_fill_rule {\r
144 my $self = shift;\r
145 if ( $self->{fill_rule} ) {\r
146 return $self->{fill_rule};\r
147 }\r
148 else {\r
149 return undef;\r
150 }\r
151}\r
152\r
1531;\r