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