xref: /AOO41X/main/slideshow/qa/tools/mktransitions.pl (revision 42dadaea3a8f15bdf66649dfaab4899a6a05a100)
1:
2eval 'exec perl -wS $0 ${1+"$@"}'
3    if 0;
4# *************************************************************
5#
6#  Licensed to the Apache Software Foundation (ASF) under one
7#  or more contributor license agreements.  See the NOTICE file
8#  distributed with this work for additional information
9#  regarding copyright ownership.  The ASF licenses this file
10#  to you under the Apache License, Version 2.0 (the
11#  "License"); you may not use this file except in compliance
12#  with the License.  You may obtain a copy of the License at
13#
14#    http://www.apache.org/licenses/LICENSE-2.0
15#
16#  Unless required by applicable law or agreed to in writing,
17#  software distributed under the License is distributed on an
18#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19#  KIND, either express or implied.  See the License for the
20#  specific language governing permissions and limitations
21#  under the License.
22#
23# *************************************************************
24
25
26use IO::File;
27use Cwd;
28use File::Spec;
29use File::Spec::Functions;
30use File::Temp;
31use File::Path;
32
33$TempDir = "";
34my $FirstTransitionIndex = 0;
35my $LastTransitionIndex = -1;
36
37
38# all the XML package generation is a blatant rip from AF's
39# write-calc-doc.pl
40
41
42###############################################################################
43#   Open a file with the given name.
44#   First it is checked if the temporary directory, in which all files for
45#   the document are gathered, is already present and create it if it is not.
46#   Then create the path to the file inside the temporary directory.
47#   Finally open the file and return a file handle to it.
48#
49sub open_file
50{
51    my  $filename = pop @_;
52
53    #   Create base directory of temporary directory tree if not alreay
54    #   present.
55    if ($TempDir eq "")
56    {
57        $TempDir = File::Temp::tempdir (CLEANUP => 1);
58    }
59
60    #   Create the path to the file.
61    my $fullname = File::Spec->catfile ($TempDir, $filename);
62    my ($volume,$directories,$file) = File::Spec->splitpath ($fullname);
63    mkpath (File::Spec->catpath ($volume,$directories,""));
64
65    #   Open the file and return a file handle to it.
66    return new IO::File ($fullname, "w");
67}
68
69
70###############################################################################
71#   Zip the files in the directory tree into the given file.
72#
73sub zip_dirtree
74{
75    my  $filename = pop @_;
76
77    my  $cwd = getcwd;
78    my  $zip_name = $filename;
79
80    #   We are about to change the directory.
81    #   Therefore create an absolute pathname for the zip archive.
82
83    #   First transfer the drive from $cwd to $zip_name.  This is a
84    #   workaround for a bug in file_name_is_absolute which thinks
85    #   the the path \bla is an absolute path under DOS.
86    my ($volume,$directories,$file) = File::Spec->splitpath ($zip_name);
87    my ($volume_cwd,$directories_cwd,$file_cwd) = File::Spec->splitpath ($cwd);
88    $volume = $volume_cwd if ($volume eq "");
89    $zip_name = File::Spec->catpath ($volume,$directories,$file);
90
91    #   Add the current working directory to a relative path.
92    if ( ! file_name_is_absolute ($zip_name))
93    {
94        $zip_name = File::Spec->catfile ($cwd, $zip_name);
95
96        #   Try everything to clean up the name.
97        $zip_name = File::Spec->rel2abs ($filename);
98        $zip_name = File::Spec->canonpath ($zip_name);
99
100        #   Remove .. directories from the middle of the path.
101        while ($zip_name =~ /\/[^\/][^\.\/][^\/]*\/\.\.\//)
102        {
103            $zip_name = $` . "/" . $'; # $'
104        }
105    }
106
107    #   Just in case the zip program gets confused by an existing file with the
108    #   same name as the one to be written that file is removed first.
109    if ( -e $filename)
110    {
111        if (unlink ($filename) == 0)
112        {
113            print "Existing file $filename could not be deleted.\n";
114            print "Please close the application that uses it, then try again.\n";
115            return;
116        }
117    }
118
119    #   Finally create the zip file.  First change into the temporary directory
120    #   so that the resulting zip file contains only paths relative to it.
121    print "zipping [$ZipCmd $ZipFlags $zip_name *]\n";
122    chdir ($TempDir);
123    system ("$ZipCmd $ZipFlags $zip_name *");
124    chdir ($cwd);
125
126}
127
128
129sub writeHeader
130{
131    print $OUT qq~<?xml version="1.0" encoding="UTF-8"?>
132
133<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:smil="urn:oasis:names:tc:opendocument:xmlns:smil-compatible:1.0" xmlns:anim="urn:oasis:names:tc:opendocument:xmlns:animation:1.0" office:version="1.0">
134 <office:scripts/>
135 <office:automatic-styles>
136~;
137
138}
139
140sub writeSlideStyles
141{
142    my $mode = pop @_;
143    my $direction = pop @_;
144    my $transitionSubType = pop @_;
145    my $transitionType = pop @_;
146    my $slideNum = pop @_;
147
148    return if $slideNum<$FirstTransitionIndex || ($LastTransitionIndex>=0 && $slideNum>$LastTransitionIndex);
149
150    print $OUT "  <style:style style:name=\"dp",$slideNum,"\" style:family=\"drawing-page\">\n";
151    print $OUT "   <style:drawing-page-properties presentation:transition-type=\"automatic\" presentation:duration=\"PT00H00M01S\" presentation:background-visible=\"true\" presentation:background-objects-visible=\"true\" draw:fill=\"solid\" draw:fill-color=\"#ff",$slideNum % 2 ? "ff99" : "cc99","\" smil:type=\"",$transitionType,"\" smil:subtype=\"",$transitionSubType,"\" ",$direction == 0 ? "" : "smil:direction=\"reverse\" ",$mode == 0 ? "" : "smil:mode=\"out\"","/>\n";
152    print $OUT "  </style:style>\n";
153}
154
155sub writeIntermediate
156{
157    print $OUT qq~  <style:style style:name="gr1" style:family="graphic">
158   <style:graphic-properties style:protect="size"/>
159  </style:style>
160  <style:style style:name="pr1" style:family="presentation" style:parent-style-name="Default-title">
161   <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/>
162  </style:style>
163  <style:style style:name="pr2" style:family="presentation" style:parent-style-name="Default-notes">
164   <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="13.367cm"/>
165  </style:style>
166  <style:style style:name="P1" style:family="paragraph">
167   <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm"/>
168  </style:style>
169  <style:style style:name="P2" style:family="paragraph">
170   <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/>
171  </style:style>
172  <text:list-style style:name="L1">
173   <text:list-level-style-bullet text:level="1" text:bullet-char="●">
174    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
175   </text:list-level-style-bullet>
176   <text:list-level-style-bullet text:level="2" text:bullet-char="●">
177    <style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/>
178    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
179   </text:list-level-style-bullet>
180   <text:list-level-style-bullet text:level="3" text:bullet-char="●">
181    <style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/>
182    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
183   </text:list-level-style-bullet>
184   <text:list-level-style-bullet text:level="4" text:bullet-char="●">
185    <style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/>
186    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
187   </text:list-level-style-bullet>
188   <text:list-level-style-bullet text:level="5" text:bullet-char="●">
189    <style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/>
190    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
191   </text:list-level-style-bullet>
192   <text:list-level-style-bullet text:level="6" text:bullet-char="●">
193    <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/>
194    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
195   </text:list-level-style-bullet>
196   <text:list-level-style-bullet text:level="7" text:bullet-char="●">
197    <style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/>
198    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
199   </text:list-level-style-bullet>
200   <text:list-level-style-bullet text:level="8" text:bullet-char="●">
201    <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/>
202    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
203   </text:list-level-style-bullet>
204   <text:list-level-style-bullet text:level="9" text:bullet-char="●">
205    <style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/>
206    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
207   </text:list-level-style-bullet>
208  </text:list-style>
209 </office:automatic-styles>
210 <office:body>
211  <office:presentation>
212~;
213
214}
215
216sub writeSlide
217{
218    my $mode = pop @_;
219    my $direction = pop @_;
220    my $transitionSubtype = pop @_;
221    my $transitionType = pop @_;
222    my $slideNum = pop @_;
223
224    return if $slideNum<$FirstTransitionIndex || ($LastTransitionIndex>=0 && $slideNum>$LastTransitionIndex);
225
226    print $OUT "   <draw:page draw:name=\"page",$slideNum,"\" draw:style-name=\"dp",$slideNum,"\" draw:master-page-name=\"Default\" presentation:presentation-page-layout-name=\"AL1T19\">";
227
228    print $OUT "    <draw:frame presentation:style-name=\"pr1\" draw:layer=\"layout\" svg:width=\"25.199cm\" svg:height=\"3.256cm\" svg:x=\"1.4cm\" svg:y=\"0.962cm\" presentation:class=\"title\">\n";
229    print $OUT "     <draw:text-box>\n";
230    print $OUT "      <text:p text:style-name=\"P1\">Transition “",$slideNum-1,"”</text:p>\n";
231    print $OUT "     </draw:text-box>\n";
232    print $OUT "    </draw:frame>\n";
233    print $OUT "    <draw:frame presentation:style-name=\"pr2\" draw:layer=\"layout\" svg:width=\"25.199cm\" svg:height=\"13.609cm\" svg:x=\"1.4cm\" svg:y=\"4.914cm\" presentation:class=\"outline\">\n";
234    print $OUT "     <draw:text-box>\n";
235    print $OUT "      <text:list text:style-name=\"L2\">\n";
236    print $OUT "       <text:list-item>\n";
237    print $OUT "        <text:p text:style-name=\"P2\">Transition: ",$transitionType,"</text:p>\n";
238    print $OUT "       </text:list-item>\n";
239    print $OUT "      </text:list>\n";
240    print $OUT "      <text:list text:style-name=\"L2\">\n";
241    print $OUT "       <text:list-item>\n";
242    print $OUT "        <text:list>\n";
243    print $OUT "         <text:list-item>\n";
244    print $OUT "          <text:p text:style-name=\"P3\">Subtype: ",$transitionSubtype,"</text:p>\n";
245    print $OUT "         </text:list-item>\n";
246    print $OUT "        </text:list>\n";
247    print $OUT "       </text:list-item>\n";
248    print $OUT "      </text:list>\n";
249    print $OUT "      <text:list text:style-name=\"L2\">\n";
250    print $OUT "       <text:list-item>\n";
251    print $OUT "        <text:list>\n";
252    print $OUT "         <text:list-item>\n";
253    print $OUT "          <text:p text:style-name=\"P3\">Direction: ",$direction == 0 ? "forward" : "reverse","</text:p>\n";
254    print $OUT "         </text:list-item>\n";
255    print $OUT "        </text:list>\n";
256    print $OUT "       </text:list-item>\n";
257    print $OUT "      </text:list>\n";
258    print $OUT "      <text:list text:style-name=\"L2\">\n";
259    print $OUT "       <text:list-item>\n";
260    print $OUT "        <text:list>\n";
261    print $OUT "         <text:list-item>\n";
262    print $OUT "          <text:p text:style-name=\"P3\">Mode: ",$mode == 0 ? "in" : "out","</text:p>\n";
263    print $OUT "         </text:list-item>\n";
264    print $OUT "        </text:list>\n";
265    print $OUT "       </text:list-item>\n";
266    print $OUT "      </text:list>\n";
267    print $OUT "     </draw:text-box>\n";
268    print $OUT "    </draw:frame>\n";
269    print $OUT "    <presentation:notes draw:style-name=\"dp2\">\n";
270    print $OUT "     <draw:page-thumbnail draw:style-name=\"gr1\" draw:layer=\"layout\" svg:width=\"14.851cm\" svg:height=\"11.138cm\" svg:x=\"3.068cm\" svg:y=\"2.257cm\" draw:page-number=\"1\" presentation:class=\"page\"/>\n";
271    print $OUT "     <draw:frame presentation:style-name=\"pr3\" draw:layer=\"layout\" svg:width=\"16.79cm\" svg:height=\"13.116cm\" svg:x=\"2.098cm\" svg:y=\"14.109cm\" presentation:class=\"notes\" presentation:placeholder=\"true\">\n";
272    print $OUT "      <draw:text-box/>\n";
273    print $OUT "     </draw:frame>\n";
274    print $OUT "    </presentation:notes>\n";
275    print $OUT "   </draw:page>\n";
276
277}
278
279sub writeFooter
280{
281    print $OUT qq~   <presentation:settings presentation:full-screen="false"/>
282  </office:presentation>
283 </office:body>
284</office:document-content>
285~;
286
287}
288
289sub writeManifest
290{
291    my $outFile = open_file("META-INF/manifest.xml");
292
293    print $outFile qq~<?xml version="1.0" encoding="UTF-8"?>
294<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
295<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
296 <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.presentation" manifest:full-path="/"/>
297 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
298</manifest:manifest>
299~;
300
301    $outFile->close;
302}
303
304
305$transitionsRef = [
306
307                ["barWipe",
308                 ["leftToRight",
309                  "topToBottom"]],
310
311                ["blindsWipe",
312                 ["vertical",
313                  "horizontal"]],
314
315                ["boxWipe",
316                 ["topLeft",
317                  "topRight",
318                  "bottomRight",
319                  "bottomLeft",
320                  "topCenter",
321                  "rightCenter",
322                  "bottomCenter",
323                  "leftCenter"]],
324
325                ["fourBoxWipe",
326                 ["cornersIn",
327                  "cornersOut"]],
328
329                ["barnDoorWipe",
330                 ["vertical",
331                  "horizontal",
332                  "diagonalBottomLeft",
333                  "diagonalTopLeft"]],
334
335                ["bowTieWipe",
336                 ["vertical",
337                  "horizontal"]],
338
339                ["miscDiagonalWipe",
340                 ["doubleBarnDoor",
341                  "doubleDiamond"]],
342
343                ["veeWipe",
344                 ["down",
345                  "left",
346                  "up",
347                  "right"]],
348
349                ["barnVeeWipe",
350                 ["top",
351                  "left",
352                  "up",
353                  "right"]],
354
355                ["zigZagWipe",
356                 ["leftToRight",
357                  "topToBottom"]],
358
359                ["barnZigZagWipe",
360                 ["vertical",
361                  "horizontal"]],
362
363                ["irisWipe",
364                 ["rectangle",
365                  "diamond"]],
366
367                ["triangleWipe",
368                 ["up",
369                  "right",
370                  "down",
371                  "left"]],
372
373                ["arrowHeadWipe",
374                 ["up",
375                  "right",
376                  "down",
377                  "left"]],
378
379                ["pentagonWipe",
380                 ["up",
381                  "down"]],
382
383                ["hexagonWipe",
384                 ["horizontal",
385                  "vertical"]],
386
387                ["ellipseWipe",
388                 ["circle",
389                  "horizontal",
390                  "vertical"]],
391
392                ["eyeWipe",
393                 ["vertical",
394                  "horizontal"]],
395
396                ["roundRectWipe",
397                 ["horizontal",
398                  "vertical"]],
399
400                ["starWipe",
401                 ["fourPoint",
402                  "fivePoint",
403                  "sixPoint"]],
404
405                ["miscShapeWipe",
406                 ["heart",
407                  "keyhole"]],
408
409                ["clockWipe",
410                 ["clockwiseTwelve",
411                  "clockwiseThree",
412                  "clockwiseSix",
413                  "clockwiseNine"]],
414
415                ["pinWheelWipe",
416                 ["oneBlade",
417                  "twoBladeVertical",
418                  "twoBladeHorizontal",
419                  "threeBlade",
420                  "fourBlade",
421                  "eightBlade"]],
422
423                ["singleSweepWipe",
424                 ["clockwiseTop",
425                  "clockwiseRight",
426                  "clockwiseBottom",
427                  "clockwiseLeft",
428                  "clockwiseTopLeft",
429                  "counterClockwiseBottomLeft",
430                  "clockwiseBottomRight",
431                  "counterClockwiseTopRight"]],
432
433                ["fanWipe",
434                 ["centerTop",
435                  "centerRight",
436                  "top",
437                  "right",
438                  "bottom",
439                  "left"]],
440
441                ["doubleFanWipe",
442                 ["fanOutVertical",
443                  "fanOutHorizontal",
444                  "fanInVertical",
445                  "fanInHorizontal"]],
446
447                ["doubleSweepWipe",
448                 ["parallelVertical",
449                  "parallelDiagonal",
450                  "oppositeVertical",
451                  "oppositeHorizontal",
452                  "parallelDiagonalTopLeft",
453                  "parallelDiagonalBottomLeft"]],
454
455                ["saloonDoorWipe",
456                 ["top",
457                  "left",
458                  "bottom",
459                  "right"]],
460
461                ["windshieldWipe",
462                 ["right",
463                  "up",
464                  "vertical",
465                  "horizontal"]],
466
467                ["snakeWipe",
468                 ["topLeftHorizontal",
469                  "topLeftVertical",
470                  "topLeftDiagonal",
471                  "topRightDiagonal",
472                  "bottomRightDiagonal",
473                  "bottomLeftDiagonal"]],
474
475                ["spiralWipe",
476                 ["topLeftClockwise",
477                  "topRightClockwise",
478                  "bottomRightClockwise",
479                  "bottomLeftClockwise",
480                  "topLeftCounterClockwise",
481                  "topRightCounterClockwise",
482                  "bottomRightCounterClockwise",
483                  "bottomLeftCounterClockwise"]],
484
485                ["parallelSnakesWipe",
486                 ["verticalTopSame",
487                  "verticalBottomSame",
488                  "verticalTopLeftOpposite",
489                  "verticalBottomLeftOpposite",
490                  "horizontalLeftSame",
491                  "horizontalRightSame",
492                  "horizontalTopLeftOpposite",
493                  "horizontalTopRightOpposite",
494                  "diagonalBottomLeftOpposite",
495                  "diagonalTopLeftOpposite"]],
496
497                ["boxSnakesWipe",
498                 ["twoBoxTop",
499                  "twoBoxLeft",
500                  "twoBoxRight",
501                  "fourBoxVertical",
502                  "fourBoxHorizontal"]],
503
504                ["waterfallWipe",
505                 ["verticalLeft",
506                  "verticalRight",
507                  "horizontalLeft",
508                  "horizontalRight"]],
509
510                ["pushWipe",
511                 ["fromLeft",
512                  "fromTop",
513                  "fromRight",
514                  "fromBottom",
515                  "fromBottomRight",
516                  "fromBottomLeft",
517                  "fromTopRight",
518                  "fromTopLeft",
519                  "combHorizontal",
520                  "combVertical"]],
521
522                ["slideWipe",
523                 ["fromLeft",
524                  "fromTop",
525                  "fromRight",
526                  "fromBottom",
527                  "fromBottomRight",
528                  "fromBottomLeft",
529                  "fromTopRight",
530                  "fromTopLeft"]],
531
532                ["fade",
533                 ["crossfade",
534                  "fadeToColor",
535                  "fadeFromColor",
536                  "fadeOverColor"]],
537
538                ["randomBarWipe",
539                 ["vertical",
540                  "horizontal"]],
541
542                ["checkerBoardWipe",
543                 ["down",
544                  "across"]],
545
546                ["dissolve",
547                 ["default"]]
548];
549
550
551###############################################################################
552#   Print usage information.
553#
554sub usage   ()
555{
556    print <<END_OF_USAGE;
557usage: $0 <option>* [<output-file-name>]
558
559output-file-name defaults to alltransitions.odp.
560
561options: -a    Generate _all_ combinations of type, subtype,
562               direction, and mode
563         -h    Print this usage information.
564         -f    First transition to include, defaults to 0
565         -l    Last transition to include
566END_OF_USAGE
567}
568
569###############################################################################
570#   Process the command line.
571#
572sub process_command_line
573{
574    foreach (@ARGV)
575    {
576        if (/^-h/)
577        {
578            usage;
579            exit 0;
580        }
581    }
582
583    $global_gen_all=0;
584    $global_output_name = "alltransitions.odp";
585
586    my  $j = 0;
587    for (my $i=0; $i<=$#ARGV; $i++)
588    {
589        if ($ARGV[$i] eq "-a")
590        {
591            $global_gen_all=1;
592        }
593        elsif ($ARGV[$i] eq "-f")
594        {
595            $FirstTransitionIndex = $ARGV[++$i];
596        }
597        elsif ($ARGV[$i] eq "-l")
598        {
599            $LastTransitionIndex = $ARGV[++$i];
600        }
601        elsif ($ARGV[$i] =~ /^-/)
602        {
603            print "Unknown option $ARGV[$i]\n";
604            usage;
605            exit 1;
606        }
607        elsif ($#ARGV == $i )
608        {
609            $global_output_name = $ARGV[$i];
610        }
611    }
612
613    print "output to $global_output_name\n";
614}
615
616
617###############################################################################
618#   Main
619###############################################################################
620
621$ZipCmd = $ENV{LOG_FILE_ZIP_CMD};
622$ZipFlags = $ENV{LOG_FILE_ZIP_FLAGS};
623#   Provide default values for the zip command and it's flags.
624if ( ! defined $ZipCmd)
625{
626    $ZipCmd = "zip" unless defined $ZipCmd;
627    $ZipFlags = "-r -q" unless defined $ZipFlags;
628}
629
630process_command_line();
631
632writeManifest();
633
634$OUT = open_file( "content.xml" );
635
636writeHeader();
637
638$slideNum=1;
639foreach $transitionRef (@$transitionsRef)
640{
641    $transitionType = @$transitionRef[0];
642
643    foreach $subtype (@{$transitionRef->[1]})
644    {
645        if( $global_gen_all != 0 )
646        {
647            writeSlideStyles($slideNum++,
648                             $transitionType,
649                             $subtype,
650                             0, 0);
651            writeSlideStyles($slideNum++,
652                             $transitionType,
653                             $subtype,
654                             1, 0);
655            writeSlideStyles($slideNum++,
656                             $transitionType,
657                             $subtype,
658                             0, 1);
659            writeSlideStyles($slideNum++,
660                             $transitionType,
661                             $subtype,
662                             1, 1);
663        }
664        else
665        {
666            writeSlideStyles($slideNum++,
667                             $transitionType,
668                             $subtype,
669                             0, 0);
670        }
671    }
672}
673
674writeIntermediate();
675
676$slideNum=1;
677foreach $transitionRef (@$transitionsRef)
678{
679    $transitionType = @$transitionRef[0];
680
681    foreach $subtype (@{$transitionRef->[1]})
682    {
683        if( $global_gen_all != 0 )
684        {
685            writeSlide($slideNum++,
686                       $transitionType,
687                       $subtype,
688                       0, 0);
689            writeSlide($slideNum++,
690                       $transitionType,
691                       $subtype,
692                       1, 0);
693            writeSlide($slideNum++,
694                       $transitionType,
695                       $subtype,
696                       0, 1);
697            writeSlide($slideNum++,
698                       $transitionType,
699                       $subtype,
700                       1, 1);
701        }
702        else
703        {
704            writeSlide($slideNum++,
705                       $transitionType,
706                       $subtype,
707                       0, 0);
708        }
709    }
710}
711
712writeFooter();
713
714$OUT->close;
715
716zip_dirtree ($global_output_name);
717
718