swfmill 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. data/.document +5 -0
  2. data/.gitignore +23 -0
  3. data/.swfmill +240 -0
  4. data/LICENSE +340 -0
  5. data/README.rdoc +37 -0
  6. data/Rakefile +59 -0
  7. data/VERSION +1 -0
  8. data/ext/.gitignore +5 -0
  9. data/ext/extconf.rb +86 -0
  10. data/ext/swfmill/.gitignore +27 -0
  11. data/ext/swfmill/AUTHORS +9 -0
  12. data/ext/swfmill/COPYING +340 -0
  13. data/ext/swfmill/Makefile.am +14 -0
  14. data/ext/swfmill/Makefile.in +635 -0
  15. data/ext/swfmill/NEWS +189 -0
  16. data/ext/swfmill/README +170 -0
  17. data/ext/swfmill/TODO +33 -0
  18. data/ext/swfmill/aclocal.m4 +7712 -0
  19. data/ext/swfmill/autogen.sh +7 -0
  20. data/ext/swfmill/compile +142 -0
  21. data/ext/swfmill/config.guess +1516 -0
  22. data/ext/swfmill/config.sub +1626 -0
  23. data/ext/swfmill/configure +21868 -0
  24. data/ext/swfmill/configure.ac +55 -0
  25. data/ext/swfmill/depcomp +589 -0
  26. data/ext/swfmill/install-sh +519 -0
  27. data/ext/swfmill/ltmain.sh +6964 -0
  28. data/ext/swfmill/missing +367 -0
  29. data/ext/swfmill/src/Geom.cpp +107 -0
  30. data/ext/swfmill/src/Geom.h +100 -0
  31. data/ext/swfmill/src/Makefile.am +86 -0
  32. data/ext/swfmill/src/Makefile.in +1025 -0
  33. data/ext/swfmill/src/SWF.h +11941 -0
  34. data/ext/swfmill/src/SWFAction.cpp +41 -0
  35. data/ext/swfmill/src/SWFAction.h +19 -0
  36. data/ext/swfmill/src/SWFBasic.h +7 -0
  37. data/ext/swfmill/src/SWFFile.cpp +406 -0
  38. data/ext/swfmill/src/SWFFile.h +34 -0
  39. data/ext/swfmill/src/SWFFilter.cpp +25 -0
  40. data/ext/swfmill/src/SWFFilter.h +15 -0
  41. data/ext/swfmill/src/SWFGlyphList.cpp +262 -0
  42. data/ext/swfmill/src/SWFGlyphList.h +34 -0
  43. data/ext/swfmill/src/SWFIdItem.h +85 -0
  44. data/ext/swfmill/src/SWFIdItems.h +16 -0
  45. data/ext/swfmill/src/SWFItem.cpp +235 -0
  46. data/ext/swfmill/src/SWFItem.h +60 -0
  47. data/ext/swfmill/src/SWFList.h +179 -0
  48. data/ext/swfmill/src/SWFReader.cpp +352 -0
  49. data/ext/swfmill/src/SWFReader.h +73 -0
  50. data/ext/swfmill/src/SWFShapeItem.cpp +220 -0
  51. data/ext/swfmill/src/SWFShapeItem.h +45 -0
  52. data/ext/swfmill/src/SWFShapeMaker.cpp +401 -0
  53. data/ext/swfmill/src/SWFShapeMaker.h +128 -0
  54. data/ext/swfmill/src/SWFTag.cpp +49 -0
  55. data/ext/swfmill/src/SWFTag.h +20 -0
  56. data/ext/swfmill/src/SWFTrait.cpp +35 -0
  57. data/ext/swfmill/src/SWFTrait.h +22 -0
  58. data/ext/swfmill/src/SWFWriter.cpp +312 -0
  59. data/ext/swfmill/src/SWFWriter.h +84 -0
  60. data/ext/swfmill/src/base64.c +110 -0
  61. data/ext/swfmill/src/base64.h +15 -0
  62. data/ext/swfmill/src/codegen/Makefile.am +15 -0
  63. data/ext/swfmill/src/codegen/Makefile.in +346 -0
  64. data/ext/swfmill/src/codegen/basic.xsl +45 -0
  65. data/ext/swfmill/src/codegen/basics.xsl +235 -0
  66. data/ext/swfmill/src/codegen/dumper.xsl +109 -0
  67. data/ext/swfmill/src/codegen/header.xsl +131 -0
  68. data/ext/swfmill/src/codegen/mk.xsl +26 -0
  69. data/ext/swfmill/src/codegen/parser.xsl +196 -0
  70. data/ext/swfmill/src/codegen/parsexml.xsl +312 -0
  71. data/ext/swfmill/src/codegen/size.xsl +189 -0
  72. data/ext/swfmill/src/codegen/source.xml +2197 -0
  73. data/ext/swfmill/src/codegen/writer.xsl +190 -0
  74. data/ext/swfmill/src/codegen/writexml.xsl +138 -0
  75. data/ext/swfmill/src/swfmill.cpp +482 -0
  76. data/ext/swfmill/src/swft/Makefile.am +55 -0
  77. data/ext/swfmill/src/swft/Makefile.in +717 -0
  78. data/ext/swfmill/src/swft/Parser.cpp +76 -0
  79. data/ext/swfmill/src/swft/Parser.h +37 -0
  80. data/ext/swfmill/src/swft/SVGAttributeParser.cpp +78 -0
  81. data/ext/swfmill/src/swft/SVGAttributeParser.h +35 -0
  82. data/ext/swfmill/src/swft/SVGColor.cpp +116 -0
  83. data/ext/swfmill/src/swft/SVGColor.h +37 -0
  84. data/ext/swfmill/src/swft/SVGColors.h +167 -0
  85. data/ext/swfmill/src/swft/SVGGradient.cpp +258 -0
  86. data/ext/swfmill/src/swft/SVGGradient.h +81 -0
  87. data/ext/swfmill/src/swft/SVGPathParser.cpp +155 -0
  88. data/ext/swfmill/src/swft/SVGPathParser.h +126 -0
  89. data/ext/swfmill/src/swft/SVGPointsParser.cpp +51 -0
  90. data/ext/swfmill/src/swft/SVGPointsParser.h +25 -0
  91. data/ext/swfmill/src/swft/SVGStyle.cpp +181 -0
  92. data/ext/swfmill/src/swft/SVGStyle.h +80 -0
  93. data/ext/swfmill/src/swft/SVGTransformParser.cpp +72 -0
  94. data/ext/swfmill/src/swft/SVGTransformParser.h +32 -0
  95. data/ext/swfmill/src/swft/readpng.c +305 -0
  96. data/ext/swfmill/src/swft/readpng.h +92 -0
  97. data/ext/swfmill/src/swft/swft.cpp +251 -0
  98. data/ext/swfmill/src/swft/swft.h +64 -0
  99. data/ext/swfmill/src/swft/swft_document.cpp +57 -0
  100. data/ext/swfmill/src/swft/swft_import.cpp +38 -0
  101. data/ext/swfmill/src/swft/swft_import_binary.cpp +82 -0
  102. data/ext/swfmill/src/swft/swft_import_jpeg.cpp +255 -0
  103. data/ext/swfmill/src/swft/swft_import_mp3.cpp +268 -0
  104. data/ext/swfmill/src/swft/swft_import_png.cpp +231 -0
  105. data/ext/swfmill/src/swft/swft_import_ttf.cpp +519 -0
  106. data/ext/swfmill/src/swft/swft_import_wav.cpp +255 -0
  107. data/ext/swfmill/src/swft/swft_path.cpp +178 -0
  108. data/ext/swfmill/src/xslt/Makefile.am +51 -0
  109. data/ext/swfmill/src/xslt/Makefile.in +536 -0
  110. data/ext/swfmill/src/xslt/README +19 -0
  111. data/ext/swfmill/src/xslt/assemble.xsl +38 -0
  112. data/ext/swfmill/src/xslt/simple-deprecated.xslt +62 -0
  113. data/ext/swfmill/src/xslt/simple-elements.xslt +627 -0
  114. data/ext/swfmill/src/xslt/simple-import.xslt +565 -0
  115. data/ext/swfmill/src/xslt/simple-svg.xslt +383 -0
  116. data/ext/swfmill/src/xslt/simple-tools.xslt +255 -0
  117. data/ext/swfmill/src/xslt/simple.cpp +1686 -0
  118. data/ext/swfmill/src/xslt/simple.xml +7 -0
  119. data/ext/swfmill/src/xslt/xslt.h +7 -0
  120. data/ext/swfmill/test/Makefile.am +1 -0
  121. data/ext/swfmill/test/Makefile.in +490 -0
  122. data/ext/swfmill/test/xml/Makefile.am +20 -0
  123. data/ext/swfmill/test/xml/Makefile.in +353 -0
  124. data/ext/swfmill/test/xml/test-xml +21 -0
  125. data/ext/swfmill_ext.cc +375 -0
  126. data/lib/swfmill.rb +30 -0
  127. data/spec/data/swfmill-banner1.swf +0 -0
  128. data/spec/spec.opts +1 -0
  129. data/spec/spec_helper.rb +14 -0
  130. data/spec/swfmill_spec.rb +125 -0
  131. metadata +206 -0
@@ -0,0 +1,565 @@
1
+ <?xml version="1.0"?>
2
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3
+ xmlns:swft="http://subsignal.org/swfml/swft"
4
+ xmlns:str="http://exslt.org/strings"
5
+ xmlns:math="http://exslt.org/math"
6
+ extension-element-prefixes="swft"
7
+ version='1.0'>
8
+
9
+
10
+ <xsl:template match="clip[@import]|sound[@import]">
11
+ <xsl:variable name="id">
12
+ <xsl:choose>
13
+ <xsl:when test="@id">
14
+ <xsl:value-of select="swft:map-id(@id)"/>
15
+ </xsl:when>
16
+ <xsl:otherwise>
17
+ <xsl:value-of select="swft:next-id()"/>
18
+ </xsl:otherwise>
19
+ </xsl:choose>
20
+ </xsl:variable>
21
+ <xsl:variable name="file">
22
+ <xsl:value-of select="@import"/>
23
+ </xsl:variable>
24
+ <xsl:variable name="mask">
25
+ <xsl:value-of select="@mask"/>
26
+ </xsl:variable>
27
+ <xsl:variable name="ext">
28
+ <xsl:value-of select="translate(substring(@import,string-length(@import)-2),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
29
+ </xsl:variable>
30
+ <xsl:choose>
31
+ <xsl:when test="@mask">
32
+ <xsl:apply-templates select="swft:import-jpega($file,$mask)" mode="makeswf">
33
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
34
+ </xsl:apply-templates>
35
+ </xsl:when>
36
+ <xsl:when test="$ext = 'jpg' or $ext = 'peg'">
37
+ <xsl:apply-templates select="swft:import-jpeg($file)" mode="makeswf">
38
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
39
+ </xsl:apply-templates>
40
+ </xsl:when>
41
+ <xsl:when test="$ext = 'png'">
42
+ <xsl:apply-templates select="swft:import-png($file)" mode="makeswf">
43
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
44
+ </xsl:apply-templates>
45
+ </xsl:when>
46
+ <xsl:when test="$ext = 'swf'">
47
+ <xsl:apply-templates select="swft:document($file)" mode="makeswf">
48
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
49
+ </xsl:apply-templates>
50
+ </xsl:when>
51
+ <!-- this is stupid, shouldnt be used.
52
+ <xsl:when test="$ext = 'ttf'">
53
+ <xsl:apply-templates select="swft:import-ttf($file,@glyphs,'hello')" mode="makeswf">
54
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
55
+ </xsl:apply-templates>
56
+ </xsl:when>
57
+ -->
58
+ <xsl:when test="$ext = 'svg'">
59
+ <swft:push-map/>
60
+ <xsl:apply-templates select="document($file)" mode="svg">
61
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
62
+ <xsl:with-param name="export">
63
+ <xsl:choose>
64
+ <xsl:when test="@export"><xsl:value-of select="@export"/></xsl:when>
65
+ <xsl:otherwise>all</xsl:otherwise>
66
+ </xsl:choose>
67
+ </xsl:with-param>
68
+ </xsl:apply-templates>
69
+ <swft:pop-map/>
70
+ </xsl:when>
71
+ <xsl:when test="$ext = 'mp3'">
72
+ <xsl:apply-templates select="swft:import-mp3($file)" mode="makeswf">
73
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
74
+ </xsl:apply-templates>
75
+ </xsl:when>
76
+ <xsl:when test="$ext = 'wav'">
77
+ <xsl:apply-templates select="swft:import-wav($file)" mode="makeswf">
78
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
79
+ </xsl:apply-templates>
80
+ </xsl:when>
81
+ <xsl:otherwise>
82
+ <xsl:message>WARNING: Cannot import <xsl:value-of select="$file"/> (unknown extension), skipping.</xsl:message>
83
+ </xsl:otherwise>
84
+ </xsl:choose>
85
+ <xsl:if test="ancestor::library">
86
+ <xsl:apply-templates select="*|@*" mode="export">
87
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
88
+ </xsl:apply-templates>
89
+ </xsl:if>
90
+ <xsl:if test="@class">
91
+ <xsl:call-template name="register-class">
92
+ <xsl:with-param name="class" select="@class"/>
93
+ <xsl:with-param name="linkage-id" select="@id"/>
94
+ </xsl:call-template>
95
+ </xsl:if>
96
+ </xsl:template>
97
+
98
+ <xsl:template match="bitmap[@import]">
99
+ <xsl:variable name="id">
100
+ <xsl:choose>
101
+ <xsl:when test="@id">
102
+ <xsl:value-of select="swft:map-id(@id)"/>
103
+ </xsl:when>
104
+ <xsl:otherwise>
105
+ <xsl:value-of select="swft:next-id()"/>
106
+ </xsl:otherwise>
107
+ </xsl:choose>
108
+ </xsl:variable>
109
+ <xsl:variable name="file">
110
+ <xsl:value-of select="@import"/>
111
+ </xsl:variable>
112
+ <xsl:variable name="mask">
113
+ <xsl:value-of select="@mask"/>
114
+ </xsl:variable>
115
+ <xsl:variable name="ext">
116
+ <xsl:value-of select="translate(substring(@import,string-length(@import)-2),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
117
+ </xsl:variable>
118
+ <xsl:choose>
119
+ <xsl:when test="@mask">
120
+ <xsl:apply-templates select="swft:import-jpega($file,$mask)" mode="bitmap">
121
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
122
+ </xsl:apply-templates>
123
+ </xsl:when>
124
+ <xsl:when test="$ext = 'jpg' or $ext = 'peg'">
125
+ <xsl:apply-templates select="swft:import-jpeg($file)" mode="bitmap">
126
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
127
+ </xsl:apply-templates>
128
+ </xsl:when>
129
+ <xsl:when test="$ext = 'png'">
130
+ <xsl:apply-templates select="swft:import-png($file)" mode="bitmap">
131
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
132
+ </xsl:apply-templates>
133
+ </xsl:when>
134
+ <xsl:otherwise>
135
+ <xsl:message>WARNING: Cannot import <xsl:value-of select="$file"/> (unknown extension), skipping.</xsl:message>
136
+ </xsl:otherwise>
137
+ </xsl:choose>
138
+ <xsl:if test="ancestor::library">
139
+ <xsl:apply-templates select="*|@*" mode="export">
140
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
141
+ </xsl:apply-templates>
142
+ </xsl:if>
143
+ </xsl:template>
144
+
145
+ <xsl:template match="font[@import]">
146
+ <xsl:variable name="id">
147
+ <xsl:choose>
148
+ <xsl:when test="@id">
149
+ <xsl:value-of select="swft:map-id(@id)"/>
150
+ </xsl:when>
151
+ <xsl:otherwise>
152
+ <xsl:value-of select="swft:next-id()"/>
153
+ </xsl:otherwise>
154
+ </xsl:choose>
155
+ </xsl:variable>
156
+ <xsl:variable name="file">
157
+ <xsl:value-of select="@import"/>
158
+ </xsl:variable>
159
+ <xsl:variable name="offset">
160
+ <xsl:choose>
161
+ <xsl:when test="@symbol='true'">
162
+ <xsl:value-of select="-61440"/>
163
+ </xsl:when>
164
+ <xsl:otherwise>
165
+ <xsl:value-of select="0"/>
166
+ </xsl:otherwise>
167
+ </xsl:choose>
168
+ </xsl:variable>
169
+
170
+ <xsl:apply-templates select="swft:import-ttf($file,$movie-version,@glyphs,@name,$offset)" mode="makeswf">
171
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
172
+ </xsl:apply-templates>
173
+
174
+ <xsl:if test="ancestor::library">
175
+ <xsl:apply-templates select="*|@*" mode="export">
176
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
177
+ </xsl:apply-templates>
178
+ </xsl:if>
179
+ </xsl:template>
180
+
181
+ <xsl:template match="binary[@import]">
182
+ <xsl:variable name="id">
183
+ <xsl:choose>
184
+ <xsl:when test="@id">
185
+ <xsl:value-of select="swft:map-id(@id)"/>
186
+ </xsl:when>
187
+ <xsl:otherwise>
188
+ <xsl:value-of select="swft:next-id()"/>
189
+ </xsl:otherwise>
190
+ </xsl:choose>
191
+ </xsl:variable>
192
+ <xsl:variable name="file">
193
+ <xsl:value-of select="@import"/>
194
+ </xsl:variable>
195
+
196
+ <xsl:apply-templates select="swft:import-binary($file)" mode="makeswf">
197
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
198
+ </xsl:apply-templates>
199
+
200
+ <xsl:if test="ancestor::library">
201
+ <xsl:apply-templates select="*|@*" mode="export">
202
+ <xsl:with-param name="id"><xsl:value-of select="$id"/></xsl:with-param>
203
+ </xsl:apply-templates>
204
+ </xsl:if>
205
+ </xsl:template>
206
+
207
+ <!-- device fonts -->
208
+ <xsl:template match="font" priority="-1">
209
+ <xsl:variable name="id">
210
+ <xsl:choose>
211
+ <xsl:when test="@id">
212
+ <xsl:value-of select="swft:map-id(@id)"/>
213
+ </xsl:when>
214
+ <xsl:otherwise>
215
+ <xsl:value-of select="swft:next-id()"/>
216
+ </xsl:otherwise>
217
+ </xsl:choose>
218
+ </xsl:variable>
219
+ <DefineFont2 objectID="{$id}" isShiftJIS="0" isUnicode="0" isANSII="0" wideGlyphOffsets="0" italic="0" bold="0" language="1" name="{@name}">
220
+ </DefineFont2>
221
+ </xsl:template>
222
+
223
+ <!-- JPEG import -->
224
+ <xsl:template match="jpeg" mode="makeswf">
225
+ <xsl:param name="id"/>
226
+ <xsl:variable name="bitmapID"><xsl:value-of select="swft:next-id()"/></xsl:variable>
227
+ <xsl:variable name="shapeID"><xsl:value-of select="swft:next-id()"/></xsl:variable>
228
+ <DefineBitsJPEG2 objectID="{$bitmapID}">
229
+ <data>
230
+ <xsl:copy-of select="data"/>
231
+ </data>
232
+ </DefineBitsJPEG2>
233
+ <DefineShape objectID="{$shapeID}">
234
+ <bounds>
235
+ <Rectangle left="0" right="{@width}" top="0" bottom="{@height}"/>
236
+ </bounds>
237
+ <styles>
238
+ <StyleList>
239
+ <fillStyles>
240
+ <ClippedBitmap objectID="{$bitmapID}">
241
+ <matrix>
242
+ <Transform transX="0" transY="0"/>
243
+ </matrix>
244
+ </ClippedBitmap>
245
+ </fillStyles>
246
+ <lineStyles/>
247
+ </StyleList>
248
+ </styles>
249
+ <shapes>
250
+ <Shape>
251
+ <edges>
252
+ <ShapeSetup x="{@width}" y="{@height}" fillStyle1="1"/>
253
+ <LineTo x="-{@width}" y="0"/>
254
+ <LineTo x="0" y="-{@height}"/>
255
+ <LineTo x="{@width}" y="0"/>
256
+ <LineTo x="0" y="{@height}"/>
257
+ <ShapeSetup/>
258
+ </edges>
259
+ </Shape>
260
+ </shapes>
261
+ </DefineShape>
262
+ <DefineSprite objectID="{$id}" frames="1">
263
+ <tags>
264
+ <PlaceObject2 replace="0" depth="1" objectID="{$shapeID}">
265
+ <transform>
266
+ <Transform transX="0" transY="0" scaleX="20" scaleY="20"/>
267
+ </transform>
268
+ </PlaceObject2>
269
+ <ShowFrame/>
270
+ <End/>
271
+ </tags>
272
+ </DefineSprite>
273
+ </xsl:template>
274
+
275
+ <!-- JPEG-A import -->
276
+ <xsl:template match="jpega" mode="makeswf">
277
+ <xsl:param name="id"/>
278
+ <xsl:variable name="bitmapID"><xsl:value-of select="swft:next-id()"/></xsl:variable>
279
+ <xsl:variable name="shapeID"><xsl:value-of select="swft:next-id()"/></xsl:variable>
280
+ <DefineBitsJPEG3 objectID="{$bitmapID}" offset_to_alpha="{@offset_to_alpha}">
281
+ <data>
282
+ <xsl:copy-of select="data"/>
283
+ </data>
284
+ </DefineBitsJPEG3>
285
+ <DefineShape objectID="{$shapeID}">
286
+ <bounds>
287
+ <Rectangle left="0" right="{@width}" top="0" bottom="{@height}"/>
288
+ </bounds>
289
+ <styles>
290
+ <StyleList>
291
+ <fillStyles>
292
+ <ClippedBitmap objectID="{$bitmapID}">
293
+ <matrix>
294
+ <Transform transX="0" transY="0"/>
295
+ </matrix>
296
+ </ClippedBitmap>
297
+ </fillStyles>
298
+ <lineStyles/>
299
+ </StyleList>
300
+ </styles>
301
+ <shapes>
302
+ <Shape>
303
+ <edges>
304
+ <ShapeSetup x="{@width}" y="{@height}" fillStyle1="1"/>
305
+ <LineTo x="-{@width}" y="0"/>
306
+ <LineTo x="0" y="-{@height}"/>
307
+ <LineTo x="{@width}" y="0"/>
308
+ <LineTo x="0" y="{@height}"/>
309
+ <ShapeSetup/>
310
+ </edges>
311
+ </Shape>
312
+ </shapes>
313
+ </DefineShape>
314
+ <DefineSprite objectID="{$id}" frames="1">
315
+ <tags>
316
+ <PlaceObject2 replace="0" depth="1" objectID="{$shapeID}">
317
+ <transform>
318
+ <Transform transX="0" transY="0" scaleX="20" scaleY="20"/>
319
+ </transform>
320
+ </PlaceObject2>
321
+ <ShowFrame/>
322
+ <End/>
323
+ </tags>
324
+ </DefineSprite>
325
+ </xsl:template>
326
+
327
+ <!-- PNG import -->
328
+ <xsl:template match="png" mode="makeswf">
329
+ <xsl:param name="id"/>
330
+ <xsl:variable name="bitmapID"><xsl:value-of select="swft:next-id()"/></xsl:variable>
331
+ <xsl:variable name="shapeID"><xsl:value-of select="swft:next-id()"/></xsl:variable>
332
+ <DefineBitsLossless2 format="{@format}" width="{@width}" height="{@height}" n_colormap="{@n_colormap}" objectID="{$bitmapID}">
333
+ <data>
334
+ <xsl:copy-of select="data"/>
335
+ </data>
336
+ </DefineBitsLossless2>
337
+ <DefineShape objectID="{$shapeID}">
338
+ <bounds>
339
+ <Rectangle left="0" right="{@width}" top="0" bottom="{@height}"/>
340
+ </bounds>
341
+ <styles>
342
+ <StyleList>
343
+ <fillStyles>
344
+ <ClippedBitmap objectID="{$bitmapID}">
345
+ <matrix>
346
+ <Transform transX="0" transY="0"/>
347
+ </matrix>
348
+ </ClippedBitmap>
349
+ </fillStyles>
350
+ <lineStyles/>
351
+ </StyleList>
352
+ </styles>
353
+ <shapes>
354
+ <Shape>
355
+ <edges>
356
+ <ShapeSetup x="{@width}" y="{@height}" fillStyle1="1"/>
357
+ <LineTo x="-{@width}" y="0"/>
358
+ <LineTo x="0" y="-{@height}"/>
359
+ <LineTo x="{@width}" y="0"/>
360
+ <LineTo x="0" y="{@height}"/>
361
+ <ShapeSetup/>
362
+ </edges>
363
+ </Shape>
364
+ </shapes>
365
+ </DefineShape>
366
+ <DefineSprite objectID="{$id}" frames="1">
367
+ <tags>
368
+ <PlaceObject2 replace="0" depth="1" objectID="{$shapeID}">
369
+ <transform>
370
+ <Transform transX="0" transY="0" scaleX="20" scaleY="20"/>
371
+ </transform>
372
+ </PlaceObject2>
373
+ <ShowFrame/>
374
+ <End/>
375
+ </tags>
376
+ </DefineSprite>
377
+ </xsl:template>
378
+
379
+
380
+ <!-- direct bitmap import (not placing them in a clip) -->
381
+ <xsl:template match="jpeg" mode="bitmap">
382
+ <xsl:param name="id"/>
383
+ <DefineBitsJPEG2 objectID="{$id}">
384
+ <data>
385
+ <xsl:copy-of select="data"/>
386
+ </data>
387
+ </DefineBitsJPEG2>
388
+ </xsl:template>
389
+
390
+ <xsl:template match="jpega" mode="bitmap">
391
+ <xsl:param name="id"/>
392
+ <DefineBitsJPEG3 objectID="{$id}" offset_to_alpha="{@offset_to_alpha}">
393
+ <data>
394
+ <xsl:copy-of select="data"/>
395
+ </data>
396
+ </DefineBitsJPEG3>
397
+ </xsl:template>
398
+
399
+ <xsl:template match="png" mode="bitmap">
400
+ <xsl:param name="id"/>
401
+ <DefineBitsLossless2 format="{@format}" width="{@width}" height="{@height}" n_colormap="{@n_colormap}" objectID="{$id}">
402
+ <data>
403
+ <xsl:copy-of select="data"/>
404
+ </data>
405
+ </DefineBitsLossless2>
406
+ </xsl:template>
407
+
408
+
409
+ <!-- SWF import -->
410
+ <xsl:template match="swf" mode="makeswf">
411
+ <xsl:param name="id"/>
412
+ <swft:push-map/>
413
+
414
+ <xsl:apply-templates select="Header/tags/*" mode="sprite-global"/>
415
+
416
+ <DefineSprite objectID="{$id}" frames="{count(Header/tags/ShowFrame)}">
417
+ <tags>
418
+ <xsl:apply-templates select="Header/tags/*" mode="sprite-local"/>
419
+ </tags>
420
+ </DefineSprite>
421
+ <swft:pop-map/>
422
+ </xsl:template>
423
+
424
+ <!-- binary import -->
425
+ <xsl:template match="binary" mode="makeswf">
426
+ <xsl:param name="id"/>
427
+ <DefineBinaryData objectID="{$id}">
428
+ <data>
429
+ <xsl:copy-of select="data"/>
430
+ </data>
431
+ </DefineBinaryData>
432
+ </xsl:template>
433
+
434
+ <!-- global id remapping -->
435
+ <xsl:template match="@objectID|@fontRef|@sprite" mode="idmap">
436
+ <xsl:attribute name="{name()}"><xsl:value-of select="swft:map-id(.)"/></xsl:attribute>
437
+ </xsl:template>
438
+ <xsl:template match="text()" mode="idmap" priority="-1">
439
+ <xsl:copy select="."/>
440
+ </xsl:template>
441
+ <xsl:template match="@*" mode="idmap" priority="-1">
442
+ <xsl:copy select="."/>
443
+ </xsl:template>
444
+ <xsl:template match="*" mode="idmap" priority="-1">
445
+ <xsl:copy select=".">
446
+ <xsl:apply-templates select="@*" mode="idmap"/>
447
+ <xsl:apply-templates mode="idmap"/>
448
+ </xsl:copy>
449
+ </xsl:template>
450
+
451
+ <!-- for tags that are "globalized" -->
452
+ <xsl:template match="SetBackgroundColor|FileAttributes" mode="sprite-global"/>
453
+ <xsl:template match="DoAction|End|FrameLabel|PlaceObject|PlaceObject2|RemoveObject|RemoveObject2|ShowFrame|SoundStreamBlock|SoundStreamHead|StartSound" mode="sprite-global"/>
454
+ <xsl:template match="*|@*|text()" mode="sprite-global" priority="-1">
455
+ <xsl:apply-templates select="." mode="idmap"/>
456
+ </xsl:template>
457
+
458
+ <!-- for tags that move into the DefineSprite -->
459
+ <xsl:template match="DoAction|End|FrameLabel|PlaceObject|PlaceObject2|RemoveObject|RemoveObject2|ShowFrame|SoundStreamBlock|SoundStreamHead|StartSound" mode="sprite-local">
460
+ <xsl:apply-templates select="." mode="idmap"/>
461
+ </xsl:template>
462
+ <xsl:template match="*|@*|text()" mode="sprite-local" priority="-1"/>
463
+
464
+
465
+
466
+ <!-- component import (experimental) -->
467
+ <xsl:template match="component">
468
+
469
+ <xsl:variable name="name" select="@id"/>
470
+ <xsl:variable name="component" select="swft:document(@file)"/>
471
+
472
+ <swft:push-map/>
473
+ <xsl:apply-templates select="$component/swf/Header/tags/*" mode="component"/>
474
+ <xsl:variable name="id" select="swft:map-id($component/swf/Header/tags/Export/symbols/Symbol[@name = $name]/@objectID)"/>
475
+ <swft:pop-map/>
476
+
477
+ <xsl:value-of select="swft:set-map($name,$id)"/>
478
+ <xsl:message>New ID of "<xsl:value-of select="$name"/>" component is: <xsl:value-of select="$id"/></xsl:message>
479
+
480
+ </xsl:template>
481
+
482
+ <xsl:template match="PlaceObject2|ShowFrame|End" mode="component"/>
483
+ <xsl:template match="*" mode="component" priority="-1">
484
+ <xsl:apply-templates select="." mode="idmap"/>
485
+ </xsl:template>
486
+
487
+
488
+ <!-- shared library import -->
489
+ <xsl:template match="import">
490
+ <xsl:choose>
491
+ <xsl:when test="number(/movie/@version) >= 8">
492
+ <ImportAssets2 url="{@url}" reserved1="1" reserved2="0">
493
+ <symbols>
494
+ <xsl:if test="@symbol">
495
+ <Symbol objectID="{swft:map-id(@symbol)}" name="{@symbol}"/>
496
+ </xsl:if>
497
+ <xsl:if test="@file">
498
+ <xsl:apply-templates select="swft:document(@file)/swf/Header/tags/Export/symbols/*" mode="import"/>
499
+ </xsl:if>
500
+ </symbols>
501
+ </ImportAssets2>
502
+ </xsl:when>
503
+ <xsl:otherwise>
504
+ <Import url="{@url}">
505
+ <symbols>
506
+ <xsl:if test="@symbol">
507
+ <Symbol objectID="{swft:map-id(@symbol)}" name="{@symbol}"/>
508
+ </xsl:if>
509
+ <xsl:if test="@file">
510
+ <xsl:apply-templates select="swft:document(@file)/swf/Header/tags/Export/symbols/*" mode="import"/>
511
+ </xsl:if>
512
+ </symbols>
513
+ </Import>
514
+ </xsl:otherwise>
515
+ </xsl:choose>
516
+ </xsl:template>
517
+
518
+ <xsl:template match="Symbol" mode="import">
519
+ <Symbol objectID="{swft:map-id(@name)}" name="{@name}"/>
520
+ </xsl:template>
521
+
522
+
523
+
524
+ <!-- TTF import -->
525
+ <xsl:template match="ttf" mode="makeswf">
526
+ <xsl:param name="id"/>
527
+ <xsl:choose>
528
+ <xsl:when test="$movie-version >= 8">
529
+ <DefineFont3 objectID="{$id}">
530
+ <xsl:copy-of select="DefineFont3/*|DefineFont3/@*[name() != 'objectID']"/>
531
+ </DefineFont3>
532
+ </xsl:when>
533
+ <xsl:otherwise>
534
+ <DefineFont2 objectID="{$id}">
535
+ <xsl:copy-of select="DefineFont2/*|DefineFont2/@*[name() != 'objectID']"/>
536
+ </DefineFont2>
537
+ </xsl:otherwise>
538
+ </xsl:choose>
539
+ </xsl:template>
540
+
541
+ <!-- MP3 import -->
542
+ <xsl:template match="mp3" mode="makeswf">
543
+ <xsl:param name="id"/>
544
+ <DefineSound objectID="{$id}" format="{@format}" rate="{@rate}" is16bit="{@is16bit}" stereo="{@stereo}" samples="{@samples}">
545
+ <data>
546
+ <xsl:copy-of select="data"/>
547
+ </data>
548
+ </DefineSound>
549
+ </xsl:template>
550
+
551
+ <!-- wav import -->
552
+ <xsl:template match="wav" mode="makeswf">
553
+ <xsl:param name="id"/>
554
+ <DefineSound objectID="{$id}" format="{@format}" rate="{@rate}" is16bit="{@is16bit}" stereo="{@stereo}" samples="{@samples}">
555
+ <data>
556
+ <xsl:copy-of select="data"/>
557
+ </data>
558
+ </DefineSound>
559
+ </xsl:template>
560
+
561
+ <xsl:template match="include[@file]">
562
+ <xsl:apply-templates select="document(@file)/movie/*"/>
563
+ </xsl:template>
564
+
565
+ </xsl:stylesheet>