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