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