diff options
Diffstat (limited to 'gfx/skia/skia/src/animator/SkAnimateSchema.xsd')
-rw-r--r-- | gfx/skia/skia/src/animator/SkAnimateSchema.xsd | 2787 |
1 files changed, 2787 insertions, 0 deletions
diff --git a/gfx/skia/skia/src/animator/SkAnimateSchema.xsd b/gfx/skia/skia/src/animator/SkAnimateSchema.xsd new file mode 100644 index 000000000..f7af332cf --- /dev/null +++ b/gfx/skia/skia/src/animator/SkAnimateSchema.xsd @@ -0,0 +1,2787 @@ +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" +xmlns:Sk="urn:screenplay" targetNamespace="urn:screenplay"> + + <!-- /** Animate + An ID of an element of type <animate> or <set> + */ --> + <xs:simpleType name="Animate"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** 3D_Point + An array of three floats in ECMAScript notation: [x, y, z]. + */ --> + <xs:simpleType name="3D_Point"> + <xs:restriction base="xs:string"> + <xs:pattern value="[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)( *, *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)){2}" /> + </xs:restriction> + </xs:simpleType> + + <!-- /** ARGB + The red, green, blue, and optional alpha color components. + */ --> + <xs:simpleType name="ARGB"> + <xs:restriction base="xs:string"> + <!-- @pattern #[0-9a-fA-F]{3} #rgb contains three hexadecimal digits. #rgb is equivalent to 0xFFrrggbb. --> + <xs:pattern value="#[0-9a-fA-F]{3}"/> + <!-- @pattern #[0-9a-fA-F]{4} #argb contains four hexadecimal digits. #argb is equivalent to 0xaarrggbb. --> + <xs:pattern value="#[0-9a-fA-F]{4}"/> + <!-- @pattern #[0-9a-fA-F]{6} #rrggbb contains six hexadecimal digits. #rrggbb is equivalent to 0xFFrrggbb. --> + <xs:pattern value="#[0-9a-fA-F]{6}"/> + <!-- @pattern #[0-9a-fA-F]{8} #aarrggbb contains eight hexadecimal digits. #aarrggbb is equivalent to 0xaarrggbb. --> + <xs:pattern value="#[0-9a-fA-F]{8}"/> + <!-- @pattern 0[xX][0-9a-fA-F]{8} 0xaarrggbb describes the color as a packed hexadecimal; each pair of digits + corresponds to alpha, red, green, and blue respectively. --> + <xs:pattern value="0[xX][0-9a-fA-F]{8}"/> + <!-- @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, + corresponding to red, green, and blue respectively. --> + <xs:pattern value="rgb\(\d+{1,3},\d+{1,3},\d+{1,3}\)"/> + <!-- @patternList Color can be described by the following standard CSS color names. --> + <xs:pattern value="aliceblue"/> + <xs:pattern value="antiquewhite"/> + <xs:pattern value="aqua"/> + <xs:pattern value="aquamarine"/> + <xs:pattern value="azure"/> + <xs:pattern value="beige"/> + <xs:pattern value="bisque"/> + <xs:pattern value="black"/> + <xs:pattern value="blanchedalmond"/> + <xs:pattern value="blue"/> + <xs:pattern value="blueviolet"/> + <xs:pattern value="brown"/> + <xs:pattern value="burlywood"/> + <xs:pattern value="cadetblue"/> + <xs:pattern value="chartreuse"/> + <xs:pattern value="chocolate"/> + <xs:pattern value="coral"/> + <xs:pattern value="cornflowerblue"/> + <xs:pattern value="cornsilk"/> + <xs:pattern value="crimson"/> + <xs:pattern value="cyan"/> + <xs:pattern value="darkblue"/> + <xs:pattern value="darkcyan"/> + <xs:pattern value="darkgoldenrod"/> + <xs:pattern value="darkgray"/> + <xs:pattern value="darkgreen"/> + <xs:pattern value="darkkhaki"/> + <xs:pattern value="darkmagenta"/> + <xs:pattern value="darkolivegreen"/> + <xs:pattern value="darkorange"/> + <xs:pattern value="darkorchid"/> + <xs:pattern value="darkred"/> + <xs:pattern value="darksalmon"/> + <xs:pattern value="darkseagreen"/> + <xs:pattern value="darkslateblue"/> + <xs:pattern value="darkslategray"/> + <xs:pattern value="darkturquoise"/> + <xs:pattern value="darkviolet"/> + <xs:pattern value="deeppink"/> + <xs:pattern value="deepskyblue"/> + <xs:pattern value="dimgray"/> + <xs:pattern value="dodgerblue"/> + <xs:pattern value="firebrick"/> + <xs:pattern value="floralwhite"/> + <xs:pattern value="forestgreen"/> + <xs:pattern value="fuchsia"/> + <xs:pattern value="gainsboro"/> + <xs:pattern value="ghostwhite"/> + <xs:pattern value="gold"/> + <xs:pattern value="goldenrod"/> + <xs:pattern value="gray"/> + <xs:pattern value="green"/> + <xs:pattern value="greenyellow"/> + <xs:pattern value="honeydew"/> + <xs:pattern value="hotpink"/> + <xs:pattern value="indianred"/> + <xs:pattern value="indigo"/> + <xs:pattern value="ivory"/> + <xs:pattern value="khaki"/> + <xs:pattern value="lavender"/> + <xs:pattern value="lavenderblush"/> + <xs:pattern value="lawngreen"/> + <xs:pattern value="lemonchiffon"/> + <xs:pattern value="lightblue"/> + <xs:pattern value="lightcoral"/> + <xs:pattern value="lightcyan"/> + <xs:pattern value="lightgoldenrodyellow"/> + <xs:pattern value="lightgreen"/> + <xs:pattern value="lightgrey"/> + <xs:pattern value="lightpink"/> + <xs:pattern value="lightsalmon"/> + <xs:pattern value="lightseagreen"/> + <xs:pattern value="lightskyblue"/> + <xs:pattern value="lightslategray"/> + <xs:pattern value="lightsteelblue"/> + <xs:pattern value="lightyellow"/> + <xs:pattern value="lime"/> + <xs:pattern value="limegreen"/> + <xs:pattern value="linen"/> + <xs:pattern value="magenta"/> + <xs:pattern value="maroon"/> + <xs:pattern value="mediumaquamarine"/> + <xs:pattern value="mediumblue"/> + <xs:pattern value="mediumorchid"/> + <xs:pattern value="mediumpurple"/> + <xs:pattern value="mediumseagreen"/> + <xs:pattern value="mediumslateblue"/> + <xs:pattern value="mediumspringgreen"/> + <xs:pattern value="mediumturquoise"/> + <xs:pattern value="mediumvioletred"/> + <xs:pattern value="midnightblue"/> + <xs:pattern value="mintcream"/> + <xs:pattern value="mistyrose"/> + <xs:pattern value="moccasin"/> + <xs:pattern value="navajowhite"/> + <xs:pattern value="navy"/> + <xs:pattern value="oldlace"/> + <xs:pattern value="olive"/> + <xs:pattern value="olivedrab"/> + <xs:pattern value="orange"/> + <xs:pattern value="orangered"/> + <xs:pattern value="orchid"/> + <xs:pattern value="palegoldenrod"/> + <xs:pattern value="palegreen"/> + <xs:pattern value="paleturquoise"/> + <xs:pattern value="palevioletred"/> + <xs:pattern value="papayawhip"/> + <xs:pattern value="peachpuff"/> + <xs:pattern value="peru"/> + <xs:pattern value="pink"/> + <xs:pattern value="plum"/> + <xs:pattern value="powderblue"/> + <xs:pattern value="purple"/> + <xs:pattern value="red"/> + <xs:pattern value="rosybrown"/> + <xs:pattern value="royalblue"/> + <xs:pattern value="saddlebrown"/> + <xs:pattern value="salmon"/> + <xs:pattern value="sandybrown"/> + <xs:pattern value="seagreen"/> + <xs:pattern value="seashell"/> + <xs:pattern value="sienna"/> + <xs:pattern value="silver"/> + <xs:pattern value="skyblue"/> + <xs:pattern value="slateblue"/> + <xs:pattern value="slategray"/> + <xs:pattern value="snow"/> + <xs:pattern value="springgreen"/> + <xs:pattern value="steelblue"/> + <xs:pattern value="tan"/> + <xs:pattern value="teal"/> + <xs:pattern value="thistle"/> + <xs:pattern value="tomato"/> + <xs:pattern value="turquoise"/> + <xs:pattern value="violet"/> + <xs:pattern value="wheat"/> + <xs:pattern value="white"/> + <xs:pattern value="whitesmoke"/> + <xs:pattern value="yellow"/> + <!--@patternListLast --> + <xs:pattern value="yellowgreen"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** AddMode + AddMode controls how the add element adds its referenced element to the + display list. By default, the referenced element remains in the add element + so that the add element's use attribute may be animated to change the + element it refers to. Setting the mode attribute to "immediate" causes the + add element to put the referenced element in the display list directly. + The move and replace elements are not affected by the mode attribute; + they always move or replace the referenced element directly. + */ --> + <xs:simpleType name="AddMode"> + <xs:restriction base="xs:string"> + <!-- @pattern immediate Puts the referenced element in the display list. --> + <xs:pattern value="immediate"/> + <!-- @pattern indirect Puts the containing element in the display list. --> + <xs:pattern value="indirect"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Align + Align places text to the left, center, or right of the text position. + */ --> + <xs:simpleType name="Align"> + <xs:restriction base="xs:string"> + <!-- @pattern left The first character in the text string is drawn at the text position. --> + <xs:pattern value="left"/> + <!-- @pattern center The text string is measured and centered on the text position. --> + <xs:pattern value="center"/> + <!-- @pattern right The last character in the text string is drawn to the left of the text position. --> + <xs:pattern value="right"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** ApplyMode + ApplyMode affects how the apply element animates values. + */ --> + <xs:simpleType name="ApplyMode"> + <xs:restriction base="xs:string"> + <!-- @pattern immediate Iterates through all animation values immediately. --> + <xs:pattern value="immediate"/> + <!-- @pattern once Performs the animation at once without adding the scope to + the display list. --> + <xs:pattern value="once"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** ApplyTransition + ApplyTransition affects how the apply element sets the time of the animators. + */ --> + <xs:simpleType name="ApplyTransition"> + <xs:restriction base="xs:string"> + <!-- @pattern reverse Performs the animation in reverse. --> + <xs:pattern value="reverse"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Base64 + Base64 describes 8 bit binary using 64 character values. + See http://rfc.net/rfc2045.html for the base64 format. + */ --> + <xs:simpleType name="Base64"> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Za-z0-9+/ ]+"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** BaseBitmap + A reference to an image like a JPEG, GIF, or PNG; or a reference to a bitmap element + that has been drawn into with a drawTo element. + */ --> + <xs:simpleType name="BaseBitmap"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** BitmapEncoding + Used to specify the compression format for writing an image file with the snapshot element. + */ --> + <xs:simpleType name="BitmapEncoding"> + <xs:restriction base="xs:string"> + <!-- @pattern jpeg See http://www.jpeg.org/jpeg/ for more information about JPEG. --> + <xs:pattern value="jpeg"/> + <!-- @pattern png See http://www.libpng.org/pub/png/ for more information about PNG. --> + <xs:pattern value="png"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** BitmapFormat + Determines the number of bits per pixel in a bitmap. + */ --> + <xs:simpleType name="BitmapFormat"> + <xs:restriction base="xs:string"> + <xs:pattern value="none"/> + <!-- @pattern A1 1-bit per pixel, (0 is transparent, 1 is opaque). --> + <xs:pattern value="A1"/> + <!-- @pattern A8 8-bits per pixel, with only alpha specified (0 is transparent, 0xFF is opaque). --> + <xs:pattern value="A8"/> + <!-- @pattern Index8 8-bits per pixel, using a ColorTable element to specify the colors. --> + <xs:pattern value="Index8"/> + <!-- @pattern RGB16 16-bits per pixel, compile-time configured to be either 555 or 565. --> + <xs:pattern value="RGB16"/> + <!-- @pattern RGB32 32-bits per pixel, plus alpha. --> + <xs:pattern value="RGB32"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Boolean + Either "true" (non-zero) or "false" (zero). + */ --> + <xs:simpleType name="Boolean"> + <xs:restriction base="xs:string"> + <xs:pattern value="false"/> + <xs:pattern value="true"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Cap + The values for the strokeCap attribute. + */ --> + <xs:simpleType name="Cap"> + <xs:restriction base="xs:string"> + <!-- @pattern butt begin and end a contour with no extension --> + <xs:pattern value="butt"/> + <!-- @pattern round begin and end a contour with a semi-circle extension --> + <xs:pattern value="round"/> + <!-- @pattern square begin and end a contour with a half square extension --> + <xs:pattern value="square"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Color + A reference to a color element. + */ --> + <xs:simpleType name="Color"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Displayable + A reference to any element: @list(Displayable) + */ --> + <xs:simpleType name="Displayable"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** DisplayableArray + An array of one or more element IDs. + */ --> + <xs:simpleType name="DisplayableArray"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Drawable + A reference to an element that can be drawn: @list(Drawable) + */ --> + <xs:simpleType name="Drawable"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** DynamicString + Dynamic strings contain scripts that are re-evaluated each time the script is enabled. + */ --> + <xs:simpleType name="DynamicString"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** EventCode + Key codes that can trigger events, usually corresponding to physical buttons on the device. + */ --> + <xs:simpleType name="EventCode"> + <xs:restriction base="xs:string"> + <xs:pattern value="none"/> + <!-- @pattern up The up arrow. --> + <xs:pattern value="up"/> + <!-- @pattern down The down arrow. --> + <xs:pattern value="down"/> + <!-- @pattern left The left arrow. --> + <xs:pattern value="left"/> + <!-- @pattern right The right arrow. --> + <xs:pattern value="right"/> + <!-- @pattern back The back button (may not be present; the Backspace key on a PC). --> + <xs:pattern value="back"/> + <!-- @pattern end The end button (may not be present; the Esc key on a PC). --> + <xs:pattern value="end"/> + <!-- @pattern OK The OK button (the Enter key on a PC). --> + <xs:pattern value="OK"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** EventKind + Specifies how an event is triggered; by a key, when an animation ends, when the + document is loaded, or when this event is triggered by the user's C++ or XML. + */ --> + <xs:simpleType name="EventKind"> + <xs:restriction base="xs:string"> + <xs:pattern value="none"/> + <!-- @pattern keyChar A key corresponding to a Unichar value. --> + <xs:pattern value="keyChar"/> + <!-- @pattern keyPress A key with a particular function, such as an arrow key or the OK button. --> + <xs:pattern value="keyPress"/> + <!-- @pattern mouseDown Triggered when the primary mouse button is pressed. --> + <xs:pattern value="mouseDown"/> + <!-- @pattern mouseDrag Triggered when the primary mouse is moved while the button is pressed. --> + <xs:pattern value="mouseDrag"/> + <!-- @pattern mouseMove Triggered when the primary mouse is moved. --> + <xs:pattern value="mouseMove"/> + <!-- @pattern mouseUp Triggered when the primary mouse button is released. --> + <xs:pattern value="mouseUp"/> + <!-- @pattern onEnd Triggered when an event ends. --> + <xs:pattern value="onEnd"/> + <!-- @pattern onLoad Triggered when the document loads. --> + <xs:pattern value="onLoad"/> + <!-- @pattern user Triggered when a post element or C++ event is activated. --> + <xs:pattern value="user"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** EventMode + Specifies whether the event is delivered immediately to matching event element or deferred to + the application-wide event handler. + */ --> + <xs:simpleType name="EventMode"> + <xs:restriction base="xs:string"> + <!-- @pattern deferred Process the event using the host's event queue. --> + <xs:pattern value="deferred"/> + <!-- @pattern immediate Activate the event element immediately. --> + <xs:pattern value="immediate"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** FillType + Filled paths that self-intersect use the winding or evenOdd rule to determine whether the + overlaps are filled or are holes. + */ --> + <xs:simpleType name="FillType"> + <xs:restriction base="xs:string"> + <!-- @pattern winding Fill if the sum of edge directions is non-zero. --> + <xs:pattern value="winding"/> + <!-- @pattern evenOdd Fill if the sum of edges is an odd number. --> + <xs:pattern value="evenOdd"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** FilterType + Scaled bitmaps without a filter type set point-sample the source bitmap to determine the + destination pixels' colors. Bilinear and bicubic compute the values of intermediate pixels + by sampling the pixels around them. + */ --> + <xs:simpleType name="FilterType"> + <xs:restriction base="xs:string"> + <xs:pattern value="none"/> + <!-- @pattern bilinear Compute the pixel value as the linear interpolation of adjacent pixels. --> + <xs:pattern value="bilinear"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Float + A signed fractional value. + */ --> + <xs:simpleType name="Float"> + <xs:restriction base="xs:float"> + <xs:pattern value="[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** FloatArray + An array of one or more signed fractional values. + */ --> + <xs:simpleType name="FloatArray"> + <xs:restriction base="xs:float"> + <xs:pattern value="\[[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)( *, *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?))*\]"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** FromPathMode + A matrix computed from an offset along a path may include the point's position, the angle + tangent, or both. + . + */ --> + <xs:simpleType name="FromPathMode"> + <xs:restriction base="xs:string"> + <!-- @pattern normal Compute the matrix using the path's angle and position. --> + <xs:pattern value="normal"/> + <!-- @pattern angle Compute the matrix using only the path's angle. --> + <xs:pattern value="angle"/> + <!-- @pattern position Compute the matrix using only the path's position. --> + <xs:pattern value="position"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Int + A signed integer. + */ --> + <xs:simpleType name="Int"> + <xs:restriction base="xs:integer"/> + </xs:simpleType> + + <!-- /** IntArray + An array of one or more signed integer values. + */ --> + <xs:simpleType name="IntArray"> + <xs:restriction base="xs:integer"> + <xs:pattern value="\[[+-]?[0-9]+( *, *[+-]?[0-9]+)*\]"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Join + The edges of thick lines in a path are joined by extending the outer edges to form a miter, + or by adding a round circle at the intersection point, or by connecting the outer edges with a line + to form a blunt joint. + */ --> + <xs:simpleType name="Join"> + <xs:restriction base="xs:string"> + <!-- @pattern miter Extend the outer edges to form a miter. --> + <xs:pattern value="miter"/> + <!-- @pattern round Join the outer edges with a circular arc. --> + <xs:pattern value="round"/> + <!-- @pattern blunt Connect the outer edges with a line. --> + <xs:pattern value="blunt"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** MaskFilterBlurStyle + A blur can affect the inside or outside part of the shape, or it can affect both. The shape + itself can be drawn solid, or can be invisible. + */ --> + <xs:simpleType name="MaskFilterBlurStyle"> + <xs:restriction base="xs:string"> + <!-- @pattern normal Blur inside and outside. --> + <xs:pattern value="normal"/> + <!-- @pattern solid Solid inside, blur outside. --> + <xs:pattern value="solid"/> + <!-- @pattern outer Invisible inside, blur outside. --> + <xs:pattern value="outer"/> + <!-- @pattern inner Blur inside only.. --> + <xs:pattern value="inner"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** MaskFilter + The ID of a blur or emboss element. + */ --> + <xs:simpleType name="MaskFilter"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Matrix + The ID of a matrix element. + */ --> + <xs:simpleType name="Matrix"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** MSec + A fractional second with millisecond resolution. + */ --> + <xs:simpleType name="MSec"> + <xs:restriction base="xs:float"/> + </xs:simpleType> + + <!-- /** Paint + The ID of a paint element. + */ --> + <xs:simpleType name="Paint"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Path + The ID of a path element. + */ --> + <xs:simpleType name="Path"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** PathDirection + PathDirection determines if the path is traveled clockwise or counterclockwise. + */ --> + <xs:simpleType name="PathDirection"> + <xs:restriction base="xs:string"> + <!-- @pattern cw The path is traveled clockwise. --> + <xs:pattern value="cw"/> + <!-- @pattern ccw The path is traveled counterclockwise. --> + <xs:pattern value="ccw"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** PathEffect + The ID of a dash or discrete element. + */ --> + <xs:simpleType name="PathEffect"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Point + A pair of signed values representing the x and y coordinates of a point. + */ --> + <xs:simpleType name="Point"> + <xs:restriction base="xs:string"> + <xs:pattern value="\[ *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?) *[ ,] *[+-]?([0-9]*\.[0-9]+|[0-9]+\.?)\]"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Rect + The ID of a rectangle element. + */ --> + <xs:simpleType name="Rect"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Shader + The ID of a linear or radial gradient. + */ --> + <xs:simpleType name="Shader"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** String + A sequence of characters. + */ --> + <xs:simpleType name="String"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Style + Geometry can be filled, stroked or both. + */ --> + <xs:simpleType name="Style"> + <xs:restriction base="xs:string"> + <!-- @pattern fill The interior of the geometry is filled with the paint's color. --> + <xs:pattern value="fill"/> + <!-- @pattern stroke The outline of the geometry is stroked with the paint's color. --> + <xs:pattern value="stroke"/> + <!-- @pattern strokeAndFill The interior is filled and outline is stroked with the paint's color. --> + <xs:pattern value="strokeAndFill"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Text + The ID of a text element. + */ --> + <xs:simpleType name="Text"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** TextBoxAlign + Multiple lines of text may be aligned to the start of the box, the center, or the end. + */ --> + <xs:simpleType name="TextBoxAlign"> + <xs:restriction base="xs:string"> + <!-- @pattern start The text begins within the upper left of the box. --> + <xs:pattern value="start"/> + <!-- @pattern center The text is positioned in the center of the box. --> + <xs:pattern value="center"/> + <!-- @pattern end The text ends within the lower right of the box. --> + <xs:pattern value="end"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** TextBoxMode + Fitting the text may optionally introduce line breaks. + */ --> + <xs:simpleType name="TextBoxMode"> + <xs:restriction base="xs:string"> + <!-- @pattern oneLine No additional linebreaks are added. --> + <xs:pattern value="oneLine"/> + <!-- @pattern lineBreak Line breaks may be added to fit the text to the box. --> + <xs:pattern value="lineBreak"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** TileMode + A shader describes how to draw within a rectangle. + Outside of the rectangle, the shader may be ignored, clamped on the edges, or repeated. + The repetitions may be mirrored from the original shader. + */ --> + <xs:simpleType name="TileMode"> + <xs:restriction base="xs:string"> + <!-- @pattern clamp The edge shader color is extended. --> + <xs:pattern value="clamp"/> + <!-- @pattern repeat The shader is repeated horizontally and vertically. --> + <xs:pattern value="repeat"/> + <!-- @pattern mirror The shader is mirrored horizontally and vertically. --> + <xs:pattern value="mirror"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Typeface + The ID of a typeface element. + */ --> + <xs:simpleType name="Typeface"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** UnknownArray + An array of values of any type. + */ --> + <xs:simpleType name="UnknownArray"> + <xs:restriction base="xs:string"/> + </xs:simpleType> + + <!-- /** Xfermode + The operation applied when drawing a color to the destination background. + */ --> + <xs:simpleType name="Xfermode"> + <xs:restriction base="xs:string"> + <!-- @pattern clear Set the destination alpha to zero and the destination color to black. --> + <xs:pattern value="clear"/> + <!-- @pattern src Set the destination to the source alpha and color. --> + <xs:pattern value="src"/> + <!-- @pattern dst Set the destination to the destination alpha and color. --> + <xs:pattern value="dst"/> + <!-- @pattern srcOver The default. Set the destination to the source color blended + with the destination by the source alpha. --> + <xs:pattern value="srcOver"/> + <!-- @pattern dstOver Set the destination to the destination color blended + with the source by the destination alpha. --> + <xs:pattern value="dstOver"/> + <!-- @pattern srcIn Set the destination to the source color scaled by the destination + alpha. --> + <xs:pattern value="srcIn"/> + <!-- @pattern dstIn Set the destination to the destination color scaled by the source + alpha. --> + <xs:pattern value="dstIn"/> + <!-- @pattern srcOut Set the destination to the source color scaled by the + inverse of the destination alpha. --> + <xs:pattern value="srcOut"/> + <!-- @pattern dstOut Set the destination to the destination color scaled by the + inverse of the source alpha. --> + <xs:pattern value="dstOut"/> + <!-- @pattern srcATop Set the destination to the source color times the destination alpha, + blended with the destination times the inverse of the source alpha. --> + <xs:pattern value="srcATop"/> + <!-- @pattern dstATop Set the destination to the destination color times the source alpha, + blended with the source times the inverse of the destination alpha. --> + <xs:pattern value="dstATop"/> + <!-- @pattern xor Set the destination to the destination color times the + inverse of the source alpha, + blended with the source times the inverse of the destination alpha. --> + <xs:pattern value="xor"/> + </xs:restriction> + </xs:simpleType> + + <!-- /** Math + Math provides functions and properties in the ECMAScript library to screenplay script expressions. + The Math element is always implicitly added at the top of every screenplay description, so + its functions and properties are always available. + */ --> + <xs:element name="Math"> + <xs:complexType> + <!-- @attribute E The value 2.718281828. --> + <xs:attribute name="E" type="Sk:Float"/> + <!-- @attribute LN10 The value 2.302585093. --> + <xs:attribute name="LN10" type="Sk:Float"/> + <!-- @attribute LN2 The value 0.693147181. --> + <xs:attribute name="LN2" type="Sk:Float"/> + <!-- @attribute LOG10E The value 0.434294482. --> + <xs:attribute name="LOG10E" type="Sk:Float"/> + <!-- @attribute LOG2E The value 1.442695041. --> + <xs:attribute name="LOG2E" type="Sk:Float"/> + <!-- @attribute PI The value 3.141592654. --> + <xs:attribute name="PI" type="Sk:Float"/> + <!-- @attribute SQRT1_2 The value 0.707106781. --> + <xs:attribute name="SQRT1_2" type="Sk:Float"/> + <!-- @attribute SQRT2 The value 1.414213562. --> + <xs:attribute name="SQRT2" type="Sk:Float"/> + <!-- @attribute abs A function that returns the absolute value of its argument. --> + <xs:attribute name="abs" type="Sk:Float"/> + <!-- @attribute acos A function that returns the arc cosine of its argument. --> + <xs:attribute name="acos" type="Sk:Float"/> + <!-- @attribute asin A function that returns the arc sine of its argument. --> + <xs:attribute name="asin" type="Sk:Float"/> + <!-- @attribute atan A function that returns the arc tan of its argument. --> + <xs:attribute name="atan" type="Sk:Float"/> + <!-- @attribute atan2 A function that returns the arc tan of the ratio of its two arguments. --> + <xs:attribute name="atan2" type="Sk:Float"/> + <!-- @attribute ceil A function that returns the rounded up value of its argument. --> + <xs:attribute name="ceil" type="Sk:Float"/> + <!-- @attribute cos A function that returns the cosine of its argument. --> + <xs:attribute name="cos" type="Sk:Float"/> + <!-- @attribute exp A function that returns E raised to a power (the argument). --> + <xs:attribute name="exp" type="Sk:Float"/> + <!-- @attribute floor A function that returns the rounded down value of its argument. --> + <xs:attribute name="floor" type="Sk:Float"/> + <!-- @attribute log A function that returns the natural logarithm its argument. --> + <xs:attribute name="log" type="Sk:Float"/> + <!-- @attribute max A function that returns the largest of any number of arguments. --> + <xs:attribute name="max" type="Sk:Float"/> + <!-- @attribute min A function that returns the smallest of any number of arguments. --> + <xs:attribute name="min" type="Sk:Float"/> + <!-- @attribute pow A function that returns the first argument raised to the power of the second argument. --> + <xs:attribute name="pow" type="Sk:Float"/> + <!-- @attribute random A function that returns a random value from zero to one. + (See also the <random> element.) --> + <xs:attribute name="random" type="Sk:Float"/> + <!-- @attribute round A function that returns the rounded value of its argument. --> + <xs:attribute name="round" type="Sk:Float"/> + <!-- @attribute sin A function that returns the sine of its argument. --> + <xs:attribute name="sin" type="Sk:Float"/> + <!-- @attribute sqrt A function that returns the square root of its argument. --> + <xs:attribute name="sqrt" type="Sk:Float"/> + <!-- @attribute tan A function that returns the tangent of its argument. --> + <xs:attribute name="tan" type="Sk:Float"/> + </xs:complexType> + </xs:element> + + <!-- /** Number + Number provides properties in the ECMAScript library to screenplay script expressions. + The Number element is always implicitly added at the top of every screenplay description, so + its properties are always available. + */ --> + <xs:element name="Number"> + <xs:complexType> + <!-- @attribute MAX_VALUE The maximum number value; approximately 32767.999985 fixed point, + 3.4028235e+38 floating point. --> + <xs:attribute name="MAX_VALUE" type="Sk:Float"/> + <!-- @attribute MIN_VALUE The minimum number value; approximately 0.000015 fixed point, + 1.1754944e-38 floating point. --> + <xs:attribute name="MIN_VALUE" type="Sk:Float"/> + <!-- @attribute NEGATIVE_INFINITY The most negative number value. Fixed point does not + have a value for negative infinity, and approximates it with -32767.999985. --> + <xs:attribute name="NEGATIVE_INFINITY" type="Sk:Float"/> + <!-- @attribute NaN A bit pattern representing "Not a Number". Fixed point does not + have a value for NaN, and approximates it with -32768. --> + <xs:attribute name="NaN" type="Sk:Float"/> + <!-- @attribute POSITIVE_INFINITY The greatest positive number value. Fixed point does not + have a value for positive infinity, and approximates it with 32767.999985. --> + <xs:attribute name="POSITIVE_INFINITY" type="Sk:Float"/> + </xs:complexType> + </xs:element> + + <!-- /** add + Add references a drawable element, and adds it to the display list. + If where and offset are omitted, the element is appended to the end of the display list. + If where is specified, the element is inserted at the first occurance of where in the display list. + If offset and where are specified, the element is inserted at where plus offset. + A positive offset without where inserts the element at the start of the list plus offset. + A negative offset without where inserts the element at the end of the list minus offset. + */ --> + <xs:element name="add"> + <xs:complexType> + <!-- @attribute mode If indirect (the default), keep the add element in the display list, + and draw the add's use element. If immediate, put the add's use element in the display list. --> + <xs:attribute name="mode" type="Sk:AddMode"/> + <!-- @attribute offset The offset added to the insert index. --> + <xs:attribute name="offset" type="Sk:Int"/> + <!-- @attribute use The drawable element to add to the display list. --> + <xs:attribute name="use" type="Sk:Drawable"/> + <!-- @attribute where The drawable element marking where to insert. --> + <xs:attribute name="where" type="Sk:Drawable"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** addCircle + AddCircle adds a closed circle to the parent path element. + */ --> + <xs:element name="addCircle"> + <xs:complexType> + <!-- @attribute direction One of @pattern. @patternDescription --> + <xs:attribute name="direction" type="Sk:PathDirection"/> + <!-- @attribute radius The distance from the center to the edge of the circle. --> + <xs:attribute name="radius" type="Sk:Float"/> + <!-- @attribute x The x coordinate of the circle's center. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The y coordinate of the circle's center.--> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** addOval + AddOval adds a closed oval described by its bounding box to the parent path element. + */ --> + <xs:element name="addOval"> + <xs:complexType> + <!-- @attribute direction One of @pattern. @patternDescription --> + <xs:attribute name="direction" type="Sk:PathDirection"/> + <!-- @attribute bottom The bottom edge of the oval's bounding box. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute left The left edge of the oval's bounding box. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute right The right edge of the oval's bounding box. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute top The top edge of the oval's bounding box. --> + <xs:attribute name="top" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** addPath + AddPath adds a path to the parent path element. + An optional matrix may transform the path as it is added. + */ --> + <xs:element name="addPath"> + <xs:complexType> + <!-- @attribute matrix The matrix applied to the path as it is added. --> + <xs:attribute name="matrix" type="Sk:Matrix"/> + <!-- @attribute path The path to add. --> + <xs:attribute name="path" type="Sk:Path"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** addRect + AddRect adds a closed rectangle to the parent path element. + */ --> + <xs:element name="addRect"> + <xs:complexType> + <!-- @attribute direction One of @pattern. @patternDescription --> + <xs:attribute name="direction" type="Sk:PathDirection"/> + <!-- @attribute bottom The bottom edge of the rectangle. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute left The left edge of the rectangle. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute right The right edge of the rectangle. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute top" The top" edge of the rectangle. --> + <xs:attribute name="top" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** addRoundRect + AddRoundRect adds a closed rounded rectangle to the parent path element. + */ --> + <xs:element name="addRoundRect"> + <xs:complexType> + <!-- @attribute direction One of @pattern. @patternDescription --> + <xs:attribute name="direction" type="Sk:PathDirection"/> + <!-- @attribute bottom The bottom edge of the rounded rectangle's bounding box. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute left The left edge of the rounded rectangle's bounding box. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute right The right edge of the rounded rectangle's bounding box. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute top The top edge of the rounded rectangle's bounding box. --> + <xs:attribute name="top" type="Sk:Float"/> + <!-- @attribute rx The X-radius of the oval used to round the corners. --> + <xs:attribute name="rx" type="Sk:Float"/> + <!-- @attribute ry The Y-radius of the oval used to round the corners. --> + <xs:attribute name="ry" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** animate + Animate varies the value of an element's attribute over time. + The animation may vary starting at the 'from' attribute, and ending at the 'to' attribute, + or may compute the value using the 'formula' attribute. + */ --> + <xs:element name="animate"> + <xs:complexType> + <!-- @attribute begin An optional offset that must elapse before the animation begins. The apply + begin attribute is added to any animator's begin attribute. --> + <xs:attribute name="begin" type="Sk:MSec"/> + <!-- @attribute blend Specifies how the from and to values are blended. A value from 0.0 to + 1.0 specifies a cubic lag/log/lag blend (slow to change at the beginning and end); the closer + blend is to 1.0, the more linear the blend. If omitted, the blend is linear. --> + <xs:attribute name="blend" type="Sk:FloatArray"/> + <!-- @attribute dur The duration of the animation in milliseconds. --> + <xs:attribute name="dur" type="Sk:MSec"/> + <!-- @attribute dynamic If true, restart the animation if any of the simple values the 'from', 'formula', + 'lval', or 'to' attributes reference are changed. Simple values are contained by the array, boolean, float, int, + and string elements. --> + <xs:attribute name="dynamic" type="Sk:Boolean" /> + <!-- @attribute field The attribute to animate. --> + <xs:attribute name="field" type="Sk:String"/> + <!-- @attribute formula A script to execute over time to compute the field's value. Typically, + the fomula is a script expression which includes a reference to the time attribute of the + containing apply element. Requires a dur. For animations that do not stop, set dur="Number.POSITIVE_INFINITY" --> + <xs:attribute name="formula" type="Sk:DynamicString"/> + <!-- @attribute from The starting value (requires a 'to' attribute) --> + <xs:attribute name="from" type="Sk:DynamicString"/> + <!-- @attribute lval An expression evaluating to the attribute to animate. + If present, lval overrides 'field'. The expression is typically an array element, + e.g. lval="x[y]" . --> + <xs:attribute name="lval" type="Sk:DynamicString"/> + <!-- @attribute mirror If true, reverses the interpolated value during even repeat cycles. --> + <xs:attribute name="mirror" type="Sk:Boolean"/> + <!-- @attribute repeat Specifies the number of times to repeat the animation. + (May be fractional.) --> + <xs:attribute name="repeat" type="Sk:Float"/> + <!-- @attribute reset If true, the computed value is the initial value after the + animation is complete. If false, or by default, the computed value is the final value + after the animation is complete. --> + <xs:attribute name="reset" type="Sk:Boolean"/> + <!-- @attribute step When the apply's attribute mode="immediate" or "create", the step attribute can be read by + script to determine the current animation iteration. --> + <xs:attribute name="step" type="Sk:Int" /> + <!-- @attribute target The element to animate. By default, the element contained by the apply + or referenced by the apply's scope attribute is the animate target. --> + <xs:attribute name="target" type="Sk:DynamicString"/> + <!-- @attribute to The ending value (requires a 'from' attribute) --> + <xs:attribute name="to" type="Sk:DynamicString"/> + <!-- @attribute values [Depreciated] --> + <xs:attribute name="values" type="Sk:DynamicString"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** apply + Apply changes one or more attributes of an element. + Apply either contains one displayable element or references the element scoping the change + with the 'scope' attribute. Apply either contains one animator element or references it with + the 'animator' attribute. + In the display list, apply draws the element it scopes after evaluating the animation. + */ --> + <xs:element name="apply"> + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="1"> + <xs:element ref="Sk:animate"/> + <xs:element ref="Sk:set" /> + <!-- not quite right; want to say 'one of the above, one of the below' + </xs:choice> + <xs:choice minOccurs="0" maxOccurs="1"> + --> + <xs:element ref="Sk:add"/> + <xs:element ref="Sk:array"/> + <xs:element ref="Sk:apply"/> + <xs:element ref="Sk:bitmap"/> + <xs:element ref="Sk:boolean"/> + <xs:element ref="Sk:bounds"/> + <!-- <xs:element ref="Sk3D:camera"/> --> + <xs:element ref="Sk:clear"/> + <xs:element ref="Sk:clip"/> + <xs:element ref="Sk:color"/> + <xs:element ref="Sk:drawTo"/> + <xs:element ref="Sk:float"/> + <xs:element ref="Sk:full"/> + <xs:element ref="Sk:group"/> + <xs:element ref="Sk:image"/> + <xs:element ref="Sk:int"/> + <xs:element ref="Sk:line"/> + <xs:element ref="Sk:matrix"/> + <xs:element ref="Sk:move"/> + <xs:element ref="Sk:oval"/> + <xs:element ref="Sk:paint"/> + <!-- <xs:element ref="Sk:patch"/> --> + <xs:element ref="Sk:path"/> + <xs:element ref="Sk:point"/> + <xs:element ref="Sk:polygon"/> + <xs:element ref="Sk:polyline"/> + <xs:element ref="Sk:post"/> + <xs:element ref="Sk:random"/> + <xs:element ref="Sk:rect"/> + <xs:element ref="Sk:remove"/> + <xs:element ref="Sk:replace"/> + <xs:element ref="Sk:roundRect"/> + <xs:element ref="Sk:save"/> + <xs:element ref="Sk:snapshot"/> + <xs:element ref="Sk:string"/> + <xs:element ref="Sk:text"/> + <xs:element ref="Sk:textBox"/> + <xs:element ref="Sk:textOnPath"/> + <xs:element ref="Sk:textToPath"/> + </xs:choice> + <!-- @attribute animator The description of how the element is changed over time. --> + <xs:attribute name="animator" type="Sk:Animate"/> + <!-- @attribute begin An optional offset that must elapse before the animation begins. The apply + begin attribute is added to any animator's begin attribute. --> + <xs:attribute name="begin" type="Sk:MSec" /> + <!-- @attribute dontDraw Edits an element's attribute without drawing it; for instance, + to edit a clip's rectangle without drawing the rectangle, set dontDraw="true". --> + <xs:attribute name="dontDraw" type="Sk:Boolean"/> + <!-- @attribute dynamicScope The location in the display list where animations are stored. Use + dynamicScope instead of scope if a script expression with potentially different values is desired to + describe the scope. --> + <xs:attribute name="dynamicScope" type="Sk:String"/> + <!-- @attribute interval The optional time interval from one animation frame to the next. --> + <xs:attribute name="interval" type="Sk:MSec" /> + <!-- @attribute mode One of @pattern. @patternDescription --> + <xs:attribute name="mode" type="Sk:ApplyMode"/> + <!-- @attribute pickup Starts the animation at the current target's attribute value. Enabling + 'pickup' permits omitting the 'from' attribute of the animator. --> + <xs:attribute name="pickup" type="Sk:Boolean"/> + <!-- @attribute restore If true, multiple references to the same apply statement save and + restore the interpolated target values. --> + <xs:attribute name="restore" type="Sk:Boolean"/> + <!-- @attribute scope The location in the display list where animations are stored. --> + <xs:attribute name="scope" type="Sk:Drawable"/> + <!-- @attribute step When mode="immediate" or "create", the step attribute can be read by + script to determine the current animation iteration. --> + <xs:attribute name="step" type="Sk:Int" /> + <!-- @attribute steps When mode="immediate", the number of times the animation + is stepped. The animation iterates 'steps' times plus one. --> + <xs:attribute name="steps" type="Sk:Int" /> + <!-- @attribute time When read from script, returns the animation time. Typically used by + an animate element's formula attribute. --> + <xs:attribute name="time" type="Sk:MSec" /> + <!-- @attribute transition One of @pattern. @patternDescription --> + <xs:attribute name="transition" type="Sk:ApplyTransition"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** array + Array contains an array of values of the same type. The values may be + numbers or strings. + */ --> + <xs:element name="array"> + <xs:complexType> + <!-- @attribute length The number of elements in the array (read only). --> + <xs:attribute name="length" type="Sk:Int"/> + <!-- @attribute values The elements in the array. --> + <xs:attribute name="values" type="Sk:UnknownArray"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** bitmap + Bitmap describes a rectangle of pixels. + Use the <drawTo> element to draw to a bitmap. + Add the bitmap to the display list to draw from a bitmap. + */ --> + <xs:element name="bitmap"> + <xs:complexType> + <!-- @attribute erase The color, including the alpha, the bitmap is intially set to. --> + <xs:attribute name="erase" type="Sk:ARGB"/> + <!-- @attribute format One of @pattern. @patternDescription --> + <xs:attribute name="format" type="Sk:BitmapFormat"/> + <!-- @attribute height The height of the bitmap in pixels. --> + <xs:attribute name="height" type="Sk:Int"/> + <!-- @attribute rowBytes The number of byte describing each row of pixels (optional). --> + <xs:attribute name="rowBytes" type="Sk:Int"/> + <!-- @attribute width The height of the width in pixels. --> + <xs:attribute name="width" type="Sk:Int"/> + <!-- @attribute x The left edge of the bitmap in unit space. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The top edge of teh bitmap in unit space. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** bitmapShader + BitmapShader sets the paint shader to draw the bitmap as a texture. + */ --> + <xs:element name="bitmapShader"> + <xs:complexType> + <xs:choice > + <xs:element ref="Sk:image" minOccurs="0" /> + <xs:element ref="Sk:matrix" minOccurs="0" /> + </xs:choice> + <!-- @attribute matrix Matrix applies a 3x3 transform to the gradient. --> + <xs:attribute name="matrix" type="Sk:Matrix"/> + <!-- @attribute tileMode One of @pattern. @patternDescription --> + <xs:attribute name="tileMode" type="Sk:TileMode"/> + <!-- @attribute filterType The bitmap filter to employ, one of @pattern. --> + <xs:attribute name="filterType" type="Sk:FilterType"/> + <!-- @attribute image The bitmap to draw. --> + <xs:attribute name="image" type="Sk:BaseBitmap"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + + <!-- /** blur + Blur describes an image filter in the paint that blurs the drawn geometry. + */ --> + <xs:element name="blur"> + <xs:complexType> + <!-- @attribute blurStyle One of @pattern. @patternDescription --> + <xs:attribute name="blurStyle" type="Sk:MaskFilterBlurStyle"/> + <!-- @attribute radius The extent of the filter effect in unit space. If the radius is less + than zero, the blur has no effect. --> + <xs:attribute name="radius" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** boolean + Boolean contains an boolean. The boolean element cannot be added to a display list, but can + by set by animations and read by any attribute definition. An boolean element may be referenced, + for instance, by a group's condition attribute to make an animation conditionally execute. + */ --> + <xs:element name="boolean"> + <xs:complexType> + <!-- @attribute value The contained boolean. --> + <xs:attribute name="value" type="Sk:Boolean"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** bounds + Bounds describes a bounding box that is not drawn. Bounds is used to specify a rectangle to + invalidate or record whether the specified area was drawn. + The width and height attribute compute the rectangle's right and bottom edges when the rectangle + description is first seen. Animating the rectangle's left or top will not recompute the right or bottom + if the width or height have been specified. + */ --> + <xs:element name="bounds"> + <xs:complexType> + <!-- @attribute bottom The bottom edge of the rectangle. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute height The height of the rectangle. Setting height computes the + bottom attribute from the top attribute. --> + <xs:attribute name="height" type="Sk:Float"/> + <!-- @attribute inval If set to true, union the drawn bounds to compute an inval area. --> + <xs:attribute name="inval" type="Sk:Boolean"/> + <!-- @attribute left The left edge of the rectangle. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute needsRedraw Set to true if last draw was visible. --> + <xs:attribute name="needsRedraw" type="Sk:Boolean"/> + <!-- @attribute right The right edge of the rectangle. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute top The top edge of the rectangle. --> + <xs:attribute name="top" type="Sk:Float"/> + <!-- @attribute width The width of the rectangle. --> + <xs:attribute name="width" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** clear + Clear removes all entries in the display list. + */ --> + <xs:element name="clear"> + <xs:complexType> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** clip + Clip sets the canvas to clip drawing to an element's geometry. + A clip element may contain an element or reference an element with the path or + rectangle attributes. To make the clip unrestricted, enclose a 'full' element. + */ --> + <xs:element name="clip"> + <xs:complexType> + <xs:choice minOccurs="0" maxOccurs="1"> + <xs:element ref="Sk:full"/> + <xs:element ref="Sk:rect"/> + <xs:element ref="Sk:path"/> + <xs:element ref="Sk:polygon"/> + <xs:element ref="Sk:polyline"/> + </xs:choice> + <!-- @attribute path A path-derived element to clip to: either an oval, + a path, a polygon, a polyline, or a roundRect. --> + <xs:attribute name="path" type="Sk:Path"/> + <!-- @attribute rect A rectangle element to clip to. --> + <xs:attribute name="rect" type="Sk:Rect"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** close + Close connects the last point in the path's contour to the first if the contour is not already closed. + */ --> + <xs:element name="close"> + <xs:complexType> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** color + Color describes a color in RGB space or HSV space, and its alpha (transparency). + */ --> + <xs:element name="color"> + <xs:complexType> + <!-- @attribute alpha The alpha component, which describes transparency. + Alpha ranges from 0.0 (transparent) to 1.0 (completely opaque). --> + <xs:attribute name="alpha" type="Sk:Float"/> + <!-- @attribute blue The blue component of an RGB color. Blue ranges from 0 to 255. --> + <xs:attribute name="blue" type="Sk:Float"/> + <!-- @attribute color The complete color. The color can be specified by name, + by hexadecimal value, or with the rgb function. --> + <xs:attribute name="color" type="Sk:ARGB"/> + <!-- @attribute green The green component of an RGB color. Green ranges from 0 to 255. --> + <xs:attribute name="green" type="Sk:Float"/> + <!-- @attribute hue The hue component of an HSV color. Hue ranges from 0 to 360. --> + <xs:attribute name="hue" type="Sk:Float"/> + <!-- @attribute red The red component of an RGB color. Red ranges from 0 to 255. --> + <xs:attribute name="red" type="Sk:Float"/> + <!-- @attribute saturation The saturation component of an HSV color. Saturation ranges from 0 to 1. --> + <xs:attribute name="saturation" type="Sk:Float"/> + <!-- @attribute value The value component of an HSV color. Value ranges from 0 to 1. --> + <xs:attribute name="value" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** cubicTo + CubicTo adds a cubic to the path, using the last point in the path as the first point of the cubic. + */ --> + <xs:element name="cubicTo"> + <xs:complexType> + <!-- @attribute x1 The x position of the first off-curve point. --> + <xs:attribute name="x1" type="Sk:Float"/> + <!-- @attribute x2 The x position of the second off-curve point. --> + <xs:attribute name="x2" type="Sk:Float"/> + <!-- @attribute x3 The x position of the final on-curve point. --> + <xs:attribute name="x3" type="Sk:Float"/> + <!-- @attribute y1 The y position of the first off-curve point. --> + <xs:attribute name="y1" type="Sk:Float"/> + <!-- @attribute y2 The y position of the second off-curve point. --> + <xs:attribute name="y2" type="Sk:Float"/> + <!-- @attribute y3 The y position of the final on-curve point. --> + <xs:attribute name="y3" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** dash + Dash describes an array of dashes and gaps that describe how the paint strokes lines, + rectangles, and paths. The intervals, phase, and dashed path are all measured in the same + unit space. The phase and distance between dashes is unaffected by the paint's stroke width. + */ --> + <xs:element name="dash"> + <xs:complexType> + <!-- @attribute intervals An array of floats that alternately describe the lengths of + dashes and gaps. Intervals must contain an even number of entries. --> + <xs:attribute name="intervals" type="Sk:FloatArray"/> + <!-- @attribute phase Phase advances the placement of the first dash. A positive phase + preceeds the first dash with a gap. A negative phase shortens the length of the first dash. --> + <xs:attribute name="phase" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** data + Data provides metadata to an event. The metadata may be an integer, a float, + or a string. + */ --> + <xs:element name="data"> + <xs:complexType> + <!-- @attribute float The float value associated with the metadata. --> + <xs:attribute name="float" type="Sk:Float"/> + <!-- @attribute initialized A read-only value set to false (unused by data). --> + <xs:attribute name="initialized" type="Sk:Boolean"/> + <!-- @attribute int The integer value associated with the metadata. --> + <xs:attribute name="int" type="Sk:Int"/> + <!-- @attribute name The name of the metadata. This is the name of the data. --> + <xs:attribute name="name" type="Sk:String"/> + <!-- @attribute string The string value associated with the metadata. --> + <xs:attribute name="string" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** discrete + Discrete alters the edge of the stroke randomly. Discrete is a path effect, and only has an + effect when referenced from a paint.. A <pathEffect/> + element with no attributes will dissable discrete. + */ --> + <xs:element name="discrete"> + <xs:complexType> + <!-- @attribute deviation The amount of wobble in the stroke. --> + <xs:attribute name="deviation" type="Sk:Float"/> + <!-- @attribute segLength The length of wobble in the stroke. --> + <xs:attribute name="segLength" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** drawTo + DrawTo images to a bitmap. The bitmap can be added to the display list + to draw the composite image. + DrawTo can be used as an offscreen to speed complicated animations, and + for bitmap effects such as pixelated zooming. + DrawTo can only reference a single drawable element. Use <add>, + <group>, or <save> to draw multiple elements with <drawTo>. + */ --> + <xs:element name="drawTo"> + <xs:complexType> + <xs:choice maxOccurs="unbounded" > + <xs:element ref="Sk:add"/> + <xs:element ref="Sk:apply"/> + <xs:element ref="Sk:bitmap"/> + <xs:element ref="Sk:bounds"/> + <!-- <xs:element ref="Sk3D:camera"/> --> + <xs:element ref="Sk:clear"/> + <xs:element ref="Sk:clip"/> + <xs:element ref="Sk:color"/> + <xs:element ref="Sk:full"/> + <xs:element ref="Sk:group"/> + <xs:element ref="Sk:image"/> + <xs:element ref="Sk:line"/> + <xs:element ref="Sk:matrix"/> + <xs:element ref="Sk:move"/> + <xs:element ref="Sk:oval"/> + <xs:element ref="Sk:paint"/> + <!-- <xs:element ref="Sk:patch"/> --> + <xs:element ref="Sk:path"/> + <xs:element ref="Sk:point"/> + <xs:element ref="Sk:polygon"/> + <xs:element ref="Sk:polyline"/> + <xs:element ref="Sk:rect"/> + <xs:element ref="Sk:remove"/> + <xs:element ref="Sk:replace"/> + <xs:element ref="Sk:roundRect"/> + <xs:element ref="Sk:save"/> + <xs:element ref="Sk:text"/> + <xs:element ref="Sk:textBox"/> + <xs:element ref="Sk:textOnPath"/> + <xs:element ref="Sk:textToPath"/> + </xs:choice> + <!-- @attribute drawOnce If set, the drawTo will only draw a single time. --> + <xs:attribute name="drawOnce" type="Sk:Boolean"/> + <!-- @attribute use The bitmap to draw into. --> + <xs:attribute name="use" type="Sk:bitmap"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** dump + Dump prints a list of the items in the display list and all items' + children to the debug console. Dump is only available in Debug + builds. */ --> + <xs:element name="dump"> + <xs:complexType> + <!-- @attribute displayList Dumps the current display list if true. The display list is also + dumped if dump has no attributes. --> + <xs:attribute name="displayList" type="Sk:Boolean"/> + <!-- @attribute eventList Dumps the list of events, both enabled and disabled. --> + <xs:attribute name="eventList" type="Sk:Boolean"/> + <!-- @attribute events Outputs each event element as it is enabled. --> + <xs:attribute name="events" type="Sk:Boolean"/> + <!-- @attribute groups Outputs each group element as its condition is evaluated. --> + <xs:attribute name="groups" type="Sk:Boolean"/> + <!-- @attribute name Outputs the values associated with a single named element. --> + <xs:attribute name="name" type="Sk:String"/> + <!-- @attribute posts Outputs each post element as it is enabled. --> + <xs:attribute name="posts" type="Sk:Boolean"/> + <!-- @attribute script Evaluates the provided script --> + <xs:attribute name="script" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** emboss + PRELIMINARY [to be replaced with SkEmbossMaskFilter.h doxyfomation + at some point] + Emboss applies a mask filter to the paint that makes bias the object's color + towards white or black depending on the normals of the path contour, giving + the shape a 3D raised or depressed effect. + Embossing is replaced by subsequent mask filter elements, or + disabled a negative radius, or by an empty <mask filter> element. + */ --> + <xs:element name="emboss"> + <xs:complexType> + <!-- @attribute ambient The amount of ambient light, from 0 to 1. --> + <xs:attribute name="ambient" type="Sk:Float"/> + <!-- @attribute direction The direction of the light source, as descibed by a 3D vector. + (The vector is normalized to a unit length of 1.0.) --> + <xs:attribute name="direction" type="Sk:FloatArray"/> + <!-- @attribute radius The extent of the filter effect in unit space. If the radius is less + than zero, the emboss has no effect. --> + <xs:attribute name="radius" type="Sk:Float"/> + <!-- @attribute specular The expotential intensity of the light, from 0 to 1. + Each increase of 0.0625 doubles the intensity. --> + <xs:attribute name="specular" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** event + Event contains a series of actions performed each time the event's criteria are satisfied. + These actions may modify the display list, may enable animations which in turn modify + elements' attributes, and may post other events. + */ --> + <xs:element name="event"> + <xs:complexType> + <xs:choice maxOccurs="unbounded" > + <xs:element ref="Sk:add"/> + <xs:element ref="Sk:apply"/> + <xs:element ref="Sk:array"/> + <xs:element ref="Sk:bitmap"/> + <xs:element ref="Sk:boolean"/> + <xs:element ref="Sk:bounds"/> + <!-- <xs:element ref="Sk3D:camera"/> --> + <xs:element ref="Sk:clear"/> + <xs:element ref="Sk:clip"/> + <xs:element ref="Sk:color"/> + <xs:element ref="Sk:drawTo"/> + <xs:element ref="Sk:dump"/> + <xs:element ref="Sk:float"/> + <xs:element ref="Sk:full"/> + <xs:element ref="Sk:group"/> + <xs:element ref="Sk:hitClear"/> + <xs:element ref="Sk:hitTest"/> + <xs:element ref="Sk:image"/> + <xs:element ref="Sk:input"/> + <xs:element ref="Sk:int"/> + <xs:element ref="Sk:line"/> + <xs:element ref="Sk:matrix"/> + <xs:element ref="Sk:move"/> + <xs:element ref="Sk:movie"/> + <xs:element ref="Sk:oval"/> + <xs:element ref="Sk:paint"/> + <!-- <xs:element ref="Sk:patch"/> --> + <xs:element ref="Sk:path"/> + <xs:element ref="Sk:point"/> + <xs:element ref="Sk:polygon"/> + <xs:element ref="Sk:polyline"/> + <xs:element ref="Sk:post"/> + <xs:element ref="Sk:random"/> + <xs:element ref="Sk:rect"/> + <xs:element ref="Sk:remove"/> + <xs:element ref="Sk:replace"/> + <xs:element ref="Sk:roundRect"/> + <xs:element ref="Sk:save"/> + <xs:element ref="Sk:snapshot"/> + <xs:element ref="Sk:string"/> + <xs:element ref="Sk:text"/> + <xs:element ref="Sk:textBox"/> + <xs:element ref="Sk:textOnPath"/> + <xs:element ref="Sk:textToPath"/> + </xs:choice> + <!-- @attribute code The key code to match to a key press event, one of @pattern. + If the code is set to @pattern[0], the event is never activated. --> + <xs:attribute name="code" type="Sk:EventCode"/> + <!-- @attribute disable If true, the event cannot be activated. By default false.. --> + <xs:attribute name="disable" type="Sk:Boolean"/> + <!-- @attribute key The character code to match to a key down event. + When read, the key that activated this event. --> + <xs:attribute name="key" type="Sk:String"/> + <!-- @attribute keys A dash-separated continuous range of character codes to match + to a key down event. Read the key attribute to determine the key that activated this event. --> + <xs:attribute name="keys" type="Sk:String"/> <!-- single or range of keys --> + <!-- @attribute kind The event kind that activates this event, one of @pattern. + If kind equals keyChar, either attribute key or keys is expected. + If kind equals keyPress, attribute code is expected. + If kind equals onEnd, attribute target is expected. + If kind equals onLoad, the event is activated when the document containing the event + is loaded. The onLoad attribute cannot be activated through a post event. + If kind equals user, the event is activated when the posted event targets this event's ID. --> + <xs:attribute name="kind" type="Sk:EventKind"/> + <!-- @attribute target The element to listen to which activates this event. --> + <xs:attribute name="target" type="Sk:String" /> + <!-- @attribute x For click events, the x-coordinate of the click. --> + <xs:attribute name="x" type="Sk:Float" /> + <!-- @attribute y For click events, the y-coordinate of the click. --> + <xs:attribute name="y" type="Sk:Float" /> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** float + Float contains a signed fractional value. The float element cannot be added to a display list, + but can be set by animations and read by any attribute definition. + */ --> + <xs:element name="float"> + <xs:complexType> + <!-- @attribute value The contained float. --> + <xs:attribute name="value" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** fromPath + FromPath concatenates the parent matrix with a new matrix + that maps a unit vector to a point on the given path. + A fromPath element may contain a path element, or may refer to a previously + defined path element with the path attribute. + */ --> + <xs:element name="fromPath"> + <xs:complexType> + <xs:choice > + <!-- @element path The path to evaluate. --> + <xs:element ref="Sk:path" minOccurs="0" /> + </xs:choice> + <!-- @attribute mode One of @pattern. + If mode is set to normal, the matrix maps the unit vector's angle and position. + If mode is set to angle, the matrix maps only the unit vector's angle. + If mode is set to position, the matrix maps only the unit vector's position. --> + <xs:attribute name="mode" type="Sk:FromPathMode"/> + <!-- @attribute offset The distance along the path to evaluate. --> + <xs:attribute name="offset" type="Sk:Float"/> + <!-- @attribute path The path to evaluate. --> + <xs:attribute name="path" type="Sk:Path"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** full + Full paints the entire canvas to the limit of the canvas' clip. + */ --> + <xs:element name="full"> + <xs:complexType> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** group + The group element collects a series of elements into a group. The group can be referenced + or defined within elements, like apply, which operate on any kind of element. Groups + may contain groups. An element in a group draws identically to an element outside a group. + */ --> + <xs:element name="group"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <xs:element ref="Sk:add"/> + <xs:element ref="Sk:apply"/> + <xs:element ref="Sk:array"/> + <xs:element ref="Sk:bitmap"/> + <xs:element ref="Sk:boolean"/> + <xs:element ref="Sk:bounds"/> + <!-- <xs:element ref="Sk3D:camera"/> --> + <xs:element ref="Sk:clear"/> + <xs:element ref="Sk:clip"/> + <xs:element ref="Sk:drawTo"/> + <xs:element ref="Sk:float"/> + <xs:element ref="Sk:full"/> + <xs:element ref="Sk:group"/> + <xs:element ref="Sk:hitClear"/> + <xs:element ref="Sk:hitTest"/> + <xs:element ref="Sk:image"/> + <xs:element ref="Sk:int"/> + <xs:element ref="Sk:line"/> + <xs:element ref="Sk:matrix"/> + <xs:element ref="Sk:move"/> + <xs:element ref="Sk:oval"/> + <xs:element ref="Sk:paint"/> + <!-- <xs:element ref="Sk:patch"/> --> + <xs:element ref="Sk:path"/> + <xs:element ref="Sk:point"/> + <xs:element ref="Sk:polygon"/> + <xs:element ref="Sk:polyline"/> + <xs:element ref="Sk:post"/> + <xs:element ref="Sk:random"/> + <xs:element ref="Sk:rect"/> + <xs:element ref="Sk:remove"/> + <xs:element ref="Sk:replace"/> + <xs:element ref="Sk:roundRect"/> + <xs:element ref="Sk:save"/> + <xs:element ref="Sk:snapshot"/> + <xs:element ref="Sk:string"/> + <xs:element ref="Sk:text"/> + <xs:element ref="Sk:textBox"/> + <xs:element ref="Sk:textOnPath"/> + <xs:element ref="Sk:textToPath"/> + </xs:choice> + <!-- @attribute condition If present and zero, the contained elements are ignored + when drawn. --> + <xs:attribute name="condition" type="Sk:DynamicString"/> + <!-- @attribute enableCondition If present and zero, the contained elements are ignored + when enabled. --> + <xs:attribute name="enableCondition" type="Sk:DynamicString"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <xs:element name="hitClear" > + <xs:complexType> + <xs:choice maxOccurs="1"> + <xs:element ref="Sk:array"/> + </xs:choice> + <!-- @attribute targets An array of element IDs to clear their hit-tested state. --> + <xs:attribute name="targets" type="Sk:DisplayableArray"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <xs:element name="hitTest" > + <xs:complexType> + <xs:choice maxOccurs="2"> + <xs:element ref="Sk:array"/> + </xs:choice> + <!-- @attribute bullets An array of element IDs to test for intersection with targets. --> + <xs:attribute name="bullets" type="Sk:DisplayableArray"/> + <!-- @attribute hits The targets the bullets hit. A read-only array of indices, one index + per bullet. The value of the array element is the index of the target hit, or -1 if no + target was hit. --> + <xs:attribute name="hits" type="Sk:IntArray"/> + <!-- @attribute targets An array of element IDs to test for intersection with bullets. --> + <xs:attribute name="targets" type="Sk:DisplayableArray"/> + <!-- @attribute value Read only; set to true if some bullet hit some target. --> + <xs:attribute name="value" type="Sk:Boolean"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** image + Image creates a reference to a JPEG, PNG or GIF. The image may be referenced + through the local file system, the internet, or embedded in the document in Base64 + format. The specific image type is determined by examining the byte stream. + */ --> + <xs:element name="image"> + <xs:complexType> + <!-- @attribute base64 The image in Base64 notation. See http://rfc.net/rfc2045.html + for the base64 format. --> + <xs:attribute name="base64" type="Sk:Base64"/> + <!-- @attribute height The height of the image (read-only). --> + <xs:attribute name="height" type="Sk:Int"/> + <!-- @attribute src The URI reference, local to the contaiing document. --> + <xs:attribute name="src" type="Sk:String"/> + <!-- @attribute width The width of the image (read-only). --> + <xs:attribute name="width" type="Sk:Int"/> + <!-- @attribute x The position of the left edge of the image in local coordinates. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The position of the top edge of the image in local coordinates. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** include + Include adds the referenced XML to the containing document. Unlike movie, the XML + directives can reference the document's IDs and can define new IDs that are referenced + by the remainder of the document or subsequent includes. + */ --> + <xs:element name="include"> + <xs:complexType> + <!-- @attribute src The URI reference, local to the containing document, + containing the include's XML. --> + <xs:attribute name="src" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** input + Input captures the metadata passed from an event. When the metadata's name or id + matches the metadata's name, the metadata's payload is copied to the corresponding + input attribute. + */ --> + <xs:element name="input"> + <xs:complexType> + <!-- @attribute float The floating point payload carried by the metadata. --> + <xs:attribute name="float" type="Sk:Float"/> + <!-- @attribute initialized A read-only value set to true if the input received a value + from the event. --> + <xs:attribute name="initialized" type="Sk:Boolean"/> + <!-- @attribute int The signed integer payload carried by the metadata. --> + <xs:attribute name="int" type="Sk:Int"/> + <!-- @attribute name The name of the metadata containing the payload. Note that + the name or id may match the payload, but that XML requires the id to be + uniquely defined in the document, while multiple input elements may reuse + the name. --> + <xs:attribute name="name" type="Sk:String"/> + <!-- @attribute string The text payload carried by the metadata. --> + <xs:attribute name="string" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** int + Int contains an integer. The int element cannot be added to a display list, but can + by set by animations and read by any attribute definition. An int element may be used, + for instance, to index through an array element. + */ --> + <xs:element name="int"> + <xs:complexType> + <!-- @attribute value The contained integer. --> + <xs:attribute name="value" type="Sk:Int"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** line + Line describes a line between two points. As noted below, the paint's stroke and + strokeAndFill attributes are ignored. + */ --> + <xs:element name="line"> + <xs:complexType> + <!-- @attribute x1 The start point's x value. --> + <xs:attribute name="x1" type="Sk:Float"/> + <!-- @attribute x2 The stop point's x value. --> + <xs:attribute name="x2" type="Sk:Float"/> + <!-- @attribute y1 The start point's y value. --> + <xs:attribute name="y1" type="Sk:Float"/> + <!-- @attribute y2 The stop point's y value. --> + <xs:attribute name="y2" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** lineTo + LineTo adds a line from the last point in a path to the specified point. + */ --> + <xs:element name="lineTo"> + <xs:complexType> + <!-- @attribute x The final path x coordinate. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The final path y coordinate. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** linearGradient + LinearGradient sets the paint shader to ramp between two or more colors. + */ --> + <xs:element name="linearGradient"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <xs:element ref="Sk:color"/> + <xs:element ref="Sk:matrix"/> + </xs:choice> + <!-- @attribute matrix Matrix applies a 3x3 transform to the gradient. --> + <xs:attribute name="matrix" type="Sk:Matrix"/> + <!-- @attribute tileMode One of @pattern. @patternDescription --> + <xs:attribute name="tileMode" type="Sk:TileMode"/> + <!-- @attribute offsets An optional array of values used to bias the colors. The first entry + in the array must be 0.0, the last must be 1.0, and intermediate values must ascend. --> + <xs:attribute name="offsets" type="Sk:FloatArray"/> + <!-- @attribute points Two points describing the start and end of the gradient. --> + <xs:attribute name="points" type="Sk:Point"/> <!-- not right; should be array of 2 points --> + <!-- @attribute unitMapper A script that returns the mapping for [0,1] for the gradient. + The script can use the predefined variable 'unit' to compute the mapping. For instance, + "unit*unit" squares the value (while still keeping it in the range of [0,1].) The computed number + is pinned to from 0 to 1 after the script is executed. --> + <xs:attribute name="unitMapper" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** maskFilter + MaskFilter disables any mask filter referenced by the paint. + */ --> + <xs:element name="maskFilter"> + <xs:complexType> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** matrix + Matrix transforms all points drawn to the canvas. The matrix may translate, scale, skew, rotate, + or apply perspective, or apply any combination. + */ --> + <xs:element name="matrix"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <!-- @element fromPath FromPath maps a unit vector to a position and direction on a path. --> + <xs:element ref="Sk:fromPath"/> + <!-- @element polyToPoly PolyToPoly maps a points between two polygons. --> + <xs:element ref="Sk:polyToPoly"/> + <!-- @element rectToRect RectToRect maps a points between two rectangles. --> + <xs:element ref="Sk:rectToRect"/> + <!-- @element rotate Rotate computes the matrix rotation in degrees. --> + <xs:element ref="Sk:rotate"/> + <!-- @element scale Scale stretches or shrinks horizontally, vertically, or both. --> + <xs:element ref="Sk:scale"/> + <!-- @element skew Skew slants horizontally, vertically, or both. --> + <xs:element ref="Sk:skew"/> + <!-- @element translate Translate moves horizontally, vertically, or both. --> + <xs:element ref="Sk:translate"/> + </xs:choice> + <!-- @attribute matrix Nine floats describing a 3x3 matrix. --> + <xs:attribute name="matrix" type="Sk:FloatArray"/> + <!-- @attribute perspectX The [0][2] element of the 3x3 matrix. --> + <xs:attribute name="perspectX" type="Sk:Float"/> + <!-- @attribute perspectY The [1][2] element of the 3x3 matrix. --> + <xs:attribute name="perspectY" type="Sk:Float"/> + <!-- @attribute rotate The angle to rotate in degrees. --> + <xs:attribute name="rotate" type="Sk:Float"/> + <!-- @attribute scale The scale to apply in both X and Y.. --> + <xs:attribute name="scale" type="Sk:Float"/> + <!-- @attribute scaleX The [0][0] element of the 3x3 matrix. --> + <xs:attribute name="scaleX" type="Sk:Float"/> + <!-- @attribute scaleY The [1][1] element of the 3x3 matrix. --> + <xs:attribute name="scaleY" type="Sk:Float"/> + <!-- @attribute skewX The [0][1] element of the 3x3 matrix. --> + <xs:attribute name="skewX" type="Sk:Float"/> + <!-- @attribute skewY The [1][0] element of the 3x3 matrix. --> + <xs:attribute name="skewY" type="Sk:Float"/> + <!-- @attribute translate A point specifying the translation in X and Y. --> + <xs:attribute name="translate" type="Sk:Point"/> + <!-- @attribute translateX The [2][0] element of the 3x3 matrix. --> + <xs:attribute name="translateX" type="Sk:Float"/> + <!-- @attribute translateY The [2][1] element of the 3x3 matrix. --> + <xs:attribute name="translateY" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** move + Move an element in the display list in front or behind other elements. + If where and offset are omitted, the element is moved to the end of the display list. + If where is specified, the element is moved before the first occurance of where in the display list. + If offset and where are specified, the element is moved before where plus offset. + A positive offset without where moves the element to the start of the list plus offset. + A negative offset without where moves the element to the end of the list minus offset. + */ --> + <xs:element name="move"> + <xs:complexType> + <!-- @attribute mode Has no effect. --> + <xs:attribute name="mode" type="Sk:AddMode"/> + <!-- @attribute offset The destination position using the rules listed above. --> + <xs:attribute name="offset" type="Sk:Int"/> + <!-- @attribute use The element to move. --> + <xs:attribute name="use" type="Sk:Drawable"/> + <!-- @attribute where The ID of the first display list entry to move to. --> + <xs:attribute name="where" type="Sk:Drawable"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** moveTo + MoveTo specifies the first point in a path contour. + */ --> + <xs:element name="moveTo"> + <xs:complexType> + <!-- @attribute x The point's x coordinate. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The point's y coordinate. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** movie + Movie describes a display list within the current canvas and paint. Movies can contain + movies. One movie cannot affect how another movie draws, but movies can communicate + with each other by posting events. + */ --> + <xs:element name="movie"> + <xs:complexType> + <!-- @attribute src The URI reference, local to the containing document, containing the movie's XML. --> + <xs:attribute name="src" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** oval + Oval describes a circle stretched to fit in a rectangle. + The width and height attribute compute the oval's right and bottom edges when the oval + description is first seen. Animating the oval's left or top will not recompute the right or bottom + if the width or height have been specified. + */ --> + <xs:element name="oval"> + <xs:complexType> + <!-- @attribute bottom The bottom edge of the oval. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute height The height of the oval. --> + <xs:attribute name="height" type="Sk:Float"/> + <!-- @attribute left The left edge of the oval. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute needsRedraw Set to true if last draw was visible. --> + <xs:attribute name="needsRedraw" type="Sk:Boolean"/> + <!-- @attribute right The right edge of the oval. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute top The top edge of the oval. --> + <xs:attribute name="top" type="Sk:Float"/> + <!-- @attribute width The width of the oval. --> + <xs:attribute name="width" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** paint + Paint uses color, flags, path effects, mask filters, shaders, and stroke effects when drawing + geometries, images, and text. + */ --> + <xs:element name="paint"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <!-- @element bitmapShader Sets or cancels an image to draw as the color. --> + <xs:element ref="Sk:bitmapShader"/> + <!-- @element blur Blur radially draws the shape with varying transparency. --> + <xs:element ref="Sk:blur"/> + <!-- @element color Color specifies a solid color in RGB or HSV. --> + <xs:element ref="Sk:color"/> + <!-- @element dash Dashes alternates stroking with dashes and gaps. --> + <xs:element ref="Sk:dash"/> + <!-- @element discrete Discrete wobbles the geometry randomly. --> + <xs:element ref="Sk:discrete"/> + <!-- @element emboss Emboss simulates a 3D light to show highlights and relief. --> + <xs:element ref="Sk:emboss"/> + <!-- @element linearGradient LinearGradient linearly ramps between two or more colors. --> + <xs:element ref="Sk:linearGradient"/> + <!-- @element maskFilter MaskFilter cancels a blur or emboss. --> + <xs:element ref="Sk:maskFilter"/> + <!-- @element pathEffect PathEffect cancels a discrete or dash. --> + <xs:element ref="Sk:pathEffect"/> + <!-- @element radialGradient RadialGradient radially ramps between two or more colors. --> + <xs:element ref="Sk:radialGradient"/> + <!-- @element shader Shader cancels a linear or radial gradient. --> + <xs:element ref="Sk:shader"/> + <!-- @element typeface Typeface chooses a font out of a font family. --> + <xs:element ref="Sk:typeface"/> + <!-- @element transparentShader TransparentShader ? [not sure what this is for] --> + <xs:element ref="Sk:transparentShader"/> + </xs:choice> + <!-- @attribute antiAlias AntiAlias uses gray shades to increase the definition of paths. --> + <xs:attribute name="antiAlias" type="Sk:Boolean"/> + <!-- @attribute ascent Ascent returns the height above the baseline defined by the font. --> + <xs:attribute name="ascent" type="Sk:Float"/> + <!-- @attribute color Color sets the paint to the color element with this ID. --> + <xs:attribute name="color" type="Sk:Color"/> + <!-- @attribute descent Descent returns the height below the baseline defined by thte font --> + <xs:attribute name="descent" type="Sk:Float"/> + <!-- @attribute fakeBold FakeBold enables a faked bold for text. --> + <xs:attribute name="fakeBold" type="Sk:Boolean"/> + <!-- @attribute filterType FilterType --> + <xs:attribute name="filterType" type="Sk:FilterType"/> + <!-- @attribute linearText LinearText uses the ideal path metrics at all sizes to describe text. --> + <xs:attribute name="linearText" type="Sk:Boolean"/> + <!-- @attribute maskFilter MaskFilter specifies a blur or emboss with this ID. --> + <xs:attribute name="maskFilter" type="Sk:MaskFilter"/> + <!-- @attribute measureText MeasureText(String) returns the width of the string in this paint. --> + <xs:attribute name="measureText" type="Sk:Float"/> + <!-- @attribute pathEffect PathEffect specifies a discrete or dash with this ID. --> + <xs:attribute name="pathEffect" type="Sk:PathEffect"/> + <!-- @attribute shader Shader specifies a gradient with this ID. --> + <xs:attribute name="shader" type="Sk:Shader"/> + <!-- @attribute strikeThru StrikeThru adds a line through the middle of drawn text. --> + <xs:attribute name="strikeThru" type="Sk:Boolean"/> + <!-- @attribute stroke Stroke draws the outline of geometry according to the pen attributes. + If style is also present, its setting overrides stroke. --> + <xs:attribute name="stroke" type="Sk:Boolean"/> + <!-- @attribute strokeCap StrokeCap is one of @pattern. --> + <xs:attribute name="strokeCap" type="Sk:Cap"/> + <!-- @attribute strokeJoin StrokeJoin is one of @pattern. --> + <xs:attribute name="strokeJoin" type="Sk:Join"/> + <!-- @attribute strokeMiter StrokeMiter limits the pen's joins on narrow angles. --> + <xs:attribute name="strokeMiter" type="Sk:Float"/> + <!-- @attribute strokeWidth StrokeWidth specifies the width of the pen. --> + <xs:attribute name="strokeWidth" type="Sk:Float"/> + <!-- @attribute style Style fills, strokes, or strokes and fills the geometry with the paint's color. --> + <xs:attribute name="style" type="Sk:Style"/> + <!-- @attribute textAlign TextAlign is one of @pattern. --> + <xs:attribute name="textAlign" type="Sk:Align"/> + <!-- @attribute textScaleX TextScaleX condenses or exapnds the text. --> + <xs:attribute name="textScaleX" type="Sk:Float"/> + <!-- @attribute textSize TextSize specifies the point size of the text. --> + <xs:attribute name="textSize" type="Sk:Float"/> + <!-- @attribute textSkewX TextSkewX draws the text obliquely. --> + <xs:attribute name="textSkewX" type="Sk:Float"/> + <!-- @attribute textTracking TextTracking specifies the space between letters. --> + <xs:attribute name="textTracking" type="Sk:Float"/> + <!-- @attribute typeface Typeface specifies a typeface element with this ID. --> + <xs:attribute name="typeface" type="Sk:Typeface"/> + <!-- @attribute underline Underline draws a line under the baseline of the text. --> + <xs:attribute name="underline" type="Sk:Boolean"/> + <!-- @attribute xfermode Xfermode specifies a transfer mode, one of @pattern. --> + <xs:attribute name="xfermode" type="Sk:Xfermode"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** path + Path creates a geometry out of lines and curves. + */ --> + <xs:element name="path"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <!-- @element addCircle Adds a circle to the path. --> + <xs:element ref="Sk:addCircle"/> + <!-- @element addOval Adds an oval to the path. --> + <xs:element ref="Sk:addOval"/> + <!-- @element addPath Adds another path to the path. --> + <xs:element ref="Sk:addPath"/> + <!-- @element addRoundRect Adds a rounded-corner rectangle to the path. --> + <xs:element ref="Sk:addRoundRect"/> + <!-- @element close Connects the last point on the path to the first. --> + <xs:element ref="Sk:close"/> + <!-- @element cubicTo Extends the path with a cubic curve. --> + <xs:element ref="Sk:cubicTo"/> + <!-- @element lineTo Extends the path with a line. --> + <xs:element ref="Sk:lineTo"/> + <!-- @element moveTo Starts a new path contour. --> + <xs:element ref="Sk:moveTo"/> + <!-- @element quadTo Extends the path with a quadratic curve. --> + <xs:element ref="Sk:quadTo"/> + <!-- @element rCubicTo Extends the path with a cubic curve expressed with relative offsets. --> + <xs:element ref="Sk:rCubicTo"/> + <!-- @element rLineTo Extends the path with a line expressed with relative offsets. --> + <xs:element ref="Sk:rLineTo"/> + <!-- @element rMoveTo Starts a new path contour relative to the path's last point. --> + <xs:element ref="Sk:rMoveTo"/> + <!-- @element rQuadTo Extends the path with a quadratic curve expressed with relative offsets. --> + <xs:element ref="Sk:rQuadTo"/> + </xs:choice> + <!-- @attribute d Creates a path using SVG path notation. --> + <xs:attribute name="d" type="Sk:String"/> + <!-- @attribute fillType One of @pattern. --> + <xs:attribute name="fillType" type="Sk:FillType"/> + <!-- @attribute length Returns the length of the path. --> + <xs:attribute name="length" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** pathEffect + PathEffect cancels any current path effect within the paint, such as dashing or discrete. + */ --> + <xs:element name="pathEffect"> + <xs:complexType> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** point + Point describes a two dimensional point in space. The point element can be added + to the display list and drawn. + */ --> + <xs:element name="point"> + <xs:complexType> + <!-- @attribute x The x coordinate of the point. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The y coordinate of the point. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** polygon + Polygon creates a geometry out of lines. Polygon is a specialization of path; element that + refers to a path can refer to a polygon also. A polygon specified through elements behaves identically + to a path. A polygon specified by the points attribute contains a single contour, and the contour is + automatically closed. + */ --> + <xs:element name="polygon"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <!-- @element close Connects the last point on the path to the first. --> + <xs:element ref="Sk:close"/> + <!-- @element addPath Adds another path to the path. --> + <xs:element ref="Sk:addPath"/> + <!-- @element lineTo Extends the path with a line. --> + <xs:element ref="Sk:lineTo"/> + <!-- @element moveTo Starts a new path contour. --> + <xs:element ref="Sk:moveTo"/> + <!-- @element rLineTo Extends the path with a line expressed with relative offsets. --> + <xs:element ref="Sk:rLineTo"/> + <!-- @element rMoveTo Starts a new path contour relative to the path's last point. --> + <xs:element ref="Sk:rMoveTo"/> + </xs:choice> + <!-- @attribute points An array of values that describe a sequence of points, compatible with SVG. --> + <xs:attribute name="points" type="Sk:FloatArray"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** polyline + Polyline creates a geometry out of lines. Polygon is a specialization of path; element that + refers to a path can refer to a polygon also. A polygon specified through elements behaves identically + to a path. A polygon specified by the points attribute contains a single contour, and the contour is + not automatically closed. + */ --> + <xs:element name="polyline"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <!-- @element close Connects the last point on the path to the first. --> + <xs:element ref="Sk:close"/> + <!-- @element addPath Adds another path to the path. --> + <xs:element ref="Sk:addPath"/> + <!-- @element lineTo Extends the path with a line. --> + <xs:element ref="Sk:lineTo"/> + <!-- @element moveTo Starts a new path contour. --> + <xs:element ref="Sk:moveTo"/> + <!-- @element rLineTo Extends the path with a line expressed with relative offsets. --> + <xs:element ref="Sk:rLineTo"/> + <!-- @element rMoveTo Starts a new path contour relative to the path's last point. --> + <xs:element ref="Sk:rMoveTo"/> + </xs:choice> + <!-- @attribute points An array of values that describe a sequence of points, compatible with SVG. --> + <xs:attribute name="points" type="Sk:FloatArray"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** polyToPoly + PolyToPoly creates a matrix which maps points proportionally from one polygon to the other. + */ --> + <xs:element name="polyToPoly"> + <xs:complexType> + <xs:choice maxOccurs="2"> + <xs:element ref="Sk:polygon"/> + </xs:choice> + <!-- @attribute source The polygon to map from.. --> + <xs:attribute name="source" type="Sk:polygon"/> + <!-- @attribute destination The polygon to map to.. --> + <xs:attribute name="destination" type="Sk:polygon"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** post + Post activates an event. The event can trigger one or more actions, and can carry a data payload. + */ --> + <xs:element name="post"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <xs:element ref="Sk:data"/> + </xs:choice> + <!-- @attribute delay Time in seconds that must elapse before the target event is activated. --> + <xs:attribute name="delay" type="Sk:MSec"/> + <!-- @attribute mode One of @pattern. @patternDescription --> + <xs:attribute name="mode" type="Sk:EventMode"/> + <!-- @attribute sink The optional named EventSink to direct the event to. --> + <xs:attribute name="sink" type="Sk:String"/> + <!-- @attribute target The ID of the user event to trigger. --> + <xs:attribute name="target" type="Sk:String"/> + <!-- @attribute type The name of the external event to post. --> + <xs:attribute name="type" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** quadTo + QuadTo adds a quadratic curve to a path. + */ --> + <xs:element name="quadTo"> + <xs:complexType> + <!-- @attribute x1 The x position of the off-curve point. --> + <xs:attribute name="x1" type="Sk:Float"/> + <!-- @attribute x2 The x position of the final point. --> + <xs:attribute name="x2" type="Sk:Float"/> + <!-- @attribute y1 The y position of the off-curve point. --> + <xs:attribute name="y1" type="Sk:Float"/> + <!-- @attribute y2 The y position of the final point. --> + <xs:attribute name="y2" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** rCubicTo + RCubicTo adds a cubic to the path, using the last point in the path as the first point of the cubic. THe + added points are offsets from the last point in the path. + */ --> + <xs:element name="rCubicTo"> + <xs:complexType> + <!-- @attribute x1 The x offset of the first off-curve point. --> + <xs:attribute name="x1" type="Sk:Float"/> + <!-- @attribute x2 The x offset of the second off-curve point. --> + <xs:attribute name="x2" type="Sk:Float"/> + <!-- @attribute x3 The x offset of the final on-curve point. --> + <xs:attribute name="x3" type="Sk:Float"/> + <!-- @attribute y1 The y offset of the first off-curve point. --> + <xs:attribute name="y1" type="Sk:Float"/> + <!-- @attribute y2 The y offset of the second off-curve point. --> + <xs:attribute name="y2" type="Sk:Float"/> + <!-- @attribute y3 The y offset of the final on-curve point. --> + <xs:attribute name="y3" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** rLineTo + RLineTo adds a line from the last point in a path to the specified point. The specified + point is relative to the last point in the path. + */ --> + <xs:element name="rLineTo"> + <xs:complexType> + <!-- @attribute x The final path x coordinate. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The final path y coordinate. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** rMoveTo + RMoveTo specifies the first point in a path contour. The specified + point is relative to the last point in the path. + */ --> + <xs:element name="rMoveTo"> + <xs:complexType> + <!-- @attribute x The point's x coordinate. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The point's y coordinate. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** rQuadTo + RQuadTo adds a quadratic curve to a path. The quadratic + points are relative to the last point in the path. + */ --> + <xs:element name="rQuadTo"> + <xs:complexType> + <!-- @attribute x1 The x position of the off-curve point. --> + <xs:attribute name="x1" type="Sk:Float"/> + <!-- @attribute x2 The x position of the final point. --> + <xs:attribute name="x2" type="Sk:Float"/> + <!-- @attribute y1 The y position of the off-curve point. --> + <xs:attribute name="y1" type="Sk:Float"/> + <!-- @attribute y2 The y position of the final point. --> + <xs:attribute name="y2" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** radialGradient + RadialGradient sets the paint shader to ramp between two or more colors in concentric circles. + */ --> + <xs:element name="radialGradient"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <xs:element ref="Sk:color"/> + <xs:element ref="Sk:matrix"/> + </xs:choice> + <!-- @attribute matrix Matrix applies a 3x3 transform to the gradient. --> + <xs:attribute name="matrix" type="Sk:Matrix"/> + <!-- @attribute tileMode One of @pattern. @patternDescription --> + <xs:attribute name="tileMode" type="Sk:TileMode"/> + <!-- @attribute center The center point of the radial gradient. --> + <xs:attribute name="center" type="Sk:Point"/> + <!-- @attribute offsets An optional array of values used to bias the colors. The first entry + in the array must be 0.0, the last must be 1.0, and intermediate values must ascend. --> + <xs:attribute name="offsets" type="Sk:FloatArray"/> + <!-- @attribute radius The distance from the first color to the last color. --> + <xs:attribute name="radius" type="Sk:Float"/> + <!-- @attribute unitMapper A script that returns the mapping for [0,1] for the gradient. + The script can use the predefined variable 'unit' to compute the mapping. For instance, + "unit*unit" squares the value (while still keeping it in the range of [0,1].) The computed number + is pinned to from 0 to 1 after the script is executed. --> + <xs:attribute name="unitMapper" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** random + Random generates a random number, from min to max. Each time the random attribute is + read, a new random number is generated. + */ --> + <xs:element name="random"> + <xs:complexType> + <!-- @attribute blend The random bias from 0.0 to 1.0. + 0.0 biias the number towards the start and end of the range. + 1.0 (the default) generates a linear distribution.--> + <xs:attribute name="blend" type="Sk:Float"/> + <!-- @attribute max The largest value to generate. --> + <xs:attribute name="max" type="Sk:Float"/> + <!-- @attribute min The smallest value to generate. --> + <xs:attribute name="min" type="Sk:Float"/> + <!-- @attribute random The generated value. --> + <xs:attribute name="random" type="Sk:Float"/> + <!-- @attribute seed The random seed. Identical seeds generate the same series of + numbers. --> + <xs:attribute name="seed" type="Sk:Int"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** rect + Rect describes a bounding box. + The width and height attribute compute the rectangle's right and bottom edges when the rectangle + description is first seen. Animating the rectangle's left or top will not recompute the right or bottom + if the width or height have been specified. + */ --> + <xs:element name="rect"> + <xs:complexType> + <!-- @attribute bottom The bottom edge of the rectangle. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute height The height of the rectangle. Setting height computes the + bottom attribute from the top attribute. --> + <xs:attribute name="height" type="Sk:Float"/> + <!-- @attribute left The left edge of the rectangle. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute needsRedraw Set to true if last draw was visible. --> + <xs:attribute name="needsRedraw" type="Sk:Boolean"/> + <!-- @attribute right The right edge of the rectangle. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute top The top edge of the rectangle. --> + <xs:attribute name="top" type="Sk:Float"/> + <!-- @attribute width The width of the rectangle. --> + <xs:attribute name="width" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** rectToRect + RectToRect adds a matrix to map one rectangle's coordinates to another. + */ --> + <xs:element name="rectToRect"> + <xs:complexType> + <xs:choice maxOccurs="2"> + <xs:element ref="Sk:rect"/> + </xs:choice> + <!-- @attribute source The rectangle to map from. --> + <xs:attribute name="source" type="Sk:rect"/> + <!-- @attribute destination The rectangle to map to. --> + <xs:attribute name="destination" type="Sk:rect"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** remove + Remove an item from the display list. + If where is specified, the first occurance of where in the display list is removed. + If offset and where are specified, the element at where plus offset is removed. + A positive offset without where removes the element at the start of the list plus offset. + A negative offset without where removes the element at the end of the list minus offset. + */ --> + <xs:element name="remove"> + <xs:complexType> + <!-- @attribute delete If true, reverse the action of apply's attribute mode="create". + (Experimental.) --> + <xs:attribute name="delete" type="Sk:Boolean"/> + <!-- @attribute offset The destination position using the rules listed above. --> + <xs:attribute name="offset" type="Sk:Int"/> + <!-- @attribute where The ID of the first display list entry to remove. --> + <xs:attribute name="where" type="Sk:Drawable"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** replace + Replace an item in the display list. + If where is specified, the first occurance of where in the display list is replaced by use. + If offset and where are specified, the element at where plus offset is replaced by use. + A positive offset without where replaces the element at the start of the list plus offset. + A negative offset without where replaces the element at the end of the list minus offset. + */ --> + <xs:element name="replace"> + <xs:complexType> + <!-- @attribute mode Has no effect. --> + <xs:attribute name="mode" type="Sk:AddMode"/> + <!-- @attribute offset The destination position using the rules listed above. --> + <xs:attribute name="offset" type="Sk:Int"/> + <!-- @attribute use The element to be added to the display list.. --> + <xs:attribute name="use" type="Sk:Drawable"/> + <!-- @attribute where The ID of the first display list entry to remove. --> + <xs:attribute name="where" type="Sk:Drawable"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** rotate + Rotate creates a matrix that rotates a unit vector about a center point, and concatenated + with the containing matrix. + */ --> + <xs:element name="rotate"> + <xs:complexType> + <!-- @attribute center A point the rotation is centered about; by default, [0.0, 0.0]. --> + <xs:attribute name="center" type="Sk:Point"/> + <!-- @attribute degrees The rotation in degrees. --> + <xs:attribute name="degrees" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** roundRect + RoundRect creates a rectangle with rounded corners. The rounded corners are specified by + two axes, which describe an quarter-section of the oval which is used in each corner. + The width and height attribute compute the rectangle's right and bottom edges when the rectangle + description is first seen. Animating the rectangle's left or top will not recompute the right or bottom + if the width or height have been specified. + */ --> + <xs:element name="roundRect"> + <xs:complexType> + <!-- @attribute bottom The bottom edge of the rectangle. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute height The height of the rectangle. Setting height computes the + bottom attribute from the top attribute. --> + <xs:attribute name="height" type="Sk:Float"/> + <!-- @attribute left The left edge of the rectangle. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute needsRedraw Set to true if last draw was visible. --> + <xs:attribute name="needsRedraw" type="Sk:Boolean"/> + <!-- @attribute right The right edge of the rectangle. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute top The top edge of the rectangle. --> + <xs:attribute name="top" type="Sk:Float"/> + <!-- @attribute rx The radius of the corners on the x axis. --> + <xs:attribute name="rx" type="Sk:Float"/> + <!-- @attribute ry The radius of the corners on the y axis. --> + <xs:attribute name="ry" type="Sk:Float"/> + <!-- @attribute width The width of the rectangle. Setting width computes the + right attribute from the left attribute. --> + <xs:attribute name="width" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** save + The save element collects a series of elements into a group. The state of the paint and + canvas are saved, so that edits to the paint and canvas within the group are restored + to their original value at the end of the group. + The save element can be referenced + or defined within elements, like apply, which operate on any kind of element. Groups + may contain groups. + */ --> + <xs:element name="save"> + <xs:complexType> + <xs:choice maxOccurs="unbounded"> + <xs:element ref="Sk:add"/> + <xs:element ref="Sk:apply"/> + <xs:element ref="Sk:array"/> + <xs:element ref="Sk:bitmap"/> + <xs:element ref="Sk:boolean"/> + <xs:element ref="Sk:bounds"/> + <!-- <xs:element ref="Sk3D:camera"/> --> + <xs:element ref="Sk:clear"/> + <xs:element ref="Sk:clip"/> + <xs:element ref="Sk:color"/> + <xs:element ref="Sk:drawTo"/> + <xs:element ref="Sk:float"/> + <xs:element ref="Sk:full"/> + <xs:element ref="Sk:group"/> + <xs:element ref="Sk:hitClear"/> + <xs:element ref="Sk:hitTest"/> + <xs:element ref="Sk:image"/> + <xs:element ref="Sk:int"/> + <xs:element ref="Sk:line"/> + <xs:element ref="Sk:matrix"/> + <xs:element ref="Sk:move"/> + <xs:element ref="Sk:oval"/> + <xs:element ref="Sk:paint"/> + <!-- <xs:element ref="Sk:patch"/> --> + <xs:element ref="Sk:path"/> + <xs:element ref="Sk:point"/> + <xs:element ref="Sk:polygon"/> + <xs:element ref="Sk:polyline"/> + <xs:element ref="Sk:post"/> + <xs:element ref="Sk:random"/> + <xs:element ref="Sk:rect"/> + <xs:element ref="Sk:remove"/> + <xs:element ref="Sk:replace"/> + <xs:element ref="Sk:roundRect"/> + <xs:element ref="Sk:save"/> + <xs:element ref="Sk:set"/> + <xs:element ref="Sk:snapshot"/> + <xs:element ref="Sk:string"/> + <xs:element ref="Sk:text"/> + <xs:element ref="Sk:textBox"/> + <xs:element ref="Sk:textOnPath"/> + <xs:element ref="Sk:textToPath"/> + </xs:choice> + <!-- @attribute condition If present and zero, the contained elements are ignored. --> + <xs:attribute name="condition" type="Sk:DynamicString"/> + <!-- @attribute enableCondition If present and zero, the contained elements are ignored + when enabled. --> + <xs:attribute name="enableCondition" type="Sk:DynamicString"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** scale + Scale creates a matrix that scales a unit vector about a center point, and concatenated + with the containing matrix. + */ --> + <xs:element name="scale"> + <xs:complexType> + <!-- @attribute center A point the scale is centered about; by default, [0.0, 0.0]. --> + <xs:attribute name="center" type="Sk:Point"/> + <!-- @attribute x The factor all x values are scaled by; by default, 1.0. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The factor all y values are scaled by; by default, 1.0. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** screenplay + Screenplay contains all events and elements referenced by the events. + A document may only contain a single screenplay element. + */ --> + <xs:element name="screenplay"> + <xs:complexType> + <xs:choice maxOccurs="unbounded" > + <xs:element ref="Sk:add"/> + <xs:element ref="Sk:apply"/> + <xs:element ref="Sk:array"/> + <xs:element ref="Sk:bitmap"/> + <xs:element ref="Sk:boolean"/> + <xs:element ref="Sk:bounds"/> + <!-- <xs:element ref="Sk3D:camera"/> --> + <xs:element ref="Sk:clear"/> + <xs:element ref="Sk:clip"/> + <xs:element ref="Sk:color"/> + <xs:element ref="Sk:drawTo"/> + <xs:element ref="Sk:event"/> + <xs:element ref="Sk:float"/> + <xs:element ref="Sk:full"/> + <xs:element ref="Sk:group"/> + <xs:element ref="Sk:hitClear"/> + <xs:element ref="Sk:hitTest"/> + <xs:element ref="Sk:image"/> + <xs:element ref="Sk:include"/> + <xs:element ref="Sk:int"/> + <xs:element ref="Sk:line"/> + <xs:element ref="Sk:matrix"/> + <xs:element ref="Sk:move"/> + <xs:element ref="Sk:movie"/> + <xs:element ref="Sk:oval"/> + <xs:element ref="Sk:paint"/> + <!-- <xs:element ref="Sk:patch"/> --> + <xs:element ref="Sk:path"/> + <xs:element ref="Sk:point"/> + <xs:element ref="Sk:polygon"/> + <xs:element ref="Sk:polyline"/> + <xs:element ref="Sk:post"/> + <xs:element ref="Sk:random"/> + <xs:element ref="Sk:rect"/> + <xs:element ref="Sk:remove"/> + <xs:element ref="Sk:replace"/> + <xs:element ref="Sk:roundRect"/> + <xs:element ref="Sk:save"/> + <xs:element ref="Sk:set"/> + <xs:element ref="Sk:snapshot"/> + <xs:element ref="Sk:string"/> + <xs:element ref="Sk:text"/> + <xs:element ref="Sk:textBox"/> + <xs:element ref="Sk:textOnPath"/> + <xs:element ref="Sk:textToPath"/> + </xs:choice> + <!-- @attribute time The time of the draw (readable from script; not part of the document XML) --> + <xs:attribute name="time" type="Sk:MSec"/> + </xs:complexType> + </xs:element> + + <!-- /** set + Set animates the target element's attribute directly to the specified value. + */ --> + <xs:element name="set"> + <xs:complexType> + <!-- @attribute begin An optional offset that must elapse before the animation begins. The apply + begin attribute is added to any animator's begin attribute. --> + <xs:attribute name="begin" type="Sk:MSec"/> + <!-- @attribute dur The duration of the animation in milliseconds. --> + <xs:attribute name="dur" type="Sk:MSec"/> + <!-- @attribute dynamic If true, restart the animation if any of the simple values the + 'lval' or 'to' attributes reference are changed. Simple values are contained by the array, boolean, float, int, + and string elements. --> + <!-- @attribute dynamic [Depreciated.] --> + <xs:attribute name="dynamic" type="Sk:Boolean" /> + <!-- @attribute field The attribute to animate. --> + <xs:attribute name="field" type="Sk:String"/> + <!-- @attribute formula A script to execute over time to compute the field's value. Typically, + the fomula is a script expression which includes a reference to the time attribute of the + containing apply element. --> + <xs:attribute name="formula" type="Sk:DynamicString"/> + <!-- @attribute lval An expression evaluating to the attribute to animate. + If present, lval overrides 'field'. The expression is typically an array element, + e.g. lval="x[y]" . --> + <xs:attribute name="lval" type="Sk:DynamicString"/> + <!-- @attribute reset If true, the computed value is the initial value after the + animation is complete. If false, or by default, the computed value is the final value + after the animation is complete. --> + <xs:attribute name="reset" type="Sk:Boolean"/> + <!-- @attribute step When apply's attribute mode="immediate" or "create", the step attribute can be read by + script to determine the current animation iteration. --> + <xs:attribute name="step" type="Sk:Int" /> + <!-- @attribute target The element to animate. By default, the element contained by the apply + or referenced by the apply's scope attribute is the animate target. --> + <xs:attribute name="target" type="Sk:DynamicString"/> + <!-- @attribute to The ending value (requires a 'from' attribute) --> + <xs:attribute name="to" type="Sk:DynamicString"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** skew + Skew creates a matrix that skews a unit vector about a center point, and concatenated + with the containing matrix. + */ --> + <xs:element name="skew"> + <xs:complexType> + <!-- @attribute center A point the skew is centered about; by default, [0.0, 0.0]. --> + <xs:attribute name="center" type="Sk:Point"/> + <!-- @attribute x The factor all x values are skewed by; by default, 0.0. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The factor all y values are skewed by; by default, 0.0. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** snapshot + Snapshot creates an image file containing the display list. + */ --> + <xs:element name="snapshot"> + <xs:complexType> + <!-- @attribute filename The name of the file to generate. --> + <xs:attribute name="filename" type="Sk:String"/> + <!-- @attribute quality The quality of the image, from 0 to 100. --> + <xs:attribute name="quality" type="Sk:Float"/> + <!-- @attribute sequence Set to true to number the filenames sequentially. --> + <xs:attribute name="sequence" type="Sk:Boolean"/> + <!-- @attribute type One of @pattern. The type of encoding to use. --> + <xs:attribute name="type" type="Sk:BitmapEncoding"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** string + String contains an array of characters. + */ --> + <xs:element name="string" > + <xs:complexType> + <!-- @attribute length The number of characters in the string (read only). --> + <xs:attribute name="length" type="Sk:Int"/> + <!-- @attribute slice An ECMAScript compatible function that returns part of the string. --> + <xs:attribute name="slice" type="Sk:String"/> + <!-- @attribute value The string itself. --> + <xs:attribute name="value" type="Sk:String"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** text + A drawable string with a position. + */ --> + <xs:element name="text"> + <xs:complexType> + <!-- @attribute length The number of characters in the string (read only). --> + <xs:attribute name="length" type="Sk:Int"/> + <!-- @attribute text The string itself. --> + <xs:attribute name="text" type="Sk:String"/> + <!-- @attribute x The x coordinate of the string. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The y coordinate of the string. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** textBox + A drawable string fit into a box. + */ --> + <xs:element name="textBox" > + <xs:complexType> + <!-- @attribute bottom The bottom of the box. --> + <xs:attribute name="bottom" type="Sk:Float"/> + <!-- @attribute height The height of the box, computed from top and bottom. --> + <xs:attribute name="height" type="Sk:Float"/> + <!-- @attribute left The left side of the box. --> + <xs:attribute name="left" type="Sk:Float"/> + <!-- @attribute mode One of @pattern. --> + <xs:attribute name="mode" type="Sk:TextBoxMode"/> + <!-- @attribute needsRedraw Set to true if last draw was visible. --> + <xs:attribute name="needsRedraw" type="Sk:Boolean"/> + <!-- @attribute right The right side of the box. --> + <xs:attribute name="right" type="Sk:Float"/> + <!-- @attribute spacingAdd The extra spacing between lines. --> + <xs:attribute name="spacingAdd" type="Sk:Float"/> + <!-- @attribute spacingAlign One of @pattern. --> + <xs:attribute name="spacingAlign" type="Sk:TextBoxAlign"/> + <!-- @attribute spacingMul The line spacing scaled by the text height. --> + <xs:attribute name="spacingMul" type="Sk:Float"/> + <!-- @attribute text The text to fit to the box. --> + <xs:attribute name="text" type="Sk:String"/> + <!-- @attribute top The top of the box. --> + <xs:attribute name="top" type="Sk:Float"/> + <!-- @attribute width The width of the box, computed from left and right. --> + <xs:attribute name="width" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** textOnPath + TextOnPath specifies the baseline for a string of text with a path. + */ --> + <xs:element name="textOnPath"> + <xs:complexType> + <xs:choice > + <xs:element ref="Sk:text" minOccurs="0" /> + <xs:element ref="Sk:path" minOccurs="0" /> + </xs:choice> + <!-- @attribute offset The distance along the path to place the first text character. --> + <xs:attribute name="offset" type="Sk:Float"/> + <!-- @attribute path The baseline of the text. --> + <xs:attribute name="path" type="Sk:Path"/> + <!-- @attribute text The text to place along the path. --> + <xs:attribute name="text" type="Sk:Text"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** textToPath + TextToPath sets the path to the contours described by the text's glyphs, using the current paint. + */ --> + <xs:element name="textToPath"> + <xs:complexType> + <xs:choice > + <xs:element ref="Sk:text" minOccurs="0" /> + <xs:element ref="Sk:paint" minOccurs="0" /> + <xs:element ref="Sk:path" minOccurs="0" /> + </xs:choice> + <!-- @attribute paint The paint selects the text font, size and other text properties. --> + <xs:attribute name="paint" type="Sk:Paint"/> + <!-- @attribute path The reference to the path element where the text as path is stored. --> + <xs:attribute name="path" type="Sk:Path"/> + <!-- @attribute text The reference to the text element to turn into a path. --> + <xs:attribute name="text" type="Sk:Text"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** translate + Translate concatenates a translation-only matrix onto the current matrix. + */ --> + <xs:element name="translate"> + <xs:complexType> + <!-- @attribute x The translation in x. --> + <xs:attribute name="x" type="Sk:Float"/> + <!-- @attribute y The translation in y. --> + <xs:attribute name="y" type="Sk:Float"/> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** transparentShader + TransparentShader uses the background for its paint. Works well with emboss. + */ --> + <xs:element name="transparentShader"> + <xs:complexType> + <xs:attribute name="id" type="xs:ID"/> + </xs:complexType> + </xs:element> + + <!-- /** typeface + Typeface describes the text font. + */ --> + <xs:element name="typeface"> + <xs:complexType> + <!-- @attribute fontName The name of the font. --> + <xs:attribute name="fontName" type="Sk:String"/> + </xs:complexType> + </xs:element> + +</xs:schema> + |