gfx/skia/trunk/src/animator/SkAnimateSchema.xsd

Thu, 15 Jan 2015 15:55:04 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:55:04 +0100
branch
TOR_BUG_9701
changeset 9
a63d609f5ebe
permissions
-rw-r--r--

Back out 97036ab72558 which inappropriately compared turds to third parties.

michael@0 1 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
michael@0 2 xmlns:Sk="urn:screenplay" targetNamespace="urn:screenplay">
michael@0 3
michael@0 4 <!-- /** Animate
michael@0 5 An ID of an element of type <animate> or <set>
michael@0 6 */ -->
michael@0 7 <xs:simpleType name="Animate">
michael@0 8 <xs:restriction base="xs:string"/>
michael@0 9 </xs:simpleType>
michael@0 10
michael@0 11 <!-- /** 3D_Point
michael@0 12 An array of three floats in ECMAScript notation: [x, y, z].
michael@0 13 */ -->
michael@0 14 <xs:simpleType name="3D_Point">
michael@0 15 <xs:restriction base="xs:string">
michael@0 16 <xs:pattern value="[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)( *, *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)){2}" />
michael@0 17 </xs:restriction>
michael@0 18 </xs:simpleType>
michael@0 19
michael@0 20 <!-- /** ARGB
michael@0 21 The red, green, blue, and optional alpha color components.
michael@0 22 */ -->
michael@0 23 <xs:simpleType name="ARGB">
michael@0 24 <xs:restriction base="xs:string">
michael@0 25 <!-- @pattern #[0-9a-fA-F]{3} #rgb contains three hexadecimal digits. #rgb is equivalent to 0xFFrrggbb. -->
michael@0 26 <xs:pattern value="#[0-9a-fA-F]{3}"/>
michael@0 27 <!-- @pattern #[0-9a-fA-F]{4} #argb contains four hexadecimal digits. #argb is equivalent to 0xaarrggbb. -->
michael@0 28 <xs:pattern value="#[0-9a-fA-F]{4}"/>
michael@0 29 <!-- @pattern #[0-9a-fA-F]{6} #rrggbb contains six hexadecimal digits. #rrggbb is equivalent to 0xFFrrggbb. -->
michael@0 30 <xs:pattern value="#[0-9a-fA-F]{6}"/>
michael@0 31 <!-- @pattern #[0-9a-fA-F]{8} #aarrggbb contains eight hexadecimal digits. #aarrggbb is equivalent to 0xaarrggbb. -->
michael@0 32 <xs:pattern value="#[0-9a-fA-F]{8}"/>
michael@0 33 <!-- @pattern 0[xX][0-9a-fA-F]{8} 0xaarrggbb describes the color as a packed hexadecimal; each pair of digits
michael@0 34 corresponds to alpha, red, green, and blue respectively. -->
michael@0 35 <xs:pattern value="0[xX][0-9a-fA-F]{8}"/>
michael@0 36 <!-- @pattern rgb\(\d+{1,3},\d+{1,3},\d+{1,3}\) rgb(r, g, b) describes color with three integers ranging from 0 to 255,
michael@0 37 corresponding to red, green, and blue respectively. -->
michael@0 38 <xs:pattern value="rgb\(\d+{1,3},\d+{1,3},\d+{1,3}\)"/>
michael@0 39 <!-- @patternList Color can be described by the following standard CSS color names. -->
michael@0 40 <xs:pattern value="aliceblue"/>
michael@0 41 <xs:pattern value="antiquewhite"/>
michael@0 42 <xs:pattern value="aqua"/>
michael@0 43 <xs:pattern value="aquamarine"/>
michael@0 44 <xs:pattern value="azure"/>
michael@0 45 <xs:pattern value="beige"/>
michael@0 46 <xs:pattern value="bisque"/>
michael@0 47 <xs:pattern value="black"/>
michael@0 48 <xs:pattern value="blanchedalmond"/>
michael@0 49 <xs:pattern value="blue"/>
michael@0 50 <xs:pattern value="blueviolet"/>
michael@0 51 <xs:pattern value="brown"/>
michael@0 52 <xs:pattern value="burlywood"/>
michael@0 53 <xs:pattern value="cadetblue"/>
michael@0 54 <xs:pattern value="chartreuse"/>
michael@0 55 <xs:pattern value="chocolate"/>
michael@0 56 <xs:pattern value="coral"/>
michael@0 57 <xs:pattern value="cornflowerblue"/>
michael@0 58 <xs:pattern value="cornsilk"/>
michael@0 59 <xs:pattern value="crimson"/>
michael@0 60 <xs:pattern value="cyan"/>
michael@0 61 <xs:pattern value="darkblue"/>
michael@0 62 <xs:pattern value="darkcyan"/>
michael@0 63 <xs:pattern value="darkgoldenrod"/>
michael@0 64 <xs:pattern value="darkgray"/>
michael@0 65 <xs:pattern value="darkgreen"/>
michael@0 66 <xs:pattern value="darkkhaki"/>
michael@0 67 <xs:pattern value="darkmagenta"/>
michael@0 68 <xs:pattern value="darkolivegreen"/>
michael@0 69 <xs:pattern value="darkorange"/>
michael@0 70 <xs:pattern value="darkorchid"/>
michael@0 71 <xs:pattern value="darkred"/>
michael@0 72 <xs:pattern value="darksalmon"/>
michael@0 73 <xs:pattern value="darkseagreen"/>
michael@0 74 <xs:pattern value="darkslateblue"/>
michael@0 75 <xs:pattern value="darkslategray"/>
michael@0 76 <xs:pattern value="darkturquoise"/>
michael@0 77 <xs:pattern value="darkviolet"/>
michael@0 78 <xs:pattern value="deeppink"/>
michael@0 79 <xs:pattern value="deepskyblue"/>
michael@0 80 <xs:pattern value="dimgray"/>
michael@0 81 <xs:pattern value="dodgerblue"/>
michael@0 82 <xs:pattern value="firebrick"/>
michael@0 83 <xs:pattern value="floralwhite"/>
michael@0 84 <xs:pattern value="forestgreen"/>
michael@0 85 <xs:pattern value="fuchsia"/>
michael@0 86 <xs:pattern value="gainsboro"/>
michael@0 87 <xs:pattern value="ghostwhite"/>
michael@0 88 <xs:pattern value="gold"/>
michael@0 89 <xs:pattern value="goldenrod"/>
michael@0 90 <xs:pattern value="gray"/>
michael@0 91 <xs:pattern value="green"/>
michael@0 92 <xs:pattern value="greenyellow"/>
michael@0 93 <xs:pattern value="honeydew"/>
michael@0 94 <xs:pattern value="hotpink"/>
michael@0 95 <xs:pattern value="indianred"/>
michael@0 96 <xs:pattern value="indigo"/>
michael@0 97 <xs:pattern value="ivory"/>
michael@0 98 <xs:pattern value="khaki"/>
michael@0 99 <xs:pattern value="lavender"/>
michael@0 100 <xs:pattern value="lavenderblush"/>
michael@0 101 <xs:pattern value="lawngreen"/>
michael@0 102 <xs:pattern value="lemonchiffon"/>
michael@0 103 <xs:pattern value="lightblue"/>
michael@0 104 <xs:pattern value="lightcoral"/>
michael@0 105 <xs:pattern value="lightcyan"/>
michael@0 106 <xs:pattern value="lightgoldenrodyellow"/>
michael@0 107 <xs:pattern value="lightgreen"/>
michael@0 108 <xs:pattern value="lightgrey"/>
michael@0 109 <xs:pattern value="lightpink"/>
michael@0 110 <xs:pattern value="lightsalmon"/>
michael@0 111 <xs:pattern value="lightseagreen"/>
michael@0 112 <xs:pattern value="lightskyblue"/>
michael@0 113 <xs:pattern value="lightslategray"/>
michael@0 114 <xs:pattern value="lightsteelblue"/>
michael@0 115 <xs:pattern value="lightyellow"/>
michael@0 116 <xs:pattern value="lime"/>
michael@0 117 <xs:pattern value="limegreen"/>
michael@0 118 <xs:pattern value="linen"/>
michael@0 119 <xs:pattern value="magenta"/>
michael@0 120 <xs:pattern value="maroon"/>
michael@0 121 <xs:pattern value="mediumaquamarine"/>
michael@0 122 <xs:pattern value="mediumblue"/>
michael@0 123 <xs:pattern value="mediumorchid"/>
michael@0 124 <xs:pattern value="mediumpurple"/>
michael@0 125 <xs:pattern value="mediumseagreen"/>
michael@0 126 <xs:pattern value="mediumslateblue"/>
michael@0 127 <xs:pattern value="mediumspringgreen"/>
michael@0 128 <xs:pattern value="mediumturquoise"/>
michael@0 129 <xs:pattern value="mediumvioletred"/>
michael@0 130 <xs:pattern value="midnightblue"/>
michael@0 131 <xs:pattern value="mintcream"/>
michael@0 132 <xs:pattern value="mistyrose"/>
michael@0 133 <xs:pattern value="moccasin"/>
michael@0 134 <xs:pattern value="navajowhite"/>
michael@0 135 <xs:pattern value="navy"/>
michael@0 136 <xs:pattern value="oldlace"/>
michael@0 137 <xs:pattern value="olive"/>
michael@0 138 <xs:pattern value="olivedrab"/>
michael@0 139 <xs:pattern value="orange"/>
michael@0 140 <xs:pattern value="orangered"/>
michael@0 141 <xs:pattern value="orchid"/>
michael@0 142 <xs:pattern value="palegoldenrod"/>
michael@0 143 <xs:pattern value="palegreen"/>
michael@0 144 <xs:pattern value="paleturquoise"/>
michael@0 145 <xs:pattern value="palevioletred"/>
michael@0 146 <xs:pattern value="papayawhip"/>
michael@0 147 <xs:pattern value="peachpuff"/>
michael@0 148 <xs:pattern value="peru"/>
michael@0 149 <xs:pattern value="pink"/>
michael@0 150 <xs:pattern value="plum"/>
michael@0 151 <xs:pattern value="powderblue"/>
michael@0 152 <xs:pattern value="purple"/>
michael@0 153 <xs:pattern value="red"/>
michael@0 154 <xs:pattern value="rosybrown"/>
michael@0 155 <xs:pattern value="royalblue"/>
michael@0 156 <xs:pattern value="saddlebrown"/>
michael@0 157 <xs:pattern value="salmon"/>
michael@0 158 <xs:pattern value="sandybrown"/>
michael@0 159 <xs:pattern value="seagreen"/>
michael@0 160 <xs:pattern value="seashell"/>
michael@0 161 <xs:pattern value="sienna"/>
michael@0 162 <xs:pattern value="silver"/>
michael@0 163 <xs:pattern value="skyblue"/>
michael@0 164 <xs:pattern value="slateblue"/>
michael@0 165 <xs:pattern value="slategray"/>
michael@0 166 <xs:pattern value="snow"/>
michael@0 167 <xs:pattern value="springgreen"/>
michael@0 168 <xs:pattern value="steelblue"/>
michael@0 169 <xs:pattern value="tan"/>
michael@0 170 <xs:pattern value="teal"/>
michael@0 171 <xs:pattern value="thistle"/>
michael@0 172 <xs:pattern value="tomato"/>
michael@0 173 <xs:pattern value="turquoise"/>
michael@0 174 <xs:pattern value="violet"/>
michael@0 175 <xs:pattern value="wheat"/>
michael@0 176 <xs:pattern value="white"/>
michael@0 177 <xs:pattern value="whitesmoke"/>
michael@0 178 <xs:pattern value="yellow"/>
michael@0 179 <!--@patternListLast -->
michael@0 180 <xs:pattern value="yellowgreen"/>
michael@0 181 </xs:restriction>
michael@0 182 </xs:simpleType>
michael@0 183
michael@0 184 <!-- /** AddMode
michael@0 185 AddMode controls how the add element adds its referenced element to the
michael@0 186 display list. By default, the referenced element remains in the add element
michael@0 187 so that the add element's use attribute may be animated to change the
michael@0 188 element it refers to. Setting the mode attribute to "immediate" causes the
michael@0 189 add element to put the referenced element in the display list directly.
michael@0 190 The move and replace elements are not affected by the mode attribute;
michael@0 191 they always move or replace the referenced element directly.
michael@0 192 */ -->
michael@0 193 <xs:simpleType name="AddMode">
michael@0 194 <xs:restriction base="xs:string">
michael@0 195 <!-- @pattern immediate Puts the referenced element in the display list. -->
michael@0 196 <xs:pattern value="immediate"/>
michael@0 197 <!-- @pattern indirect Puts the containing element in the display list. -->
michael@0 198 <xs:pattern value="indirect"/>
michael@0 199 </xs:restriction>
michael@0 200 </xs:simpleType>
michael@0 201
michael@0 202 <!-- /** Align
michael@0 203 Align places text to the left, center, or right of the text position.
michael@0 204 */ -->
michael@0 205 <xs:simpleType name="Align">
michael@0 206 <xs:restriction base="xs:string">
michael@0 207 <!-- @pattern left The first character in the text string is drawn at the text position. -->
michael@0 208 <xs:pattern value="left"/>
michael@0 209 <!-- @pattern center The text string is measured and centered on the text position. -->
michael@0 210 <xs:pattern value="center"/>
michael@0 211 <!-- @pattern right The last character in the text string is drawn to the left of the text position. -->
michael@0 212 <xs:pattern value="right"/>
michael@0 213 </xs:restriction>
michael@0 214 </xs:simpleType>
michael@0 215
michael@0 216 <!-- /** ApplyMode
michael@0 217 ApplyMode affects how the apply element animates values.
michael@0 218 */ -->
michael@0 219 <xs:simpleType name="ApplyMode">
michael@0 220 <xs:restriction base="xs:string">
michael@0 221 <!-- @pattern immediate Iterates through all animation values immediately. -->
michael@0 222 <xs:pattern value="immediate"/>
michael@0 223 <!-- @pattern once Performs the animation at once without adding the scope to
michael@0 224 the display list. -->
michael@0 225 <xs:pattern value="once"/>
michael@0 226 </xs:restriction>
michael@0 227 </xs:simpleType>
michael@0 228
michael@0 229 <!-- /** ApplyTransition
michael@0 230 ApplyTransition affects how the apply element sets the time of the animators.
michael@0 231 */ -->
michael@0 232 <xs:simpleType name="ApplyTransition">
michael@0 233 <xs:restriction base="xs:string">
michael@0 234 <!-- @pattern reverse Performs the animation in reverse. -->
michael@0 235 <xs:pattern value="reverse"/>
michael@0 236 </xs:restriction>
michael@0 237 </xs:simpleType>
michael@0 238
michael@0 239 <!-- /** Base64
michael@0 240 Base64 describes 8 bit binary using 64 character values.
michael@0 241 See http://rfc.net/rfc2045.html for the base64 format.
michael@0 242 */ -->
michael@0 243 <xs:simpleType name="Base64">
michael@0 244 <xs:restriction base="xs:string">
michael@0 245 <xs:pattern value="[A-Za-z0-9+/ ]+"/>
michael@0 246 </xs:restriction>
michael@0 247 </xs:simpleType>
michael@0 248
michael@0 249 <!-- /** BaseBitmap
michael@0 250 A reference to an image like a JPEG, GIF, or PNG; or a reference to a bitmap element
michael@0 251 that has been drawn into with a drawTo element.
michael@0 252 */ -->
michael@0 253 <xs:simpleType name="BaseBitmap">
michael@0 254 <xs:restriction base="xs:string"/>
michael@0 255 </xs:simpleType>
michael@0 256
michael@0 257 <!-- /** BitmapEncoding
michael@0 258 Used to specify the compression format for writing an image file with the snapshot element.
michael@0 259 */ -->
michael@0 260 <xs:simpleType name="BitmapEncoding">
michael@0 261 <xs:restriction base="xs:string">
michael@0 262 <!-- @pattern jpeg See http://www.jpeg.org/jpeg/ for more information about JPEG. -->
michael@0 263 <xs:pattern value="jpeg"/>
michael@0 264 <!-- @pattern png See http://www.libpng.org/pub/png/ for more information about PNG. -->
michael@0 265 <xs:pattern value="png"/>
michael@0 266 </xs:restriction>
michael@0 267 </xs:simpleType>
michael@0 268
michael@0 269 <!-- /** BitmapFormat
michael@0 270 Determines the number of bits per pixel in a bitmap.
michael@0 271 */ -->
michael@0 272 <xs:simpleType name="BitmapFormat">
michael@0 273 <xs:restriction base="xs:string">
michael@0 274 <xs:pattern value="none"/>
michael@0 275 <!-- @pattern A1 1-bit per pixel, (0 is transparent, 1 is opaque). -->
michael@0 276 <xs:pattern value="A1"/>
michael@0 277 <!-- @pattern A8 8-bits per pixel, with only alpha specified (0 is transparent, 0xFF is opaque). -->
michael@0 278 <xs:pattern value="A8"/>
michael@0 279 <!-- @pattern Index8 8-bits per pixel, using a ColorTable element to specify the colors. -->
michael@0 280 <xs:pattern value="Index8"/>
michael@0 281 <!-- @pattern RGB16 16-bits per pixel, compile-time configured to be either 555 or 565. -->
michael@0 282 <xs:pattern value="RGB16"/>
michael@0 283 <!-- @pattern RGB32 32-bits per pixel, plus alpha. -->
michael@0 284 <xs:pattern value="RGB32"/>
michael@0 285 </xs:restriction>
michael@0 286 </xs:simpleType>
michael@0 287
michael@0 288 <!-- /** Boolean
michael@0 289 Either "true" (non-zero) or "false" (zero).
michael@0 290 */ -->
michael@0 291 <xs:simpleType name="Boolean">
michael@0 292 <xs:restriction base="xs:string">
michael@0 293 <xs:pattern value="false"/>
michael@0 294 <xs:pattern value="true"/>
michael@0 295 </xs:restriction>
michael@0 296 </xs:simpleType>
michael@0 297
michael@0 298 <!-- /** Cap
michael@0 299 The values for the strokeCap attribute.
michael@0 300 */ -->
michael@0 301 <xs:simpleType name="Cap">
michael@0 302 <xs:restriction base="xs:string">
michael@0 303 <!-- @pattern butt begin and end a contour with no extension -->
michael@0 304 <xs:pattern value="butt"/>
michael@0 305 <!-- @pattern round begin and end a contour with a semi-circle extension -->
michael@0 306 <xs:pattern value="round"/>
michael@0 307 <!-- @pattern square begin and end a contour with a half square extension -->
michael@0 308 <xs:pattern value="square"/>
michael@0 309 </xs:restriction>
michael@0 310 </xs:simpleType>
michael@0 311
michael@0 312 <!-- /** Color
michael@0 313 A reference to a color element.
michael@0 314 */ -->
michael@0 315 <xs:simpleType name="Color">
michael@0 316 <xs:restriction base="xs:string"/>
michael@0 317 </xs:simpleType>
michael@0 318
michael@0 319 <!-- /** Displayable
michael@0 320 A reference to any element: @list(Displayable)
michael@0 321 */ -->
michael@0 322 <xs:simpleType name="Displayable">
michael@0 323 <xs:restriction base="xs:string"/>
michael@0 324 </xs:simpleType>
michael@0 325
michael@0 326 <!-- /** DisplayableArray
michael@0 327 An array of one or more element IDs.
michael@0 328 */ -->
michael@0 329 <xs:simpleType name="DisplayableArray">
michael@0 330 <xs:restriction base="xs:string"/>
michael@0 331 </xs:simpleType>
michael@0 332
michael@0 333 <!-- /** Drawable
michael@0 334 A reference to an element that can be drawn: @list(Drawable)
michael@0 335 */ -->
michael@0 336 <xs:simpleType name="Drawable">
michael@0 337 <xs:restriction base="xs:string"/>
michael@0 338 </xs:simpleType>
michael@0 339
michael@0 340 <!-- /** DynamicString
michael@0 341 Dynamic strings contain scripts that are re-evaluated each time the script is enabled.
michael@0 342 */ -->
michael@0 343 <xs:simpleType name="DynamicString">
michael@0 344 <xs:restriction base="xs:string"/>
michael@0 345 </xs:simpleType>
michael@0 346
michael@0 347 <!-- /** EventCode
michael@0 348 Key codes that can trigger events, usually corresponding to physical buttons on the device.
michael@0 349 */ -->
michael@0 350 <xs:simpleType name="EventCode">
michael@0 351 <xs:restriction base="xs:string">
michael@0 352 <xs:pattern value="none"/>
michael@0 353 <!-- @pattern up The up arrow. -->
michael@0 354 <xs:pattern value="up"/>
michael@0 355 <!-- @pattern down The down arrow. -->
michael@0 356 <xs:pattern value="down"/>
michael@0 357 <!-- @pattern left The left arrow. -->
michael@0 358 <xs:pattern value="left"/>
michael@0 359 <!-- @pattern right The right arrow. -->
michael@0 360 <xs:pattern value="right"/>
michael@0 361 <!-- @pattern back The back button (may not be present; the Backspace key on a PC). -->
michael@0 362 <xs:pattern value="back"/>
michael@0 363 <!-- @pattern end The end button (may not be present; the Esc key on a PC). -->
michael@0 364 <xs:pattern value="end"/>
michael@0 365 <!-- @pattern OK The OK button (the Enter key on a PC). -->
michael@0 366 <xs:pattern value="OK"/>
michael@0 367 </xs:restriction>
michael@0 368 </xs:simpleType>
michael@0 369
michael@0 370 <!-- /** EventKind
michael@0 371 Specifies how an event is triggered; by a key, when an animation ends, when the
michael@0 372 document is loaded, or when this event is triggered by the user's C++ or XML.
michael@0 373 */ -->
michael@0 374 <xs:simpleType name="EventKind">
michael@0 375 <xs:restriction base="xs:string">
michael@0 376 <xs:pattern value="none"/>
michael@0 377 <!-- @pattern keyChar A key corresponding to a Unichar value. -->
michael@0 378 <xs:pattern value="keyChar"/>
michael@0 379 <!-- @pattern keyPress A key with a particular function, such as an arrow key or the OK button. -->
michael@0 380 <xs:pattern value="keyPress"/>
michael@0 381 <!-- @pattern mouseDown Triggered when the primary mouse button is pressed. -->
michael@0 382 <xs:pattern value="mouseDown"/>
michael@0 383 <!-- @pattern mouseDrag Triggered when the primary mouse is moved while the button is pressed. -->
michael@0 384 <xs:pattern value="mouseDrag"/>
michael@0 385 <!-- @pattern mouseMove Triggered when the primary mouse is moved. -->
michael@0 386 <xs:pattern value="mouseMove"/>
michael@0 387 <!-- @pattern mouseUp Triggered when the primary mouse button is released. -->
michael@0 388 <xs:pattern value="mouseUp"/>
michael@0 389 <!-- @pattern onEnd Triggered when an event ends. -->
michael@0 390 <xs:pattern value="onEnd"/>
michael@0 391 <!-- @pattern onLoad Triggered when the document loads. -->
michael@0 392 <xs:pattern value="onLoad"/>
michael@0 393 <!-- @pattern user Triggered when a post element or C++ event is activated. -->
michael@0 394 <xs:pattern value="user"/>
michael@0 395 </xs:restriction>
michael@0 396 </xs:simpleType>
michael@0 397
michael@0 398 <!-- /** EventMode
michael@0 399 Specifies whether the event is delivered immediately to matching event element or deferred to
michael@0 400 the application-wide event handler.
michael@0 401 */ -->
michael@0 402 <xs:simpleType name="EventMode">
michael@0 403 <xs:restriction base="xs:string">
michael@0 404 <!-- @pattern deferred Process the event using the host's event queue. -->
michael@0 405 <xs:pattern value="deferred"/>
michael@0 406 <!-- @pattern immediate Activate the event element immediately. -->
michael@0 407 <xs:pattern value="immediate"/>
michael@0 408 </xs:restriction>
michael@0 409 </xs:simpleType>
michael@0 410
michael@0 411 <!-- /** FillType
michael@0 412 Filled paths that self-intersect use the winding or evenOdd rule to determine whether the
michael@0 413 overlaps are filled or are holes.
michael@0 414 */ -->
michael@0 415 <xs:simpleType name="FillType">
michael@0 416 <xs:restriction base="xs:string">
michael@0 417 <!-- @pattern winding Fill if the sum of edge directions is non-zero. -->
michael@0 418 <xs:pattern value="winding"/>
michael@0 419 <!-- @pattern evenOdd Fill if the sum of edges is an odd number. -->
michael@0 420 <xs:pattern value="evenOdd"/>
michael@0 421 </xs:restriction>
michael@0 422 </xs:simpleType>
michael@0 423
michael@0 424 <!-- /** FilterType
michael@0 425 Scaled bitmaps without a filter type set point-sample the source bitmap to determine the
michael@0 426 destination pixels' colors. Bilinear and bicubic compute the values of intermediate pixels
michael@0 427 by sampling the pixels around them.
michael@0 428 */ -->
michael@0 429 <xs:simpleType name="FilterType">
michael@0 430 <xs:restriction base="xs:string">
michael@0 431 <xs:pattern value="none"/>
michael@0 432 <!-- @pattern bilinear Compute the pixel value as the linear interpolation of adjacent pixels. -->
michael@0 433 <xs:pattern value="bilinear"/>
michael@0 434 </xs:restriction>
michael@0 435 </xs:simpleType>
michael@0 436
michael@0 437 <!-- /** Float
michael@0 438 A signed fractional value.
michael@0 439 */ -->
michael@0 440 <xs:simpleType name="Float">
michael@0 441 <xs:restriction base="xs:float">
michael@0 442 <xs:pattern value="[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)"/>
michael@0 443 </xs:restriction>
michael@0 444 </xs:simpleType>
michael@0 445
michael@0 446 <!-- /** FloatArray
michael@0 447 An array of one or more signed fractional values.
michael@0 448 */ -->
michael@0 449 <xs:simpleType name="FloatArray">
michael@0 450 <xs:restriction base="xs:float">
michael@0 451 <xs:pattern value="\[[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)( *, *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?))*\]"/>
michael@0 452 </xs:restriction>
michael@0 453 </xs:simpleType>
michael@0 454
michael@0 455 <!-- /** FromPathMode
michael@0 456 A matrix computed from an offset along a path may include the point's position, the angle
michael@0 457 tangent, or both.
michael@0 458 .
michael@0 459 */ -->
michael@0 460 <xs:simpleType name="FromPathMode">
michael@0 461 <xs:restriction base="xs:string">
michael@0 462 <!-- @pattern normal Compute the matrix using the path's angle and position. -->
michael@0 463 <xs:pattern value="normal"/>
michael@0 464 <!-- @pattern angle Compute the matrix using only the path's angle. -->
michael@0 465 <xs:pattern value="angle"/>
michael@0 466 <!-- @pattern position Compute the matrix using only the path's position. -->
michael@0 467 <xs:pattern value="position"/>
michael@0 468 </xs:restriction>
michael@0 469 </xs:simpleType>
michael@0 470
michael@0 471 <!-- /** Int
michael@0 472 A signed integer.
michael@0 473 */ -->
michael@0 474 <xs:simpleType name="Int">
michael@0 475 <xs:restriction base="xs:integer"/>
michael@0 476 </xs:simpleType>
michael@0 477
michael@0 478 <!-- /** IntArray
michael@0 479 An array of one or more signed integer values.
michael@0 480 */ -->
michael@0 481 <xs:simpleType name="IntArray">
michael@0 482 <xs:restriction base="xs:integer">
michael@0 483 <xs:pattern value="\[[+-]?[0-9]+( *, *[+-]?[0-9]+)*\]"/>
michael@0 484 </xs:restriction>
michael@0 485 </xs:simpleType>
michael@0 486
michael@0 487 <!-- /** Join
michael@0 488 The edges of thick lines in a path are joined by extending the outer edges to form a miter,
michael@0 489 or by adding a round circle at the intersection point, or by connecting the outer edges with a line
michael@0 490 to form a blunt joint.
michael@0 491 */ -->
michael@0 492 <xs:simpleType name="Join">
michael@0 493 <xs:restriction base="xs:string">
michael@0 494 <!-- @pattern miter Extend the outer edges to form a miter. -->
michael@0 495 <xs:pattern value="miter"/>
michael@0 496 <!-- @pattern round Join the outer edges with a circular arc. -->
michael@0 497 <xs:pattern value="round"/>
michael@0 498 <!-- @pattern blunt Connect the outer edges with a line. -->
michael@0 499 <xs:pattern value="blunt"/>
michael@0 500 </xs:restriction>
michael@0 501 </xs:simpleType>
michael@0 502
michael@0 503 <!-- /** MaskFilterBlurStyle
michael@0 504 A blur can affect the inside or outside part of the shape, or it can affect both. The shape
michael@0 505 itself can be drawn solid, or can be invisible.
michael@0 506 */ -->
michael@0 507 <xs:simpleType name="MaskFilterBlurStyle">
michael@0 508 <xs:restriction base="xs:string">
michael@0 509 <!-- @pattern normal Blur inside and outside. -->
michael@0 510 <xs:pattern value="normal"/>
michael@0 511 <!-- @pattern solid Solid inside, blur outside. -->
michael@0 512 <xs:pattern value="solid"/>
michael@0 513 <!-- @pattern outer Invisible inside, blur outside. -->
michael@0 514 <xs:pattern value="outer"/>
michael@0 515 <!-- @pattern inner Blur inside only.. -->
michael@0 516 <xs:pattern value="inner"/>
michael@0 517 </xs:restriction>
michael@0 518 </xs:simpleType>
michael@0 519
michael@0 520 <!-- /** MaskFilter
michael@0 521 The ID of a blur or emboss element.
michael@0 522 */ -->
michael@0 523 <xs:simpleType name="MaskFilter">
michael@0 524 <xs:restriction base="xs:string"/>
michael@0 525 </xs:simpleType>
michael@0 526
michael@0 527 <!-- /** Matrix
michael@0 528 The ID of a matrix element.
michael@0 529 */ -->
michael@0 530 <xs:simpleType name="Matrix">
michael@0 531 <xs:restriction base="xs:string"/>
michael@0 532 </xs:simpleType>
michael@0 533
michael@0 534 <!-- /** MSec
michael@0 535 A fractional second with millisecond resolution.
michael@0 536 */ -->
michael@0 537 <xs:simpleType name="MSec">
michael@0 538 <xs:restriction base="xs:float"/>
michael@0 539 </xs:simpleType>
michael@0 540
michael@0 541 <!-- /** Paint
michael@0 542 The ID of a paint element.
michael@0 543 */ -->
michael@0 544 <xs:simpleType name="Paint">
michael@0 545 <xs:restriction base="xs:string"/>
michael@0 546 </xs:simpleType>
michael@0 547
michael@0 548 <!-- /** Path
michael@0 549 The ID of a path element.
michael@0 550 */ -->
michael@0 551 <xs:simpleType name="Path">
michael@0 552 <xs:restriction base="xs:string"/>
michael@0 553 </xs:simpleType>
michael@0 554
michael@0 555 <!-- /** PathDirection
michael@0 556 PathDirection determines if the path is traveled clockwise or counterclockwise.
michael@0 557 */ -->
michael@0 558 <xs:simpleType name="PathDirection">
michael@0 559 <xs:restriction base="xs:string">
michael@0 560 <!-- @pattern cw The path is traveled clockwise. -->
michael@0 561 <xs:pattern value="cw"/>
michael@0 562 <!-- @pattern ccw The path is traveled counterclockwise. -->
michael@0 563 <xs:pattern value="ccw"/>
michael@0 564 </xs:restriction>
michael@0 565 </xs:simpleType>
michael@0 566
michael@0 567 <!-- /** PathEffect
michael@0 568 The ID of a dash or discrete element.
michael@0 569 */ -->
michael@0 570 <xs:simpleType name="PathEffect">
michael@0 571 <xs:restriction base="xs:string"/>
michael@0 572 </xs:simpleType>
michael@0 573
michael@0 574 <!-- /** Point
michael@0 575 A pair of signed values representing the x and y coordinates of a point.
michael@0 576 */ -->
michael@0 577 <xs:simpleType name="Point">
michael@0 578 <xs:restriction base="xs:string">
michael@0 579 <xs:pattern value="\[ *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?) *[ ,] *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)\]"/>
michael@0 580 </xs:restriction>
michael@0 581 </xs:simpleType>
michael@0 582
michael@0 583 <!-- /** Rect
michael@0 584 The ID of a rectangle element.
michael@0 585 */ -->
michael@0 586 <xs:simpleType name="Rect">
michael@0 587 <xs:restriction base="xs:string"/>
michael@0 588 </xs:simpleType>
michael@0 589
michael@0 590 <!-- /** Shader
michael@0 591 The ID of a linear or radial gradient.
michael@0 592 */ -->
michael@0 593 <xs:simpleType name="Shader">
michael@0 594 <xs:restriction base="xs:string"/>
michael@0 595 </xs:simpleType>
michael@0 596
michael@0 597 <!-- /** String
michael@0 598 A sequence of characters.
michael@0 599 */ -->
michael@0 600 <xs:simpleType name="String">
michael@0 601 <xs:restriction base="xs:string"/>
michael@0 602 </xs:simpleType>
michael@0 603
michael@0 604 <!-- /** Style
michael@0 605 Geometry can be filled, stroked or both.
michael@0 606 */ -->
michael@0 607 <xs:simpleType name="Style">
michael@0 608 <xs:restriction base="xs:string">
michael@0 609 <!-- @pattern fill The interior of the geometry is filled with the paint's color. -->
michael@0 610 <xs:pattern value="fill"/>
michael@0 611 <!-- @pattern stroke The outline of the geometry is stroked with the paint's color. -->
michael@0 612 <xs:pattern value="stroke"/>
michael@0 613 <!-- @pattern strokeAndFill The interior is filled and outline is stroked with the paint's color. -->
michael@0 614 <xs:pattern value="strokeAndFill"/>
michael@0 615 </xs:restriction>
michael@0 616 </xs:simpleType>
michael@0 617
michael@0 618 <!-- /** Text
michael@0 619 The ID of a text element.
michael@0 620 */ -->
michael@0 621 <xs:simpleType name="Text">
michael@0 622 <xs:restriction base="xs:string"/>
michael@0 623 </xs:simpleType>
michael@0 624
michael@0 625 <!-- /** TextBoxAlign
michael@0 626 Multiple lines of text may be aligned to the start of the box, the center, or the end.
michael@0 627 */ -->
michael@0 628 <xs:simpleType name="TextBoxAlign">
michael@0 629 <xs:restriction base="xs:string">
michael@0 630 <!-- @pattern start The text begins within the upper left of the box. -->
michael@0 631 <xs:pattern value="start"/>
michael@0 632 <!-- @pattern center The text is positioned in the center of the box. -->
michael@0 633 <xs:pattern value="center"/>
michael@0 634 <!-- @pattern end The text ends within the lower right of the box. -->
michael@0 635 <xs:pattern value="end"/>
michael@0 636 </xs:restriction>
michael@0 637 </xs:simpleType>
michael@0 638
michael@0 639 <!-- /** TextBoxMode
michael@0 640 Fitting the text may optionally introduce line breaks.
michael@0 641 */ -->
michael@0 642 <xs:simpleType name="TextBoxMode">
michael@0 643 <xs:restriction base="xs:string">
michael@0 644 <!-- @pattern oneLine No additional linebreaks are added. -->
michael@0 645 <xs:pattern value="oneLine"/>
michael@0 646 <!-- @pattern lineBreak Line breaks may be added to fit the text to the box. -->
michael@0 647 <xs:pattern value="lineBreak"/>
michael@0 648 </xs:restriction>
michael@0 649 </xs:simpleType>
michael@0 650
michael@0 651 <!-- /** TileMode
michael@0 652 A shader describes how to draw within a rectangle.
michael@0 653 Outside of the rectangle, the shader may be ignored, clamped on the edges, or repeated.
michael@0 654 The repetitions may be mirrored from the original shader.
michael@0 655 */ -->
michael@0 656 <xs:simpleType name="TileMode">
michael@0 657 <xs:restriction base="xs:string">
michael@0 658 <!-- @pattern clamp The edge shader color is extended. -->
michael@0 659 <xs:pattern value="clamp"/>
michael@0 660 <!-- @pattern repeat The shader is repeated horizontally and vertically. -->
michael@0 661 <xs:pattern value="repeat"/>
michael@0 662 <!-- @pattern mirror The shader is mirrored horizontally and vertically. -->
michael@0 663 <xs:pattern value="mirror"/>
michael@0 664 </xs:restriction>
michael@0 665 </xs:simpleType>
michael@0 666
michael@0 667 <!-- /** Typeface
michael@0 668 The ID of a typeface element.
michael@0 669 */ -->
michael@0 670 <xs:simpleType name="Typeface">
michael@0 671 <xs:restriction base="xs:string"/>
michael@0 672 </xs:simpleType>
michael@0 673
michael@0 674 <!-- /** UnknownArray
michael@0 675 An array of values of any type.
michael@0 676 */ -->
michael@0 677 <xs:simpleType name="UnknownArray">
michael@0 678 <xs:restriction base="xs:string"/>
michael@0 679 </xs:simpleType>
michael@0 680
michael@0 681 <!-- /** Xfermode
michael@0 682 The operation applied when drawing a color to the destination background.
michael@0 683 */ -->
michael@0 684 <xs:simpleType name="Xfermode">
michael@0 685 <xs:restriction base="xs:string">
michael@0 686 <!-- @pattern clear Set the destination alpha to zero and the destination color to black. -->
michael@0 687 <xs:pattern value="clear"/>
michael@0 688 <!-- @pattern src Set the destination to the source alpha and color. -->
michael@0 689 <xs:pattern value="src"/>
michael@0 690 <!-- @pattern dst Set the destination to the destination alpha and color. -->
michael@0 691 <xs:pattern value="dst"/>
michael@0 692 <!-- @pattern srcOver The default. Set the destination to the source color blended
michael@0 693 with the destination by the source alpha. -->
michael@0 694 <xs:pattern value="srcOver"/>
michael@0 695 <!-- @pattern dstOver Set the destination to the destination color blended
michael@0 696 with the source by the destination alpha. -->
michael@0 697 <xs:pattern value="dstOver"/>
michael@0 698 <!-- @pattern srcIn Set the destination to the source color scaled by the destination
michael@0 699 alpha. -->
michael@0 700 <xs:pattern value="srcIn"/>
michael@0 701 <!-- @pattern dstIn Set the destination to the destination color scaled by the source
michael@0 702 alpha. -->
michael@0 703 <xs:pattern value="dstIn"/>
michael@0 704 <!-- @pattern srcOut Set the destination to the source color scaled by the
michael@0 705 inverse of the destination alpha. -->
michael@0 706 <xs:pattern value="srcOut"/>
michael@0 707 <!-- @pattern dstOut Set the destination to the destination color scaled by the
michael@0 708 inverse of the source alpha. -->
michael@0 709 <xs:pattern value="dstOut"/>
michael@0 710 <!-- @pattern srcATop Set the destination to the source color times the destination alpha,
michael@0 711 blended with the destination times the inverse of the source alpha. -->
michael@0 712 <xs:pattern value="srcATop"/>
michael@0 713 <!-- @pattern dstATop Set the destination to the destination color times the source alpha,
michael@0 714 blended with the source times the inverse of the destination alpha. -->
michael@0 715 <xs:pattern value="dstATop"/>
michael@0 716 <!-- @pattern xor Set the destination to the destination color times the
michael@0 717 inverse of the source alpha,
michael@0 718 blended with the source times the inverse of the destination alpha. -->
michael@0 719 <xs:pattern value="xor"/>
michael@0 720 </xs:restriction>
michael@0 721 </xs:simpleType>
michael@0 722
michael@0 723 <!-- /** Math
michael@0 724 Math provides functions and properties in the ECMAScript library to screenplay script expressions.
michael@0 725 The Math element is always implicitly added at the top of every screenplay description, so
michael@0 726 its functions and properties are always available.
michael@0 727 */ -->
michael@0 728 <xs:element name="Math">
michael@0 729 <xs:complexType>
michael@0 730 <!-- @attribute E The value 2.718281828. -->
michael@0 731 <xs:attribute name="E" type="Sk:Float"/>
michael@0 732 <!-- @attribute LN10 The value 2.302585093. -->
michael@0 733 <xs:attribute name="LN10" type="Sk:Float"/>
michael@0 734 <!-- @attribute LN2 The value 0.693147181. -->
michael@0 735 <xs:attribute name="LN2" type="Sk:Float"/>
michael@0 736 <!-- @attribute LOG10E The value 0.434294482. -->
michael@0 737 <xs:attribute name="LOG10E" type="Sk:Float"/>
michael@0 738 <!-- @attribute LOG2E The value 1.442695041. -->
michael@0 739 <xs:attribute name="LOG2E" type="Sk:Float"/>
michael@0 740 <!-- @attribute PI The value 3.141592654. -->
michael@0 741 <xs:attribute name="PI" type="Sk:Float"/>
michael@0 742 <!-- @attribute SQRT1_2 The value 0.707106781. -->
michael@0 743 <xs:attribute name="SQRT1_2" type="Sk:Float"/>
michael@0 744 <!-- @attribute SQRT2 The value 1.414213562. -->
michael@0 745 <xs:attribute name="SQRT2" type="Sk:Float"/>
michael@0 746 <!-- @attribute abs A function that returns the absolute value of its argument. -->
michael@0 747 <xs:attribute name="abs" type="Sk:Float"/>
michael@0 748 <!-- @attribute acos A function that returns the arc cosine of its argument. -->
michael@0 749 <xs:attribute name="acos" type="Sk:Float"/>
michael@0 750 <!-- @attribute asin A function that returns the arc sine of its argument. -->
michael@0 751 <xs:attribute name="asin" type="Sk:Float"/>
michael@0 752 <!-- @attribute atan A function that returns the arc tan of its argument. -->
michael@0 753 <xs:attribute name="atan" type="Sk:Float"/>
michael@0 754 <!-- @attribute atan2 A function that returns the arc tan of the ratio of its two arguments. -->
michael@0 755 <xs:attribute name="atan2" type="Sk:Float"/>
michael@0 756 <!-- @attribute ceil A function that returns the rounded up value of its argument. -->
michael@0 757 <xs:attribute name="ceil" type="Sk:Float"/>
michael@0 758 <!-- @attribute cos A function that returns the cosine of its argument. -->
michael@0 759 <xs:attribute name="cos" type="Sk:Float"/>
michael@0 760 <!-- @attribute exp A function that returns E raised to a power (the argument). -->
michael@0 761 <xs:attribute name="exp" type="Sk:Float"/>
michael@0 762 <!-- @attribute floor A function that returns the rounded down value of its argument. -->
michael@0 763 <xs:attribute name="floor" type="Sk:Float"/>
michael@0 764 <!-- @attribute log A function that returns the natural logarithm its argument. -->
michael@0 765 <xs:attribute name="log" type="Sk:Float"/>
michael@0 766 <!-- @attribute max A function that returns the largest of any number of arguments. -->
michael@0 767 <xs:attribute name="max" type="Sk:Float"/>
michael@0 768 <!-- @attribute min A function that returns the smallest of any number of arguments. -->
michael@0 769 <xs:attribute name="min" type="Sk:Float"/>
michael@0 770 <!-- @attribute pow A function that returns the first argument raised to the power of the second argument. -->
michael@0 771 <xs:attribute name="pow" type="Sk:Float"/>
michael@0 772 <!-- @attribute random A function that returns a random value from zero to one.
michael@0 773 (See also the &lt;random&gt; element.) -->
michael@0 774 <xs:attribute name="random" type="Sk:Float"/>
michael@0 775 <!-- @attribute round A function that returns the rounded value of its argument. -->
michael@0 776 <xs:attribute name="round" type="Sk:Float"/>
michael@0 777 <!-- @attribute sin A function that returns the sine of its argument. -->
michael@0 778 <xs:attribute name="sin" type="Sk:Float"/>
michael@0 779 <!-- @attribute sqrt A function that returns the square root of its argument. -->
michael@0 780 <xs:attribute name="sqrt" type="Sk:Float"/>
michael@0 781 <!-- @attribute tan A function that returns the tangent of its argument. -->
michael@0 782 <xs:attribute name="tan" type="Sk:Float"/>
michael@0 783 </xs:complexType>
michael@0 784 </xs:element>
michael@0 785
michael@0 786 <!-- /** Number
michael@0 787 Number provides properties in the ECMAScript library to screenplay script expressions.
michael@0 788 The Number element is always implicitly added at the top of every screenplay description, so
michael@0 789 its properties are always available.
michael@0 790 */ -->
michael@0 791 <xs:element name="Number">
michael@0 792 <xs:complexType>
michael@0 793 <!-- @attribute MAX_VALUE The maximum number value; approximately 32767.999985 fixed point,
michael@0 794 3.4028235e+38 floating point. -->
michael@0 795 <xs:attribute name="MAX_VALUE" type="Sk:Float"/>
michael@0 796 <!-- @attribute MIN_VALUE The minimum number value; approximately 0.000015 fixed point,
michael@0 797 1.1754944e-38 floating point. -->
michael@0 798 <xs:attribute name="MIN_VALUE" type="Sk:Float"/>
michael@0 799 <!-- @attribute NEGATIVE_INFINITY The most negative number value. Fixed point does not
michael@0 800 have a value for negative infinity, and approximates it with -32767.999985. -->
michael@0 801 <xs:attribute name="NEGATIVE_INFINITY" type="Sk:Float"/>
michael@0 802 <!-- @attribute NaN A bit pattern representing "Not a Number". Fixed point does not
michael@0 803 have a value for NaN, and approximates it with -32768. -->
michael@0 804 <xs:attribute name="NaN" type="Sk:Float"/>
michael@0 805 <!-- @attribute POSITIVE_INFINITY The greatest positive number value. Fixed point does not
michael@0 806 have a value for positive infinity, and approximates it with 32767.999985. -->
michael@0 807 <xs:attribute name="POSITIVE_INFINITY" type="Sk:Float"/>
michael@0 808 </xs:complexType>
michael@0 809 </xs:element>
michael@0 810
michael@0 811 <!-- /** add
michael@0 812 Add references a drawable element, and adds it to the display list.
michael@0 813 If where and offset are omitted, the element is appended to the end of the display list.
michael@0 814 If where is specified, the element is inserted at the first occurance of where in the display list.
michael@0 815 If offset and where are specified, the element is inserted at where plus offset.
michael@0 816 A positive offset without where inserts the element at the start of the list plus offset.
michael@0 817 A negative offset without where inserts the element at the end of the list minus offset.
michael@0 818 */ -->
michael@0 819 <xs:element name="add">
michael@0 820 <xs:complexType>
michael@0 821 <!-- @attribute mode If indirect (the default), keep the add element in the display list,
michael@0 822 and draw the add's use element. If immediate, put the add's use element in the display list. -->
michael@0 823 <xs:attribute name="mode" type="Sk:AddMode"/>
michael@0 824 <!-- @attribute offset The offset added to the insert index. -->
michael@0 825 <xs:attribute name="offset" type="Sk:Int"/>
michael@0 826 <!-- @attribute use The drawable element to add to the display list. -->
michael@0 827 <xs:attribute name="use" type="Sk:Drawable"/>
michael@0 828 <!-- @attribute where The drawable element marking where to insert. -->
michael@0 829 <xs:attribute name="where" type="Sk:Drawable"/>
michael@0 830 <xs:attribute name="id" type="xs:ID"/>
michael@0 831 </xs:complexType>
michael@0 832 </xs:element>
michael@0 833
michael@0 834 <!-- /** addCircle
michael@0 835 AddCircle adds a closed circle to the parent path element.
michael@0 836 */ -->
michael@0 837 <xs:element name="addCircle">
michael@0 838 <xs:complexType>
michael@0 839 <!-- @attribute direction One of @pattern. @patternDescription -->
michael@0 840 <xs:attribute name="direction" type="Sk:PathDirection"/>
michael@0 841 <!-- @attribute radius The distance from the center to the edge of the circle. -->
michael@0 842 <xs:attribute name="radius" type="Sk:Float"/>
michael@0 843 <!-- @attribute x The x coordinate of the circle's center. -->
michael@0 844 <xs:attribute name="x" type="Sk:Float"/>
michael@0 845 <!-- @attribute y The y coordinate of the circle's center.-->
michael@0 846 <xs:attribute name="y" type="Sk:Float"/>
michael@0 847 <xs:attribute name="id" type="xs:ID"/>
michael@0 848 </xs:complexType>
michael@0 849 </xs:element>
michael@0 850
michael@0 851 <!-- /** addOval
michael@0 852 AddOval adds a closed oval described by its bounding box to the parent path element.
michael@0 853 */ -->
michael@0 854 <xs:element name="addOval">
michael@0 855 <xs:complexType>
michael@0 856 <!-- @attribute direction One of @pattern. @patternDescription -->
michael@0 857 <xs:attribute name="direction" type="Sk:PathDirection"/>
michael@0 858 <!-- @attribute bottom The bottom edge of the oval's bounding box. -->
michael@0 859 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 860 <!-- @attribute left The left edge of the oval's bounding box. -->
michael@0 861 <xs:attribute name="left" type="Sk:Float"/>
michael@0 862 <!-- @attribute right The right edge of the oval's bounding box. -->
michael@0 863 <xs:attribute name="right" type="Sk:Float"/>
michael@0 864 <!-- @attribute top The top edge of the oval's bounding box. -->
michael@0 865 <xs:attribute name="top" type="Sk:Float"/>
michael@0 866 <xs:attribute name="id" type="xs:ID"/>
michael@0 867 </xs:complexType>
michael@0 868 </xs:element>
michael@0 869
michael@0 870 <!-- /** addPath
michael@0 871 AddPath adds a path to the parent path element.
michael@0 872 An optional matrix may transform the path as it is added.
michael@0 873 */ -->
michael@0 874 <xs:element name="addPath">
michael@0 875 <xs:complexType>
michael@0 876 <!-- @attribute matrix The matrix applied to the path as it is added. -->
michael@0 877 <xs:attribute name="matrix" type="Sk:Matrix"/>
michael@0 878 <!-- @attribute path The path to add. -->
michael@0 879 <xs:attribute name="path" type="Sk:Path"/>
michael@0 880 <xs:attribute name="id" type="xs:ID"/>
michael@0 881 </xs:complexType>
michael@0 882 </xs:element>
michael@0 883
michael@0 884 <!-- /** addRect
michael@0 885 AddRect adds a closed rectangle to the parent path element.
michael@0 886 */ -->
michael@0 887 <xs:element name="addRect">
michael@0 888 <xs:complexType>
michael@0 889 <!-- @attribute direction One of @pattern. @patternDescription -->
michael@0 890 <xs:attribute name="direction" type="Sk:PathDirection"/>
michael@0 891 <!-- @attribute bottom The bottom edge of the rectangle. -->
michael@0 892 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 893 <!-- @attribute left The left edge of the rectangle. -->
michael@0 894 <xs:attribute name="left" type="Sk:Float"/>
michael@0 895 <!-- @attribute right The right edge of the rectangle. -->
michael@0 896 <xs:attribute name="right" type="Sk:Float"/>
michael@0 897 <!-- @attribute top" The top" edge of the rectangle. -->
michael@0 898 <xs:attribute name="top" type="Sk:Float"/>
michael@0 899 <xs:attribute name="id" type="xs:ID"/>
michael@0 900 </xs:complexType>
michael@0 901 </xs:element>
michael@0 902
michael@0 903 <!-- /** addRoundRect
michael@0 904 AddRoundRect adds a closed rounded rectangle to the parent path element.
michael@0 905 */ -->
michael@0 906 <xs:element name="addRoundRect">
michael@0 907 <xs:complexType>
michael@0 908 <!-- @attribute direction One of @pattern. @patternDescription -->
michael@0 909 <xs:attribute name="direction" type="Sk:PathDirection"/>
michael@0 910 <!-- @attribute bottom The bottom edge of the rounded rectangle's bounding box. -->
michael@0 911 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 912 <!-- @attribute left The left edge of the rounded rectangle's bounding box. -->
michael@0 913 <xs:attribute name="left" type="Sk:Float"/>
michael@0 914 <!-- @attribute right The right edge of the rounded rectangle's bounding box. -->
michael@0 915 <xs:attribute name="right" type="Sk:Float"/>
michael@0 916 <!-- @attribute top The top edge of the rounded rectangle's bounding box. -->
michael@0 917 <xs:attribute name="top" type="Sk:Float"/>
michael@0 918 <!-- @attribute rx The X-radius of the oval used to round the corners. -->
michael@0 919 <xs:attribute name="rx" type="Sk:Float"/>
michael@0 920 <!-- @attribute ry The Y-radius of the oval used to round the corners. -->
michael@0 921 <xs:attribute name="ry" type="Sk:Float"/>
michael@0 922 <xs:attribute name="id" type="xs:ID"/>
michael@0 923 </xs:complexType>
michael@0 924 </xs:element>
michael@0 925
michael@0 926 <!-- /** animate
michael@0 927 Animate varies the value of an element's attribute over time.
michael@0 928 The animation may vary starting at the 'from' attribute, and ending at the 'to' attribute,
michael@0 929 or may compute the value using the 'formula' attribute.
michael@0 930 */ -->
michael@0 931 <xs:element name="animate">
michael@0 932 <xs:complexType>
michael@0 933 <!-- @attribute begin An optional offset that must elapse before the animation begins. The apply
michael@0 934 begin attribute is added to any animator's begin attribute. -->
michael@0 935 <xs:attribute name="begin" type="Sk:MSec"/>
michael@0 936 <!-- @attribute blend Specifies how the from and to values are blended. A value from 0.0 to
michael@0 937 1.0 specifies a cubic lag/log/lag blend (slow to change at the beginning and end); the closer
michael@0 938 blend is to 1.0, the more linear the blend. If omitted, the blend is linear. -->
michael@0 939 <xs:attribute name="blend" type="Sk:FloatArray"/>
michael@0 940 <!-- @attribute dur The duration of the animation in milliseconds. -->
michael@0 941 <xs:attribute name="dur" type="Sk:MSec"/>
michael@0 942 <!-- @attribute dynamic If true, restart the animation if any of the simple values the 'from', 'formula',
michael@0 943 'lval', or 'to' attributes reference are changed. Simple values are contained by the array, boolean, float, int,
michael@0 944 and string elements. -->
michael@0 945 <xs:attribute name="dynamic" type="Sk:Boolean" />
michael@0 946 <!-- @attribute field The attribute to animate. -->
michael@0 947 <xs:attribute name="field" type="Sk:String"/>
michael@0 948 <!-- @attribute formula A script to execute over time to compute the field's value. Typically,
michael@0 949 the fomula is a script expression which includes a reference to the time attribute of the
michael@0 950 containing apply element. Requires a dur. For animations that do not stop, set dur="Number.POSITIVE_INFINITY" -->
michael@0 951 <xs:attribute name="formula" type="Sk:DynamicString"/>
michael@0 952 <!-- @attribute from The starting value (requires a 'to' attribute) -->
michael@0 953 <xs:attribute name="from" type="Sk:DynamicString"/>
michael@0 954 <!-- @attribute lval An expression evaluating to the attribute to animate.
michael@0 955 If present, lval overrides 'field'. The expression is typically an array element,
michael@0 956 e.g. lval="x[y]" . -->
michael@0 957 <xs:attribute name="lval" type="Sk:DynamicString"/>
michael@0 958 <!-- @attribute mirror If true, reverses the interpolated value during even repeat cycles. -->
michael@0 959 <xs:attribute name="mirror" type="Sk:Boolean"/>
michael@0 960 <!-- @attribute repeat Specifies the number of times to repeat the animation.
michael@0 961 (May be fractional.) -->
michael@0 962 <xs:attribute name="repeat" type="Sk:Float"/>
michael@0 963 <!-- @attribute reset If true, the computed value is the initial value after the
michael@0 964 animation is complete. If false, or by default, the computed value is the final value
michael@0 965 after the animation is complete. -->
michael@0 966 <xs:attribute name="reset" type="Sk:Boolean"/>
michael@0 967 <!-- @attribute step When the apply's attribute mode="immediate" or "create", the step attribute can be read by
michael@0 968 script to determine the current animation iteration. -->
michael@0 969 <xs:attribute name="step" type="Sk:Int" />
michael@0 970 <!-- @attribute target The element to animate. By default, the element contained by the apply
michael@0 971 or referenced by the apply's scope attribute is the animate target. -->
michael@0 972 <xs:attribute name="target" type="Sk:DynamicString"/>
michael@0 973 <!-- @attribute to The ending value (requires a 'from' attribute) -->
michael@0 974 <xs:attribute name="to" type="Sk:DynamicString"/>
michael@0 975 <!-- @attribute values [Depreciated] -->
michael@0 976 <xs:attribute name="values" type="Sk:DynamicString"/>
michael@0 977 <xs:attribute name="id" type="xs:ID"/>
michael@0 978 </xs:complexType>
michael@0 979 </xs:element>
michael@0 980
michael@0 981 <!-- /** apply
michael@0 982 Apply changes one or more attributes of an element.
michael@0 983 Apply either contains one displayable element or references the element scoping the change
michael@0 984 with the 'scope' attribute. Apply either contains one animator element or references it with
michael@0 985 the 'animator' attribute.
michael@0 986 In the display list, apply draws the element it scopes after evaluating the animation.
michael@0 987 */ -->
michael@0 988 <xs:element name="apply">
michael@0 989 <xs:complexType>
michael@0 990 <xs:choice minOccurs="0" maxOccurs="1">
michael@0 991 <xs:element ref="Sk:animate"/>
michael@0 992 <xs:element ref="Sk:set" />
michael@0 993 <!-- not quite right; want to say 'one of the above, one of the below'
michael@0 994 </xs:choice>
michael@0 995 <xs:choice minOccurs="0" maxOccurs="1">
michael@0 996 -->
michael@0 997 <xs:element ref="Sk:add"/>
michael@0 998 <xs:element ref="Sk:array"/>
michael@0 999 <xs:element ref="Sk:apply"/>
michael@0 1000 <xs:element ref="Sk:bitmap"/>
michael@0 1001 <xs:element ref="Sk:boolean"/>
michael@0 1002 <xs:element ref="Sk:bounds"/>
michael@0 1003 <!-- <xs:element ref="Sk3D:camera"/> -->
michael@0 1004 <xs:element ref="Sk:clear"/>
michael@0 1005 <xs:element ref="Sk:clip"/>
michael@0 1006 <xs:element ref="Sk:color"/>
michael@0 1007 <xs:element ref="Sk:drawTo"/>
michael@0 1008 <xs:element ref="Sk:float"/>
michael@0 1009 <xs:element ref="Sk:full"/>
michael@0 1010 <xs:element ref="Sk:group"/>
michael@0 1011 <xs:element ref="Sk:image"/>
michael@0 1012 <xs:element ref="Sk:int"/>
michael@0 1013 <xs:element ref="Sk:line"/>
michael@0 1014 <xs:element ref="Sk:matrix"/>
michael@0 1015 <xs:element ref="Sk:move"/>
michael@0 1016 <xs:element ref="Sk:oval"/>
michael@0 1017 <xs:element ref="Sk:paint"/>
michael@0 1018 <!-- <xs:element ref="Sk:patch"/> -->
michael@0 1019 <xs:element ref="Sk:path"/>
michael@0 1020 <xs:element ref="Sk:point"/>
michael@0 1021 <xs:element ref="Sk:polygon"/>
michael@0 1022 <xs:element ref="Sk:polyline"/>
michael@0 1023 <xs:element ref="Sk:post"/>
michael@0 1024 <xs:element ref="Sk:random"/>
michael@0 1025 <xs:element ref="Sk:rect"/>
michael@0 1026 <xs:element ref="Sk:remove"/>
michael@0 1027 <xs:element ref="Sk:replace"/>
michael@0 1028 <xs:element ref="Sk:roundRect"/>
michael@0 1029 <xs:element ref="Sk:save"/>
michael@0 1030 <xs:element ref="Sk:snapshot"/>
michael@0 1031 <xs:element ref="Sk:string"/>
michael@0 1032 <xs:element ref="Sk:text"/>
michael@0 1033 <xs:element ref="Sk:textBox"/>
michael@0 1034 <xs:element ref="Sk:textOnPath"/>
michael@0 1035 <xs:element ref="Sk:textToPath"/>
michael@0 1036 </xs:choice>
michael@0 1037 <!-- @attribute animator The description of how the element is changed over time. -->
michael@0 1038 <xs:attribute name="animator" type="Sk:Animate"/>
michael@0 1039 <!-- @attribute begin An optional offset that must elapse before the animation begins. The apply
michael@0 1040 begin attribute is added to any animator's begin attribute. -->
michael@0 1041 <xs:attribute name="begin" type="Sk:MSec" />
michael@0 1042 <!-- @attribute dontDraw Edits an element's attribute without drawing it; for instance,
michael@0 1043 to edit a clip's rectangle without drawing the rectangle, set dontDraw="true". -->
michael@0 1044 <xs:attribute name="dontDraw" type="Sk:Boolean"/>
michael@0 1045 <!-- @attribute dynamicScope The location in the display list where animations are stored. Use
michael@0 1046 dynamicScope instead of scope if a script expression with potentially different values is desired to
michael@0 1047 describe the scope. -->
michael@0 1048 <xs:attribute name="dynamicScope" type="Sk:String"/>
michael@0 1049 <!-- @attribute interval The optional time interval from one animation frame to the next. -->
michael@0 1050 <xs:attribute name="interval" type="Sk:MSec" />
michael@0 1051 <!-- @attribute mode One of @pattern. @patternDescription -->
michael@0 1052 <xs:attribute name="mode" type="Sk:ApplyMode"/>
michael@0 1053 <!-- @attribute pickup Starts the animation at the current target's attribute value. Enabling
michael@0 1054 'pickup' permits omitting the 'from' attribute of the animator. -->
michael@0 1055 <xs:attribute name="pickup" type="Sk:Boolean"/>
michael@0 1056 <!-- @attribute restore If true, multiple references to the same apply statement save and
michael@0 1057 restore the interpolated target values. -->
michael@0 1058 <xs:attribute name="restore" type="Sk:Boolean"/>
michael@0 1059 <!-- @attribute scope The location in the display list where animations are stored. -->
michael@0 1060 <xs:attribute name="scope" type="Sk:Drawable"/>
michael@0 1061 <!-- @attribute step When mode="immediate" or "create", the step attribute can be read by
michael@0 1062 script to determine the current animation iteration. -->
michael@0 1063 <xs:attribute name="step" type="Sk:Int" />
michael@0 1064 <!-- @attribute steps When mode="immediate", the number of times the animation
michael@0 1065 is stepped. The animation iterates 'steps' times plus one. -->
michael@0 1066 <xs:attribute name="steps" type="Sk:Int" />
michael@0 1067 <!-- @attribute time When read from script, returns the animation time. Typically used by
michael@0 1068 an animate element's formula attribute. -->
michael@0 1069 <xs:attribute name="time" type="Sk:MSec" />
michael@0 1070 <!-- @attribute transition One of @pattern. @patternDescription -->
michael@0 1071 <xs:attribute name="transition" type="Sk:ApplyTransition"/>
michael@0 1072 <xs:attribute name="id" type="xs:ID"/>
michael@0 1073 </xs:complexType>
michael@0 1074 </xs:element>
michael@0 1075
michael@0 1076 <!-- /** array
michael@0 1077 Array contains an array of values of the same type. The values may be
michael@0 1078 numbers or strings.
michael@0 1079 */ -->
michael@0 1080 <xs:element name="array">
michael@0 1081 <xs:complexType>
michael@0 1082 <!-- @attribute length The number of elements in the array (read only). -->
michael@0 1083 <xs:attribute name="length" type="Sk:Int"/>
michael@0 1084 <!-- @attribute values The elements in the array. -->
michael@0 1085 <xs:attribute name="values" type="Sk:UnknownArray"/>
michael@0 1086 <xs:attribute name="id" type="xs:ID"/>
michael@0 1087 </xs:complexType>
michael@0 1088 </xs:element>
michael@0 1089
michael@0 1090 <!-- /** bitmap
michael@0 1091 Bitmap describes a rectangle of pixels.
michael@0 1092 Use the <drawTo> element to draw to a bitmap.
michael@0 1093 Add the bitmap to the display list to draw from a bitmap.
michael@0 1094 */ -->
michael@0 1095 <xs:element name="bitmap">
michael@0 1096 <xs:complexType>
michael@0 1097 <!-- @attribute erase The color, including the alpha, the bitmap is intially set to. -->
michael@0 1098 <xs:attribute name="erase" type="Sk:ARGB"/>
michael@0 1099 <!-- @attribute format One of @pattern. @patternDescription -->
michael@0 1100 <xs:attribute name="format" type="Sk:BitmapFormat"/>
michael@0 1101 <!-- @attribute height The height of the bitmap in pixels. -->
michael@0 1102 <xs:attribute name="height" type="Sk:Int"/>
michael@0 1103 <!-- @attribute rowBytes The number of byte describing each row of pixels (optional). -->
michael@0 1104 <xs:attribute name="rowBytes" type="Sk:Int"/>
michael@0 1105 <!-- @attribute width The height of the width in pixels. -->
michael@0 1106 <xs:attribute name="width" type="Sk:Int"/>
michael@0 1107 <!-- @attribute x The left edge of the bitmap in unit space. -->
michael@0 1108 <xs:attribute name="x" type="Sk:Float"/>
michael@0 1109 <!-- @attribute y The top edge of teh bitmap in unit space. -->
michael@0 1110 <xs:attribute name="y" type="Sk:Float"/>
michael@0 1111 <xs:attribute name="id" type="xs:ID"/>
michael@0 1112 </xs:complexType>
michael@0 1113 </xs:element>
michael@0 1114
michael@0 1115 <!-- /** bitmapShader
michael@0 1116 BitmapShader sets the paint shader to draw the bitmap as a texture.
michael@0 1117 */ -->
michael@0 1118 <xs:element name="bitmapShader">
michael@0 1119 <xs:complexType>
michael@0 1120 <xs:choice >
michael@0 1121 <xs:element ref="Sk:image" minOccurs="0" />
michael@0 1122 <xs:element ref="Sk:matrix" minOccurs="0" />
michael@0 1123 </xs:choice>
michael@0 1124 <!-- @attribute matrix Matrix applies a 3x3 transform to the gradient. -->
michael@0 1125 <xs:attribute name="matrix" type="Sk:Matrix"/>
michael@0 1126 <!-- @attribute tileMode One of @pattern. @patternDescription -->
michael@0 1127 <xs:attribute name="tileMode" type="Sk:TileMode"/>
michael@0 1128 <!-- @attribute filterType The bitmap filter to employ, one of @pattern. -->
michael@0 1129 <xs:attribute name="filterType" type="Sk:FilterType"/>
michael@0 1130 <!-- @attribute image The bitmap to draw. -->
michael@0 1131 <xs:attribute name="image" type="Sk:BaseBitmap"/>
michael@0 1132 <xs:attribute name="id" type="xs:ID"/>
michael@0 1133 </xs:complexType>
michael@0 1134 </xs:element>
michael@0 1135
michael@0 1136
michael@0 1137 <!-- /** blur
michael@0 1138 Blur describes an image filter in the paint that blurs the drawn geometry.
michael@0 1139 */ -->
michael@0 1140 <xs:element name="blur">
michael@0 1141 <xs:complexType>
michael@0 1142 <!-- @attribute blurStyle One of @pattern. @patternDescription -->
michael@0 1143 <xs:attribute name="blurStyle" type="Sk:MaskFilterBlurStyle"/>
michael@0 1144 <!-- @attribute radius The extent of the filter effect in unit space. If the radius is less
michael@0 1145 than zero, the blur has no effect. -->
michael@0 1146 <xs:attribute name="radius" type="Sk:Float"/>
michael@0 1147 <xs:attribute name="id" type="xs:ID"/>
michael@0 1148 </xs:complexType>
michael@0 1149 </xs:element>
michael@0 1150
michael@0 1151 <!-- /** boolean
michael@0 1152 Boolean contains an boolean. The boolean element cannot be added to a display list, but can
michael@0 1153 by set by animations and read by any attribute definition. An boolean element may be referenced,
michael@0 1154 for instance, by a group's condition attribute to make an animation conditionally execute.
michael@0 1155 */ -->
michael@0 1156 <xs:element name="boolean">
michael@0 1157 <xs:complexType>
michael@0 1158 <!-- @attribute value The contained boolean. -->
michael@0 1159 <xs:attribute name="value" type="Sk:Boolean"/>
michael@0 1160 <xs:attribute name="id" type="xs:ID"/>
michael@0 1161 </xs:complexType>
michael@0 1162 </xs:element>
michael@0 1163
michael@0 1164 <!-- /** bounds
michael@0 1165 Bounds describes a bounding box that is not drawn. Bounds is used to specify a rectangle to
michael@0 1166 invalidate or record whether the specified area was drawn.
michael@0 1167 The width and height attribute compute the rectangle's right and bottom edges when the rectangle
michael@0 1168 description is first seen. Animating the rectangle's left or top will not recompute the right or bottom
michael@0 1169 if the width or height have been specified.
michael@0 1170 */ -->
michael@0 1171 <xs:element name="bounds">
michael@0 1172 <xs:complexType>
michael@0 1173 <!-- @attribute bottom The bottom edge of the rectangle. -->
michael@0 1174 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 1175 <!-- @attribute height The height of the rectangle. Setting height computes the
michael@0 1176 bottom attribute from the top attribute. -->
michael@0 1177 <xs:attribute name="height" type="Sk:Float"/>
michael@0 1178 <!-- @attribute inval If set to true, union the drawn bounds to compute an inval area. -->
michael@0 1179 <xs:attribute name="inval" type="Sk:Boolean"/>
michael@0 1180 <!-- @attribute left The left edge of the rectangle. -->
michael@0 1181 <xs:attribute name="left" type="Sk:Float"/>
michael@0 1182 <!-- @attribute needsRedraw Set to true if last draw was visible. -->
michael@0 1183 <xs:attribute name="needsRedraw" type="Sk:Boolean"/>
michael@0 1184 <!-- @attribute right The right edge of the rectangle. -->
michael@0 1185 <xs:attribute name="right" type="Sk:Float"/>
michael@0 1186 <!-- @attribute top The top edge of the rectangle. -->
michael@0 1187 <xs:attribute name="top" type="Sk:Float"/>
michael@0 1188 <!-- @attribute width The width of the rectangle. -->
michael@0 1189 <xs:attribute name="width" type="Sk:Float"/>
michael@0 1190 <xs:attribute name="id" type="xs:ID"/>
michael@0 1191 </xs:complexType>
michael@0 1192 </xs:element>
michael@0 1193
michael@0 1194 <!-- /** clear
michael@0 1195 Clear removes all entries in the display list.
michael@0 1196 */ -->
michael@0 1197 <xs:element name="clear">
michael@0 1198 <xs:complexType>
michael@0 1199 <xs:attribute name="id" type="xs:ID"/>
michael@0 1200 </xs:complexType>
michael@0 1201 </xs:element>
michael@0 1202
michael@0 1203 <!-- /** clip
michael@0 1204 Clip sets the canvas to clip drawing to an element's geometry.
michael@0 1205 A clip element may contain an element or reference an element with the path or
michael@0 1206 rectangle attributes. To make the clip unrestricted, enclose a 'full' element.
michael@0 1207 */ -->
michael@0 1208 <xs:element name="clip">
michael@0 1209 <xs:complexType>
michael@0 1210 <xs:choice minOccurs="0" maxOccurs="1">
michael@0 1211 <xs:element ref="Sk:full"/>
michael@0 1212 <xs:element ref="Sk:rect"/>
michael@0 1213 <xs:element ref="Sk:path"/>
michael@0 1214 <xs:element ref="Sk:polygon"/>
michael@0 1215 <xs:element ref="Sk:polyline"/>
michael@0 1216 </xs:choice>
michael@0 1217 <!-- @attribute path A path-derived element to clip to: either an oval,
michael@0 1218 a path, a polygon, a polyline, or a roundRect. -->
michael@0 1219 <xs:attribute name="path" type="Sk:Path"/>
michael@0 1220 <!-- @attribute rect A rectangle element to clip to. -->
michael@0 1221 <xs:attribute name="rect" type="Sk:Rect"/>
michael@0 1222 <xs:attribute name="id" type="xs:ID"/>
michael@0 1223 </xs:complexType>
michael@0 1224 </xs:element>
michael@0 1225
michael@0 1226 <!-- /** close
michael@0 1227 Close connects the last point in the path's contour to the first if the contour is not already closed.
michael@0 1228 */ -->
michael@0 1229 <xs:element name="close">
michael@0 1230 <xs:complexType>
michael@0 1231 <xs:attribute name="id" type="xs:ID"/>
michael@0 1232 </xs:complexType>
michael@0 1233 </xs:element>
michael@0 1234
michael@0 1235 <!-- /** color
michael@0 1236 Color describes a color in RGB space or HSV space, and its alpha (transparency).
michael@0 1237 */ -->
michael@0 1238 <xs:element name="color">
michael@0 1239 <xs:complexType>
michael@0 1240 <!-- @attribute alpha The alpha component, which describes transparency.
michael@0 1241 Alpha ranges from 0.0 (transparent) to 1.0 (completely opaque). -->
michael@0 1242 <xs:attribute name="alpha" type="Sk:Float"/>
michael@0 1243 <!-- @attribute blue The blue component of an RGB color. Blue ranges from 0 to 255. -->
michael@0 1244 <xs:attribute name="blue" type="Sk:Float"/>
michael@0 1245 <!-- @attribute color The complete color. The color can be specified by name,
michael@0 1246 by hexadecimal value, or with the rgb function. -->
michael@0 1247 <xs:attribute name="color" type="Sk:ARGB"/>
michael@0 1248 <!-- @attribute green The green component of an RGB color. Green ranges from 0 to 255. -->
michael@0 1249 <xs:attribute name="green" type="Sk:Float"/>
michael@0 1250 <!-- @attribute hue The hue component of an HSV color. Hue ranges from 0 to 360. -->
michael@0 1251 <xs:attribute name="hue" type="Sk:Float"/>
michael@0 1252 <!-- @attribute red The red component of an RGB color. Red ranges from 0 to 255. -->
michael@0 1253 <xs:attribute name="red" type="Sk:Float"/>
michael@0 1254 <!-- @attribute saturation The saturation component of an HSV color. Saturation ranges from 0 to 1. -->
michael@0 1255 <xs:attribute name="saturation" type="Sk:Float"/>
michael@0 1256 <!-- @attribute value The value component of an HSV color. Value ranges from 0 to 1. -->
michael@0 1257 <xs:attribute name="value" type="Sk:Float"/>
michael@0 1258 <xs:attribute name="id" type="xs:ID"/>
michael@0 1259 </xs:complexType>
michael@0 1260 </xs:element>
michael@0 1261
michael@0 1262 <!-- /** cubicTo
michael@0 1263 CubicTo adds a cubic to the path, using the last point in the path as the first point of the cubic.
michael@0 1264 */ -->
michael@0 1265 <xs:element name="cubicTo">
michael@0 1266 <xs:complexType>
michael@0 1267 <!-- @attribute x1 The x position of the first off-curve point. -->
michael@0 1268 <xs:attribute name="x1" type="Sk:Float"/>
michael@0 1269 <!-- @attribute x2 The x position of the second off-curve point. -->
michael@0 1270 <xs:attribute name="x2" type="Sk:Float"/>
michael@0 1271 <!-- @attribute x3 The x position of the final on-curve point. -->
michael@0 1272 <xs:attribute name="x3" type="Sk:Float"/>
michael@0 1273 <!-- @attribute y1 The y position of the first off-curve point. -->
michael@0 1274 <xs:attribute name="y1" type="Sk:Float"/>
michael@0 1275 <!-- @attribute y2 The y position of the second off-curve point. -->
michael@0 1276 <xs:attribute name="y2" type="Sk:Float"/>
michael@0 1277 <!-- @attribute y3 The y position of the final on-curve point. -->
michael@0 1278 <xs:attribute name="y3" type="Sk:Float"/>
michael@0 1279 <xs:attribute name="id" type="xs:ID"/>
michael@0 1280 </xs:complexType>
michael@0 1281 </xs:element>
michael@0 1282
michael@0 1283 <!-- /** dash
michael@0 1284 Dash describes an array of dashes and gaps that describe how the paint strokes lines,
michael@0 1285 rectangles, and paths. The intervals, phase, and dashed path are all measured in the same
michael@0 1286 unit space. The phase and distance between dashes is unaffected by the paint's stroke width.
michael@0 1287 */ -->
michael@0 1288 <xs:element name="dash">
michael@0 1289 <xs:complexType>
michael@0 1290 <!-- @attribute intervals An array of floats that alternately describe the lengths of
michael@0 1291 dashes and gaps. Intervals must contain an even number of entries. -->
michael@0 1292 <xs:attribute name="intervals" type="Sk:FloatArray"/>
michael@0 1293 <!-- @attribute phase Phase advances the placement of the first dash. A positive phase
michael@0 1294 preceeds the first dash with a gap. A negative phase shortens the length of the first dash. -->
michael@0 1295 <xs:attribute name="phase" type="Sk:Float"/>
michael@0 1296 <xs:attribute name="id" type="xs:ID"/>
michael@0 1297 </xs:complexType>
michael@0 1298 </xs:element>
michael@0 1299
michael@0 1300 <!-- /** data
michael@0 1301 Data provides metadata to an event. The metadata may be an integer, a float,
michael@0 1302 or a string.
michael@0 1303 */ -->
michael@0 1304 <xs:element name="data">
michael@0 1305 <xs:complexType>
michael@0 1306 <!-- @attribute float The float value associated with the metadata. -->
michael@0 1307 <xs:attribute name="float" type="Sk:Float"/>
michael@0 1308 <!-- @attribute initialized A read-only value set to false (unused by data). -->
michael@0 1309 <xs:attribute name="initialized" type="Sk:Boolean"/>
michael@0 1310 <!-- @attribute int The integer value associated with the metadata. -->
michael@0 1311 <xs:attribute name="int" type="Sk:Int"/>
michael@0 1312 <!-- @attribute name The name of the metadata. This is the name of the data. -->
michael@0 1313 <xs:attribute name="name" type="Sk:String"/>
michael@0 1314 <!-- @attribute string The string value associated with the metadata. -->
michael@0 1315 <xs:attribute name="string" type="Sk:String"/>
michael@0 1316 <xs:attribute name="id" type="xs:ID"/>
michael@0 1317 </xs:complexType>
michael@0 1318 </xs:element>
michael@0 1319
michael@0 1320 <!-- /** discrete
michael@0 1321 Discrete alters the edge of the stroke randomly. Discrete is a path effect, and only has an
michael@0 1322 effect when referenced from a paint.. A <pathEffect/>
michael@0 1323 element with no attributes will dissable discrete.
michael@0 1324 */ -->
michael@0 1325 <xs:element name="discrete">
michael@0 1326 <xs:complexType>
michael@0 1327 <!-- @attribute deviation The amount of wobble in the stroke. -->
michael@0 1328 <xs:attribute name="deviation" type="Sk:Float"/>
michael@0 1329 <!-- @attribute segLength The length of wobble in the stroke. -->
michael@0 1330 <xs:attribute name="segLength" type="Sk:Float"/>
michael@0 1331 <xs:attribute name="id" type="xs:ID"/>
michael@0 1332 </xs:complexType>
michael@0 1333 </xs:element>
michael@0 1334
michael@0 1335 <!-- /** drawTo
michael@0 1336 DrawTo images to a bitmap. The bitmap can be added to the display list
michael@0 1337 to draw the composite image.
michael@0 1338 DrawTo can be used as an offscreen to speed complicated animations, and
michael@0 1339 for bitmap effects such as pixelated zooming.
michael@0 1340 DrawTo can only reference a single drawable element. Use <add>,
michael@0 1341 <group>, or <save> to draw multiple elements with <drawTo>.
michael@0 1342 */ -->
michael@0 1343 <xs:element name="drawTo">
michael@0 1344 <xs:complexType>
michael@0 1345 <xs:choice maxOccurs="unbounded" >
michael@0 1346 <xs:element ref="Sk:add"/>
michael@0 1347 <xs:element ref="Sk:apply"/>
michael@0 1348 <xs:element ref="Sk:bitmap"/>
michael@0 1349 <xs:element ref="Sk:bounds"/>
michael@0 1350 <!-- <xs:element ref="Sk3D:camera"/> -->
michael@0 1351 <xs:element ref="Sk:clear"/>
michael@0 1352 <xs:element ref="Sk:clip"/>
michael@0 1353 <xs:element ref="Sk:color"/>
michael@0 1354 <xs:element ref="Sk:full"/>
michael@0 1355 <xs:element ref="Sk:group"/>
michael@0 1356 <xs:element ref="Sk:image"/>
michael@0 1357 <xs:element ref="Sk:line"/>
michael@0 1358 <xs:element ref="Sk:matrix"/>
michael@0 1359 <xs:element ref="Sk:move"/>
michael@0 1360 <xs:element ref="Sk:oval"/>
michael@0 1361 <xs:element ref="Sk:paint"/>
michael@0 1362 <!-- <xs:element ref="Sk:patch"/> -->
michael@0 1363 <xs:element ref="Sk:path"/>
michael@0 1364 <xs:element ref="Sk:point"/>
michael@0 1365 <xs:element ref="Sk:polygon"/>
michael@0 1366 <xs:element ref="Sk:polyline"/>
michael@0 1367 <xs:element ref="Sk:rect"/>
michael@0 1368 <xs:element ref="Sk:remove"/>
michael@0 1369 <xs:element ref="Sk:replace"/>
michael@0 1370 <xs:element ref="Sk:roundRect"/>
michael@0 1371 <xs:element ref="Sk:save"/>
michael@0 1372 <xs:element ref="Sk:text"/>
michael@0 1373 <xs:element ref="Sk:textBox"/>
michael@0 1374 <xs:element ref="Sk:textOnPath"/>
michael@0 1375 <xs:element ref="Sk:textToPath"/>
michael@0 1376 </xs:choice>
michael@0 1377 <!-- @attribute drawOnce If set, the drawTo will only draw a single time. -->
michael@0 1378 <xs:attribute name="drawOnce" type="Sk:Boolean"/>
michael@0 1379 <!-- @attribute use The bitmap to draw into. -->
michael@0 1380 <xs:attribute name="use" type="Sk:bitmap"/>
michael@0 1381 <xs:attribute name="id" type="xs:ID"/>
michael@0 1382 </xs:complexType>
michael@0 1383 </xs:element>
michael@0 1384
michael@0 1385 <!-- /** dump
michael@0 1386 Dump prints a list of the items in the display list and all items'
michael@0 1387 children to the debug console. Dump is only available in Debug
michael@0 1388 builds. */ -->
michael@0 1389 <xs:element name="dump">
michael@0 1390 <xs:complexType>
michael@0 1391 <!-- @attribute displayList Dumps the current display list if true. The display list is also
michael@0 1392 dumped if dump has no attributes. -->
michael@0 1393 <xs:attribute name="displayList" type="Sk:Boolean"/>
michael@0 1394 <!-- @attribute eventList Dumps the list of events, both enabled and disabled. -->
michael@0 1395 <xs:attribute name="eventList" type="Sk:Boolean"/>
michael@0 1396 <!-- @attribute events Outputs each event element as it is enabled. -->
michael@0 1397 <xs:attribute name="events" type="Sk:Boolean"/>
michael@0 1398 <!-- @attribute groups Outputs each group element as its condition is evaluated. -->
michael@0 1399 <xs:attribute name="groups" type="Sk:Boolean"/>
michael@0 1400 <!-- @attribute name Outputs the values associated with a single named element. -->
michael@0 1401 <xs:attribute name="name" type="Sk:String"/>
michael@0 1402 <!-- @attribute posts Outputs each post element as it is enabled. -->
michael@0 1403 <xs:attribute name="posts" type="Sk:Boolean"/>
michael@0 1404 <!-- @attribute script Evaluates the provided script -->
michael@0 1405 <xs:attribute name="script" type="Sk:String"/>
michael@0 1406 <xs:attribute name="id" type="xs:ID"/>
michael@0 1407 </xs:complexType>
michael@0 1408 </xs:element>
michael@0 1409
michael@0 1410 <!-- /** emboss
michael@0 1411 PRELIMINARY [to be replaced with SkEmbossMaskFilter.h doxyfomation
michael@0 1412 at some point]
michael@0 1413 Emboss applies a mask filter to the paint that makes bias the object's color
michael@0 1414 towards white or black depending on the normals of the path contour, giving
michael@0 1415 the shape a 3D raised or depressed effect.
michael@0 1416 Embossing is replaced by subsequent mask filter elements, or
michael@0 1417 disabled a negative radius, or by an empty <mask filter> element.
michael@0 1418 */ -->
michael@0 1419 <xs:element name="emboss">
michael@0 1420 <xs:complexType>
michael@0 1421 <!-- @attribute ambient The amount of ambient light, from 0 to 1. -->
michael@0 1422 <xs:attribute name="ambient" type="Sk:Float"/>
michael@0 1423 <!-- @attribute direction The direction of the light source, as descibed by a 3D vector.
michael@0 1424 (The vector is normalized to a unit length of 1.0.) -->
michael@0 1425 <xs:attribute name="direction" type="Sk:FloatArray"/>
michael@0 1426 <!-- @attribute radius The extent of the filter effect in unit space. If the radius is less
michael@0 1427 than zero, the emboss has no effect. -->
michael@0 1428 <xs:attribute name="radius" type="Sk:Float"/>
michael@0 1429 <!-- @attribute specular The expotential intensity of the light, from 0 to 1.
michael@0 1430 Each increase of 0.0625 doubles the intensity. -->
michael@0 1431 <xs:attribute name="specular" type="Sk:Float"/>
michael@0 1432 <xs:attribute name="id" type="xs:ID"/>
michael@0 1433 </xs:complexType>
michael@0 1434 </xs:element>
michael@0 1435
michael@0 1436 <!-- /** event
michael@0 1437 Event contains a series of actions performed each time the event's criteria are satisfied.
michael@0 1438 These actions may modify the display list, may enable animations which in turn modify
michael@0 1439 elements' attributes, and may post other events.
michael@0 1440 */ -->
michael@0 1441 <xs:element name="event">
michael@0 1442 <xs:complexType>
michael@0 1443 <xs:choice maxOccurs="unbounded" >
michael@0 1444 <xs:element ref="Sk:add"/>
michael@0 1445 <xs:element ref="Sk:apply"/>
michael@0 1446 <xs:element ref="Sk:array"/>
michael@0 1447 <xs:element ref="Sk:bitmap"/>
michael@0 1448 <xs:element ref="Sk:boolean"/>
michael@0 1449 <xs:element ref="Sk:bounds"/>
michael@0 1450 <!-- <xs:element ref="Sk3D:camera"/> -->
michael@0 1451 <xs:element ref="Sk:clear"/>
michael@0 1452 <xs:element ref="Sk:clip"/>
michael@0 1453 <xs:element ref="Sk:color"/>
michael@0 1454 <xs:element ref="Sk:drawTo"/>
michael@0 1455 <xs:element ref="Sk:dump"/>
michael@0 1456 <xs:element ref="Sk:float"/>
michael@0 1457 <xs:element ref="Sk:full"/>
michael@0 1458 <xs:element ref="Sk:group"/>
michael@0 1459 <xs:element ref="Sk:hitClear"/>
michael@0 1460 <xs:element ref="Sk:hitTest"/>
michael@0 1461 <xs:element ref="Sk:image"/>
michael@0 1462 <xs:element ref="Sk:input"/>
michael@0 1463 <xs:element ref="Sk:int"/>
michael@0 1464 <xs:element ref="Sk:line"/>
michael@0 1465 <xs:element ref="Sk:matrix"/>
michael@0 1466 <xs:element ref="Sk:move"/>
michael@0 1467 <xs:element ref="Sk:movie"/>
michael@0 1468 <xs:element ref="Sk:oval"/>
michael@0 1469 <xs:element ref="Sk:paint"/>
michael@0 1470 <!-- <xs:element ref="Sk:patch"/> -->
michael@0 1471 <xs:element ref="Sk:path"/>
michael@0 1472 <xs:element ref="Sk:point"/>
michael@0 1473 <xs:element ref="Sk:polygon"/>
michael@0 1474 <xs:element ref="Sk:polyline"/>
michael@0 1475 <xs:element ref="Sk:post"/>
michael@0 1476 <xs:element ref="Sk:random"/>
michael@0 1477 <xs:element ref="Sk:rect"/>
michael@0 1478 <xs:element ref="Sk:remove"/>
michael@0 1479 <xs:element ref="Sk:replace"/>
michael@0 1480 <xs:element ref="Sk:roundRect"/>
michael@0 1481 <xs:element ref="Sk:save"/>
michael@0 1482 <xs:element ref="Sk:snapshot"/>
michael@0 1483 <xs:element ref="Sk:string"/>
michael@0 1484 <xs:element ref="Sk:text"/>
michael@0 1485 <xs:element ref="Sk:textBox"/>
michael@0 1486 <xs:element ref="Sk:textOnPath"/>
michael@0 1487 <xs:element ref="Sk:textToPath"/>
michael@0 1488 </xs:choice>
michael@0 1489 <!-- @attribute code The key code to match to a key press event, one of @pattern.
michael@0 1490 If the code is set to @pattern[0], the event is never activated. -->
michael@0 1491 <xs:attribute name="code" type="Sk:EventCode"/>
michael@0 1492 <!-- @attribute disable If true, the event cannot be activated. By default false.. -->
michael@0 1493 <xs:attribute name="disable" type="Sk:Boolean"/>
michael@0 1494 <!-- @attribute key The character code to match to a key down event.
michael@0 1495 When read, the key that activated this event. -->
michael@0 1496 <xs:attribute name="key" type="Sk:String"/>
michael@0 1497 <!-- @attribute keys A dash-separated continuous range of character codes to match
michael@0 1498 to a key down event. Read the key attribute to determine the key that activated this event. -->
michael@0 1499 <xs:attribute name="keys" type="Sk:String"/> <!-- single or range of keys -->
michael@0 1500 <!-- @attribute kind The event kind that activates this event, one of @pattern.
michael@0 1501 If kind equals keyChar, either attribute key or keys is expected.
michael@0 1502 If kind equals keyPress, attribute code is expected.
michael@0 1503 If kind equals onEnd, attribute target is expected.
michael@0 1504 If kind equals onLoad, the event is activated when the document containing the event
michael@0 1505 is loaded. The onLoad attribute cannot be activated through a post event.
michael@0 1506 If kind equals user, the event is activated when the posted event targets this event's ID. -->
michael@0 1507 <xs:attribute name="kind" type="Sk:EventKind"/>
michael@0 1508 <!-- @attribute target The element to listen to which activates this event. -->
michael@0 1509 <xs:attribute name="target" type="Sk:String" />
michael@0 1510 <!-- @attribute x For click events, the x-coordinate of the click. -->
michael@0 1511 <xs:attribute name="x" type="Sk:Float" />
michael@0 1512 <!-- @attribute y For click events, the y-coordinate of the click. -->
michael@0 1513 <xs:attribute name="y" type="Sk:Float" />
michael@0 1514 <xs:attribute name="id" type="xs:ID"/>
michael@0 1515 </xs:complexType>
michael@0 1516 </xs:element>
michael@0 1517
michael@0 1518 <!-- /** float
michael@0 1519 Float contains a signed fractional value. The float element cannot be added to a display list,
michael@0 1520 but can be set by animations and read by any attribute definition.
michael@0 1521 */ -->
michael@0 1522 <xs:element name="float">
michael@0 1523 <xs:complexType>
michael@0 1524 <!-- @attribute value The contained float. -->
michael@0 1525 <xs:attribute name="value" type="Sk:Float"/>
michael@0 1526 <xs:attribute name="id" type="xs:ID"/>
michael@0 1527 </xs:complexType>
michael@0 1528 </xs:element>
michael@0 1529
michael@0 1530 <!-- /** fromPath
michael@0 1531 FromPath concatenates the parent matrix with a new matrix
michael@0 1532 that maps a unit vector to a point on the given path.
michael@0 1533 A fromPath element may contain a path element, or may refer to a previously
michael@0 1534 defined path element with the path attribute.
michael@0 1535 */ -->
michael@0 1536 <xs:element name="fromPath">
michael@0 1537 <xs:complexType>
michael@0 1538 <xs:choice >
michael@0 1539 <!-- @element path The path to evaluate. -->
michael@0 1540 <xs:element ref="Sk:path" minOccurs="0" />
michael@0 1541 </xs:choice>
michael@0 1542 <!-- @attribute mode One of @pattern.
michael@0 1543 If mode is set to normal, the matrix maps the unit vector's angle and position.
michael@0 1544 If mode is set to angle, the matrix maps only the unit vector's angle.
michael@0 1545 If mode is set to position, the matrix maps only the unit vector's position. -->
michael@0 1546 <xs:attribute name="mode" type="Sk:FromPathMode"/>
michael@0 1547 <!-- @attribute offset The distance along the path to evaluate. -->
michael@0 1548 <xs:attribute name="offset" type="Sk:Float"/>
michael@0 1549 <!-- @attribute path The path to evaluate. -->
michael@0 1550 <xs:attribute name="path" type="Sk:Path"/>
michael@0 1551 <xs:attribute name="id" type="xs:ID"/>
michael@0 1552 </xs:complexType>
michael@0 1553 </xs:element>
michael@0 1554
michael@0 1555 <!-- /** full
michael@0 1556 Full paints the entire canvas to the limit of the canvas' clip.
michael@0 1557 */ -->
michael@0 1558 <xs:element name="full">
michael@0 1559 <xs:complexType>
michael@0 1560 <xs:attribute name="id" type="xs:ID"/>
michael@0 1561 </xs:complexType>
michael@0 1562 </xs:element>
michael@0 1563
michael@0 1564 <!-- /** group
michael@0 1565 The group element collects a series of elements into a group. The group can be referenced
michael@0 1566 or defined within elements, like apply, which operate on any kind of element. Groups
michael@0 1567 may contain groups. An element in a group draws identically to an element outside a group.
michael@0 1568 */ -->
michael@0 1569 <xs:element name="group">
michael@0 1570 <xs:complexType>
michael@0 1571 <xs:choice maxOccurs="unbounded">
michael@0 1572 <xs:element ref="Sk:add"/>
michael@0 1573 <xs:element ref="Sk:apply"/>
michael@0 1574 <xs:element ref="Sk:array"/>
michael@0 1575 <xs:element ref="Sk:bitmap"/>
michael@0 1576 <xs:element ref="Sk:boolean"/>
michael@0 1577 <xs:element ref="Sk:bounds"/>
michael@0 1578 <!-- <xs:element ref="Sk3D:camera"/> -->
michael@0 1579 <xs:element ref="Sk:clear"/>
michael@0 1580 <xs:element ref="Sk:clip"/>
michael@0 1581 <xs:element ref="Sk:drawTo"/>
michael@0 1582 <xs:element ref="Sk:float"/>
michael@0 1583 <xs:element ref="Sk:full"/>
michael@0 1584 <xs:element ref="Sk:group"/>
michael@0 1585 <xs:element ref="Sk:hitClear"/>
michael@0 1586 <xs:element ref="Sk:hitTest"/>
michael@0 1587 <xs:element ref="Sk:image"/>
michael@0 1588 <xs:element ref="Sk:int"/>
michael@0 1589 <xs:element ref="Sk:line"/>
michael@0 1590 <xs:element ref="Sk:matrix"/>
michael@0 1591 <xs:element ref="Sk:move"/>
michael@0 1592 <xs:element ref="Sk:oval"/>
michael@0 1593 <xs:element ref="Sk:paint"/>
michael@0 1594 <!-- <xs:element ref="Sk:patch"/> -->
michael@0 1595 <xs:element ref="Sk:path"/>
michael@0 1596 <xs:element ref="Sk:point"/>
michael@0 1597 <xs:element ref="Sk:polygon"/>
michael@0 1598 <xs:element ref="Sk:polyline"/>
michael@0 1599 <xs:element ref="Sk:post"/>
michael@0 1600 <xs:element ref="Sk:random"/>
michael@0 1601 <xs:element ref="Sk:rect"/>
michael@0 1602 <xs:element ref="Sk:remove"/>
michael@0 1603 <xs:element ref="Sk:replace"/>
michael@0 1604 <xs:element ref="Sk:roundRect"/>
michael@0 1605 <xs:element ref="Sk:save"/>
michael@0 1606 <xs:element ref="Sk:snapshot"/>
michael@0 1607 <xs:element ref="Sk:string"/>
michael@0 1608 <xs:element ref="Sk:text"/>
michael@0 1609 <xs:element ref="Sk:textBox"/>
michael@0 1610 <xs:element ref="Sk:textOnPath"/>
michael@0 1611 <xs:element ref="Sk:textToPath"/>
michael@0 1612 </xs:choice>
michael@0 1613 <!-- @attribute condition If present and zero, the contained elements are ignored
michael@0 1614 when drawn. -->
michael@0 1615 <xs:attribute name="condition" type="Sk:DynamicString"/>
michael@0 1616 <!-- @attribute enableCondition If present and zero, the contained elements are ignored
michael@0 1617 when enabled. -->
michael@0 1618 <xs:attribute name="enableCondition" type="Sk:DynamicString"/>
michael@0 1619 <xs:attribute name="id" type="xs:ID"/>
michael@0 1620 </xs:complexType>
michael@0 1621 </xs:element>
michael@0 1622
michael@0 1623 <xs:element name="hitClear" >
michael@0 1624 <xs:complexType>
michael@0 1625 <xs:choice maxOccurs="1">
michael@0 1626 <xs:element ref="Sk:array"/>
michael@0 1627 </xs:choice>
michael@0 1628 <!-- @attribute targets An array of element IDs to clear their hit-tested state. -->
michael@0 1629 <xs:attribute name="targets" type="Sk:DisplayableArray"/>
michael@0 1630 <xs:attribute name="id" type="xs:ID"/>
michael@0 1631 </xs:complexType>
michael@0 1632 </xs:element>
michael@0 1633
michael@0 1634 <xs:element name="hitTest" >
michael@0 1635 <xs:complexType>
michael@0 1636 <xs:choice maxOccurs="2">
michael@0 1637 <xs:element ref="Sk:array"/>
michael@0 1638 </xs:choice>
michael@0 1639 <!-- @attribute bullets An array of element IDs to test for intersection with targets. -->
michael@0 1640 <xs:attribute name="bullets" type="Sk:DisplayableArray"/>
michael@0 1641 <!-- @attribute hits The targets the bullets hit. A read-only array of indices, one index
michael@0 1642 per bullet. The value of the array element is the index of the target hit, or -1 if no
michael@0 1643 target was hit. -->
michael@0 1644 <xs:attribute name="hits" type="Sk:IntArray"/>
michael@0 1645 <!-- @attribute targets An array of element IDs to test for intersection with bullets. -->
michael@0 1646 <xs:attribute name="targets" type="Sk:DisplayableArray"/>
michael@0 1647 <!-- @attribute value Read only; set to true if some bullet hit some target. -->
michael@0 1648 <xs:attribute name="value" type="Sk:Boolean"/>
michael@0 1649 <xs:attribute name="id" type="xs:ID"/>
michael@0 1650 </xs:complexType>
michael@0 1651 </xs:element>
michael@0 1652
michael@0 1653 <!-- /** image
michael@0 1654 Image creates a reference to a JPEG, PNG or GIF. The image may be referenced
michael@0 1655 through the local file system, the internet, or embedded in the document in Base64
michael@0 1656 format. The specific image type is determined by examining the byte stream.
michael@0 1657 */ -->
michael@0 1658 <xs:element name="image">
michael@0 1659 <xs:complexType>
michael@0 1660 <!-- @attribute base64 The image in Base64 notation. See http://rfc.net/rfc2045.html
michael@0 1661 for the base64 format. -->
michael@0 1662 <xs:attribute name="base64" type="Sk:Base64"/>
michael@0 1663 <!-- @attribute height The height of the image (read-only). -->
michael@0 1664 <xs:attribute name="height" type="Sk:Int"/>
michael@0 1665 <!-- @attribute src The URI reference, local to the contaiing document. -->
michael@0 1666 <xs:attribute name="src" type="Sk:String"/>
michael@0 1667 <!-- @attribute width The width of the image (read-only). -->
michael@0 1668 <xs:attribute name="width" type="Sk:Int"/>
michael@0 1669 <!-- @attribute x The position of the left edge of the image in local coordinates. -->
michael@0 1670 <xs:attribute name="x" type="Sk:Float"/>
michael@0 1671 <!-- @attribute y The position of the top edge of the image in local coordinates. -->
michael@0 1672 <xs:attribute name="y" type="Sk:Float"/>
michael@0 1673 <xs:attribute name="id" type="xs:ID"/>
michael@0 1674 </xs:complexType>
michael@0 1675 </xs:element>
michael@0 1676
michael@0 1677 <!-- /** include
michael@0 1678 Include adds the referenced XML to the containing document. Unlike movie, the XML
michael@0 1679 directives can reference the document's IDs and can define new IDs that are referenced
michael@0 1680 by the remainder of the document or subsequent includes.
michael@0 1681 */ -->
michael@0 1682 <xs:element name="include">
michael@0 1683 <xs:complexType>
michael@0 1684 <!-- @attribute src The URI reference, local to the containing document,
michael@0 1685 containing the include's XML. -->
michael@0 1686 <xs:attribute name="src" type="Sk:String"/>
michael@0 1687 <xs:attribute name="id" type="xs:ID"/>
michael@0 1688 </xs:complexType>
michael@0 1689 </xs:element>
michael@0 1690
michael@0 1691 <!-- /** input
michael@0 1692 Input captures the metadata passed from an event. When the metadata's name or id
michael@0 1693 matches the metadata's name, the metadata's payload is copied to the corresponding
michael@0 1694 input attribute.
michael@0 1695 */ -->
michael@0 1696 <xs:element name="input">
michael@0 1697 <xs:complexType>
michael@0 1698 <!-- @attribute float The floating point payload carried by the metadata. -->
michael@0 1699 <xs:attribute name="float" type="Sk:Float"/>
michael@0 1700 <!-- @attribute initialized A read-only value set to true if the input received a value
michael@0 1701 from the event. -->
michael@0 1702 <xs:attribute name="initialized" type="Sk:Boolean"/>
michael@0 1703 <!-- @attribute int The signed integer payload carried by the metadata. -->
michael@0 1704 <xs:attribute name="int" type="Sk:Int"/>
michael@0 1705 <!-- @attribute name The name of the metadata containing the payload. Note that
michael@0 1706 the name or id may match the payload, but that XML requires the id to be
michael@0 1707 uniquely defined in the document, while multiple input elements may reuse
michael@0 1708 the name. -->
michael@0 1709 <xs:attribute name="name" type="Sk:String"/>
michael@0 1710 <!-- @attribute string The text payload carried by the metadata. -->
michael@0 1711 <xs:attribute name="string" type="Sk:String"/>
michael@0 1712 <xs:attribute name="id" type="xs:ID"/>
michael@0 1713 </xs:complexType>
michael@0 1714 </xs:element>
michael@0 1715
michael@0 1716 <!-- /** int
michael@0 1717 Int contains an integer. The int element cannot be added to a display list, but can
michael@0 1718 by set by animations and read by any attribute definition. An int element may be used,
michael@0 1719 for instance, to index through an array element.
michael@0 1720 */ -->
michael@0 1721 <xs:element name="int">
michael@0 1722 <xs:complexType>
michael@0 1723 <!-- @attribute value The contained integer. -->
michael@0 1724 <xs:attribute name="value" type="Sk:Int"/>
michael@0 1725 <xs:attribute name="id" type="xs:ID"/>
michael@0 1726 </xs:complexType>
michael@0 1727 </xs:element>
michael@0 1728
michael@0 1729 <!-- /** line
michael@0 1730 Line describes a line between two points. As noted below, the paint's stroke and
michael@0 1731 strokeAndFill attributes are ignored.
michael@0 1732 */ -->
michael@0 1733 <xs:element name="line">
michael@0 1734 <xs:complexType>
michael@0 1735 <!-- @attribute x1 The start point's x value. -->
michael@0 1736 <xs:attribute name="x1" type="Sk:Float"/>
michael@0 1737 <!-- @attribute x2 The stop point's x value. -->
michael@0 1738 <xs:attribute name="x2" type="Sk:Float"/>
michael@0 1739 <!-- @attribute y1 The start point's y value. -->
michael@0 1740 <xs:attribute name="y1" type="Sk:Float"/>
michael@0 1741 <!-- @attribute y2 The stop point's y value. -->
michael@0 1742 <xs:attribute name="y2" type="Sk:Float"/>
michael@0 1743 <xs:attribute name="id" type="xs:ID"/>
michael@0 1744 </xs:complexType>
michael@0 1745 </xs:element>
michael@0 1746
michael@0 1747 <!-- /** lineTo
michael@0 1748 LineTo adds a line from the last point in a path to the specified point.
michael@0 1749 */ -->
michael@0 1750 <xs:element name="lineTo">
michael@0 1751 <xs:complexType>
michael@0 1752 <!-- @attribute x The final path x coordinate. -->
michael@0 1753 <xs:attribute name="x" type="Sk:Float"/>
michael@0 1754 <!-- @attribute y The final path y coordinate. -->
michael@0 1755 <xs:attribute name="y" type="Sk:Float"/>
michael@0 1756 <xs:attribute name="id" type="xs:ID"/>
michael@0 1757 </xs:complexType>
michael@0 1758 </xs:element>
michael@0 1759
michael@0 1760 <!-- /** linearGradient
michael@0 1761 LinearGradient sets the paint shader to ramp between two or more colors.
michael@0 1762 */ -->
michael@0 1763 <xs:element name="linearGradient">
michael@0 1764 <xs:complexType>
michael@0 1765 <xs:choice maxOccurs="unbounded">
michael@0 1766 <xs:element ref="Sk:color"/>
michael@0 1767 <xs:element ref="Sk:matrix"/>
michael@0 1768 </xs:choice>
michael@0 1769 <!-- @attribute matrix Matrix applies a 3x3 transform to the gradient. -->
michael@0 1770 <xs:attribute name="matrix" type="Sk:Matrix"/>
michael@0 1771 <!-- @attribute tileMode One of @pattern. @patternDescription -->
michael@0 1772 <xs:attribute name="tileMode" type="Sk:TileMode"/>
michael@0 1773 <!-- @attribute offsets An optional array of values used to bias the colors. The first entry
michael@0 1774 in the array must be 0.0, the last must be 1.0, and intermediate values must ascend. -->
michael@0 1775 <xs:attribute name="offsets" type="Sk:FloatArray"/>
michael@0 1776 <!-- @attribute points Two points describing the start and end of the gradient. -->
michael@0 1777 <xs:attribute name="points" type="Sk:Point"/> <!-- not right; should be array of 2 points -->
michael@0 1778 <!-- @attribute unitMapper A script that returns the mapping for [0,1] for the gradient.
michael@0 1779 The script can use the predefined variable 'unit' to compute the mapping. For instance,
michael@0 1780 "unit*unit" squares the value (while still keeping it in the range of [0,1].) The computed number
michael@0 1781 is pinned to from 0 to 1 after the script is executed. -->
michael@0 1782 <xs:attribute name="unitMapper" type="Sk:String"/>
michael@0 1783 <xs:attribute name="id" type="xs:ID"/>
michael@0 1784 </xs:complexType>
michael@0 1785 </xs:element>
michael@0 1786
michael@0 1787 <!-- /** maskFilter
michael@0 1788 MaskFilter disables any mask filter referenced by the paint.
michael@0 1789 */ -->
michael@0 1790 <xs:element name="maskFilter">
michael@0 1791 <xs:complexType>
michael@0 1792 <xs:attribute name="id" type="xs:ID"/>
michael@0 1793 </xs:complexType>
michael@0 1794 </xs:element>
michael@0 1795
michael@0 1796 <!-- /** matrix
michael@0 1797 Matrix transforms all points drawn to the canvas. The matrix may translate, scale, skew, rotate,
michael@0 1798 or apply perspective, or apply any combination.
michael@0 1799 */ -->
michael@0 1800 <xs:element name="matrix">
michael@0 1801 <xs:complexType>
michael@0 1802 <xs:choice maxOccurs="unbounded">
michael@0 1803 <!-- @element fromPath FromPath maps a unit vector to a position and direction on a path. -->
michael@0 1804 <xs:element ref="Sk:fromPath"/>
michael@0 1805 <!-- @element polyToPoly PolyToPoly maps a points between two polygons. -->
michael@0 1806 <xs:element ref="Sk:polyToPoly"/>
michael@0 1807 <!-- @element rectToRect RectToRect maps a points between two rectangles. -->
michael@0 1808 <xs:element ref="Sk:rectToRect"/>
michael@0 1809 <!-- @element rotate Rotate computes the matrix rotation in degrees. -->
michael@0 1810 <xs:element ref="Sk:rotate"/>
michael@0 1811 <!-- @element scale Scale stretches or shrinks horizontally, vertically, or both. -->
michael@0 1812 <xs:element ref="Sk:scale"/>
michael@0 1813 <!-- @element skew Skew slants horizontally, vertically, or both. -->
michael@0 1814 <xs:element ref="Sk:skew"/>
michael@0 1815 <!-- @element translate Translate moves horizontally, vertically, or both. -->
michael@0 1816 <xs:element ref="Sk:translate"/>
michael@0 1817 </xs:choice>
michael@0 1818 <!-- @attribute matrix Nine floats describing a 3x3 matrix. -->
michael@0 1819 <xs:attribute name="matrix" type="Sk:FloatArray"/>
michael@0 1820 <!-- @attribute perspectX The [0][2] element of the 3x3 matrix. -->
michael@0 1821 <xs:attribute name="perspectX" type="Sk:Float"/>
michael@0 1822 <!-- @attribute perspectY The [1][2] element of the 3x3 matrix. -->
michael@0 1823 <xs:attribute name="perspectY" type="Sk:Float"/>
michael@0 1824 <!-- @attribute rotate The angle to rotate in degrees. -->
michael@0 1825 <xs:attribute name="rotate" type="Sk:Float"/>
michael@0 1826 <!-- @attribute scale The scale to apply in both X and Y.. -->
michael@0 1827 <xs:attribute name="scale" type="Sk:Float"/>
michael@0 1828 <!-- @attribute scaleX The [0][0] element of the 3x3 matrix. -->
michael@0 1829 <xs:attribute name="scaleX" type="Sk:Float"/>
michael@0 1830 <!-- @attribute scaleY The [1][1] element of the 3x3 matrix. -->
michael@0 1831 <xs:attribute name="scaleY" type="Sk:Float"/>
michael@0 1832 <!-- @attribute skewX The [0][1] element of the 3x3 matrix. -->
michael@0 1833 <xs:attribute name="skewX" type="Sk:Float"/>
michael@0 1834 <!-- @attribute skewY The [1][0] element of the 3x3 matrix. -->
michael@0 1835 <xs:attribute name="skewY" type="Sk:Float"/>
michael@0 1836 <!-- @attribute translate A point specifying the translation in X and Y. -->
michael@0 1837 <xs:attribute name="translate" type="Sk:Point"/>
michael@0 1838 <!-- @attribute translateX The [2][0] element of the 3x3 matrix. -->
michael@0 1839 <xs:attribute name="translateX" type="Sk:Float"/>
michael@0 1840 <!-- @attribute translateY The [2][1] element of the 3x3 matrix. -->
michael@0 1841 <xs:attribute name="translateY" type="Sk:Float"/>
michael@0 1842 <xs:attribute name="id" type="xs:ID"/>
michael@0 1843 </xs:complexType>
michael@0 1844 </xs:element>
michael@0 1845
michael@0 1846 <!-- /** move
michael@0 1847 Move an element in the display list in front or behind other elements.
michael@0 1848 If where and offset are omitted, the element is moved to the end of the display list.
michael@0 1849 If where is specified, the element is moved before the first occurance of where in the display list.
michael@0 1850 If offset and where are specified, the element is moved before where plus offset.
michael@0 1851 A positive offset without where moves the element to the start of the list plus offset.
michael@0 1852 A negative offset without where moves the element to the end of the list minus offset.
michael@0 1853 */ -->
michael@0 1854 <xs:element name="move">
michael@0 1855 <xs:complexType>
michael@0 1856 <!-- @attribute mode Has no effect. -->
michael@0 1857 <xs:attribute name="mode" type="Sk:AddMode"/>
michael@0 1858 <!-- @attribute offset The destination position using the rules listed above. -->
michael@0 1859 <xs:attribute name="offset" type="Sk:Int"/>
michael@0 1860 <!-- @attribute use The element to move. -->
michael@0 1861 <xs:attribute name="use" type="Sk:Drawable"/>
michael@0 1862 <!-- @attribute where The ID of the first display list entry to move to. -->
michael@0 1863 <xs:attribute name="where" type="Sk:Drawable"/>
michael@0 1864 <xs:attribute name="id" type="xs:ID"/>
michael@0 1865 </xs:complexType>
michael@0 1866 </xs:element>
michael@0 1867
michael@0 1868 <!-- /** moveTo
michael@0 1869 MoveTo specifies the first point in a path contour.
michael@0 1870 */ -->
michael@0 1871 <xs:element name="moveTo">
michael@0 1872 <xs:complexType>
michael@0 1873 <!-- @attribute x The point's x coordinate. -->
michael@0 1874 <xs:attribute name="x" type="Sk:Float"/>
michael@0 1875 <!-- @attribute y The point's y coordinate. -->
michael@0 1876 <xs:attribute name="y" type="Sk:Float"/>
michael@0 1877 <xs:attribute name="id" type="xs:ID"/>
michael@0 1878 </xs:complexType>
michael@0 1879 </xs:element>
michael@0 1880
michael@0 1881 <!-- /** movie
michael@0 1882 Movie describes a display list within the current canvas and paint. Movies can contain
michael@0 1883 movies. One movie cannot affect how another movie draws, but movies can communicate
michael@0 1884 with each other by posting events.
michael@0 1885 */ -->
michael@0 1886 <xs:element name="movie">
michael@0 1887 <xs:complexType>
michael@0 1888 <!-- @attribute src The URI reference, local to the containing document, containing the movie's XML. -->
michael@0 1889 <xs:attribute name="src" type="Sk:String"/>
michael@0 1890 <xs:attribute name="id" type="xs:ID"/>
michael@0 1891 </xs:complexType>
michael@0 1892 </xs:element>
michael@0 1893
michael@0 1894 <!-- /** oval
michael@0 1895 Oval describes a circle stretched to fit in a rectangle.
michael@0 1896 The width and height attribute compute the oval's right and bottom edges when the oval
michael@0 1897 description is first seen. Animating the oval's left or top will not recompute the right or bottom
michael@0 1898 if the width or height have been specified.
michael@0 1899 */ -->
michael@0 1900 <xs:element name="oval">
michael@0 1901 <xs:complexType>
michael@0 1902 <!-- @attribute bottom The bottom edge of the oval. -->
michael@0 1903 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 1904 <!-- @attribute height The height of the oval. -->
michael@0 1905 <xs:attribute name="height" type="Sk:Float"/>
michael@0 1906 <!-- @attribute left The left edge of the oval. -->
michael@0 1907 <xs:attribute name="left" type="Sk:Float"/>
michael@0 1908 <!-- @attribute needsRedraw Set to true if last draw was visible. -->
michael@0 1909 <xs:attribute name="needsRedraw" type="Sk:Boolean"/>
michael@0 1910 <!-- @attribute right The right edge of the oval. -->
michael@0 1911 <xs:attribute name="right" type="Sk:Float"/>
michael@0 1912 <!-- @attribute top The top edge of the oval. -->
michael@0 1913 <xs:attribute name="top" type="Sk:Float"/>
michael@0 1914 <!-- @attribute width The width of the oval. -->
michael@0 1915 <xs:attribute name="width" type="Sk:Float"/>
michael@0 1916 <xs:attribute name="id" type="xs:ID"/>
michael@0 1917 </xs:complexType>
michael@0 1918 </xs:element>
michael@0 1919
michael@0 1920 <!-- /** paint
michael@0 1921 Paint uses color, flags, path effects, mask filters, shaders, and stroke effects when drawing
michael@0 1922 geometries, images, and text.
michael@0 1923 */ -->
michael@0 1924 <xs:element name="paint">
michael@0 1925 <xs:complexType>
michael@0 1926 <xs:choice maxOccurs="unbounded">
michael@0 1927 <!-- @element bitmapShader Sets or cancels an image to draw as the color. -->
michael@0 1928 <xs:element ref="Sk:bitmapShader"/>
michael@0 1929 <!-- @element blur Blur radially draws the shape with varying transparency. -->
michael@0 1930 <xs:element ref="Sk:blur"/>
michael@0 1931 <!-- @element color Color specifies a solid color in RGB or HSV. -->
michael@0 1932 <xs:element ref="Sk:color"/>
michael@0 1933 <!-- @element dash Dashes alternates stroking with dashes and gaps. -->
michael@0 1934 <xs:element ref="Sk:dash"/>
michael@0 1935 <!-- @element discrete Discrete wobbles the geometry randomly. -->
michael@0 1936 <xs:element ref="Sk:discrete"/>
michael@0 1937 <!-- @element emboss Emboss simulates a 3D light to show highlights and relief. -->
michael@0 1938 <xs:element ref="Sk:emboss"/>
michael@0 1939 <!-- @element linearGradient LinearGradient linearly ramps between two or more colors. -->
michael@0 1940 <xs:element ref="Sk:linearGradient"/>
michael@0 1941 <!-- @element maskFilter MaskFilter cancels a blur or emboss. -->
michael@0 1942 <xs:element ref="Sk:maskFilter"/>
michael@0 1943 <!-- @element pathEffect PathEffect cancels a discrete or dash. -->
michael@0 1944 <xs:element ref="Sk:pathEffect"/>
michael@0 1945 <!-- @element radialGradient RadialGradient radially ramps between two or more colors. -->
michael@0 1946 <xs:element ref="Sk:radialGradient"/>
michael@0 1947 <!-- @element shader Shader cancels a linear or radial gradient. -->
michael@0 1948 <xs:element ref="Sk:shader"/>
michael@0 1949 <!-- @element typeface Typeface chooses a font out of a font family. -->
michael@0 1950 <xs:element ref="Sk:typeface"/>
michael@0 1951 <!-- @element transparentShader TransparentShader ? [not sure what this is for] -->
michael@0 1952 <xs:element ref="Sk:transparentShader"/>
michael@0 1953 </xs:choice>
michael@0 1954 <!-- @attribute antiAlias AntiAlias uses gray shades to increase the definition of paths. -->
michael@0 1955 <xs:attribute name="antiAlias" type="Sk:Boolean"/>
michael@0 1956 <!-- @attribute ascent Ascent returns the height above the baseline defined by the font. -->
michael@0 1957 <xs:attribute name="ascent" type="Sk:Float"/>
michael@0 1958 <!-- @attribute color Color sets the paint to the color element with this ID. -->
michael@0 1959 <xs:attribute name="color" type="Sk:Color"/>
michael@0 1960 <!-- @attribute descent Descent returns the height below the baseline defined by thte font -->
michael@0 1961 <xs:attribute name="descent" type="Sk:Float"/>
michael@0 1962 <!-- @attribute fakeBold FakeBold enables a faked bold for text. -->
michael@0 1963 <xs:attribute name="fakeBold" type="Sk:Boolean"/>
michael@0 1964 <!-- @attribute filterType FilterType -->
michael@0 1965 <xs:attribute name="filterType" type="Sk:FilterType"/>
michael@0 1966 <!-- @attribute linearText LinearText uses the ideal path metrics at all sizes to describe text. -->
michael@0 1967 <xs:attribute name="linearText" type="Sk:Boolean"/>
michael@0 1968 <!-- @attribute maskFilter MaskFilter specifies a blur or emboss with this ID. -->
michael@0 1969 <xs:attribute name="maskFilter" type="Sk:MaskFilter"/>
michael@0 1970 <!-- @attribute measureText MeasureText(String) returns the width of the string in this paint. -->
michael@0 1971 <xs:attribute name="measureText" type="Sk:Float"/>
michael@0 1972 <!-- @attribute pathEffect PathEffect specifies a discrete or dash with this ID. -->
michael@0 1973 <xs:attribute name="pathEffect" type="Sk:PathEffect"/>
michael@0 1974 <!-- @attribute shader Shader specifies a gradient with this ID. -->
michael@0 1975 <xs:attribute name="shader" type="Sk:Shader"/>
michael@0 1976 <!-- @attribute strikeThru StrikeThru adds a line through the middle of drawn text. -->
michael@0 1977 <xs:attribute name="strikeThru" type="Sk:Boolean"/>
michael@0 1978 <!-- @attribute stroke Stroke draws the outline of geometry according to the pen attributes.
michael@0 1979 If style is also present, its setting overrides stroke. -->
michael@0 1980 <xs:attribute name="stroke" type="Sk:Boolean"/>
michael@0 1981 <!-- @attribute strokeCap StrokeCap is one of @pattern. -->
michael@0 1982 <xs:attribute name="strokeCap" type="Sk:Cap"/>
michael@0 1983 <!-- @attribute strokeJoin StrokeJoin is one of @pattern. -->
michael@0 1984 <xs:attribute name="strokeJoin" type="Sk:Join"/>
michael@0 1985 <!-- @attribute strokeMiter StrokeMiter limits the pen's joins on narrow angles. -->
michael@0 1986 <xs:attribute name="strokeMiter" type="Sk:Float"/>
michael@0 1987 <!-- @attribute strokeWidth StrokeWidth specifies the width of the pen. -->
michael@0 1988 <xs:attribute name="strokeWidth" type="Sk:Float"/>
michael@0 1989 <!-- @attribute style Style fills, strokes, or strokes and fills the geometry with the paint's color. -->
michael@0 1990 <xs:attribute name="style" type="Sk:Style"/>
michael@0 1991 <!-- @attribute textAlign TextAlign is one of @pattern. -->
michael@0 1992 <xs:attribute name="textAlign" type="Sk:Align"/>
michael@0 1993 <!-- @attribute textScaleX TextScaleX condenses or exapnds the text. -->
michael@0 1994 <xs:attribute name="textScaleX" type="Sk:Float"/>
michael@0 1995 <!-- @attribute textSize TextSize specifies the point size of the text. -->
michael@0 1996 <xs:attribute name="textSize" type="Sk:Float"/>
michael@0 1997 <!-- @attribute textSkewX TextSkewX draws the text obliquely. -->
michael@0 1998 <xs:attribute name="textSkewX" type="Sk:Float"/>
michael@0 1999 <!-- @attribute textTracking TextTracking specifies the space between letters. -->
michael@0 2000 <xs:attribute name="textTracking" type="Sk:Float"/>
michael@0 2001 <!-- @attribute typeface Typeface specifies a typeface element with this ID. -->
michael@0 2002 <xs:attribute name="typeface" type="Sk:Typeface"/>
michael@0 2003 <!-- @attribute underline Underline draws a line under the baseline of the text. -->
michael@0 2004 <xs:attribute name="underline" type="Sk:Boolean"/>
michael@0 2005 <!-- @attribute xfermode Xfermode specifies a transfer mode, one of @pattern. -->
michael@0 2006 <xs:attribute name="xfermode" type="Sk:Xfermode"/>
michael@0 2007 <xs:attribute name="id" type="xs:ID"/>
michael@0 2008 </xs:complexType>
michael@0 2009 </xs:element>
michael@0 2010
michael@0 2011 <!-- /** path
michael@0 2012 Path creates a geometry out of lines and curves.
michael@0 2013 */ -->
michael@0 2014 <xs:element name="path">
michael@0 2015 <xs:complexType>
michael@0 2016 <xs:choice maxOccurs="unbounded">
michael@0 2017 <!-- @element addCircle Adds a circle to the path. -->
michael@0 2018 <xs:element ref="Sk:addCircle"/>
michael@0 2019 <!-- @element addOval Adds an oval to the path. -->
michael@0 2020 <xs:element ref="Sk:addOval"/>
michael@0 2021 <!-- @element addPath Adds another path to the path. -->
michael@0 2022 <xs:element ref="Sk:addPath"/>
michael@0 2023 <!-- @element addRoundRect Adds a rounded-corner rectangle to the path. -->
michael@0 2024 <xs:element ref="Sk:addRoundRect"/>
michael@0 2025 <!-- @element close Connects the last point on the path to the first. -->
michael@0 2026 <xs:element ref="Sk:close"/>
michael@0 2027 <!-- @element cubicTo Extends the path with a cubic curve. -->
michael@0 2028 <xs:element ref="Sk:cubicTo"/>
michael@0 2029 <!-- @element lineTo Extends the path with a line. -->
michael@0 2030 <xs:element ref="Sk:lineTo"/>
michael@0 2031 <!-- @element moveTo Starts a new path contour. -->
michael@0 2032 <xs:element ref="Sk:moveTo"/>
michael@0 2033 <!-- @element quadTo Extends the path with a quadratic curve. -->
michael@0 2034 <xs:element ref="Sk:quadTo"/>
michael@0 2035 <!-- @element rCubicTo Extends the path with a cubic curve expressed with relative offsets. -->
michael@0 2036 <xs:element ref="Sk:rCubicTo"/>
michael@0 2037 <!-- @element rLineTo Extends the path with a line expressed with relative offsets. -->
michael@0 2038 <xs:element ref="Sk:rLineTo"/>
michael@0 2039 <!-- @element rMoveTo Starts a new path contour relative to the path's last point. -->
michael@0 2040 <xs:element ref="Sk:rMoveTo"/>
michael@0 2041 <!-- @element rQuadTo Extends the path with a quadratic curve expressed with relative offsets. -->
michael@0 2042 <xs:element ref="Sk:rQuadTo"/>
michael@0 2043 </xs:choice>
michael@0 2044 <!-- @attribute d Creates a path using SVG path notation. -->
michael@0 2045 <xs:attribute name="d" type="Sk:String"/>
michael@0 2046 <!-- @attribute fillType One of @pattern. -->
michael@0 2047 <xs:attribute name="fillType" type="Sk:FillType"/>
michael@0 2048 <!-- @attribute length Returns the length of the path. -->
michael@0 2049 <xs:attribute name="length" type="Sk:Float"/>
michael@0 2050 <xs:attribute name="id" type="xs:ID"/>
michael@0 2051 </xs:complexType>
michael@0 2052 </xs:element>
michael@0 2053
michael@0 2054 <!-- /** pathEffect
michael@0 2055 PathEffect cancels any current path effect within the paint, such as dashing or discrete.
michael@0 2056 */ -->
michael@0 2057 <xs:element name="pathEffect">
michael@0 2058 <xs:complexType>
michael@0 2059 <xs:attribute name="id" type="xs:ID"/>
michael@0 2060 </xs:complexType>
michael@0 2061 </xs:element>
michael@0 2062
michael@0 2063 <!-- /** point
michael@0 2064 Point describes a two dimensional point in space. The point element can be added
michael@0 2065 to the display list and drawn.
michael@0 2066 */ -->
michael@0 2067 <xs:element name="point">
michael@0 2068 <xs:complexType>
michael@0 2069 <!-- @attribute x The x coordinate of the point. -->
michael@0 2070 <xs:attribute name="x" type="Sk:Float"/>
michael@0 2071 <!-- @attribute y The y coordinate of the point. -->
michael@0 2072 <xs:attribute name="y" type="Sk:Float"/>
michael@0 2073 <xs:attribute name="id" type="xs:ID"/>
michael@0 2074 </xs:complexType>
michael@0 2075 </xs:element>
michael@0 2076
michael@0 2077 <!-- /** polygon
michael@0 2078 Polygon creates a geometry out of lines. Polygon is a specialization of path; element that
michael@0 2079 refers to a path can refer to a polygon also. A polygon specified through elements behaves identically
michael@0 2080 to a path. A polygon specified by the points attribute contains a single contour, and the contour is
michael@0 2081 automatically closed.
michael@0 2082 */ -->
michael@0 2083 <xs:element name="polygon">
michael@0 2084 <xs:complexType>
michael@0 2085 <xs:choice maxOccurs="unbounded">
michael@0 2086 <!-- @element close Connects the last point on the path to the first. -->
michael@0 2087 <xs:element ref="Sk:close"/>
michael@0 2088 <!-- @element addPath Adds another path to the path. -->
michael@0 2089 <xs:element ref="Sk:addPath"/>
michael@0 2090 <!-- @element lineTo Extends the path with a line. -->
michael@0 2091 <xs:element ref="Sk:lineTo"/>
michael@0 2092 <!-- @element moveTo Starts a new path contour. -->
michael@0 2093 <xs:element ref="Sk:moveTo"/>
michael@0 2094 <!-- @element rLineTo Extends the path with a line expressed with relative offsets. -->
michael@0 2095 <xs:element ref="Sk:rLineTo"/>
michael@0 2096 <!-- @element rMoveTo Starts a new path contour relative to the path's last point. -->
michael@0 2097 <xs:element ref="Sk:rMoveTo"/>
michael@0 2098 </xs:choice>
michael@0 2099 <!-- @attribute points An array of values that describe a sequence of points, compatible with SVG. -->
michael@0 2100 <xs:attribute name="points" type="Sk:FloatArray"/>
michael@0 2101 <xs:attribute name="id" type="xs:ID"/>
michael@0 2102 </xs:complexType>
michael@0 2103 </xs:element>
michael@0 2104
michael@0 2105 <!-- /** polyline
michael@0 2106 Polyline creates a geometry out of lines. Polygon is a specialization of path; element that
michael@0 2107 refers to a path can refer to a polygon also. A polygon specified through elements behaves identically
michael@0 2108 to a path. A polygon specified by the points attribute contains a single contour, and the contour is
michael@0 2109 not automatically closed.
michael@0 2110 */ -->
michael@0 2111 <xs:element name="polyline">
michael@0 2112 <xs:complexType>
michael@0 2113 <xs:choice maxOccurs="unbounded">
michael@0 2114 <!-- @element close Connects the last point on the path to the first. -->
michael@0 2115 <xs:element ref="Sk:close"/>
michael@0 2116 <!-- @element addPath Adds another path to the path. -->
michael@0 2117 <xs:element ref="Sk:addPath"/>
michael@0 2118 <!-- @element lineTo Extends the path with a line. -->
michael@0 2119 <xs:element ref="Sk:lineTo"/>
michael@0 2120 <!-- @element moveTo Starts a new path contour. -->
michael@0 2121 <xs:element ref="Sk:moveTo"/>
michael@0 2122 <!-- @element rLineTo Extends the path with a line expressed with relative offsets. -->
michael@0 2123 <xs:element ref="Sk:rLineTo"/>
michael@0 2124 <!-- @element rMoveTo Starts a new path contour relative to the path's last point. -->
michael@0 2125 <xs:element ref="Sk:rMoveTo"/>
michael@0 2126 </xs:choice>
michael@0 2127 <!-- @attribute points An array of values that describe a sequence of points, compatible with SVG. -->
michael@0 2128 <xs:attribute name="points" type="Sk:FloatArray"/>
michael@0 2129 <xs:attribute name="id" type="xs:ID"/>
michael@0 2130 </xs:complexType>
michael@0 2131 </xs:element>
michael@0 2132
michael@0 2133 <!-- /** polyToPoly
michael@0 2134 PolyToPoly creates a matrix which maps points proportionally from one polygon to the other.
michael@0 2135 */ -->
michael@0 2136 <xs:element name="polyToPoly">
michael@0 2137 <xs:complexType>
michael@0 2138 <xs:choice maxOccurs="2">
michael@0 2139 <xs:element ref="Sk:polygon"/>
michael@0 2140 </xs:choice>
michael@0 2141 <!-- @attribute source The polygon to map from.. -->
michael@0 2142 <xs:attribute name="source" type="Sk:polygon"/>
michael@0 2143 <!-- @attribute destination The polygon to map to.. -->
michael@0 2144 <xs:attribute name="destination" type="Sk:polygon"/>
michael@0 2145 <xs:attribute name="id" type="xs:ID"/>
michael@0 2146 </xs:complexType>
michael@0 2147 </xs:element>
michael@0 2148
michael@0 2149 <!-- /** post
michael@0 2150 Post activates an event. The event can trigger one or more actions, and can carry a data payload.
michael@0 2151 */ -->
michael@0 2152 <xs:element name="post">
michael@0 2153 <xs:complexType>
michael@0 2154 <xs:choice maxOccurs="unbounded">
michael@0 2155 <xs:element ref="Sk:data"/>
michael@0 2156 </xs:choice>
michael@0 2157 <!-- @attribute delay Time in seconds that must elapse before the target event is activated. -->
michael@0 2158 <xs:attribute name="delay" type="Sk:MSec"/>
michael@0 2159 <!-- @attribute mode One of @pattern. @patternDescription -->
michael@0 2160 <xs:attribute name="mode" type="Sk:EventMode"/>
michael@0 2161 <!-- @attribute sink The optional named EventSink to direct the event to. -->
michael@0 2162 <xs:attribute name="sink" type="Sk:String"/>
michael@0 2163 <!-- @attribute target The ID of the user event to trigger. -->
michael@0 2164 <xs:attribute name="target" type="Sk:String"/>
michael@0 2165 <!-- @attribute type The name of the external event to post. -->
michael@0 2166 <xs:attribute name="type" type="Sk:String"/>
michael@0 2167 <xs:attribute name="id" type="xs:ID"/>
michael@0 2168 </xs:complexType>
michael@0 2169 </xs:element>
michael@0 2170
michael@0 2171 <!-- /** quadTo
michael@0 2172 QuadTo adds a quadratic curve to a path.
michael@0 2173 */ -->
michael@0 2174 <xs:element name="quadTo">
michael@0 2175 <xs:complexType>
michael@0 2176 <!-- @attribute x1 The x position of the off-curve point. -->
michael@0 2177 <xs:attribute name="x1" type="Sk:Float"/>
michael@0 2178 <!-- @attribute x2 The x position of the final point. -->
michael@0 2179 <xs:attribute name="x2" type="Sk:Float"/>
michael@0 2180 <!-- @attribute y1 The y position of the off-curve point. -->
michael@0 2181 <xs:attribute name="y1" type="Sk:Float"/>
michael@0 2182 <!-- @attribute y2 The y position of the final point. -->
michael@0 2183 <xs:attribute name="y2" type="Sk:Float"/>
michael@0 2184 <xs:attribute name="id" type="xs:ID"/>
michael@0 2185 </xs:complexType>
michael@0 2186 </xs:element>
michael@0 2187
michael@0 2188 <!-- /** rCubicTo
michael@0 2189 RCubicTo adds a cubic to the path, using the last point in the path as the first point of the cubic. THe
michael@0 2190 added points are offsets from the last point in the path.
michael@0 2191 */ -->
michael@0 2192 <xs:element name="rCubicTo">
michael@0 2193 <xs:complexType>
michael@0 2194 <!-- @attribute x1 The x offset of the first off-curve point. -->
michael@0 2195 <xs:attribute name="x1" type="Sk:Float"/>
michael@0 2196 <!-- @attribute x2 The x offset of the second off-curve point. -->
michael@0 2197 <xs:attribute name="x2" type="Sk:Float"/>
michael@0 2198 <!-- @attribute x3 The x offset of the final on-curve point. -->
michael@0 2199 <xs:attribute name="x3" type="Sk:Float"/>
michael@0 2200 <!-- @attribute y1 The y offset of the first off-curve point. -->
michael@0 2201 <xs:attribute name="y1" type="Sk:Float"/>
michael@0 2202 <!-- @attribute y2 The y offset of the second off-curve point. -->
michael@0 2203 <xs:attribute name="y2" type="Sk:Float"/>
michael@0 2204 <!-- @attribute y3 The y offset of the final on-curve point. -->
michael@0 2205 <xs:attribute name="y3" type="Sk:Float"/>
michael@0 2206 <xs:attribute name="id" type="xs:ID"/>
michael@0 2207 </xs:complexType>
michael@0 2208 </xs:element>
michael@0 2209
michael@0 2210 <!-- /** rLineTo
michael@0 2211 RLineTo adds a line from the last point in a path to the specified point. The specified
michael@0 2212 point is relative to the last point in the path.
michael@0 2213 */ -->
michael@0 2214 <xs:element name="rLineTo">
michael@0 2215 <xs:complexType>
michael@0 2216 <!-- @attribute x The final path x coordinate. -->
michael@0 2217 <xs:attribute name="x" type="Sk:Float"/>
michael@0 2218 <!-- @attribute y The final path y coordinate. -->
michael@0 2219 <xs:attribute name="y" type="Sk:Float"/>
michael@0 2220 <xs:attribute name="id" type="xs:ID"/>
michael@0 2221 </xs:complexType>
michael@0 2222 </xs:element>
michael@0 2223
michael@0 2224 <!-- /** rMoveTo
michael@0 2225 RMoveTo specifies the first point in a path contour. The specified
michael@0 2226 point is relative to the last point in the path.
michael@0 2227 */ -->
michael@0 2228 <xs:element name="rMoveTo">
michael@0 2229 <xs:complexType>
michael@0 2230 <!-- @attribute x The point's x coordinate. -->
michael@0 2231 <xs:attribute name="x" type="Sk:Float"/>
michael@0 2232 <!-- @attribute y The point's y coordinate. -->
michael@0 2233 <xs:attribute name="y" type="Sk:Float"/>
michael@0 2234 <xs:attribute name="id" type="xs:ID"/>
michael@0 2235 </xs:complexType>
michael@0 2236 </xs:element>
michael@0 2237
michael@0 2238 <!-- /** rQuadTo
michael@0 2239 RQuadTo adds a quadratic curve to a path. The quadratic
michael@0 2240 points are relative to the last point in the path.
michael@0 2241 */ -->
michael@0 2242 <xs:element name="rQuadTo">
michael@0 2243 <xs:complexType>
michael@0 2244 <!-- @attribute x1 The x position of the off-curve point. -->
michael@0 2245 <xs:attribute name="x1" type="Sk:Float"/>
michael@0 2246 <!-- @attribute x2 The x position of the final point. -->
michael@0 2247 <xs:attribute name="x2" type="Sk:Float"/>
michael@0 2248 <!-- @attribute y1 The y position of the off-curve point. -->
michael@0 2249 <xs:attribute name="y1" type="Sk:Float"/>
michael@0 2250 <!-- @attribute y2 The y position of the final point. -->
michael@0 2251 <xs:attribute name="y2" type="Sk:Float"/>
michael@0 2252 <xs:attribute name="id" type="xs:ID"/>
michael@0 2253 </xs:complexType>
michael@0 2254 </xs:element>
michael@0 2255
michael@0 2256 <!-- /** radialGradient
michael@0 2257 RadialGradient sets the paint shader to ramp between two or more colors in concentric circles.
michael@0 2258 */ -->
michael@0 2259 <xs:element name="radialGradient">
michael@0 2260 <xs:complexType>
michael@0 2261 <xs:choice maxOccurs="unbounded">
michael@0 2262 <xs:element ref="Sk:color"/>
michael@0 2263 <xs:element ref="Sk:matrix"/>
michael@0 2264 </xs:choice>
michael@0 2265 <!-- @attribute matrix Matrix applies a 3x3 transform to the gradient. -->
michael@0 2266 <xs:attribute name="matrix" type="Sk:Matrix"/>
michael@0 2267 <!-- @attribute tileMode One of @pattern. @patternDescription -->
michael@0 2268 <xs:attribute name="tileMode" type="Sk:TileMode"/>
michael@0 2269 <!-- @attribute center The center point of the radial gradient. -->
michael@0 2270 <xs:attribute name="center" type="Sk:Point"/>
michael@0 2271 <!-- @attribute offsets An optional array of values used to bias the colors. The first entry
michael@0 2272 in the array must be 0.0, the last must be 1.0, and intermediate values must ascend. -->
michael@0 2273 <xs:attribute name="offsets" type="Sk:FloatArray"/>
michael@0 2274 <!-- @attribute radius The distance from the first color to the last color. -->
michael@0 2275 <xs:attribute name="radius" type="Sk:Float"/>
michael@0 2276 <!-- @attribute unitMapper A script that returns the mapping for [0,1] for the gradient.
michael@0 2277 The script can use the predefined variable 'unit' to compute the mapping. For instance,
michael@0 2278 "unit*unit" squares the value (while still keeping it in the range of [0,1].) The computed number
michael@0 2279 is pinned to from 0 to 1 after the script is executed. -->
michael@0 2280 <xs:attribute name="unitMapper" type="Sk:String"/>
michael@0 2281 <xs:attribute name="id" type="xs:ID"/>
michael@0 2282 </xs:complexType>
michael@0 2283 </xs:element>
michael@0 2284
michael@0 2285 <!-- /** random
michael@0 2286 Random generates a random number, from min to max. Each time the random attribute is
michael@0 2287 read, a new random number is generated.
michael@0 2288 */ -->
michael@0 2289 <xs:element name="random">
michael@0 2290 <xs:complexType>
michael@0 2291 <!-- @attribute blend The random bias from 0.0 to 1.0.
michael@0 2292 0.0 biias the number towards the start and end of the range.
michael@0 2293 1.0 (the default) generates a linear distribution.-->
michael@0 2294 <xs:attribute name="blend" type="Sk:Float"/>
michael@0 2295 <!-- @attribute max The largest value to generate. -->
michael@0 2296 <xs:attribute name="max" type="Sk:Float"/>
michael@0 2297 <!-- @attribute min The smallest value to generate. -->
michael@0 2298 <xs:attribute name="min" type="Sk:Float"/>
michael@0 2299 <!-- @attribute random The generated value. -->
michael@0 2300 <xs:attribute name="random" type="Sk:Float"/>
michael@0 2301 <!-- @attribute seed The random seed. Identical seeds generate the same series of
michael@0 2302 numbers. -->
michael@0 2303 <xs:attribute name="seed" type="Sk:Int"/>
michael@0 2304 <xs:attribute name="id" type="xs:ID"/>
michael@0 2305 </xs:complexType>
michael@0 2306 </xs:element>
michael@0 2307
michael@0 2308 <!-- /** rect
michael@0 2309 Rect describes a bounding box.
michael@0 2310 The width and height attribute compute the rectangle's right and bottom edges when the rectangle
michael@0 2311 description is first seen. Animating the rectangle's left or top will not recompute the right or bottom
michael@0 2312 if the width or height have been specified.
michael@0 2313 */ -->
michael@0 2314 <xs:element name="rect">
michael@0 2315 <xs:complexType>
michael@0 2316 <!-- @attribute bottom The bottom edge of the rectangle. -->
michael@0 2317 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 2318 <!-- @attribute height The height of the rectangle. Setting height computes the
michael@0 2319 bottom attribute from the top attribute. -->
michael@0 2320 <xs:attribute name="height" type="Sk:Float"/>
michael@0 2321 <!-- @attribute left The left edge of the rectangle. -->
michael@0 2322 <xs:attribute name="left" type="Sk:Float"/>
michael@0 2323 <!-- @attribute needsRedraw Set to true if last draw was visible. -->
michael@0 2324 <xs:attribute name="needsRedraw" type="Sk:Boolean"/>
michael@0 2325 <!-- @attribute right The right edge of the rectangle. -->
michael@0 2326 <xs:attribute name="right" type="Sk:Float"/>
michael@0 2327 <!-- @attribute top The top edge of the rectangle. -->
michael@0 2328 <xs:attribute name="top" type="Sk:Float"/>
michael@0 2329 <!-- @attribute width The width of the rectangle. -->
michael@0 2330 <xs:attribute name="width" type="Sk:Float"/>
michael@0 2331 <xs:attribute name="id" type="xs:ID"/>
michael@0 2332 </xs:complexType>
michael@0 2333 </xs:element>
michael@0 2334
michael@0 2335 <!-- /** rectToRect
michael@0 2336 RectToRect adds a matrix to map one rectangle's coordinates to another.
michael@0 2337 */ -->
michael@0 2338 <xs:element name="rectToRect">
michael@0 2339 <xs:complexType>
michael@0 2340 <xs:choice maxOccurs="2">
michael@0 2341 <xs:element ref="Sk:rect"/>
michael@0 2342 </xs:choice>
michael@0 2343 <!-- @attribute source The rectangle to map from. -->
michael@0 2344 <xs:attribute name="source" type="Sk:rect"/>
michael@0 2345 <!-- @attribute destination The rectangle to map to. -->
michael@0 2346 <xs:attribute name="destination" type="Sk:rect"/>
michael@0 2347 <xs:attribute name="id" type="xs:ID"/>
michael@0 2348 </xs:complexType>
michael@0 2349 </xs:element>
michael@0 2350
michael@0 2351 <!-- /** remove
michael@0 2352 Remove an item from the display list.
michael@0 2353 If where is specified, the first occurance of where in the display list is removed.
michael@0 2354 If offset and where are specified, the element at where plus offset is removed.
michael@0 2355 A positive offset without where removes the element at the start of the list plus offset.
michael@0 2356 A negative offset without where removes the element at the end of the list minus offset.
michael@0 2357 */ -->
michael@0 2358 <xs:element name="remove">
michael@0 2359 <xs:complexType>
michael@0 2360 <!-- @attribute delete If true, reverse the action of apply's attribute mode="create".
michael@0 2361 (Experimental.) -->
michael@0 2362 <xs:attribute name="delete" type="Sk:Boolean"/>
michael@0 2363 <!-- @attribute offset The destination position using the rules listed above. -->
michael@0 2364 <xs:attribute name="offset" type="Sk:Int"/>
michael@0 2365 <!-- @attribute where The ID of the first display list entry to remove. -->
michael@0 2366 <xs:attribute name="where" type="Sk:Drawable"/>
michael@0 2367 <xs:attribute name="id" type="xs:ID"/>
michael@0 2368 </xs:complexType>
michael@0 2369 </xs:element>
michael@0 2370
michael@0 2371 <!-- /** replace
michael@0 2372 Replace an item in the display list.
michael@0 2373 If where is specified, the first occurance of where in the display list is replaced by use.
michael@0 2374 If offset and where are specified, the element at where plus offset is replaced by use.
michael@0 2375 A positive offset without where replaces the element at the start of the list plus offset.
michael@0 2376 A negative offset without where replaces the element at the end of the list minus offset.
michael@0 2377 */ -->
michael@0 2378 <xs:element name="replace">
michael@0 2379 <xs:complexType>
michael@0 2380 <!-- @attribute mode Has no effect. -->
michael@0 2381 <xs:attribute name="mode" type="Sk:AddMode"/>
michael@0 2382 <!-- @attribute offset The destination position using the rules listed above. -->
michael@0 2383 <xs:attribute name="offset" type="Sk:Int"/>
michael@0 2384 <!-- @attribute use The element to be added to the display list.. -->
michael@0 2385 <xs:attribute name="use" type="Sk:Drawable"/>
michael@0 2386 <!-- @attribute where The ID of the first display list entry to remove. -->
michael@0 2387 <xs:attribute name="where" type="Sk:Drawable"/>
michael@0 2388 <xs:attribute name="id" type="xs:ID"/>
michael@0 2389 </xs:complexType>
michael@0 2390 </xs:element>
michael@0 2391
michael@0 2392 <!-- /** rotate
michael@0 2393 Rotate creates a matrix that rotates a unit vector about a center point, and concatenated
michael@0 2394 with the containing matrix.
michael@0 2395 */ -->
michael@0 2396 <xs:element name="rotate">
michael@0 2397 <xs:complexType>
michael@0 2398 <!-- @attribute center A point the rotation is centered about; by default, [0.0, 0.0]. -->
michael@0 2399 <xs:attribute name="center" type="Sk:Point"/>
michael@0 2400 <!-- @attribute degrees The rotation in degrees. -->
michael@0 2401 <xs:attribute name="degrees" type="Sk:Float"/>
michael@0 2402 <xs:attribute name="id" type="xs:ID"/>
michael@0 2403 </xs:complexType>
michael@0 2404 </xs:element>
michael@0 2405
michael@0 2406 <!-- /** roundRect
michael@0 2407 RoundRect creates a rectangle with rounded corners. The rounded corners are specified by
michael@0 2408 two axes, which describe an quarter-section of the oval which is used in each corner.
michael@0 2409 The width and height attribute compute the rectangle's right and bottom edges when the rectangle
michael@0 2410 description is first seen. Animating the rectangle's left or top will not recompute the right or bottom
michael@0 2411 if the width or height have been specified.
michael@0 2412 */ -->
michael@0 2413 <xs:element name="roundRect">
michael@0 2414 <xs:complexType>
michael@0 2415 <!-- @attribute bottom The bottom edge of the rectangle. -->
michael@0 2416 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 2417 <!-- @attribute height The height of the rectangle. Setting height computes the
michael@0 2418 bottom attribute from the top attribute. -->
michael@0 2419 <xs:attribute name="height" type="Sk:Float"/>
michael@0 2420 <!-- @attribute left The left edge of the rectangle. -->
michael@0 2421 <xs:attribute name="left" type="Sk:Float"/>
michael@0 2422 <!-- @attribute needsRedraw Set to true if last draw was visible. -->
michael@0 2423 <xs:attribute name="needsRedraw" type="Sk:Boolean"/>
michael@0 2424 <!-- @attribute right The right edge of the rectangle. -->
michael@0 2425 <xs:attribute name="right" type="Sk:Float"/>
michael@0 2426 <!-- @attribute top The top edge of the rectangle. -->
michael@0 2427 <xs:attribute name="top" type="Sk:Float"/>
michael@0 2428 <!-- @attribute rx The radius of the corners on the x axis. -->
michael@0 2429 <xs:attribute name="rx" type="Sk:Float"/>
michael@0 2430 <!-- @attribute ry The radius of the corners on the y axis. -->
michael@0 2431 <xs:attribute name="ry" type="Sk:Float"/>
michael@0 2432 <!-- @attribute width The width of the rectangle. Setting width computes the
michael@0 2433 right attribute from the left attribute. -->
michael@0 2434 <xs:attribute name="width" type="Sk:Float"/>
michael@0 2435 <xs:attribute name="id" type="xs:ID"/>
michael@0 2436 </xs:complexType>
michael@0 2437 </xs:element>
michael@0 2438
michael@0 2439 <!-- /** save
michael@0 2440 The save element collects a series of elements into a group. The state of the paint and
michael@0 2441 canvas are saved, so that edits to the paint and canvas within the group are restored
michael@0 2442 to their original value at the end of the group.
michael@0 2443 The save element can be referenced
michael@0 2444 or defined within elements, like apply, which operate on any kind of element. Groups
michael@0 2445 may contain groups.
michael@0 2446 */ -->
michael@0 2447 <xs:element name="save">
michael@0 2448 <xs:complexType>
michael@0 2449 <xs:choice maxOccurs="unbounded">
michael@0 2450 <xs:element ref="Sk:add"/>
michael@0 2451 <xs:element ref="Sk:apply"/>
michael@0 2452 <xs:element ref="Sk:array"/>
michael@0 2453 <xs:element ref="Sk:bitmap"/>
michael@0 2454 <xs:element ref="Sk:boolean"/>
michael@0 2455 <xs:element ref="Sk:bounds"/>
michael@0 2456 <!-- <xs:element ref="Sk3D:camera"/> -->
michael@0 2457 <xs:element ref="Sk:clear"/>
michael@0 2458 <xs:element ref="Sk:clip"/>
michael@0 2459 <xs:element ref="Sk:color"/>
michael@0 2460 <xs:element ref="Sk:drawTo"/>
michael@0 2461 <xs:element ref="Sk:float"/>
michael@0 2462 <xs:element ref="Sk:full"/>
michael@0 2463 <xs:element ref="Sk:group"/>
michael@0 2464 <xs:element ref="Sk:hitClear"/>
michael@0 2465 <xs:element ref="Sk:hitTest"/>
michael@0 2466 <xs:element ref="Sk:image"/>
michael@0 2467 <xs:element ref="Sk:int"/>
michael@0 2468 <xs:element ref="Sk:line"/>
michael@0 2469 <xs:element ref="Sk:matrix"/>
michael@0 2470 <xs:element ref="Sk:move"/>
michael@0 2471 <xs:element ref="Sk:oval"/>
michael@0 2472 <xs:element ref="Sk:paint"/>
michael@0 2473 <!-- <xs:element ref="Sk:patch"/> -->
michael@0 2474 <xs:element ref="Sk:path"/>
michael@0 2475 <xs:element ref="Sk:point"/>
michael@0 2476 <xs:element ref="Sk:polygon"/>
michael@0 2477 <xs:element ref="Sk:polyline"/>
michael@0 2478 <xs:element ref="Sk:post"/>
michael@0 2479 <xs:element ref="Sk:random"/>
michael@0 2480 <xs:element ref="Sk:rect"/>
michael@0 2481 <xs:element ref="Sk:remove"/>
michael@0 2482 <xs:element ref="Sk:replace"/>
michael@0 2483 <xs:element ref="Sk:roundRect"/>
michael@0 2484 <xs:element ref="Sk:save"/>
michael@0 2485 <xs:element ref="Sk:set"/>
michael@0 2486 <xs:element ref="Sk:snapshot"/>
michael@0 2487 <xs:element ref="Sk:string"/>
michael@0 2488 <xs:element ref="Sk:text"/>
michael@0 2489 <xs:element ref="Sk:textBox"/>
michael@0 2490 <xs:element ref="Sk:textOnPath"/>
michael@0 2491 <xs:element ref="Sk:textToPath"/>
michael@0 2492 </xs:choice>
michael@0 2493 <!-- @attribute condition If present and zero, the contained elements are ignored. -->
michael@0 2494 <xs:attribute name="condition" type="Sk:DynamicString"/>
michael@0 2495 <!-- @attribute enableCondition If present and zero, the contained elements are ignored
michael@0 2496 when enabled. -->
michael@0 2497 <xs:attribute name="enableCondition" type="Sk:DynamicString"/>
michael@0 2498 <xs:attribute name="id" type="xs:ID"/>
michael@0 2499 </xs:complexType>
michael@0 2500 </xs:element>
michael@0 2501
michael@0 2502 <!-- /** scale
michael@0 2503 Scale creates a matrix that scales a unit vector about a center point, and concatenated
michael@0 2504 with the containing matrix.
michael@0 2505 */ -->
michael@0 2506 <xs:element name="scale">
michael@0 2507 <xs:complexType>
michael@0 2508 <!-- @attribute center A point the scale is centered about; by default, [0.0, 0.0]. -->
michael@0 2509 <xs:attribute name="center" type="Sk:Point"/>
michael@0 2510 <!-- @attribute x The factor all x values are scaled by; by default, 1.0. -->
michael@0 2511 <xs:attribute name="x" type="Sk:Float"/>
michael@0 2512 <!-- @attribute y The factor all y values are scaled by; by default, 1.0. -->
michael@0 2513 <xs:attribute name="y" type="Sk:Float"/>
michael@0 2514 <xs:attribute name="id" type="xs:ID"/>
michael@0 2515 </xs:complexType>
michael@0 2516 </xs:element>
michael@0 2517
michael@0 2518 <!-- /** screenplay
michael@0 2519 Screenplay contains all events and elements referenced by the events.
michael@0 2520 A document may only contain a single screenplay element.
michael@0 2521 */ -->
michael@0 2522 <xs:element name="screenplay">
michael@0 2523 <xs:complexType>
michael@0 2524 <xs:choice maxOccurs="unbounded" >
michael@0 2525 <xs:element ref="Sk:add"/>
michael@0 2526 <xs:element ref="Sk:apply"/>
michael@0 2527 <xs:element ref="Sk:array"/>
michael@0 2528 <xs:element ref="Sk:bitmap"/>
michael@0 2529 <xs:element ref="Sk:boolean"/>
michael@0 2530 <xs:element ref="Sk:bounds"/>
michael@0 2531 <!-- <xs:element ref="Sk3D:camera"/> -->
michael@0 2532 <xs:element ref="Sk:clear"/>
michael@0 2533 <xs:element ref="Sk:clip"/>
michael@0 2534 <xs:element ref="Sk:color"/>
michael@0 2535 <xs:element ref="Sk:drawTo"/>
michael@0 2536 <xs:element ref="Sk:event"/>
michael@0 2537 <xs:element ref="Sk:float"/>
michael@0 2538 <xs:element ref="Sk:full"/>
michael@0 2539 <xs:element ref="Sk:group"/>
michael@0 2540 <xs:element ref="Sk:hitClear"/>
michael@0 2541 <xs:element ref="Sk:hitTest"/>
michael@0 2542 <xs:element ref="Sk:image"/>
michael@0 2543 <xs:element ref="Sk:include"/>
michael@0 2544 <xs:element ref="Sk:int"/>
michael@0 2545 <xs:element ref="Sk:line"/>
michael@0 2546 <xs:element ref="Sk:matrix"/>
michael@0 2547 <xs:element ref="Sk:move"/>
michael@0 2548 <xs:element ref="Sk:movie"/>
michael@0 2549 <xs:element ref="Sk:oval"/>
michael@0 2550 <xs:element ref="Sk:paint"/>
michael@0 2551 <!-- <xs:element ref="Sk:patch"/> -->
michael@0 2552 <xs:element ref="Sk:path"/>
michael@0 2553 <xs:element ref="Sk:point"/>
michael@0 2554 <xs:element ref="Sk:polygon"/>
michael@0 2555 <xs:element ref="Sk:polyline"/>
michael@0 2556 <xs:element ref="Sk:post"/>
michael@0 2557 <xs:element ref="Sk:random"/>
michael@0 2558 <xs:element ref="Sk:rect"/>
michael@0 2559 <xs:element ref="Sk:remove"/>
michael@0 2560 <xs:element ref="Sk:replace"/>
michael@0 2561 <xs:element ref="Sk:roundRect"/>
michael@0 2562 <xs:element ref="Sk:save"/>
michael@0 2563 <xs:element ref="Sk:set"/>
michael@0 2564 <xs:element ref="Sk:snapshot"/>
michael@0 2565 <xs:element ref="Sk:string"/>
michael@0 2566 <xs:element ref="Sk:text"/>
michael@0 2567 <xs:element ref="Sk:textBox"/>
michael@0 2568 <xs:element ref="Sk:textOnPath"/>
michael@0 2569 <xs:element ref="Sk:textToPath"/>
michael@0 2570 </xs:choice>
michael@0 2571 <!-- @attribute time The time of the draw (readable from script; not part of the document XML) -->
michael@0 2572 <xs:attribute name="time" type="Sk:MSec"/>
michael@0 2573 </xs:complexType>
michael@0 2574 </xs:element>
michael@0 2575
michael@0 2576 <!-- /** set
michael@0 2577 Set animates the target element's attribute directly to the specified value.
michael@0 2578 */ -->
michael@0 2579 <xs:element name="set">
michael@0 2580 <xs:complexType>
michael@0 2581 <!-- @attribute begin An optional offset that must elapse before the animation begins. The apply
michael@0 2582 begin attribute is added to any animator's begin attribute. -->
michael@0 2583 <xs:attribute name="begin" type="Sk:MSec"/>
michael@0 2584 <!-- @attribute dur The duration of the animation in milliseconds. -->
michael@0 2585 <xs:attribute name="dur" type="Sk:MSec"/>
michael@0 2586 <!-- @attribute dynamic If true, restart the animation if any of the simple values the
michael@0 2587 'lval' or 'to' attributes reference are changed. Simple values are contained by the array, boolean, float, int,
michael@0 2588 and string elements. -->
michael@0 2589 <!-- @attribute dynamic [Depreciated.] -->
michael@0 2590 <xs:attribute name="dynamic" type="Sk:Boolean" />
michael@0 2591 <!-- @attribute field The attribute to animate. -->
michael@0 2592 <xs:attribute name="field" type="Sk:String"/>
michael@0 2593 <!-- @attribute formula A script to execute over time to compute the field's value. Typically,
michael@0 2594 the fomula is a script expression which includes a reference to the time attribute of the
michael@0 2595 containing apply element. -->
michael@0 2596 <xs:attribute name="formula" type="Sk:DynamicString"/>
michael@0 2597 <!-- @attribute lval An expression evaluating to the attribute to animate.
michael@0 2598 If present, lval overrides 'field'. The expression is typically an array element,
michael@0 2599 e.g. lval="x[y]" . -->
michael@0 2600 <xs:attribute name="lval" type="Sk:DynamicString"/>
michael@0 2601 <!-- @attribute reset If true, the computed value is the initial value after the
michael@0 2602 animation is complete. If false, or by default, the computed value is the final value
michael@0 2603 after the animation is complete. -->
michael@0 2604 <xs:attribute name="reset" type="Sk:Boolean"/>
michael@0 2605 <!-- @attribute step When apply's attribute mode="immediate" or "create", the step attribute can be read by
michael@0 2606 script to determine the current animation iteration. -->
michael@0 2607 <xs:attribute name="step" type="Sk:Int" />
michael@0 2608 <!-- @attribute target The element to animate. By default, the element contained by the apply
michael@0 2609 or referenced by the apply's scope attribute is the animate target. -->
michael@0 2610 <xs:attribute name="target" type="Sk:DynamicString"/>
michael@0 2611 <!-- @attribute to The ending value (requires a 'from' attribute) -->
michael@0 2612 <xs:attribute name="to" type="Sk:DynamicString"/>
michael@0 2613 <xs:attribute name="id" type="xs:ID"/>
michael@0 2614 </xs:complexType>
michael@0 2615 </xs:element>
michael@0 2616
michael@0 2617 <!-- /** skew
michael@0 2618 Skew creates a matrix that skews a unit vector about a center point, and concatenated
michael@0 2619 with the containing matrix.
michael@0 2620 */ -->
michael@0 2621 <xs:element name="skew">
michael@0 2622 <xs:complexType>
michael@0 2623 <!-- @attribute center A point the skew is centered about; by default, [0.0, 0.0]. -->
michael@0 2624 <xs:attribute name="center" type="Sk:Point"/>
michael@0 2625 <!-- @attribute x The factor all x values are skewed by; by default, 0.0. -->
michael@0 2626 <xs:attribute name="x" type="Sk:Float"/>
michael@0 2627 <!-- @attribute y The factor all y values are skewed by; by default, 0.0. -->
michael@0 2628 <xs:attribute name="y" type="Sk:Float"/>
michael@0 2629 <xs:attribute name="id" type="xs:ID"/>
michael@0 2630 </xs:complexType>
michael@0 2631 </xs:element>
michael@0 2632
michael@0 2633 <!-- /** snapshot
michael@0 2634 Snapshot creates an image file containing the display list.
michael@0 2635 */ -->
michael@0 2636 <xs:element name="snapshot">
michael@0 2637 <xs:complexType>
michael@0 2638 <!-- @attribute filename The name of the file to generate. -->
michael@0 2639 <xs:attribute name="filename" type="Sk:String"/>
michael@0 2640 <!-- @attribute quality The quality of the image, from 0 to 100. -->
michael@0 2641 <xs:attribute name="quality" type="Sk:Float"/>
michael@0 2642 <!-- @attribute sequence Set to true to number the filenames sequentially. -->
michael@0 2643 <xs:attribute name="sequence" type="Sk:Boolean"/>
michael@0 2644 <!-- @attribute type One of @pattern. The type of encoding to use. -->
michael@0 2645 <xs:attribute name="type" type="Sk:BitmapEncoding"/>
michael@0 2646 <xs:attribute name="id" type="xs:ID"/>
michael@0 2647 </xs:complexType>
michael@0 2648 </xs:element>
michael@0 2649
michael@0 2650 <!-- /** string
michael@0 2651 String contains an array of characters.
michael@0 2652 */ -->
michael@0 2653 <xs:element name="string" >
michael@0 2654 <xs:complexType>
michael@0 2655 <!-- @attribute length The number of characters in the string (read only). -->
michael@0 2656 <xs:attribute name="length" type="Sk:Int"/>
michael@0 2657 <!-- @attribute slice An ECMAScript compatible function that returns part of the string. -->
michael@0 2658 <xs:attribute name="slice" type="Sk:String"/>
michael@0 2659 <!-- @attribute value The string itself. -->
michael@0 2660 <xs:attribute name="value" type="Sk:String"/>
michael@0 2661 <xs:attribute name="id" type="xs:ID"/>
michael@0 2662 </xs:complexType>
michael@0 2663 </xs:element>
michael@0 2664
michael@0 2665 <!-- /** text
michael@0 2666 A drawable string with a position.
michael@0 2667 */ -->
michael@0 2668 <xs:element name="text">
michael@0 2669 <xs:complexType>
michael@0 2670 <!-- @attribute length The number of characters in the string (read only). -->
michael@0 2671 <xs:attribute name="length" type="Sk:Int"/>
michael@0 2672 <!-- @attribute text The string itself. -->
michael@0 2673 <xs:attribute name="text" type="Sk:String"/>
michael@0 2674 <!-- @attribute x The x coordinate of the string. -->
michael@0 2675 <xs:attribute name="x" type="Sk:Float"/>
michael@0 2676 <!-- @attribute y The y coordinate of the string. -->
michael@0 2677 <xs:attribute name="y" type="Sk:Float"/>
michael@0 2678 <xs:attribute name="id" type="xs:ID"/>
michael@0 2679 </xs:complexType>
michael@0 2680 </xs:element>
michael@0 2681
michael@0 2682 <!-- /** textBox
michael@0 2683 A drawable string fit into a box.
michael@0 2684 */ -->
michael@0 2685 <xs:element name="textBox" >
michael@0 2686 <xs:complexType>
michael@0 2687 <!-- @attribute bottom The bottom of the box. -->
michael@0 2688 <xs:attribute name="bottom" type="Sk:Float"/>
michael@0 2689 <!-- @attribute height The height of the box, computed from top and bottom. -->
michael@0 2690 <xs:attribute name="height" type="Sk:Float"/>
michael@0 2691 <!-- @attribute left The left side of the box. -->
michael@0 2692 <xs:attribute name="left" type="Sk:Float"/>
michael@0 2693 <!-- @attribute mode One of @pattern. -->
michael@0 2694 <xs:attribute name="mode" type="Sk:TextBoxMode"/>
michael@0 2695 <!-- @attribute needsRedraw Set to true if last draw was visible. -->
michael@0 2696 <xs:attribute name="needsRedraw" type="Sk:Boolean"/>
michael@0 2697 <!-- @attribute right The right side of the box. -->
michael@0 2698 <xs:attribute name="right" type="Sk:Float"/>
michael@0 2699 <!-- @attribute spacingAdd The extra spacing between lines. -->
michael@0 2700 <xs:attribute name="spacingAdd" type="Sk:Float"/>
michael@0 2701 <!-- @attribute spacingAlign One of @pattern. -->
michael@0 2702 <xs:attribute name="spacingAlign" type="Sk:TextBoxAlign"/>
michael@0 2703 <!-- @attribute spacingMul The line spacing scaled by the text height. -->
michael@0 2704 <xs:attribute name="spacingMul" type="Sk:Float"/>
michael@0 2705 <!-- @attribute text The text to fit to the box. -->
michael@0 2706 <xs:attribute name="text" type="Sk:String"/>
michael@0 2707 <!-- @attribute top The top of the box. -->
michael@0 2708 <xs:attribute name="top" type="Sk:Float"/>
michael@0 2709 <!-- @attribute width The width of the box, computed from left and right. -->
michael@0 2710 <xs:attribute name="width" type="Sk:Float"/>
michael@0 2711 <xs:attribute name="id" type="xs:ID"/>
michael@0 2712 </xs:complexType>
michael@0 2713 </xs:element>
michael@0 2714
michael@0 2715 <!-- /** textOnPath
michael@0 2716 TextOnPath specifies the baseline for a string of text with a path.
michael@0 2717 */ -->
michael@0 2718 <xs:element name="textOnPath">
michael@0 2719 <xs:complexType>
michael@0 2720 <xs:choice >
michael@0 2721 <xs:element ref="Sk:text" minOccurs="0" />
michael@0 2722 <xs:element ref="Sk:path" minOccurs="0" />
michael@0 2723 </xs:choice>
michael@0 2724 <!-- @attribute offset The distance along the path to place the first text character. -->
michael@0 2725 <xs:attribute name="offset" type="Sk:Float"/>
michael@0 2726 <!-- @attribute path The baseline of the text. -->
michael@0 2727 <xs:attribute name="path" type="Sk:Path"/>
michael@0 2728 <!-- @attribute text The text to place along the path. -->
michael@0 2729 <xs:attribute name="text" type="Sk:Text"/>
michael@0 2730 <xs:attribute name="id" type="xs:ID"/>
michael@0 2731 </xs:complexType>
michael@0 2732 </xs:element>
michael@0 2733
michael@0 2734 <!-- /** textToPath
michael@0 2735 TextToPath sets the path to the contours described by the text's glyphs, using the current paint.
michael@0 2736 */ -->
michael@0 2737 <xs:element name="textToPath">
michael@0 2738 <xs:complexType>
michael@0 2739 <xs:choice >
michael@0 2740 <xs:element ref="Sk:text" minOccurs="0" />
michael@0 2741 <xs:element ref="Sk:paint" minOccurs="0" />
michael@0 2742 <xs:element ref="Sk:path" minOccurs="0" />
michael@0 2743 </xs:choice>
michael@0 2744 <!-- @attribute paint The paint selects the text font, size and other text properties. -->
michael@0 2745 <xs:attribute name="paint" type="Sk:Paint"/>
michael@0 2746 <!-- @attribute path The reference to the path element where the text as path is stored. -->
michael@0 2747 <xs:attribute name="path" type="Sk:Path"/>
michael@0 2748 <!-- @attribute text The reference to the text element to turn into a path. -->
michael@0 2749 <xs:attribute name="text" type="Sk:Text"/>
michael@0 2750 <xs:attribute name="id" type="xs:ID"/>
michael@0 2751 </xs:complexType>
michael@0 2752 </xs:element>
michael@0 2753
michael@0 2754 <!-- /** translate
michael@0 2755 Translate concatenates a translation-only matrix onto the current matrix.
michael@0 2756 */ -->
michael@0 2757 <xs:element name="translate">
michael@0 2758 <xs:complexType>
michael@0 2759 <!-- @attribute x The translation in x. -->
michael@0 2760 <xs:attribute name="x" type="Sk:Float"/>
michael@0 2761 <!-- @attribute y The translation in y. -->
michael@0 2762 <xs:attribute name="y" type="Sk:Float"/>
michael@0 2763 <xs:attribute name="id" type="xs:ID"/>
michael@0 2764 </xs:complexType>
michael@0 2765 </xs:element>
michael@0 2766
michael@0 2767 <!-- /** transparentShader
michael@0 2768 TransparentShader uses the background for its paint. Works well with emboss.
michael@0 2769 */ -->
michael@0 2770 <xs:element name="transparentShader">
michael@0 2771 <xs:complexType>
michael@0 2772 <xs:attribute name="id" type="xs:ID"/>
michael@0 2773 </xs:complexType>
michael@0 2774 </xs:element>
michael@0 2775
michael@0 2776 <!-- /** typeface
michael@0 2777 Typeface describes the text font.
michael@0 2778 */ -->
michael@0 2779 <xs:element name="typeface">
michael@0 2780 <xs:complexType>
michael@0 2781 <!-- @attribute fontName The name of the font. -->
michael@0 2782 <xs:attribute name="fontName" type="Sk:String"/>
michael@0 2783 </xs:complexType>
michael@0 2784 </xs:element>
michael@0 2785
michael@0 2786 </xs:schema>
michael@0 2787

mercurial