File Coverage

blib/lib/GD/Icons/Config.pm
Criterion Covered Total %
statement 33 51 64.7
branch 2 4 50.0
condition n/a
subroutine 9 10 90.0
pod 0 3 0.0
total 44 68 64.7


line stmt bran cond sub pod time code
1             package GD::Icons::Config;
2              
3             our $VERSION = '0.04';
4              
5             # $Id: Config.pm,v 1.9 2007/08/28 14:16:32 canaran Exp $
6              
7 1     1   10 use warnings;
  1         3  
  1         31  
8 1     1   5 use strict;
  1         1  
  1         25  
9              
10 1     1   5 use Carp;
  1         2  
  1         83  
11 1     1   1361 use Config::General;
  1         37108  
  1         85  
12 1     1   1146 use Tie::IxHash;
  1         5803  
  1         1011  
13              
14             our $DEFAULT_OBJ = GD::Icons::Config->new;
15              
16             ###############
17             # CONSTRUCTOR #
18             ###############
19              
20             sub new {
21 1     1 0 3 my ($class, $config_file) = @_;
22              
23 1         4 my $self = bless {}, $class;
24              
25 1 50       6 if ($config_file) {
26 0         0 my $config = new Config::General($config_file);
27 0         0 tie my %config, "Tie::IxHash";
28 0         0 %config = $config->getall;
29 0         0 $self->config(\%config);
30             }
31             else {
32 1         9 tie my %config, "Tie::IxHash";
33 1         22 %config = (
34             shape => $self->_all_shapes,
35             color => $self->_all_colors,
36             );
37 1         41 $self->config(\%config);
38             }
39              
40 1         3 return $self;
41             }
42              
43             # Function : Get/set method
44             # Arguments : $value
45             # Returns : $value
46             # Notes : None provided.
47              
48             sub config {
49 1     1 0 2 my ($self, $value) = @_;
50 1 50       31 $self->{config} = $value if @_ > 1;
51 1         3 return $self->{config};
52             }
53              
54             # Function : Command line listing of default config info
55             # Arguments : None
56             # Returns : 1
57             # Notes : Usage: perl -MGD::Icons::Config -e GD::Icons::Config::list
58              
59             sub list {
60 0     0 0 0 my ($self) = @_;
61              
62 0         0 my $all_shapes = $DEFAULT_OBJ->_all_shapes;
63 0         0 my $all_colors = $DEFAULT_OBJ->_all_colors;
64              
65 0         0 my $list = "*** GD::Icons::Config Version $VERSION - Default Configuration ***\n\n";
66              
67 0         0 $list .= "# SHAPES\n\n";
68 0         0 foreach (sort keys %{$all_shapes}) {
  0         0  
69 0         0 $list .= sprintf('%-20s%s', $_, $all_shapes->{$_}) . "\n";
70             }
71              
72 0         0 $list .= "\n# COLORS \n\n";
73 0         0 foreach (sort keys %{$all_colors}) {
  0         0  
74 0         0 $list .= sprintf('%-20s%s', $_, $all_colors->{$_}) . "\n";
75             }
76              
77 0         0 print $list;
78              
79 0         0 return 1;
80             }
81              
82             #######################
83             # Data storage methos #
84             #######################
85              
86             # Function : Get (storge) method for default shapes
87             # Arguments : None
88             # Returns : \%all
89             # Notes : This is a private method.
90              
91             sub _all_shapes {
92 1     1   2 my ($self) = @_;
93              
94 1         5 tie my %all, "Tie::IxHash";
95              
96 1         22 %all = (
97             'square' =>
98             qq(sl[11] lt[1] lc[_Black] py[0,0 10,0 10,10 0,10 0,0] fl[5,5]),
99             'triangle' =>
100             qq(sl[11] lt[1] lc[_Black] py[5,0 10,10 0,10 5,0] fl[5,5]),
101             'diamond' =>
102             qq(sl[11] lt[1] lc[_Black] py[5,0 0,5 5,10 10,5 5,0] fl[5,5]),
103             'l-shape' =>
104             qq(sl[11] lt[1] lc[_Black] py[0,0 5,0 5,5 10,5 10,10 0,10 0,0] fl[3,3]),
105             'pi' =>
106             qq(sl[11] lt[1] lc[_Black] py[0,0 10,0 10,4 8,4 8,10 6,10 6,4 4,4 4,10 2,10 2,4 0,4 0,0] fl[2,2]),
107             'plus' =>
108             qq(sl[11] lt[1] lc[_Black] py[3,0 7,0 7,3 10,3 10,7 7,7 7,10 3,10 3,7 0,7 0,3 3,3 3,0] fl[4,4]),
109             'square-pieces' =>
110             qq(sl[11] lt[1] lc[_Black] py[0,0 10,0 10,4 8,4 8,6 10,6 10,10 0,10 0,6 2,6 2,4 0,4 0,0] fl[5,5]),
111             'sand-clock' =>
112             qq(sl[11] lt[1] lc[_Black] py[0,0 10,0 5,5 10,10 0,10 5,5 0,0] fl[5,2] fl[5,8]),
113             '_padded-square' =>
114             qq(sl[11] lt[1] lc[:fill] py[0,0 0,9 9,9 0,9 0,0] fl[5,5]),
115             '_large_square' =>
116             qq(sl[22] lt[1] lc[_Black] py[0,0 21,0 21,21 0,21 0,0] fl[5,5]),
117             '_letter-m' =>
118             qq(sl[11] lt[1] lc[_Black] py[0,1 3,1 5,3 7,1 10,1 10,9 7,9 7,4 5,6 3,4 3,9 0,9 0,1] fl[2,2]),
119             '_number-flag' =>
120             qq(sl[14] lt[1] lc[_Black] py[0,0 13,0 13,13 0,13 0,0] fl[5,5] nm[:auto]),
121             );
122              
123 1         188 return \%all;
124             }
125              
126             # Function : Get (storge) method for default colors
127             # Arguments : None
128             # Returns : \%all
129             # Notes : This is a private method..
130              
131             sub _all_colors {
132 1     1   3 my ($self) = @_;
133              
134 1         6 tie my %all, "Tie::IxHash";
135              
136 1         19 %all = (
137             Blue => '#0000FF',
138             BlueViolet => '#8A2BE2',
139             Brown => '#A52A2A',
140             BurlyWood => '#DEB887',
141             CadetBlue => '#5F9EA0',
142             Chartreuse => '#7FFF00',
143             Chocolate => '#D2691E',
144             Coral => '#FF7F50',
145             CornflowerBlue => '#6495ED',
146             Cornsilk => '#FFF8DC',
147             Crimson => '#DC143C',
148             Cyan => '#00FFFF',
149             DarkBlue => '#00008B',
150             DarkGreen => '#006400',
151             DarkKhaki => '#BDB76B',
152             DarkOliveGreen => '#556B2F',
153             Darkorange => '#FF8C00',
154             DarkSalmon => '#E9967A',
155             DarkSeaGreen => '#8FBC8F',
156             DarkSlateBlue => '#483D8B',
157             DarkTurquoise => '#00CED1',
158             DodgerBlue => '#1E90FF',
159             ForestGreen => '#228B22',
160             Gold => '#FFD700',
161             Gray => '#808080',
162             Green => '#008000',
163             GreenYellow => '#ADFF2F',
164             Indigo => '#4B0082',
165             Khaki => '#F0E68C',
166             Lavender => '#E6E6FA',
167             LavenderBlush => '#FFF0F5',
168             LemonChiffon => '#FFFACD',
169             LightBlue => '#ADD8E6',
170             LightCoral => '#F08080',
171             LightCyan => '#E0FFFF',
172             LightGoldenRodYellow => '#FAFAD2',
173             LightGray => '#D3D3D3',
174             LightGrey => '#D3D3D3',
175             LightGreen => '#90EE90',
176             LightPink => '#FFB6C1',
177             LightSalmon => '#FFA07A',
178             LightSeaGreen => '#20B2AA',
179             LightSkyBlue => '#87CEFA',
180             LightSlateGray => '#778899',
181             LightSteelBlue => '#B0C4DE',
182             LightYellow => '#FFFFE0',
183             Maroon => '#800000',
184             MediumBlue => '#0000CD',
185             MidnightBlue => '#191970',
186             MistyRose => '#FFE4E1',
187             Moccasin => '#FFE4B5',
188             Navy => '#000080',
189             Olive => '#808000',
190             OliveDrab => '#6B8E23',
191             Orange => '#FFA500',
192             OrangeRed => '#FF4500',
193             Orchid => '#DA70D6',
194             PowderBlue => '#B0E0E6',
195             Purple => '#800080',
196             Red => '#FF0000',
197             RosyBrown => '#BC8F8F',
198             RoyalBlue => '#4169E1',
199             SaddleBrown => '#8B4513',
200             Salmon => '#FA8072',
201             SandyBrown => '#F4A460',
202             SeaGreen => '#2E8B57',
203             SeaShell => '#FFF5EE',
204             Sienna => '#A0522D',
205             Silver => '#C0C0C0',
206             SkyBlue => '#87CEEB',
207             SlateBlue => '#6A5ACD',
208             SlateGray => '#708090',
209             SpringGreen => '#00FF7F',
210             SteelBlue => '#4682B4',
211             Tan => '#D2B48C',
212             Teal => '#008080',
213             Thistle => '#D8BFD8',
214             Tomato => '#FF6347',
215             Turquoise => '#40E0D0',
216             Violet => '#EE82EE',
217             Wheat => '#F5DEB3',
218             Yellow => '#FFFF00',
219             YellowGreen => '#9ACD32',
220             _Black => '#000000',
221             _White => '#FFFFFF',
222             );
223              
224 1         1030 return \%all;
225             }
226              
227             1;
228              
229             __END__