Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / Pastel / String.pm
CommitLineData
86530b38
AT
1package Pastel::String;
2use Pastel::Mixin::Mixin;
3
4@ISA = qw( Pastel::Mixin::Mixin);
5
6use strict;
7
8sub new
9{
10 my $arg = shift;
11 my $class = ref($arg) || $arg;
12 my $self = {};
13
14 bless $self, $class;
15 $self->_init(@_);
16
17 return $self;
18
19}
20
21sub _init {
22 my ($self, @args) = @_;
23
24 my $string = $args[0];
25 my $xml_string = $self->xml($string);
26 $self->{xml_string} = $xml_string;
27 return $self;
28}
29
30sub xml {
31 my ($self, $arg) = @_;
32 my $xml = "";
33 #Split the string data into characters
34 my (@characters) = split( //, $arg);
35
36 for( my $i = 0; $i < @characters; $i++){
37
38 if ( $characters[$i] eq '<' ){
39 $xml .= "&lt;";
40 }
41
42 elsif ( $characters[$i] eq '>' ){
43 $xml .= "&gt;" ;
44 }
45
46 elsif ( $characters[$i] eq "'" ){
47 $xml .= "&apos;" ;
48 }
49 elsif ( $characters[$i] eq '"' ){
50 $xml .= "&quot;" ;
51 }
52 elsif( $characters[$i] eq '&' ) {
53 $xml .= "&amp;" ;
54 }
55 elsif ( $self->get_code($characters[$i]) < 32 ) {
56 $xml .= "&x";
57 $xml .=$self->get_hex( $self->get_code( $characters[$i]));
58 $xml .= ';';
59 }
60 elsif ( $self->get_code($characters[$i]) > 126 ){
61 $xml .= "&x";
62 $xml .= $self->get_hex( $self->get_code($characters[$i]) );
63 $xml .= ';' ;
64 }
65
66 else {
67 $xml .= $characters[$i];
68 }
69
70 }
71
72 return $xml;
73}
74
75sub get_code {
76
77 my ($self, $char) = @_;
78 return ord($char);
79}
80
81sub get_hex {
82 my ($self, $code ) = @_;
83 return unpack("H2", pack("C", $code) );
84}
85
86sub set_font {
87 my ( $self, $font ) = @_;
88 $self->{font} = $font;
89 return $self;
90}
91
92sub get_font {
93 my $self = shift;
94 if ( defined( $self->{font} ) ) {
95 return $self->{font};
96 }
97 else {
98 return undef;
99 }
100}
101
102sub draw {
103 my $self = shift;
104 my $g = shift;
105 my $svg = "";
106
107 $svg .= "<text x=\"".$self->get_x()."\" y=\"".$self->get_y()."\" ";
108 $svg .= 'style="';
109 if ( my $font = $self->get_font() ){
110 $svg .= $font->get_svg_string();
111 }
112 $svg .= " fill:".$g->get_paint->to_hex().';';
113 #$svg .= $g->get_paint()->to_svg();
114 $svg .= '" ';
115 $svg .= ">";
116 $svg .= $self->get_xml_string();
117 $svg .= "</text>";
118
119 return $svg;
120}
121
122sub get_xml_string {
123 my $self = shift;
124 if ( defined ( $self->{xml_string} ) ){
125 return $self->{xml_string};
126 } else {
127 return undef;
128 }
129}
130
131sub set_x {
132 #print STDERR "Set x called \n";
133 my ($self, $x) = @_;
134 #print STDERR "$x\n";
135 if(defined($x)){
136 if(ref($x)){
137 $self->{x} = join " ", @{$x};
138 }else{
139 #print STDERR "set_x: $x\n";
140 $self->{x} = $x;
141 }
142 }
143}
144
145sub set_y {
146 my ($self, $y) = @_;
147 #print STDERR "Set y called:$y\n";
148 if ($y){
149 if( ref($y) ){
150 $self->{y} = join " ", @{$y};
151 }else {
152 $self->{y} = $y;
153 }
154 }
155}
156
157sub get_x {
158 my $self = shift;
159 if(defined( $self->{x}) ){
160 return $self->{x};
161 } else {
162 return "";
163 }
164 }
165
166sub get_y {
167 my $self = shift;
168 if(defined( $self->{y}) ){
169 return $self->{y};
170 } else {
171 return "";
172 }
173 }
174
1751;
176