Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / Pastel / BasicStroke.pm
CommitLineData
86530b38
AT
1package Pastel::BasicStroke;\r
2@ISA = qw(Pastel::Mixin::Mixin);\r
3use Carp;\r
4use strict;\r
5\r
6sub new {\r
7 my $class = shift;\r
8 my $self = {};\r
9 bless $self, ref($class) || $class;\r
10 $self->_init(@_);\r
11 return $self;\r
12}\r
13\r
14sub _init {\r
15 my ($self, @args) = @_;\r
16 my ($width,$cap,$join,$miterlimit,$dasharray,$dashoffset)\r
17 =$self->_rearrange(["WIDTH","CAP","JOIN",\r
18 "MITER","DASHARRAY","DASHOFFSET"],@args);\r
19 $self->{width} = defined($width)? $width :1; # Default width = 1\r
20 if(defined($cap)){\r
21 if($cap =~/BUTT/i){\r
22 $self->{cap} = "butt";\r
23 }\r
24 elsif($cap =~/ROUND/i){\r
25 $self->{cap} = "round";\r
26 }\r
27 elsif($cap =~/SQUARE/i){\r
28 $self->{cap} ="square";\r
29 }\r
30 else { croak "Illegal parameter of Line-cap\n";}\r
31 }\r
32 else{\r
33 # $self->{cap} = "square";\r
34 $self->{cap} = undef;\r
35}\r
36 if(defined($join)){\r
37 if($join =~ /ROUND/i){\r
38 $self->{join} ="round";\r
39 }\r
40 elsif($join =~/BEVEL/i){\r
41 $self->{join} ="bevel";\r
42 }\r
43 elsif($join =~/MITER/i){\r
44 $self->{join} ="miter"\r
45 }\r
46 else {croak "Illegal paramter of Line join\n";\r
47 }\r
48 }\r
49 else{\r
50 #$self->{join} ="miter";\r
51 $self->{join} = undef;\r
52 }\r
53 \r
54 $self->{miterlimit} = defined($miterlimit)? $miterlimit: undef; #10;\r
55 $self->{dasharray} = defined($dasharray)?$dasharray : undef; \r
56 $self->{dashoffset} = defined($dashoffset) ? $dashoffset : undef;\r
57 return $self;\r
58 }\r
59 \r
60 sub equals {\r
61 my ($self) = shift;\r
62 \r
63 if (ref($_[0]) ne ref($self)){\r
64 carp "Error: Not a basicstroke object!\n";\r
65 return 0;\r
66 }\r
67 \r
68 if ( ($self->{width} ne $_[0]->{width}) ||\r
69 ($self->{cap} ne $_[0]->{cap} ) ||\r
70 ($self->{join} ne $_[0]->{join} ) ||\r
71 ($self->{miterlimit} ne $_[0]->{miterlimit}) #||\r
72 #($self->{dasharray} ne $_[0]->{dasharray}) ||\r
73 #($self->{dashoffset} ne $_[0]->{dashoffset})\r
74 ){\r
75 return 0;\r
76 }\r
77\r
78 if (defined($self->{dasharray}) != defined($_[0]->{dasharray})){\r
79 return 0;\r
80 }\r
81 if (defined ($self->{dasharray}) ){\r
82 # print "**************Checkdasharray caller**************\n";\r
83 return 0 unless defined ($_[0]->{dasharray});\r
84 # print "Step1\n";\r
85 #return 0 unless (@{$self->{dasharray}} != @{$_[0]->{dasharray}});\r
86 # print "Step2\n";\r
87 return 0 unless $self->_checkdasharray($self->{dasharray}, $_[0]->{dasharray});\r
88 }\r
89 \r
90 if (defined($self->{dashoffset} ) != defined($_[0]->{dashoffset})){\r
91 return 0;\r
92 }\r
93 if (defined($self->{dashoffset})){ \r
94 return 0 unless defined($_[0]->{dashoffset});\r
95 return 0 unless ($self->{dashoffset} ne $_[0]->{dashoffset});\r
96 } \r
97 \r
98 else {return 1;}\r
99\r
100}\r
101\r
102sub get_dash_array {\r
103 if ( defined( $_[0]->{dasharray} ) ){\r
104 my @array = @{$_[0]->{dasharray}};\r
105 \r
106 my $s="";\r
107 for (my $i=0; $i<@array; $i++){\r
108 $s .= $array[$i];\r
109 $s .= " ";\r
110 }\r
111 return $s;\r
112 \r
113 \r
114 }\r
115 else {\r
116 return undef;\r
117 }\r
118}\r
119\r
120sub get_dashoffset {\r
121 if ( defined( $_[0]->{dashoffset} ) ){\r
122 return $_[0]->{dashoffset};\r
123 }\r
124 else {\r
125 return undef;\r
126 }\r
127} \r
128\r
129sub get_end_cap { $_[0]->{cap}; }\r
130sub get_line_join {$_[0]->{join}; }\r
131sub get_line_width {$_[0]->{width}; }\r
132sub get_miter_limit {$_[0]->{miterlimit}; }\r
133\r
134# To be done\r
135\r
136sub create_stroked_shape {\r
137 my $self = shift;\r
138 my $shape = shift;\r
139 $shape->set_stroke($self);\r
140 return $shape;\r
141}\r
142###############\r
143 \r
144sub _checkdasharray {\r
145 #print "************CHEKDASHARRAY***************\n";\r
146 my ($self, @args) = @_;\r
147 my @array1 = @{ $args[0] };\r
148 my @array2 = @{ $args[1] };\r
149 #print @array1, ",", @array2, "\n";\r
150 if (@array1 != @array2){\r
151 #print "************Inside compare***************\n";\r
152 return 0;\r
153 }\r
154 else {\r
155 # print "************Inside else***************\n";\r
156 for ( my $i = 0 ; $i < @array1; $i++ ){\r
157 # print "************Inside loop***************\n";\r
158 return 0 if $array1[$i] ne $array2[$i];\r
159 #print "never entered\n";\r
160 }\r
161 }\r
162 return 1;\r
163}\r
164\r
165\r
166sub to_svg {\r
167 my $self = shift;\r
168 my $s = "";\r
169 if(defined($self->{width} )){\r
170 $s .= qq(stroke-width:$self->{width});\r
171 #$s .= ';';\r
172}\r
173 my $dasharray = $self->get_dash_array();\r
174 my $dashoffset = $self->get_dashoffset();\r
175 \r
176 if (defined($self->{cap}) && ($self->{cap} ne "butt")){\r
177 $s .= ";"."stroke-linecap:".$self->{cap};\r
178 }\r
179 if (defined($self->{join}) && ($self->{join} ne "miter")){\r
180 $s .= ";"."stroke-linejoin:".$self->{join};\r
181 }\r
182 if (defined($self->{miterlimit}) && ($self->{miterlimit} != 4)){\r
183 $s .= ";stroke-miterlimit:".$self->{miterlimit};\r
184 }\r
185 if (defined ($self->{dasharray})){\r
186 $s .= ";stroke-dasharray:".$dasharray.";";\r
187 }\r
188 if (defined ($self->{dashoffset})){\r
189 $s .= ";stroke-dashoffset:".$dashoffset;\r
190 }\r
191 return $s;\r
192}\r
193 \r
194 \r
1951;\r