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