File Coverage

blib/lib/Excel/Writer/XLSX/Package/Theme.pm
Criterion Covered Total %
statement 37 37 100.0
branch 1 2 50.0
condition n/a
subroutine 11 11 100.0
pod 0 1 0.0
total 49 51 96.0


line stmt bran cond sub pod time code
1              
2             ###############################################################################
3             #
4             # Theme - A class for writing the Excel XLSX Theme file.
5             #
6             # Used in conjunction with Excel::Writer::XLSX
7             #
8             # Copyright 2000-2021, John McNamara, jmcnamara@cpan.org
9             #
10             # Documentation after __END__
11             #
12              
13             # perltidy with the following options: -mbl=2 -pt=0 -nola
14              
15              
16             ###############################################################################
17             #
18             # NOTE: This class doesn't try to create the Excel theme1.xml programmatically.
19             # Instead it just writes a stored default theme. This is mainly to
20             # facilitate easier comparisons during testing. The theme1.xml file
21             # isn't actually required.
22              
23             use 5.008002;
24 1124     1124   15918 use strict;
  1124         3270  
25 1124     1124   4868 use warnings;
  1124         1888  
  1124         18148  
26 1124     1124   4516 use Exporter;
  1124         1962  
  1124         20917  
27 1124     1124   4662 use Carp;
  1124         1979  
  1124         31782  
28 1124     1124   5449 use IO::File;
  1124         2070  
  1124         49030  
29 1124     1124   6095 use utf8;
  1124         2019  
  1124         129002  
30 1124     1124   506433  
  1124         13210  
  1124         4910  
31             our @ISA = qw(Exporter);
32             our $VERSION = '1.09';
33              
34              
35             ###############################################################################
36             #
37             # Public and private API methods.
38             #
39             ###############################################################################
40              
41              
42             ###############################################################################
43             #
44             # new()
45             #
46             # Constructor.
47             #
48              
49             my $class = shift;
50              
51 892     892 0 2087 my $self = {};
52              
53 892         2017 bless $self, $class;
54              
55 892         2148 return $self;
56             }
57 892         2296  
58              
59             ###############################################################################
60             #
61             # _assemble_xml_file()
62             #
63             # Assemble and write the XML file.
64             #
65              
66             my $self = shift;
67              
68             $self->_write_theme_file();
69 892     892   1901 }
70              
71 892         3657  
72             ###############################################################################
73             #
74             # _set_xml_writer()
75             #
76             # Set the filehandle only. This class doesn't use a real XML writer class.
77             #
78              
79             my $self = shift;
80             my $filename = shift;
81              
82             my $fh = IO::File->new( $filename, 'w' );
83 892     892   9771 croak "Couldn't open file $filename for writing.\n" unless $fh;
84 892         1716  
85             binmode $fh, ':utf8';
86 892         5319  
87 892 50       96106 $self->{_fh} = $fh;
88             }
89 892         4442  
90              
91 892         7483 ###############################################################################
92             #
93             # Internal methods.
94             #
95             ###############################################################################
96              
97             # Sparklines styles. Used by the Worksheet class.
98             our @spark_styles = (
99             { # 0
100             series => { _theme => "4", _tint => "-0.499984740745262" },
101             negative => { _theme => "5" },
102             markers => { _theme => "4", _tint => "-0.499984740745262" },
103             first => { _theme => "4", _tint => "0.39997558519241921" },
104             last => { _theme => "4", _tint => "0.39997558519241921" },
105             high => { _theme => "4" },
106             low => { _theme => "4" },
107             },
108             { # 1
109             series => { _theme => "4", _tint => "-0.499984740745262" },
110             negative => { _theme => "5" },
111             markers => { _theme => "4", _tint => "-0.499984740745262" },
112             first => { _theme => "4", _tint => "0.39997558519241921" },
113             last => { _theme => "4", _tint => "0.39997558519241921" },
114             high => { _theme => "4" },
115             low => { _theme => "4" },
116             },
117             { # 2
118             series => { _theme => "5", _tint => "-0.499984740745262" },
119             negative => { _theme => "6" },
120             markers => { _theme => "5", _tint => "-0.499984740745262" },
121             first => { _theme => "5", _tint => "0.39997558519241921" },
122             last => { _theme => "5", _tint => "0.39997558519241921" },
123             high => { _theme => "5" },
124             low => { _theme => "5" },
125             },
126             { # 3
127             series => { _theme => "6", _tint => "-0.499984740745262" },
128             negative => { _theme => "7" },
129             markers => { _theme => "6", _tint => "-0.499984740745262" },
130             first => { _theme => "6", _tint => "0.39997558519241921" },
131             last => { _theme => "6", _tint => "0.39997558519241921" },
132             high => { _theme => "6" },
133             low => { _theme => "6" },
134             },
135             { # 4
136             series => { _theme => "7", _tint => "-0.499984740745262" },
137             negative => { _theme => "8" },
138             markers => { _theme => "7", _tint => "-0.499984740745262" },
139             first => { _theme => "7", _tint => "0.39997558519241921" },
140             last => { _theme => "7", _tint => "0.39997558519241921" },
141             high => { _theme => "7" },
142             low => { _theme => "7" },
143             },
144             { # 5
145             series => { _theme => "8", _tint => "-0.499984740745262" },
146             negative => { _theme => "9" },
147             markers => { _theme => "8", _tint => "-0.499984740745262" },
148             first => { _theme => "8", _tint => "0.39997558519241921" },
149             last => { _theme => "8", _tint => "0.39997558519241921" },
150             high => { _theme => "8" },
151             low => { _theme => "8" },
152             },
153             { # 6
154             series => { _theme => "9", _tint => "-0.499984740745262" },
155             negative => { _theme => "4" },
156             markers => { _theme => "9", _tint => "-0.499984740745262" },
157             first => { _theme => "9", _tint => "0.39997558519241921" },
158             last => { _theme => "9", _tint => "0.39997558519241921" },
159             high => { _theme => "9" },
160             low => { _theme => "9" },
161             },
162             { # 7
163             series => { _theme => "4", _tint => "-0.249977111117893" },
164             negative => { _theme => "5" },
165             markers => { _theme => "5", _tint => "-0.249977111117893" },
166             first => { _theme => "5", _tint => "-0.249977111117893" },
167             last => { _theme => "5", _tint => "-0.249977111117893" },
168             high => { _theme => "5", _tint => "-0.249977111117893" },
169             low => { _theme => "5", _tint => "-0.249977111117893" },
170             },
171             { # 8
172             series => { _theme => "5", _tint => "-0.249977111117893" },
173             negative => { _theme => "6" },
174             markers => { _theme => "6", _tint => "-0.249977111117893" },
175             first => { _theme => "6", _tint => "-0.249977111117893" },
176             last => { _theme => "6", _tint => "-0.249977111117893" },
177             high => { _theme => "6", _tint => "-0.249977111117893" },
178             low => { _theme => "6", _tint => "-0.249977111117893" },
179             },
180             { # 9
181             series => { _theme => "6", _tint => "-0.249977111117893" },
182             negative => { _theme => "7" },
183             markers => { _theme => "7", _tint => "-0.249977111117893" },
184             first => { _theme => "7", _tint => "-0.249977111117893" },
185             last => { _theme => "7", _tint => "-0.249977111117893" },
186             high => { _theme => "7", _tint => "-0.249977111117893" },
187             low => { _theme => "7", _tint => "-0.249977111117893" },
188             },
189             { # 10
190             series => { _theme => "7", _tint => "-0.249977111117893" },
191             negative => { _theme => "8" },
192             markers => { _theme => "8", _tint => "-0.249977111117893" },
193             first => { _theme => "8", _tint => "-0.249977111117893" },
194             last => { _theme => "8", _tint => "-0.249977111117893" },
195             high => { _theme => "8", _tint => "-0.249977111117893" },
196             low => { _theme => "8", _tint => "-0.249977111117893" },
197             },
198             { # 11
199             series => { _theme => "8", _tint => "-0.249977111117893" },
200             negative => { _theme => "9" },
201             markers => { _theme => "9", _tint => "-0.249977111117893" },
202             first => { _theme => "9", _tint => "-0.249977111117893" },
203             last => { _theme => "9", _tint => "-0.249977111117893" },
204             high => { _theme => "9", _tint => "-0.249977111117893" },
205             low => { _theme => "9", _tint => "-0.249977111117893" },
206             },
207             { # 12
208             series => { _theme => "9", _tint => "-0.249977111117893" },
209             negative => { _theme => "4" },
210             markers => { _theme => "4", _tint => "-0.249977111117893" },
211             first => { _theme => "4", _tint => "-0.249977111117893" },
212             last => { _theme => "4", _tint => "-0.249977111117893" },
213             high => { _theme => "4", _tint => "-0.249977111117893" },
214             low => { _theme => "4", _tint => "-0.249977111117893" },
215             },
216             { # 13
217             series => { _theme => "4" },
218             negative => { _theme => "5" },
219             markers => { _theme => "4", _tint => "-0.249977111117893" },
220             first => { _theme => "4", _tint => "-0.249977111117893" },
221             last => { _theme => "4", _tint => "-0.249977111117893" },
222             high => { _theme => "4", _tint => "-0.249977111117893" },
223             low => { _theme => "4", _tint => "-0.249977111117893" },
224             },
225             { # 14
226             series => { _theme => "5" },
227             negative => { _theme => "6" },
228             markers => { _theme => "5", _tint => "-0.249977111117893" },
229             first => { _theme => "5", _tint => "-0.249977111117893" },
230             last => { _theme => "5", _tint => "-0.249977111117893" },
231             high => { _theme => "5", _tint => "-0.249977111117893" },
232             low => { _theme => "5", _tint => "-0.249977111117893" },
233             },
234             { # 15
235             series => { _theme => "6" },
236             negative => { _theme => "7" },
237             markers => { _theme => "6", _tint => "-0.249977111117893" },
238             first => { _theme => "6", _tint => "-0.249977111117893" },
239             last => { _theme => "6", _tint => "-0.249977111117893" },
240             high => { _theme => "6", _tint => "-0.249977111117893" },
241             low => { _theme => "6", _tint => "-0.249977111117893" },
242             },
243             { # 16
244             series => { _theme => "7" },
245             negative => { _theme => "8" },
246             markers => { _theme => "7", _tint => "-0.249977111117893" },
247             first => { _theme => "7", _tint => "-0.249977111117893" },
248             last => { _theme => "7", _tint => "-0.249977111117893" },
249             high => { _theme => "7", _tint => "-0.249977111117893" },
250             low => { _theme => "7", _tint => "-0.249977111117893" },
251             },
252             { # 17
253             series => { _theme => "8" },
254             negative => { _theme => "9" },
255             markers => { _theme => "8", _tint => "-0.249977111117893" },
256             first => { _theme => "8", _tint => "-0.249977111117893" },
257             last => { _theme => "8", _tint => "-0.249977111117893" },
258             high => { _theme => "8", _tint => "-0.249977111117893" },
259             low => { _theme => "8", _tint => "-0.249977111117893" },
260             },
261             { # 18
262             series => { _theme => "9" },
263             negative => { _theme => "4" },
264             markers => { _theme => "9", _tint => "-0.249977111117893" },
265             first => { _theme => "9", _tint => "-0.249977111117893" },
266             last => { _theme => "9", _tint => "-0.249977111117893" },
267             high => { _theme => "9", _tint => "-0.249977111117893" },
268             low => { _theme => "9", _tint => "-0.249977111117893" },
269             },
270             { # 19
271             series => { _theme => "4", _tint => "0.39997558519241921" },
272             negative => { _theme => "0", _tint => "-0.499984740745262" },
273             markers => { _theme => "4", _tint => "0.79998168889431442" },
274             first => { _theme => "4", _tint => "-0.249977111117893" },
275             last => { _theme => "4", _tint => "-0.249977111117893" },
276             high => { _theme => "4", _tint => "-0.499984740745262" },
277             low => { _theme => "4", _tint => "-0.499984740745262" },
278             },
279             { # 20
280             series => { _theme => "5", _tint => "0.39997558519241921" },
281             negative => { _theme => "0", _tint => "-0.499984740745262" },
282             markers => { _theme => "5", _tint => "0.79998168889431442" },
283             first => { _theme => "5", _tint => "-0.249977111117893" },
284             last => { _theme => "5", _tint => "-0.249977111117893" },
285             high => { _theme => "5", _tint => "-0.499984740745262" },
286             low => { _theme => "5", _tint => "-0.499984740745262" },
287             },
288             { # 21
289             series => { _theme => "6", _tint => "0.39997558519241921" },
290             negative => { _theme => "0", _tint => "-0.499984740745262" },
291             markers => { _theme => "6", _tint => "0.79998168889431442" },
292             first => { _theme => "6", _tint => "-0.249977111117893" },
293             last => { _theme => "6", _tint => "-0.249977111117893" },
294             high => { _theme => "6", _tint => "-0.499984740745262" },
295             low => { _theme => "6", _tint => "-0.499984740745262" },
296             },
297             { # 22
298             series => { _theme => "7", _tint => "0.39997558519241921" },
299             negative => { _theme => "0", _tint => "-0.499984740745262" },
300             markers => { _theme => "7", _tint => "0.79998168889431442" },
301             first => { _theme => "7", _tint => "-0.249977111117893" },
302             last => { _theme => "7", _tint => "-0.249977111117893" },
303             high => { _theme => "7", _tint => "-0.499984740745262" },
304             low => { _theme => "7", _tint => "-0.499984740745262" },
305             },
306             { # 23
307             series => { _theme => "8", _tint => "0.39997558519241921" },
308             negative => { _theme => "0", _tint => "-0.499984740745262" },
309             markers => { _theme => "8", _tint => "0.79998168889431442" },
310             first => { _theme => "8", _tint => "-0.249977111117893" },
311             last => { _theme => "8", _tint => "-0.249977111117893" },
312             high => { _theme => "8", _tint => "-0.499984740745262" },
313             low => { _theme => "8", _tint => "-0.499984740745262" },
314             },
315             { # 24
316             series => { _theme => "9", _tint => "0.39997558519241921" },
317             negative => { _theme => "0", _tint => "-0.499984740745262" },
318             markers => { _theme => "9", _tint => "0.79998168889431442" },
319             first => { _theme => "9", _tint => "-0.249977111117893" },
320             last => { _theme => "9", _tint => "-0.249977111117893" },
321             high => { _theme => "9", _tint => "-0.499984740745262" },
322             low => { _theme => "9", _tint => "-0.499984740745262" },
323             },
324             { # 25
325             series => { _theme => "1", _tint => "0.499984740745262" },
326             negative => { _theme => "1", _tint => "0.249977111117893" },
327             markers => { _theme => "1", _tint => "0.249977111117893" },
328             first => { _theme => "1", _tint => "0.249977111117893" },
329             last => { _theme => "1", _tint => "0.249977111117893" },
330             high => { _theme => "1", _tint => "0.249977111117893" },
331             low => { _theme => "1", _tint => "0.249977111117893" },
332             },
333             { # 26
334             series => { _theme => "1", _tint => "0.34998626667073579" },
335             negative => { _theme => "0", _tint => "-0.249977111117893" },
336             markers => { _theme => "0", _tint => "-0.249977111117893" },
337             first => { _theme => "0", _tint => "-0.249977111117893" },
338             last => { _theme => "0", _tint => "-0.249977111117893" },
339             high => { _theme => "0", _tint => "-0.249977111117893" },
340             low => { _theme => "0", _tint => "-0.249977111117893" },
341             },
342             { # 27
343             series => { _rgb => "FF323232" },
344             negative => { _rgb => "FFD00000" },
345             markers => { _rgb => "FFD00000" },
346             first => { _rgb => "FFD00000" },
347             last => { _rgb => "FFD00000" },
348             high => { _rgb => "FFD00000" },
349             low => { _rgb => "FFD00000" },
350             },
351             { # 28
352             series => { _rgb => "FF000000" },
353             negative => { _rgb => "FF0070C0" },
354             markers => { _rgb => "FF0070C0" },
355             first => { _rgb => "FF0070C0" },
356             last => { _rgb => "FF0070C0" },
357             high => { _rgb => "FF0070C0" },
358             low => { _rgb => "FF0070C0" },
359             },
360             { # 29
361             series => { _rgb => "FF376092" },
362             negative => { _rgb => "FFD00000" },
363             markers => { _rgb => "FFD00000" },
364             first => { _rgb => "FFD00000" },
365             last => { _rgb => "FFD00000" },
366             high => { _rgb => "FFD00000" },
367             low => { _rgb => "FFD00000" },
368             },
369             { # 30
370             series => { _rgb => "FF0070C0" },
371             negative => { _rgb => "FF000000" },
372             markers => { _rgb => "FF000000" },
373             first => { _rgb => "FF000000" },
374             last => { _rgb => "FF000000" },
375             high => { _rgb => "FF000000" },
376             low => { _rgb => "FF000000" },
377             },
378             { # 31
379             series => { _rgb => "FF5F5F5F" },
380             negative => { _rgb => "FFFFB620" },
381             markers => { _rgb => "FFD70077" },
382             first => { _rgb => "FF5687C2" },
383             last => { _rgb => "FF359CEB" },
384             high => { _rgb => "FF56BE79" },
385             low => { _rgb => "FFFF5055" },
386             },
387             { # 32
388             series => { _rgb => "FF5687C2" },
389             negative => { _rgb => "FFFFB620" },
390             markers => { _rgb => "FFD70077" },
391             first => { _rgb => "FF777777" },
392             last => { _rgb => "FF359CEB" },
393             high => { _rgb => "FF56BE79" },
394             low => { _rgb => "FFFF5055" },
395             },
396             { # 33
397             series => { _rgb => "FFC6EFCE" },
398             negative => { _rgb => "FFFFC7CE" },
399             markers => { _rgb => "FF8CADD6" },
400             first => { _rgb => "FFFFDC47" },
401             last => { _rgb => "FFFFEB9C" },
402             high => { _rgb => "FF60D276" },
403             low => { _rgb => "FFFF5367" },
404             },
405             { # 34
406             series => { _rgb => "FF00B050" },
407             negative => { _rgb => "FFFF0000" },
408             markers => { _rgb => "FF0070C0" },
409             first => { _rgb => "FFFFC000" },
410             last => { _rgb => "FFFFC000" },
411             high => { _rgb => "FF00B050" },
412             low => { _rgb => "FFFF0000" },
413             },
414             { # 35
415             series => { _theme => "3" },
416             negative => { _theme => "9" },
417             markers => { _theme => "8" },
418             first => { _theme => "4" },
419             last => { _theme => "5" },
420             high => { _theme => "6" },
421             low => { _theme => "7" },
422             },
423             { # 36
424             series => { _theme => "1" },
425             negative => { _theme => "9" },
426             markers => { _theme => "8" },
427             first => { _theme => "4" },
428             last => { _theme => "5" },
429             high => { _theme => "6" },
430             low => { _theme => "7" },
431             },
432             );
433              
434              
435             ###############################################################################
436             #
437             # XML writing methods.
438             #
439             ###############################################################################
440              
441              
442             ###############################################################################
443             #
444             # _write_theme_file()
445             #
446             # Write a default theme.xml file.
447             #
448              
449             my $self = shift;
450             my $theme = << 'XML_DATA';
451             <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
452             <a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>
453             XML_DATA
454 892     892   1772  
455 892         1912 local $\ = undef; # Protect print from -l on commandline.
456             print { $self->{_fh} } $theme;
457             }
458              
459              
460 892         2772 1;
461 892         1740  
  892         46164  
462              
463              
464             =pod
465              
466             =head1 NAME
467              
468             Theme - A class for writing the Excel XLSX Theme file.
469              
470             =head1 SYNOPSIS
471              
472             See the documentation for L<Excel::Writer::XLSX>.
473              
474             =head1 DESCRIPTION
475              
476             This module is used in conjunction with L<Excel::Writer::XLSX>.
477              
478             =head1 AUTHOR
479              
480             John McNamara jmcnamara@cpan.org
481              
482             =head1 COPYRIGHT
483              
484             (c) MM-MMXXI, John McNamara.
485              
486             All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
487              
488             =head1 LICENSE
489              
490             Either the Perl Artistic Licence L<http://dev.perl.org/licenses/artistic.html> or the GPL L<http://www.opensource.org/licenses/gpl-license.php>.
491              
492             =head1 DISCLAIMER OF WARRANTY
493              
494             See the documentation for L<Excel::Writer::XLSX>.
495              
496             =cut