xref: /trunk/main/slideshow/qa/tools/mkeffects.pl (revision 353566969a66957f00012e88c396ae18ac1cc883)
1cdf0e10cSrcweir:
2cdf0e10cSrcweireval 'exec perl -wS $0 ${1+"$@"}'
3cdf0e10cSrcweir    if 0;
4bb113e63SAndrew Rist# *************************************************************
5bb113e63SAndrew Rist#
6bb113e63SAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
7bb113e63SAndrew Rist#  or more contributor license agreements.  See the NOTICE file
8bb113e63SAndrew Rist#  distributed with this work for additional information
9bb113e63SAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
10bb113e63SAndrew Rist#  to you under the Apache License, Version 2.0 (the
11bb113e63SAndrew Rist#  "License"); you may not use this file except in compliance
12bb113e63SAndrew Rist#  with the License.  You may obtain a copy of the License at
13bb113e63SAndrew Rist#
14bb113e63SAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
15bb113e63SAndrew Rist#
16bb113e63SAndrew Rist#  Unless required by applicable law or agreed to in writing,
17bb113e63SAndrew Rist#  software distributed under the License is distributed on an
18bb113e63SAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
19bb113e63SAndrew Rist#  KIND, either express or implied.  See the License for the
20bb113e63SAndrew Rist#  specific language governing permissions and limitations
21bb113e63SAndrew Rist#  under the License.
22bb113e63SAndrew Rist#
23bb113e63SAndrew Rist# *************************************************************
24cdf0e10cSrcweir
25cdf0e10cSrcweiruse IO::File;
26cdf0e10cSrcweiruse Cwd;
27cdf0e10cSrcweiruse File::Spec;
28cdf0e10cSrcweiruse File::Spec::Functions;
29cdf0e10cSrcweiruse File::Temp;
30cdf0e10cSrcweiruse File::Path;
31cdf0e10cSrcweir
32cdf0e10cSrcweir$TempDir = "";
33cdf0e10cSrcweir
34cdf0e10cSrcweir# all the XML package generation is a blatant rip from AF's
35cdf0e10cSrcweir# write-calc-doc.pl
36cdf0e10cSrcweir
37cdf0e10cSrcweir###############################################################################
38cdf0e10cSrcweir#   Open a file with the given name.
39cdf0e10cSrcweir#   First it is checked if the temporary directory, in which all files for
40cdf0e10cSrcweir#   the document are gathered, is already present and create it if it is not.
41cdf0e10cSrcweir#   Then create the path to the file inside the temporary directory.
42cdf0e10cSrcweir#   Finally open the file and return a file handle to it.
43cdf0e10cSrcweir#
44cdf0e10cSrcweirsub open_file
45cdf0e10cSrcweir{
46cdf0e10cSrcweir    my  $filename = pop @_;
47cdf0e10cSrcweir
48*35356696Smseidel    #   Create base directory of temporary directory tree if not already
49cdf0e10cSrcweir    #   present.
50cdf0e10cSrcweir    if ($TempDir eq "")
51cdf0e10cSrcweir    {
52cdf0e10cSrcweir        $TempDir = File::Temp::tempdir (CLEANUP => 1);
53cdf0e10cSrcweir    }
54cdf0e10cSrcweir
55cdf0e10cSrcweir    #   Create the path to the file.
56cdf0e10cSrcweir    my $fullname = File::Spec->catfile ($TempDir, $filename);
57cdf0e10cSrcweir    my ($volume,$directories,$file) = File::Spec->splitpath ($fullname);
58cdf0e10cSrcweir    mkpath (File::Spec->catpath ($volume,$directories,""));
59cdf0e10cSrcweir
60cdf0e10cSrcweir    #   Open the file and return a file handle to it.
61cdf0e10cSrcweir    return new IO::File ($fullname, "w");
62cdf0e10cSrcweir}
63cdf0e10cSrcweir
64cdf0e10cSrcweir###############################################################################
65cdf0e10cSrcweir#   Zip the files in the directory tree into the given file.
66cdf0e10cSrcweir#
67cdf0e10cSrcweirsub zip_dirtree
68cdf0e10cSrcweir{
69cdf0e10cSrcweir    my  $filename = pop @_;
70cdf0e10cSrcweir
71cdf0e10cSrcweir    my  $cwd = getcwd;
72cdf0e10cSrcweir    my  $zip_name = $filename;
73cdf0e10cSrcweir
74cdf0e10cSrcweir    #   We are about to change the directory.
75cdf0e10cSrcweir    #   Therefore create an absolute pathname for the zip archive.
76cdf0e10cSrcweir
77cdf0e10cSrcweir    #   First transfer the drive from $cwd to $zip_name.  This is a
78cdf0e10cSrcweir    #   workaround for a bug in file_name_is_absolute which thinks
797950f2afSmseidel    #   the path \bla is an absolute path under DOS.
80cdf0e10cSrcweir    my ($volume,$directories,$file) = File::Spec->splitpath ($zip_name);
81cdf0e10cSrcweir    my ($volume_cwd,$directories_cwd,$file_cwd) = File::Spec->splitpath ($cwd);
82cdf0e10cSrcweir    $volume = $volume_cwd if ($volume eq "");
83cdf0e10cSrcweir    $zip_name = File::Spec->catpath ($volume,$directories,$file);
84cdf0e10cSrcweir
85cdf0e10cSrcweir    #   Add the current working directory to a relative path.
86cdf0e10cSrcweir    if ( ! file_name_is_absolute ($zip_name))
87cdf0e10cSrcweir    {
88cdf0e10cSrcweir        $zip_name = File::Spec->catfile ($cwd, $zip_name);
89cdf0e10cSrcweir
90cdf0e10cSrcweir        #   Try everything to clean up the name.
91cdf0e10cSrcweir        $zip_name = File::Spec->rel2abs ($filename);
92cdf0e10cSrcweir        $zip_name = File::Spec->canonpath ($zip_name);
93cdf0e10cSrcweir
94cdf0e10cSrcweir        #   Remove .. directories from the middle of the path.
95cdf0e10cSrcweir        while ($zip_name =~ /\/[^\/][^\.\/][^\/]*\/\.\.\//)
96cdf0e10cSrcweir        {
97cdf0e10cSrcweir            $zip_name = $` . "/" . $';
98cdf0e10cSrcweir        }
99cdf0e10cSrcweir    }
100cdf0e10cSrcweir
101cdf0e10cSrcweir    #   Just in case the zip program gets confused by an existing file with the
102cdf0e10cSrcweir    #   same name as the one to be written that file is removed first.
103cdf0e10cSrcweir    if ( -e $filename)
104cdf0e10cSrcweir    {
105cdf0e10cSrcweir        if (unlink ($filename) == 0)
106cdf0e10cSrcweir        {
107cdf0e10cSrcweir            print "Existing file $filename could not be deleted.\n";
108cdf0e10cSrcweir            print "Please close the application that uses it, then try again.\n";
109cdf0e10cSrcweir            return;
110cdf0e10cSrcweir        }
111cdf0e10cSrcweir    }
112cdf0e10cSrcweir
113cdf0e10cSrcweir    #   Finally create the zip file.  First change into the temporary directory
114cdf0e10cSrcweir    #   so that the resulting zip file contains only paths relative to it.
115cdf0e10cSrcweir    print "zipping [$ZipCmd $ZipFlags $zip_name *]\n";
116cdf0e10cSrcweir    chdir ($TempDir);
117cdf0e10cSrcweir    system ("$ZipCmd $ZipFlags $zip_name *");
118cdf0e10cSrcweir    chdir ($cwd);
119cdf0e10cSrcweir}
120cdf0e10cSrcweir
121cdf0e10cSrcweir
122cdf0e10cSrcweirsub writeHeader
123cdf0e10cSrcweir{
124cdf0e10cSrcweir    print $OUT qq~<?xml version="1.0" encoding="UTF-8"?>
125cdf0e10cSrcweir
126cdf0e10cSrcweir<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">
127cdf0e10cSrcweir <office:scripts/>
128cdf0e10cSrcweir <office:automatic-styles>
129cdf0e10cSrcweir  <style:style style:name="dp1" style:family="drawing-page">
130cdf0e10cSrcweir   <style:drawing-page-properties presentation:background-visible="true" presentation:background-objects-visible="true" presentation:display-footer="true" presentation:display-page-number="false" presentation:display-date-time="true"/>
131cdf0e10cSrcweir  </style:style>
132cdf0e10cSrcweir  <style:style style:name="gr1" style:family="graphic" style:parent-style-name="standard">
133cdf0e10cSrcweir   <style:graphic-properties draw:textarea-horizontal-align="center" draw:textarea-vertical-align="middle"/>
134cdf0e10cSrcweir  </style:style>
135cdf0e10cSrcweir  <style:style style:name="pr1" style:family="presentation" style:parent-style-name="Default-title">
136cdf0e10cSrcweir   <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="3.508cm"/>
137cdf0e10cSrcweir  </style:style>
138cdf0e10cSrcweir  <style:style style:name="pr2" style:family="presentation" style:parent-style-name="Default-notes">
139cdf0e10cSrcweir   <style:graphic-properties draw:fill-color="#ffffff" draw:auto-grow-height="true" fo:min-height="13.367cm"/>
140cdf0e10cSrcweir  </style:style>
141cdf0e10cSrcweir  <style:style style:name="P1" style:family="paragraph">
142cdf0e10cSrcweir   <style:paragraph-properties fo:margin-left="0cm" fo:margin-right="0cm" fo:text-indent="0cm"/>
143cdf0e10cSrcweir  </style:style>
144cdf0e10cSrcweir  <style:style style:name="P2" style:family="paragraph">
145cdf0e10cSrcweir   <style:paragraph-properties fo:margin-left="0.6cm" fo:margin-right="0cm" fo:text-indent="-0.6cm"/>
146cdf0e10cSrcweir  </style:style>
147cdf0e10cSrcweir  <text:list-style style:name="L1">
148cdf0e10cSrcweir   <text:list-level-style-bullet text:level="1" text:bullet-char="●">
149cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
150cdf0e10cSrcweir   </text:list-level-style-bullet>
151cdf0e10cSrcweir   <text:list-level-style-bullet text:level="2" text:bullet-char="●">
152cdf0e10cSrcweir    <style:list-level-properties text:space-before="0.6cm" text:min-label-width="0.6cm"/>
153cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
154cdf0e10cSrcweir   </text:list-level-style-bullet>
155cdf0e10cSrcweir   <text:list-level-style-bullet text:level="3" text:bullet-char="●">
156cdf0e10cSrcweir    <style:list-level-properties text:space-before="1.2cm" text:min-label-width="0.6cm"/>
157cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
158cdf0e10cSrcweir   </text:list-level-style-bullet>
159cdf0e10cSrcweir   <text:list-level-style-bullet text:level="4" text:bullet-char="●">
160cdf0e10cSrcweir    <style:list-level-properties text:space-before="1.8cm" text:min-label-width="0.6cm"/>
161cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
162cdf0e10cSrcweir   </text:list-level-style-bullet>
163cdf0e10cSrcweir   <text:list-level-style-bullet text:level="5" text:bullet-char="●">
164cdf0e10cSrcweir    <style:list-level-properties text:space-before="2.4cm" text:min-label-width="0.6cm"/>
165cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
166cdf0e10cSrcweir   </text:list-level-style-bullet>
167cdf0e10cSrcweir   <text:list-level-style-bullet text:level="6" text:bullet-char="●">
168cdf0e10cSrcweir    <style:list-level-properties text:space-before="3cm" text:min-label-width="0.6cm"/>
169cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
170cdf0e10cSrcweir   </text:list-level-style-bullet>
171cdf0e10cSrcweir   <text:list-level-style-bullet text:level="7" text:bullet-char="●">
172cdf0e10cSrcweir    <style:list-level-properties text:space-before="3.6cm" text:min-label-width="0.6cm"/>
173cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
174cdf0e10cSrcweir   </text:list-level-style-bullet>
175cdf0e10cSrcweir   <text:list-level-style-bullet text:level="8" text:bullet-char="●">
176cdf0e10cSrcweir    <style:list-level-properties text:space-before="4.2cm" text:min-label-width="0.6cm"/>
177cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
178cdf0e10cSrcweir   </text:list-level-style-bullet>
179cdf0e10cSrcweir   <text:list-level-style-bullet text:level="9" text:bullet-char="●">
180cdf0e10cSrcweir    <style:list-level-properties text:space-before="4.8cm" text:min-label-width="0.6cm"/>
181cdf0e10cSrcweir    <style:text-properties fo:font-family="StarSymbol" style:use-window-font-color="true" fo:font-size="45%"/>
182cdf0e10cSrcweir   </text:list-level-style-bullet>
183cdf0e10cSrcweir  </text:list-style>
184cdf0e10cSrcweir </office:automatic-styles>
185cdf0e10cSrcweir <office:body>
186cdf0e10cSrcweir  <office:presentation>
187cdf0e10cSrcweir~;
188cdf0e10cSrcweir
189cdf0e10cSrcweir}
190cdf0e10cSrcweir
191cdf0e10cSrcweirsub writeSlideHeader
192cdf0e10cSrcweir{
193cdf0e10cSrcweir    my $titleText = pop @_;
194cdf0e10cSrcweir    my $slideNum = pop @_;
195cdf0e10cSrcweir
196cdf0e10cSrcweir    print $OUT "      <draw:page draw:name=\"page1\" draw:style-name=\"dp1\" draw:master-page-name=\"Default\">\n";
197cdf0e10cSrcweir    print $OUT "       <office:forms form:automatic-focus=\"false\" form:apply-design-mode=\"false\"/>\n";
198cdf0e10cSrcweir    print $OUT "       <draw:rect draw:style-name=\"gr1\" draw:text-style-name=\"P1\" draw:id=\"id$slideNum\" draw:layer=\"layout\" svg:width=\"17.5cm\" svg:height=\"13cm\" svg:x=\"5cm\" svg:y=\"4cm\">\n";
199cdf0e10cSrcweir    print $OUT "        <text:p text:style-name=\"P2\">Slide: $slideNum</text:p>\n";
200cdf0e10cSrcweir    print $OUT "        <text:p text:style-name=\"P2\">Topic: $titleText</text:p>\n";
201cdf0e10cSrcweir    print $OUT "        <text:p text:id=\"textid$slideNum\" text:style-name=\"P2\">Some text to show text effects</text:p>\n";
202cdf0e10cSrcweir    print $OUT "       </draw:rect>\n";
203cdf0e10cSrcweir    print $OUT "      <anim:par presentation:node-type=\"timing-root\">\n";
204cdf0e10cSrcweir    print $OUT "        <anim:seq presentation:node-type=\"main-sequence\">\n";
205cdf0e10cSrcweir}
206cdf0e10cSrcweir
207cdf0e10cSrcweir
208cdf0e10cSrcweirsub writeSlideFooter
209cdf0e10cSrcweir{
210cdf0e10cSrcweir    print $OUT "       </anim:seq>\n";
211cdf0e10cSrcweir    print $OUT "      </anim:par>\n";
212cdf0e10cSrcweir    print $OUT "    <presentation:notes draw:style-name=\"dp1\">\n";
213cdf0e10cSrcweir    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";
214cdf0e10cSrcweir    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";
215cdf0e10cSrcweir    print $OUT "      <draw:text-box/>\n";
216cdf0e10cSrcweir    print $OUT "     </draw:frame>\n";
217cdf0e10cSrcweir    print $OUT "    </presentation:notes>\n";
218cdf0e10cSrcweir    print $OUT "   </draw:page>\n";
219cdf0e10cSrcweir}
220cdf0e10cSrcweir
221cdf0e10cSrcweirsub writeFooter
222cdf0e10cSrcweir{
223cdf0e10cSrcweir    print $OUT qq~   <presentation:settings presentation:full-screen="false"/>
224cdf0e10cSrcweir  </office:presentation>
225cdf0e10cSrcweir </office:body>
226cdf0e10cSrcweir</office:document-content>
227cdf0e10cSrcweir~;
228cdf0e10cSrcweir
229cdf0e10cSrcweir}
230cdf0e10cSrcweir
231cdf0e10cSrcweirsub writeTransitionAnimation
232cdf0e10cSrcweir{
233cdf0e10cSrcweir    my $transitionSubtype = pop @_;
234cdf0e10cSrcweir    my $transitionType = pop @_;
235cdf0e10cSrcweir    my $slideNum = pop @_;
236cdf0e10cSrcweir
237cdf0e10cSrcweir    print $OUT "          <anim:par smil:begin=\"0s\" smil:fill=\"remove\">\n";
238cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"0s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"textid$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
239cdf0e10cSrcweir    print $OUT "            <anim:transitionFilter smil:dur=\"1s\" smil:targetElement=\"textid$slideNum\" smil:type=\"$transitionType\" smil:subtype=\"$transitionSubtype\"/>\n";
240cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"0.3s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"id$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
241cdf0e10cSrcweir    print $OUT "            <anim:transitionFilter smil:begin=\"0.3s\" smil:dur=\"1s\" smil:targetElement=\"id$slideNum\" smil:type=\"$transitionType\" smil:subtype=\"$transitionSubtype\"/>\n";
242cdf0e10cSrcweir    print $OUT "          </anim:par>\n";
243cdf0e10cSrcweir}
244cdf0e10cSrcweir
245cdf0e10cSrcweirsub writePropertyAnimation
246cdf0e10cSrcweir{
247cdf0e10cSrcweir    my $propertyEnd = pop @_;
248cdf0e10cSrcweir    my $propertyStart = pop @_;
249cdf0e10cSrcweir    my $propertyName = pop @_;
250cdf0e10cSrcweir    my $slideNum = pop @_;
251cdf0e10cSrcweir
252cdf0e10cSrcweir    print $OUT "          <anim:par smil:begin=\"0s\" smil:dur=\"3s\" smil:fill=\"remove\">\n";
253cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"0s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"id$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
254cdf0e10cSrcweir    print $OUT "            <anim:animate smil:begin=\"0s\" smil:dur=\"1s\" smil:fill=\"hold\" smil:targetElement=\"id$slideNum\" smil:attributeName=\"$propertyName\" smil:values=\"$propertyStart;$propertyEnd\" smil:keyTimes=\"0;1\" presentation:additive=\"base\"/>\n";
255cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"0.6s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"textid$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
256cdf0e10cSrcweir    print $OUT "            <anim:animate smil:begin=\"0.6s\" smil:dur=\"1s\" smil:fill=\"hold\" smil:targetElement=\"textid$slideNum\" smil:attributeName=\"$propertyName\" smil:values=\"$propertyStart;$propertyEnd\" smil:keyTimes=\"0;1\" presentation:additive=\"base\"/>\n";
257cdf0e10cSrcweir    print $OUT "          </anim:par>\n";
258cdf0e10cSrcweir}
259cdf0e10cSrcweir
260cdf0e10cSrcweirsub writeTransformAnimation
261cdf0e10cSrcweir{
262cdf0e10cSrcweir    my $propertyBy = pop @_;
263cdf0e10cSrcweir    my $propertyName = pop @_;
264cdf0e10cSrcweir    my $slideNum = pop @_;
265cdf0e10cSrcweir
266cdf0e10cSrcweir    print $OUT "          <anim:par smil:begin=\"0s\" smil:dur=\"3s\" smil:fill=\"remove\">\n";
267cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"0s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"id$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
268cdf0e10cSrcweir    print $OUT "            <anim:animateTransform smil:begin=\"0s\" smil:dur=\"1s\" smil:targetElement=\"id$slideNum\" smil:fill=\"hold\" smil:by=\"$propertyBy\" presentation:additive=\"base\" svg:type=\"$propertyName\"/>\n";
269cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"0.6s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"textid$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
270cdf0e10cSrcweir    print $OUT "            <anim:animateTransform smil:begin=\"0.6s\" smil:dur=\"1s\" smil:targetElement=\"textid$slideNum\" smil:fill=\"hold\" smil:by=\"$propertyBy\" presentation:additive=\"base\" svg:type=\"$propertyName\"/>\n";
271cdf0e10cSrcweir    print $OUT "          </anim:par>\n";
272cdf0e10cSrcweir}
273cdf0e10cSrcweir
274cdf0e10cSrcweirsub writePathMotionAnimation
275cdf0e10cSrcweir{
276cdf0e10cSrcweir    my $slideNum = pop @_;
277cdf0e10cSrcweir
278cdf0e10cSrcweir    print $OUT "          <anim:par smil:begin=\"0s\" smil:dur=\"10s\" smil:fill=\"remove\">\n";
279cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"0s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"id$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
280cdf0e10cSrcweir    print $OUT "            <anim:animateMotion smil:dur=\"5s\" smil:fill=\"hold\" smil:targetElement=\"id$slideNum\" presentation:additive=\"base\" svg:path=\"m0.0 0.07658c0.0098-0.00493 0.00197-0.00985 0.00295-0.01478 0.00191 0.00 0.00383 0.00 0.00574 0.00-0.00005 0.00033-0.00011 0.00065-0.00016 0.00098-0.00034 0.00276-0.00060 0.00446-0.00077 0.00512-0.00021 0.00086-0.00031 0.00143-0.00031 0.00170 0.00 0.00200 0.00150 0.00369 0.00452 0.00507 0.00301 0.00138 0.00671 0.00206 0.01108 0.00206 0.00438 0.00 0.00816-0.00164 0.01134-0.00493 0.00319-0.00329 0.00478-0.00719 0.00478-0.01170 0.00-0.00514-0.00311-0.01022-0.00935-0.01525-0.00162-0.00129-0.00324-0.00258-0.00486-0.00387-0.00806-0.00651-0.01209-0.01290-0.01209-0.01917s0.0251-0.01148 0.00752-0.01561 0.01131-0.00620 0.01889-0.00620c0.0585 0.00 0.01276 0.00126 0.02072 0.00377-0.00102 0.00512-0.00203 0.01023-0.00305 0.01535-0.00191 0.00-0.00383 0.00-0.00574 0.00 0.00009-0.00052 0.00017-0.00103 0.00026-0.00155 0.00019-0.00195 0.00038-0.00389 0.00057-0.00584 0.00009-0.00062 0.00017-0.00124 0.00026-0.00186-0.00014-0.00183-0.00155-0.00337-0.00424-0.00462-0.00269-0.00126-0.00589-0.00189-0.00961-0.00189-0.00424 0.00-0.00782 0.00144-0.01075 0.00431-0.00293 0.00288-0.00439 0.00640-0.00439 0.01057 0.00 0.00510 0.00334 0.01035 0.01002 0.01576 0.00172 0.00138 0.00345 0.00275 0.00517 0.00413 0.00782 0.00631 0.01173 0.01277 0.01173 0.01938 0.00 0.00675-0.00272 0.01224-0.00816 0.01646-0.00545 0.00422-0.01256 0.00633-0.02134 0.00633-0.00538 0.00-0.01165-0.00105-0.01881-0.00315-0.00064-0.00019-0.00128-0.00038-0.00192-0.00057z\"/>\n";
281cdf0e10cSrcweir    print $OUT "            <anim:set smil:begin=\"3.6s\" smil:dur=\"0.001s\" smil:fill=\"hold\" smil:targetElement=\"textid$slideNum\" smil:attributeName=\"visibility\" smil:to=\"visible\"/>\n";
282cdf0e10cSrcweir    print $OUT "            <anim:animateMotion smil:begin=\"3.6s\" smil:dur=\"5s\" smil:fill=\"hold\" smil:targetElement=\"textid$slideNum\" presentation:additive=\"base\" svg:path=\"m0.0 0.07658c0.0098-0.00493 0.00197-0.00985 0.00295-0.01478 0.00191 0.00 0.00383 0.00 0.00574 0.00-0.00005 0.00033-0.00011 0.00065-0.00016 0.00098-0.00034 0.00276-0.00060 0.00446-0.00077 0.00512-0.00021 0.00086-0.00031 0.00143-0.00031 0.00170 0.00 0.00200 0.00150 0.00369 0.00452 0.00507 0.00301 0.00138 0.00671 0.00206 0.01108 0.00206 0.00438 0.00 0.00816-0.00164 0.01134-0.00493 0.00319-0.00329 0.00478-0.00719 0.00478-0.01170 0.00-0.00514-0.00311-0.01022-0.00935-0.01525-0.00162-0.00129-0.00324-0.00258-0.00486-0.00387-0.00806-0.00651-0.01209-0.01290-0.01209-0.01917s0.0251-0.01148 0.00752-0.01561 0.01131-0.00620 0.01889-0.00620c0.0585 0.00 0.01276 0.00126 0.02072 0.00377-0.00102 0.00512-0.00203 0.01023-0.00305 0.01535-0.00191 0.00-0.00383 0.00-0.00574 0.00 0.00009-0.00052 0.00017-0.00103 0.00026-0.00155 0.00019-0.00195 0.00038-0.00389 0.00057-0.00584 0.00009-0.00062 0.00017-0.00124 0.00026-0.00186-0.00014-0.00183-0.00155-0.00337-0.00424-0.00462-0.00269-0.00126-0.00589-0.00189-0.00961-0.00189-0.00424 0.00-0.00782 0.00144-0.01075 0.00431-0.00293 0.00288-0.00439 0.00640-0.00439 0.01057 0.00 0.00510 0.00334 0.01035 0.01002 0.01576 0.00172 0.00138 0.00345 0.00275 0.00517 0.00413 0.00782 0.00631 0.01173 0.01277 0.01173 0.01938 0.00 0.00675-0.00272 0.01224-0.00816 0.01646-0.00545 0.00422-0.01256 0.00633-0.02134 0.00633-0.00538 0.00-0.01165-0.00105-0.01881-0.00315-0.00064-0.00019-0.00128-0.00038-0.00192-0.00057z\"/>\n";
283cdf0e10cSrcweir    print $OUT "          </anim:par>\n";
284cdf0e10cSrcweir}
285cdf0e10cSrcweir
286cdf0e10cSrcweirsub writeManifest
287cdf0e10cSrcweir{
288cdf0e10cSrcweir    my $outFile = open_file("META-INF/manifest.xml");
289cdf0e10cSrcweir
290cdf0e10cSrcweir    print $outFile qq~<?xml version="1.0" encoding="UTF-8"?>
291cdf0e10cSrcweir<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
292cdf0e10cSrcweir<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0">
293cdf0e10cSrcweir <manifest:file-entry manifest:media-type="application/vnd.oasis.opendocument.presentation" manifest:full-path="/"/>
294cdf0e10cSrcweir <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
295cdf0e10cSrcweir</manifest:manifest>
296cdf0e10cSrcweir~;
297cdf0e10cSrcweir
298cdf0e10cSrcweir    $outFile->close;
299cdf0e10cSrcweir}
300cdf0e10cSrcweir
301cdf0e10cSrcweir
302cdf0e10cSrcweir###############################################################################
303cdf0e10cSrcweir#   Print usage information.
304cdf0e10cSrcweir#
305cdf0e10cSrcweirsub usage   ()
306cdf0e10cSrcweir{
307cdf0e10cSrcweir    print <<END_OF_USAGE;
308cdf0e10cSrcweirusage: $0 <option>* [<output-file-name>]
309cdf0e10cSrcweir
310cdf0e10cSrcweiroutput-file-name defaults to alltransitions.odp.
311cdf0e10cSrcweir
312cdf0e10cSrcweiroptions: -a    Generate _all_ combinations of type, subtype,
313cdf0e10cSrcweir               direction, and mode
314cdf0e10cSrcweir         -h    Print this usage information.
315cdf0e10cSrcweirEND_OF_USAGE
316cdf0e10cSrcweir}
317cdf0e10cSrcweir
318cdf0e10cSrcweir###############################################################################
319cdf0e10cSrcweir#   Process the command line.
320cdf0e10cSrcweir#
321cdf0e10cSrcweirsub process_command_line
322cdf0e10cSrcweir{
323cdf0e10cSrcweir    foreach (@ARGV)
324cdf0e10cSrcweir    {
325cdf0e10cSrcweir        if (/^-h/)
326cdf0e10cSrcweir        {
327cdf0e10cSrcweir            usage;
328cdf0e10cSrcweir            exit 0;
329cdf0e10cSrcweir        }
330cdf0e10cSrcweir    }
331cdf0e10cSrcweir
332cdf0e10cSrcweir    $global_gen_all=0;
333cdf0e10cSrcweir    $global_output_name = "alltransitions.odp";
334cdf0e10cSrcweir
335cdf0e10cSrcweir    my  $j = 0;
336cdf0e10cSrcweir    for (my $i=0; $i<=$#ARGV; $i++)
337cdf0e10cSrcweir    {
338cdf0e10cSrcweir        if ($ARGV[$i] eq "-a")
339cdf0e10cSrcweir        {
340cdf0e10cSrcweir            $global_gen_all=1;
341cdf0e10cSrcweir        }
342cdf0e10cSrcweir        elsif ($ARGV[$i] =~ /^-/)
343cdf0e10cSrcweir        {
344cdf0e10cSrcweir            print "Unknown option $ARGV[$i]\n";
345cdf0e10cSrcweir            usage;
346cdf0e10cSrcweir            exit 1;
347cdf0e10cSrcweir        }
348cdf0e10cSrcweir        elsif ($#ARGV == $i )
349cdf0e10cSrcweir        {
350cdf0e10cSrcweir            $global_output_name = $ARGV[$i];
351cdf0e10cSrcweir        }
352cdf0e10cSrcweir    }
353cdf0e10cSrcweir
354cdf0e10cSrcweir    print "output to $global_output_name\n";
355cdf0e10cSrcweir}
356cdf0e10cSrcweir
357cdf0e10cSrcweir$transitionsRef = [
358cdf0e10cSrcweir
359cdf0e10cSrcweir                ["barWipe",
360cdf0e10cSrcweir                 ["leftToRight",
361cdf0e10cSrcweir                  "topToBottom"]],
362cdf0e10cSrcweir
363cdf0e10cSrcweir                ["blindsWipe",
364cdf0e10cSrcweir                 ["vertical",
365cdf0e10cSrcweir                  "horizontal"]],
366cdf0e10cSrcweir
367cdf0e10cSrcweir                ["boxWipe",
368cdf0e10cSrcweir                 ["topLeft",
369cdf0e10cSrcweir                  "topRight",
370cdf0e10cSrcweir                  "bottomRight",
371cdf0e10cSrcweir                  "bottomLeft",
372cdf0e10cSrcweir                  "topCenter",
373cdf0e10cSrcweir                  "rightCenter",
374cdf0e10cSrcweir                  "bottomCenter",
375cdf0e10cSrcweir                  "leftCenter"]],
376cdf0e10cSrcweir
377cdf0e10cSrcweir                ["fourBoxWipe",
378cdf0e10cSrcweir                 ["cornersIn",
379cdf0e10cSrcweir                  "cornersOut"]],
380cdf0e10cSrcweir
381cdf0e10cSrcweir                ["barnDoorWipe",
382cdf0e10cSrcweir                 ["vertical",
383cdf0e10cSrcweir                  "horizontal",
384cdf0e10cSrcweir                  "diagonalBottomLeft",
385cdf0e10cSrcweir                  "diagonalTopLeft"]],
386cdf0e10cSrcweir
387cdf0e10cSrcweir                ["bowTieWipe",
388cdf0e10cSrcweir                 ["vertical",
389cdf0e10cSrcweir                  "horizontal"]],
390cdf0e10cSrcweir
391cdf0e10cSrcweir                ["miscDiagonalWipe",
392cdf0e10cSrcweir                 ["doubleBarnDoor",
393cdf0e10cSrcweir                  "doubleDiamond"]],
394cdf0e10cSrcweir
395cdf0e10cSrcweir                ["veeWipe",
396cdf0e10cSrcweir                 ["down",
397cdf0e10cSrcweir                  "left",
398cdf0e10cSrcweir                  "up",
399cdf0e10cSrcweir                  "right"]],
400cdf0e10cSrcweir
401cdf0e10cSrcweir                ["barnVeeWipe",
402cdf0e10cSrcweir                 ["top",
403cdf0e10cSrcweir                  "left",
404cdf0e10cSrcweir                  "up",
405cdf0e10cSrcweir                  "right"]],
406cdf0e10cSrcweir
407cdf0e10cSrcweir                ["zigZagWipe",
408cdf0e10cSrcweir                 ["leftToRight",
409cdf0e10cSrcweir                  "topToBottom"]],
410cdf0e10cSrcweir
411cdf0e10cSrcweir                ["barnZigZagWipe",
412cdf0e10cSrcweir                 ["vertical",
413cdf0e10cSrcweir                  "horizontal"]],
414cdf0e10cSrcweir
415cdf0e10cSrcweir                ["irisWipe",
416cdf0e10cSrcweir                 ["rectangle",
417cdf0e10cSrcweir                  "diamond"]],
418cdf0e10cSrcweir
419cdf0e10cSrcweir                ["triangleWipe",
420cdf0e10cSrcweir                 ["up",
421cdf0e10cSrcweir                  "right",
422cdf0e10cSrcweir                  "down",
423cdf0e10cSrcweir                  "left"]],
424cdf0e10cSrcweir
425cdf0e10cSrcweir                ["arrowHeadWipe",
426cdf0e10cSrcweir                 ["up",
427cdf0e10cSrcweir                  "right",
428cdf0e10cSrcweir                  "down",
429cdf0e10cSrcweir                  "left"]],
430cdf0e10cSrcweir
431cdf0e10cSrcweir                ["pentagonWipe",
432cdf0e10cSrcweir                 ["up",
433cdf0e10cSrcweir                  "down"]],
434cdf0e10cSrcweir
435cdf0e10cSrcweir                ["hexagonWipe",
436cdf0e10cSrcweir                 ["horizontal",
437cdf0e10cSrcweir                  "vertical"]],
438cdf0e10cSrcweir
439cdf0e10cSrcweir                ["ellipseWipe",
440cdf0e10cSrcweir                 ["circle",
441cdf0e10cSrcweir                  "horizontal",
442cdf0e10cSrcweir                  "vertical"]],
443cdf0e10cSrcweir
444cdf0e10cSrcweir                ["eyeWipe",
445cdf0e10cSrcweir                 ["vertical",
446cdf0e10cSrcweir                  "horizontal"]],
447cdf0e10cSrcweir
448cdf0e10cSrcweir                ["roundRectWipe",
449cdf0e10cSrcweir                 ["horizontal",
450cdf0e10cSrcweir                  "vertical"]],
451cdf0e10cSrcweir
452cdf0e10cSrcweir                ["starWipe",
453cdf0e10cSrcweir                 ["fourPoint",
454cdf0e10cSrcweir                  "fivePoint",
455cdf0e10cSrcweir                  "sixPoint"]],
456cdf0e10cSrcweir
457cdf0e10cSrcweir                ["miscShapeWipe",
458cdf0e10cSrcweir                 ["heart",
459cdf0e10cSrcweir                  "keyhole"]],
460cdf0e10cSrcweir
461cdf0e10cSrcweir                ["clockWipe",
462cdf0e10cSrcweir                 ["clockwiseTwelve",
463cdf0e10cSrcweir                  "clockwiseThree",
464cdf0e10cSrcweir                  "clockwiseSix",
465cdf0e10cSrcweir                  "clockwiseNine"]],
466cdf0e10cSrcweir
467cdf0e10cSrcweir                ["pinWheelWipe",
468cdf0e10cSrcweir                 ["oneBlade",
469cdf0e10cSrcweir                  "twoBladeVertical",
470cdf0e10cSrcweir                  "twoBladeHorizontal",
471cdf0e10cSrcweir                  "threeBlade",
472cdf0e10cSrcweir                  "fourBlade",
473cdf0e10cSrcweir                  "eightBlade"]],
474cdf0e10cSrcweir
475cdf0e10cSrcweir                ["singleSweepWipe",
476cdf0e10cSrcweir                 ["clockwiseTop",
477cdf0e10cSrcweir                  "clockwiseRight",
478cdf0e10cSrcweir                  "clockwiseBottom",
479cdf0e10cSrcweir                  "clockwiseLeft",
480cdf0e10cSrcweir                  "clockwiseTopLeft",
481cdf0e10cSrcweir                  "counterClockwiseBottomLeft",
482cdf0e10cSrcweir                  "clockwiseBottomRight",
483cdf0e10cSrcweir                  "counterClockwiseTopRight"]],
484cdf0e10cSrcweir
485cdf0e10cSrcweir                ["fanWipe",
486cdf0e10cSrcweir                 ["centerTop",
487cdf0e10cSrcweir                  "centerRight",
488cdf0e10cSrcweir                  "top",
489cdf0e10cSrcweir                  "right",
490cdf0e10cSrcweir                  "bottom",
491cdf0e10cSrcweir                  "left"]],
492cdf0e10cSrcweir
493cdf0e10cSrcweir                ["doubleFanWipe",
494cdf0e10cSrcweir                 ["fanOutVertical",
495cdf0e10cSrcweir                  "fanOutHorizontal",
496cdf0e10cSrcweir                  "fanInVertical",
497cdf0e10cSrcweir                  "fanInHorizontal"]],
498cdf0e10cSrcweir
499cdf0e10cSrcweir                ["doubleSweepWipe",
500cdf0e10cSrcweir                 ["parallelVertical",
501cdf0e10cSrcweir                  "parallelDiagonal",
502cdf0e10cSrcweir                  "oppositeVertical",
503cdf0e10cSrcweir                  "oppositeHorizontal",
504cdf0e10cSrcweir                  "parallelDiagonalTopLeft",
505cdf0e10cSrcweir                  "parallelDiagonalBottomLeft"]],
506cdf0e10cSrcweir
507cdf0e10cSrcweir                ["saloonDoorWipe",
508cdf0e10cSrcweir                 ["top",
509cdf0e10cSrcweir                  "left",
510cdf0e10cSrcweir                  "bottom",
511cdf0e10cSrcweir                  "right"]],
512cdf0e10cSrcweir
513cdf0e10cSrcweir                ["windshieldWipe",
514cdf0e10cSrcweir                 ["right",
515cdf0e10cSrcweir                  "up",
516cdf0e10cSrcweir                  "vertical",
517cdf0e10cSrcweir                  "horizontal"]],
518cdf0e10cSrcweir
519cdf0e10cSrcweir                ["snakeWipe",
520cdf0e10cSrcweir                 ["topLeftHorizontal",
521cdf0e10cSrcweir                  "topLeftVertical",
522cdf0e10cSrcweir                  "topLeftDiagonal",
523cdf0e10cSrcweir                  "topRightDiagonal",
524cdf0e10cSrcweir                  "bottomRightDiagonal",
525cdf0e10cSrcweir                  "bottomLeftDiagonal"]],
526cdf0e10cSrcweir
527cdf0e10cSrcweir                ["spiralWipe",
528cdf0e10cSrcweir                 ["topLeftClockwise",
529cdf0e10cSrcweir                  "topRightClockwise",
530cdf0e10cSrcweir                  "bottomRightClockwise",
531cdf0e10cSrcweir                  "bottomLeftClockwise",
532cdf0e10cSrcweir                  "topLeftCounterClockwise",
533cdf0e10cSrcweir                  "topRightCounterClockwise",
534cdf0e10cSrcweir                  "bottomRightCounterClockwise",
535cdf0e10cSrcweir                  "bottomLeftCounterClockwise"]],
536cdf0e10cSrcweir
537cdf0e10cSrcweir                ["parallelSnakesWipe",
538cdf0e10cSrcweir                 ["verticalTopSame",
539cdf0e10cSrcweir                  "verticalBottomSame",
540cdf0e10cSrcweir                  "verticalTopLeftOpposite",
541cdf0e10cSrcweir                  "verticalBottomLeftOpposite",
542cdf0e10cSrcweir                  "horizontalLeftSame",
543cdf0e10cSrcweir                  "horizontalRightSame",
544cdf0e10cSrcweir                  "horizontalTopLeftOpposite",
545cdf0e10cSrcweir                  "horizontalTopRightOpposite",
546cdf0e10cSrcweir                  "diagonalBottomLeftOpposite",
547cdf0e10cSrcweir                  "diagonalTopLeftOpposite"]],
548cdf0e10cSrcweir
549cdf0e10cSrcweir                ["boxSnakesWipe",
550cdf0e10cSrcweir                 ["twoBoxTop",
551cdf0e10cSrcweir                  "twoBoxLeft",
552cdf0e10cSrcweir                  "twoBoxRight",
553cdf0e10cSrcweir                  "fourBoxVertical",
554cdf0e10cSrcweir                  "fourBoxHorizontal"]],
555cdf0e10cSrcweir
556cdf0e10cSrcweir                ["waterfallWipe",
557cdf0e10cSrcweir                 ["verticalLeft",
558cdf0e10cSrcweir                  "verticalRight",
559cdf0e10cSrcweir                  "horizontalLeft",
560cdf0e10cSrcweir                  "horizontalRight"]],
561cdf0e10cSrcweir
562cdf0e10cSrcweir                ["pushWipe",
563cdf0e10cSrcweir                 ["fromLeft",
564cdf0e10cSrcweir                  "fromTop",
565cdf0e10cSrcweir                  "fromRight",
566cdf0e10cSrcweir                  "fromBottom",
567cdf0e10cSrcweir                  "fromBottomRight",
568cdf0e10cSrcweir                  "fromBottomLeft",
569cdf0e10cSrcweir                  "fromTopRight",
570cdf0e10cSrcweir                  "fromTopLeft",
571cdf0e10cSrcweir                  "combHorizontal",
572cdf0e10cSrcweir                  "combVertical"]],
573cdf0e10cSrcweir
574cdf0e10cSrcweir                ["slideWipe",
575cdf0e10cSrcweir                 ["fromLeft",
576cdf0e10cSrcweir                  "fromTop",
577cdf0e10cSrcweir                  "fromRight",
578cdf0e10cSrcweir                  "fromBottom"]],
579cdf0e10cSrcweir
580cdf0e10cSrcweir                ["fade",
581cdf0e10cSrcweir                 ["crossfade",
582cdf0e10cSrcweir                  "fadeToColor",
583cdf0e10cSrcweir                  "fadeFromColor",
584cdf0e10cSrcweir                  "fadeOverColor"]],
585cdf0e10cSrcweir
586cdf0e10cSrcweir                ["randomBarWipe",
587cdf0e10cSrcweir                 ["vertical",
588cdf0e10cSrcweir                  "horizontal"]],
589cdf0e10cSrcweir
590cdf0e10cSrcweir                ["checkerBoardWipe",
591cdf0e10cSrcweir                 ["down",
592cdf0e10cSrcweir                  "across"]],
593cdf0e10cSrcweir
594cdf0e10cSrcweir                ["dissolve",
595cdf0e10cSrcweir                 ["default"]]
596cdf0e10cSrcweir];
597cdf0e10cSrcweir
598cdf0e10cSrcweir$propertiesRef = [
599cdf0e10cSrcweir                    [ "value", "color", "#000000", "#FF0000" ],
600cdf0e10cSrcweir
601cdf0e10cSrcweir                    [ "string", "font-family",  "Helvetica",  "Times New Roman" ],
602cdf0e10cSrcweir
603cdf0e10cSrcweir                    [ "value", "font-size", "1pt", "1.5pt" ],
604cdf0e10cSrcweir
605cdf0e10cSrcweir                    [ "string", "font-style", "normal", "italic" ],
606cdf0e10cSrcweir
607cdf0e10cSrcweir                    [ "string", "text-underline", "none", "solid" ],
608cdf0e10cSrcweir
609cdf0e10cSrcweir                    [ "string", "font-weight", "normal", "bold" ],
610cdf0e10cSrcweir
611cdf0e10cSrcweir                    [ "value", "fill-color", "#000000", "#00FF00" ],
612cdf0e10cSrcweir
613cdf0e10cSrcweir                    [ "string", "fill", "none", "solid" ],
614cdf0e10cSrcweir
615cdf0e10cSrcweir                    [ "value", "height", "0.5*height", "height" ],
616cdf0e10cSrcweir
617cdf0e10cSrcweir                    [ "value", "stroke-color", "#000000", "#0000FF" ],
618cdf0e10cSrcweir
619cdf0e10cSrcweir                    [ "string", "stroke", "none", "solid" ],
620cdf0e10cSrcweir
621cdf0e10cSrcweir                    [ "value", "opacity", "0.0", "0.9" ],
622cdf0e10cSrcweir
623cdf0e10cSrcweir                    [ "value", "rotate", "0", "90" ],
624cdf0e10cSrcweir
625cdf0e10cSrcweir                    [ "value", "skewX", "0", "-1" ],
626cdf0e10cSrcweir
627cdf0e10cSrcweir                    [ "value", "skewY", "0", "-1" ],
628cdf0e10cSrcweir
629cdf0e10cSrcweir                    [ "string", "visibility", "hidden", "visible" ],
630cdf0e10cSrcweir
631cdf0e10cSrcweir                    [ "value", "width", "0.5*width", "width" ],
632cdf0e10cSrcweir
633cdf0e10cSrcweir                    [ "value", "x", "x-0.1", "x+0.1" ],
634cdf0e10cSrcweir
635cdf0e10cSrcweir                    [ "value", "y", "y-0.1", "y+0.1" ]
636cdf0e10cSrcweir    ];
637cdf0e10cSrcweir
638cdf0e10cSrcweir$transformsRef = [
639cdf0e10cSrcweir    ["translate", "0.5*width,0.5*height"],
640cdf0e10cSrcweir    ["scale", "0.5*width,0.5*height"],
641cdf0e10cSrcweir    ["rotate", "270"],
642cdf0e10cSrcweir    ["skewX", "-1"],
643cdf0e10cSrcweir    ["skewY", "1"]
644cdf0e10cSrcweir];
645cdf0e10cSrcweir
646cdf0e10cSrcweir
647cdf0e10cSrcweir###############################################################################
648cdf0e10cSrcweir#   Main
649cdf0e10cSrcweir###############################################################################
650cdf0e10cSrcweir
651cdf0e10cSrcweir$ZipCmd = $ENV{LOG_FILE_ZIP_CMD};
652cdf0e10cSrcweir$ZipFlags = $ENV{LOG_FILE_ZIP_FLAGS};
653cdf0e10cSrcweir#   Provide default values for the zip command and it's flags.
654cdf0e10cSrcweirif ( ! defined $ZipCmd)
655cdf0e10cSrcweir{
656cdf0e10cSrcweir    $ZipCmd = "zip" unless defined $ZipCmd;
657cdf0e10cSrcweir    $ZipFlags = "-r -q" unless defined $ZipFlags;
658cdf0e10cSrcweir}
659cdf0e10cSrcweir
660cdf0e10cSrcweirprocess_command_line();
661cdf0e10cSrcweir
662cdf0e10cSrcweirwriteManifest();
663cdf0e10cSrcweir
664cdf0e10cSrcweir$OUT = open_file( "content.xml" );
665cdf0e10cSrcweir
666cdf0e10cSrcweirwriteHeader();
667cdf0e10cSrcweir
668cdf0e10cSrcweir$transitionNum=0;
669cdf0e10cSrcweirwriteSlideHeader($transitionNum, "Transition effects");
670cdf0e10cSrcweir
671cdf0e10cSrcweirforeach $transitionRef (@$transitionsRef)
672cdf0e10cSrcweir{
673cdf0e10cSrcweir    $transitionType = @$transitionRef[0];
674cdf0e10cSrcweir
675cdf0e10cSrcweir    foreach $subtype (@{$transitionRef->[1]})
676cdf0e10cSrcweir    {
677cdf0e10cSrcweir        writeTransitionAnimation($transitionNum,
678cdf0e10cSrcweir                                 $transitionType,
679cdf0e10cSrcweir                                 $subtype);
680cdf0e10cSrcweir    }
681cdf0e10cSrcweir}
682cdf0e10cSrcweir
683cdf0e10cSrcweirwriteSlideFooter();
684cdf0e10cSrcweir
685cdf0e10cSrcweirwriteSlideHeader(++$transitionNum, "Property effects");
686cdf0e10cSrcweir
687cdf0e10cSrcweirforeach $propertyRef (@$propertiesRef)
688cdf0e10cSrcweir{
689cdf0e10cSrcweir    $propertyType = @$propertyRef[0];
690cdf0e10cSrcweir
691cdf0e10cSrcweir    if( $propertyType eq "value" )
692cdf0e10cSrcweir    {
693cdf0e10cSrcweir        writePropertyAnimation( $transitionNum, @$propertyRef[1], @$propertyRef[2], @$propertyRef[3] );
694cdf0e10cSrcweir    }
695cdf0e10cSrcweir    elsif( $propertyType eq "string" )
696cdf0e10cSrcweir    {
697cdf0e10cSrcweir    }
698cdf0e10cSrcweir    else
699cdf0e10cSrcweir    {
700cdf0e10cSrcweir        die "Unexpected case";
701cdf0e10cSrcweir    }
702cdf0e10cSrcweir}
703cdf0e10cSrcweir
704cdf0e10cSrcweirwriteSlideFooter();
705cdf0e10cSrcweir
706cdf0e10cSrcweirwriteSlideHeader(++$transitionNum, "Transformation effects");
707cdf0e10cSrcweir
708cdf0e10cSrcweirforeach $transformRef (@$transformsRef)
709cdf0e10cSrcweir{
710cdf0e10cSrcweir    writeTransformAnimation( $transitionNum, @$transformRef[0], @$transformRef[1] );
711cdf0e10cSrcweir}
712cdf0e10cSrcweir
713cdf0e10cSrcweirwriteSlideFooter();
714cdf0e10cSrcweir
715cdf0e10cSrcweirwriteSlideHeader(++$transitionNum, "Path motion effects");
716cdf0e10cSrcweirwritePathMotionAnimation($transitionNum);
717cdf0e10cSrcweirwriteSlideFooter();
718cdf0e10cSrcweir
719cdf0e10cSrcweir    print $OUT qq~
720cdf0e10cSrcweir    <draw:page draw:name="page1" draw:style-name="dp1" draw:master-page-name="Default">
721cdf0e10cSrcweir       <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
722cdf0e10cSrcweir       <draw:rect draw:style-name="gr1" draw:text-style-name="P1" draw:id="id10000" draw:layer="layout" svg:width="17.5cm" svg:height="13cm" svg:x="5cm" svg:y="4cm">
723cdf0e10cSrcweir        <text:p text:style-name="P2">Slide: 4</text:p>
724cdf0e10cSrcweir        <text:p text:style-name="P2">Topic: Misc effects</text:p>
725cdf0e10cSrcweir        <text:p text:id="textid10001" text:style-name="P2">Some text to show accelerate effects</text:p>
726cdf0e10cSrcweir        <text:p text:id="textid10002" text:style-name="P2">Some text to show decelerate effects</text:p>
727cdf0e10cSrcweir        <text:p text:id="textid10003" text:style-name="P2">Some text to show additive effects</text:p>
728cdf0e10cSrcweir        <text:p text:id="textid10004" text:style-name="P2">Some text to show autoreverse effects</text:p>
729cdf0e10cSrcweir        <text:p text:id="textid10005" text:style-name="P2">Some text to show key value effects</text:p>
730cdf0e10cSrcweir        <text:p text:id="textid10006" text:style-name="P2">Some text to show discrete key value effects</text:p>
731cdf0e10cSrcweir        <text:p text:id="textid10007" text:style-name="P2">Some text to show formula effects</text:p>
732cdf0e10cSrcweir       </draw:rect>
733cdf0e10cSrcweir      <anim:par presentation:node-type="timing-root">
734cdf0e10cSrcweir        <anim:seq presentation:node-type="main-sequence">
735cdf0e10cSrcweir
736cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
737cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:targetElement="textid10001" smil:attributeName="visibility" smil:to="visible"/>
738cdf0e10cSrcweir            <anim:animate smil:begin="0s" smil:dur="10s" smil:fill="hold" smil:targetElement="textid10001" smil:accelerate="0.5" smil:attributeName="x" smil:by="0.3" presentation:additive="base"/>
739cdf0e10cSrcweir          </anim:par>
740cdf0e10cSrcweir
741cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
742cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:targetElement="textid10002" smil:attributeName="visibility" smil:to="visible"/>
743cdf0e10cSrcweir            <anim:animate smil:begin="0s" smil:dur="10s" smil:fill="hold" smil:targetElement="textid10002" smil:decelerate="0.5" smil:attributeName="x" smil:by="0.3" presentation:additive="base"/>
744cdf0e10cSrcweir          </anim:par>
745cdf0e10cSrcweir
746cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
747cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:targetElement="textid10003" smil:attributeName="visibility" smil:to="visible"/>
748cdf0e10cSrcweir            <anim:animate smil:begin="0s" smil:dur="3s" smil:fill="hold" smil:targetElement="textid10003" smil:attributeName="x" smil:to="0.3" presentation:additive="sum"/>
749cdf0e10cSrcweir            <anim:animate smil:begin="0s" smil:dur="6s" smil:fill="hold" smil:targetElement="textid10003" smil:attributeName="x" smil:to="0.3" presentation:additive="sum"/>
750cdf0e10cSrcweir          </anim:par>
751cdf0e10cSrcweir
752cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
753cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:targetElement="textid10004" smil:attributeName="visibility" smil:to="visible"/>
754cdf0e10cSrcweir            <anim:animate smil:begin="0s" smil:dur="5s" smil:fill="hold" smil:targetElement="textid10004" smil:attributeName="y" smil:from="0.3" smil:to="0.8" smil:autoReverse="true" presentation:additive="base"/>
755cdf0e10cSrcweir          </anim:par>
756cdf0e10cSrcweir
757cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
758cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:targetElement="textid10005" smil:attributeName="visibility" smil:to="visible"/>
759cdf0e10cSrcweir            <anim:animateTransform smil:begin="0s" smil:dur="10s" smil:fill="hold" smil:targetElement="textid10005" smil:values="0.5,0.5;0.8,0.5;0.8,0.8;0.5,0.5" smil:keyTimes="0;0.3;0.6;1" presentation:additive="base" svg:type="translate"/>
760cdf0e10cSrcweir          </anim:par>
761cdf0e10cSrcweir
762cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
763cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:targetElement="textid10006" smil:attributeName="visibility" smil:to="visible"/>
764cdf0e10cSrcweir            <anim:animateTransform smil:begin="0s" smil:dur="10s" smil:fill="hold" smil:targetElement="textid10006" smil:values="0.5,0.5;0.8,0.5;0.8,0.8;0.5,0.5" smil:keyTimes="0;0.3;0.6;1" smil:calcMode="discrete" presentation:additive="base" svg:type="translate"/>
765cdf0e10cSrcweir          </anim:par>
766cdf0e10cSrcweir
767cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
768cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:targetElement="textid10007" smil:attributeName="visibility" smil:to="visible"/>
769cdf0e10cSrcweir            <anim:animate smil:begin="0s" smil:dur="3s" smil:fill="hold" smil:targetElement="textid10007" smil:attributeName="y" smil:values="0;1" smil:keyTimes="0;1" anim:formula="y+0.3*height*sin(5*pi*\$)" presentation:additive="base"/>
770cdf0e10cSrcweir          </anim:par>
771cdf0e10cSrcweir~;
772cdf0e10cSrcweir
773cdf0e10cSrcweirwriteSlideFooter();
774cdf0e10cSrcweir
775cdf0e10cSrcweir# iterate, single paragraphs, word, lines, sentences, characters
776cdf0e10cSrcweir
777cdf0e10cSrcweir    print $OUT qq~
778cdf0e10cSrcweir    <draw:page draw:name="page1" draw:style-name="dp1" draw:master-page-name="Default">
779cdf0e10cSrcweir       <office:forms form:automatic-focus="false" form:apply-design-mode="false"/>
780cdf0e10cSrcweir       <draw:rect draw:style-name="gr1" draw:text-style-name="P1" draw:id="id20000" draw:layer="layout" svg:width="17.5cm" svg:height="13cm" svg:x="5cm" svg:y="4cm">
781cdf0e10cSrcweir        <text:p text:style-name="P2">Slide: 5</text:p>
782cdf0e10cSrcweir        <text:p text:style-name="P2">Topic: Text effects</text:p>
783cdf0e10cSrcweir        <text:p text:id="textid20001" text:style-name="P2">Some text to show iterated single paragraph</text:p>
784cdf0e10cSrcweir        <text:p text:id="textid20002" text:style-name="P2">Some text to show iterated word-by-word effects</text:p>
785cdf0e10cSrcweir        <text:p text:id="textid20003" text:style-name="P2">Some text to show iterated letter-by-letter effects</text:p>
786cdf0e10cSrcweir        <text:p text:id="textid20004" text:style-name="P2">Some more text</text:p>
787cdf0e10cSrcweir        <text:p text:id="textid20005" text:style-name="P2">Some more text</text:p>
788cdf0e10cSrcweir        <text:p text:id="textid20006" text:style-name="P2">Some more text</text:p>
789cdf0e10cSrcweir        <text:p text:id="textid20007" text:style-name="P2">Some more text</text:p>
790cdf0e10cSrcweir        <text:p text:id="textid20008" text:style-name="P2">Some more text</text:p>
791cdf0e10cSrcweir       </draw:rect>
792cdf0e10cSrcweir      <anim:par presentation:node-type="timing-root">
793cdf0e10cSrcweir        <anim:seq presentation:node-type="main-sequence">
794cdf0e10cSrcweir
795cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
796cdf0e10cSrcweir            <anim:iterate smil:begin="0s" smil:fill="hold" smil:targetElement="id20000" anim:iterate-type="by-paragraph" anim:iterate-interval="0.2s">
797cdf0e10cSrcweir               <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
798cdf0e10cSrcweir               <anim:animate smil:begin="0s" smil:dur="2s" smil:fill="hold" smil:decelerate="0.5" smil:attributeName="x" smil:from="1.0" smil:to="x" presentation:additive="base"/>
799cdf0e10cSrcweir            </anim:iterate>
800cdf0e10cSrcweir          </anim:par>
801cdf0e10cSrcweir
802cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
803cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:targetElement="id20000" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
804cdf0e10cSrcweir            <anim:iterate smil:begin="0s" smil:fill="hold" smil:targetElement="textid20002" anim:iterate-type="by-word" anim:iterate-interval="0.2s">
805cdf0e10cSrcweir               <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
806cdf0e10cSrcweir               <anim:animate smil:begin="0s" smil:dur="2s" smil:fill="hold" smil:decelerate="0.5" smil:attributeName="x" smil:from="1.0" smil:to="x" presentation:additive="base"/>
807cdf0e10cSrcweir            </anim:iterate>
808cdf0e10cSrcweir          </anim:par>
809cdf0e10cSrcweir
810cdf0e10cSrcweir          <anim:par smil:begin="0s" smil:fill="remove">
811cdf0e10cSrcweir            <anim:set smil:begin="0s" smil:dur="0.001s" smil:targetElement="id20000" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
812cdf0e10cSrcweir            <anim:iterate smil:begin="0s" smil:fill="hold" smil:targetElement="textid20003" anim:iterate-type="by-letter" anim:iterate-interval="0.2s">
813cdf0e10cSrcweir               <anim:set smil:begin="0s" smil:dur="0.001s" smil:fill="hold" smil:attributeName="visibility" smil:to="visible"/>
814cdf0e10cSrcweir               <anim:animate smil:begin="0s" smil:dur="2s" smil:fill="hold" smil:decelerate="0.5" smil:attributeName="x" smil:from="1.0" smil:to="x" presentation:additive="base"/>
815cdf0e10cSrcweir            </anim:iterate>
816cdf0e10cSrcweir          </anim:par>
817cdf0e10cSrcweir~;
818cdf0e10cSrcweir
819cdf0e10cSrcweirwriteSlideFooter();
820cdf0e10cSrcweir
821cdf0e10cSrcweirwriteFooter();
822cdf0e10cSrcweir
823cdf0e10cSrcweir$OUT->close;
824cdf0e10cSrcweir
825cdf0e10cSrcweirzip_dirtree ($global_output_name);
826