Vector Markup Language (VML)
来源:互联网 发布:linux服务器硬盘分区 编辑:程序博客网 时间:2024/05/12 13:14
VectorMarkup Language (VML)
World Wide Web Consortium Note13-May-1998
Submission to the World Wide Web Consortium
- This version:
- http://www.w3.org/TR/1998/NOTE-VML-19980513
- Latest version:
- http://www.w3.org/TR/NOTE-VML
- Authors:
- Brian Mathews, AutodeskInc.
- Daniel Lee, Hewlett-PackardCompany
- Brian Dister, Macromedia,Inc.
- John Bowler, MicrosoftCorporation
- Howard Cooperstein, MicrosoftCorporation
- Ajay Jindal, MicrosoftCorporation
- Tuan Nguyen, MicrosoftCorporation
- Peter Wu, MicrosoftCorporation
- TroySandal, Visio Corporation
Status of this document
This document is a submission to the WorldWide Web Consortium.
This document is a NOTE made available by the W3 Consortium fordiscussion only. This indicates no endorsement of its content, northat the Consortium has, is, or will be allocating any resources tothe issues addressed by the NOTE.
Abstract
This document defines the Vector MarkupLanguage (VML).
The introduction to this document is intended to be appropriatereading for someone who wishes to gain an overview ofVML.
Table Of Contents
- Introduction toVML
- A SimpleExample
- DesignRequirements
- Implementation
- The TechnicalSpecification of VML
- Introduction
- Use of CSS
- Local CoordinateSpace
- AttributeTypes
- DTD EntityDefinitions
- Top-LevelElements
- The
shape
Element - The
shapetype
Element - The
group
Element - The
background
Element - Advanced Propertiesof Shapes
- The
path
Element - The
formulas
Element - The
handles
Element - The
fill
Element - The
stroke
Element - The
shadow
Element - The
textbox
Element - The
textpath
Element - The
imagedata
Element - PredefinedShapes
- Common Properties ofAll Predefined Shapes
- The
line
Element - The
polyline
Element - The
curve
Element - The
roundrect
Element - The
oval
Element - The
arc
Element - The
image
Element
- NormativeReferences
- InformativeReferences
Introduction to VML
The Vector Markup Language (VML) supports the markup of vectorgraphic information in the same way that HTML supports the markupof textual information.
VML is written using the syntax of XMLjust as HTML is written using the syntax of SGML (the StandardGeneralized Markup Language, [ISO 8879]) - XML is arestricted form of SGML.
The primary difference between the HTML workflow and the VMLworkflow is in the last but one step - character layout versus pathtransformations.
The common workflow is an essential part of VML - two designrequirements were to integrate VML with existing HTML and to avoidrequiring a user agent to reinvent the wheel by using differentrepresentations or implementations of existing HTML or CSSfunctionality.
Like HTML, VML describes objects which will often be furtheredited.
A Simple Example
The simple diagram below contains both simple graphics andtext.
Although the bitmap compression used makes the image very small(it only requires about 8kbytes) the bitmap has none of theinformation necessary to make further changes to the diagram - forexample a user who needs to change "Product" to "Products" mustrecreate the bitmap from scratch.
.font5 {
color: black;
font-size: 18.0pt;
font-weight: 400;
font-style: normal;
text-decoration: none;
vertical-align: text-bottom;
font-family: "Times New Roman";
}
group
style='position: absolute;
margin-left: 10.2pt;
margin-top: 4.8pt;
width: 90pt;
height: 191.4pt;
z-index: 1'
coordsize="21600, 21600">
shapetype id="irregularSeal1" coordorigin="17, 8" coordsize="150, 319"
path="m10800,5800l8352,2295,7312,6320,370,2295,4627,7617,,8615,3722,11775,135,14587,
5667,13937,4762,17617,7715,15627,8485,21600,10532,14935,13247,19737,14020,
14457,18145,18095,16837,12942,21600,13290,17607,10475,21097,8137,16702,7315,
18380,4457,14155,5325,14522,0xe">
stroke joinstyle="miter"/>
path gradientshapeok="t" textboxrect="4627, 6320, 16702, 13937"/>
shapetype>
shape type="#irregularSeal1"
style='position: absolute;
left: 17; top: 8; width: 150; height: 120'
fillcolor="#f06">
fill type="gradient" color2="fill lighten(0)"
method="linear sigma" angle="-135" focus="100%"/>
textbox>
Idea
textbox>
shape>
shapetype id="downArrow" coordsize="21600, 21600"
adj="16200, 5400"
path="m0@0l@1@0@1,0@2,0@2@0,21600@0,10800,21600xe">
stroke joinstyle="miter"/>
formulas>
f eqn="sum #0 0 0"/>
f eqn="sum #1 0 0"/>
f eqn="sum height 0 #1"/>
f eqn="sum 10800 0 #1"/>
f eqn="sum width 0 #0"/>
f eqn="prod @4 @3 10800"/>
f eqn="sum width 0 @5"/>
formulas>
path textboxrect="@1, 0, @2, @6"/>
handles>
h position="#1, #0" xrange="0, 10800" yrange="0, 21600"/>
handles>
shapetype>
shape type="#downArrow"
style='position: absolute; left: 40; top: 143; width: 105; height: 105'
adj="11632, 4371"
fillcolor="#6f9">
fill type="gradientScale" color2="fill lighten(0)"
method="linear sigma" angle="-135" focus="100%"/>
shape>
shapetype id="flowChartTerminator" coordsize="21600, 21600"
v="m3475,0qx0,10800qy3475,21600l18125,21600qx21600,10800qy18125,0xe">
stroke joinstyle="miter"/>
path gradientshapeok="t" textboxrect="1018, 3163, 20582, 18437"/>
shapetype>
shape type="#flowChartTerminator"
style='position: absolute; left: 17; top: 263; width: 150; height: 64'
fillcolor="#39f">
fill type="gradient" color2="fill lighten(0)"
method="linear sigma" angle="-135" focus="100%"/>
textbox>
Product
textbox>
shape>
group>
This VML contains all the information required both to edit andto display the diagram.
Blue - XMLstructure.
Green - CSSinformation. shape
andgroup
element has a CSS style attribute which definesthe position and size of the shape within thepage.
Black - VML. shape
and shapetype
elements. shape
elements arerendered in the diagram, the shapetype
elements allowreuse of geometric information between shapes. shapetype
elements, but in morecomplex cases the same shape would be used multiple times (eachinstance referencing the same shapetype
element).
Brown - HTMLtext. shape
elements in the diagram.
Purple - the most basic VMLgeometric information describes closed or openpaths. shapetype
element to define multiplerelated paths. downArrow
shapetype above is defined parametricallyand the following four arrows all share the same basic shape.
The corresponding VML is:
shape type="#downArrow"
style='position: absolute; left: 77; top: 16; width: 64; height: 128'
/>
shape type="#downArrow"
style='position: absolute; left: 149; top: 16; width: 64; height: 128'
adj=", 9450"
/>
shape type="#downArrow"
style='position: absolute; left: 219; top: 16; width: 64; height: 128'
adj="14175, 2025"
/>
shape type="#downArrow"
style='position: absolute; left: 292; top: 16; width: 64; height: 128'
adj="7088, 7425"
/>
The combination of parameterization with a concise pathdescription allows VML diagrams to be relatively compact, despitethe large amount of editing information.
Design Requirements
Many requirements guided the design of VML.
- Retain the information required for further editing ofVML.
This requirement has the importantconsequence that VML must be extensible - it is inconceivable thatVML meets the requirements of all editing applications, thereforeit must be possible for every application to add the requiredediting data specific to that application. - Support interchange of data betweenapplications.
One application must be able toread and edit the data of another application, even though thefirst requirement means that, potentially, both applications willadd application specific data. - Use the existing mechanisms of HTML and CSS - this facilitatesimplementation of VML and ensures that implementations can reuseexisting code and techniques.
- Be backward compatible with existing useragents.
VML adoption will be inhibited unless itis possible to produce VML which works with existing web browsers. VML has special provisions to allow alternatebitmap representations of graphics for backward compatibility. - Provide efficient representations of vectorgraphics.
Textual representations tend to beverbose. VML addresses this by defining a compactrepresentation of path elements and by following a design principleof using concise names for frequently used attributes and moreverbose names for less frequently used attributes. - Allow the implementation of subsets where an application doesnot require the full functionality of VML.
Normally a viewer will implement the full specification, howevereditors should be able to implement only the subset required fortheir own data. - Support hand-editing.
This leads to a designprinciple that the structure of the graphic be obvious and that thesyntax be familiar to HTML programmers - effectively the same asrequirement (3). - VML should support scripting, including the requirements ofanimation.
This, again, leads to a desire for thestructure of VML to match the structure of the graphics. It also leads to the use of types within VMLattributes which are appropriate to animation - for example 2Dcoordinates are defined as single attributes "x, y" rather thanpairs of attributes.
Implementation
An implementation of VML will fall into one of twoclasses.
The implementation model follows thediagramat the start of this document.
- Each implementation requires an XML parser.
This performs lexical analysis of VML and identifies the individualelements. XML parsers are already widelyavailable. - Non-trivial implementations will need to parse the structure ofthe individual VML attributes.
To make this easy,VML defines basic types which have canonical internalrepresentations - no VML implementation is required to storegreater accuracy than that implied by the canonical representationand all VML data can be converted to the correspondingrepresentations. This means that the implementorneed only write a small number of string parsers to be able tohandle all VML data. Most of these parsers arealready present either as part of language libraries or as aconsequence of the need to parse CSS. - An implementation must handle that part of the CSS2 visualrendering model used by VML.
VML uses a smallsubset of CSS2 to define the block level boxes for each VMLelement. Implementing this gives a minimal VMLimplementation which can handle the layout of elements (using theirblock level boxes) without doing any rendering. - Viewing implementations and most editing implementations musthandle the path parameterization required by VML - a small set ofmathematically defined transformations allow the VML representationof a path to be reduced to a simple set of closed or open linesegments.
Extensions to VML may addtransformations, however VML allows such extensions to beaccompanied by equivalent definitions of the same information inunextended VML. - Finally the implementation must render the path level data inthe way specified by the VML renderingattributes.
Normally this operation maps easilyonto widely available operating system facilities.
Each of these five steps is testable in isolation andimplementable independently of the other steps.
The Technical Specification of VML
Introduction
The overall structure of VML may be summarized by the XMLdefinitions of the two primary elements - shape
andgroup
.
A shape
element is used to define a visible vectorgraphic element. stroke
sub-element. fill
sub-element.
Below is an example of a simple shape and its VMLrepresentation.
A group
element is used to group together severalshapes so that they may be transformed together as one unit.
In addition VML defines several auxiliary top-level elements tohelp make the editing and representation of complex graphicalinformation more compact and convenient.
The shapetype
element is used to define a prototypedefinition of a shape. shape
element may reference a shapetype
in order toinstantiate several copies of the same shape.
Several predefined shapes may be used as convenient alternativesto explicitly declaring a shape element with apath. line
, polyline
, curve
,rect
, roundrect
, oval
,arc
, and image
.
Use of CSS
The style attribute uses the syntaxdescribed in "Visualrendering model" in Cascading Style Sheets, Level2.
The VML shape
and group
elementsparticipate fully in the CSS2 visual renderingmodel.
rotation
The value specifies a rotation for the shape or group inclockwise degrees about its center (i.e. positive is clockwise,negative is counterclockwise - the normal definition in an invertedcoordinate space).
flip
The value specifies that the shape or group is flipped about itscenter about either the x or the y axis according to the followingtable.
ValueDescriptionxFlip the rotated shape about the y axis (invert xordinates)yFlip the rotated shape about the x axis (invert yordinates)Both x
and y
may be specified in theflip property.
center-x
,center-y
These properties may be used to specify the center of the blocklevel box of the element within its parent containerbox. left
and right
and convey the sameinformation. left
and center-x
. center-x
(or center-y
).
Local Coordinate Space
The shape
and group
elements arecontaining blocks for their content - they define a CSS2 "blocklevel box". coordsize
and coordorigin
attributes. left
, top
, width
,height
and so on) have no unit specifier - they aresimple numbers, not CSS length quantities.
The coordsize
attribute defines how many unitsthere are along the width of the containing block. Thecoordorigin
attribute defines the coordinate at thetop left corner of the containing block.
The containing block would be 300 pixels wide by 250 pixels high(assume that the parent element of this group was not anothergroup).
The rationale behind this is that the vectors defining a shapecan be specified in a local coordinate system.
It is important to note that the containing block doesnot establish a clipping region.
Attribute Types
Basic types of attributes are identified according to theirlexical form as follows.
Data typeDescriptionbooleanAn attribute which can take values true and false.stringCharacter data of any length.A complete set of data types is defined for VML along withcanonical representations which ensure that the minimum precisionwhich an authoring tool must store and the maximum which it canrely on are well defined.
DTD Entity Definitions
VML shape elements (shape
and group
and the predefined shapes) use the standard HTML core attributesplus some attributes which may appear on any element.
>
In addition shape elements and the special pre-defined elementshave standard attributes to control rendering.
>
Sub-elements are used within shape elements to define moresophisticated rendering operations.
>
At most one instance of each sub-element may occur in a shapeelement.
The entity %extensions;
acts as a placeholder forfuture extensions. v:ext
attribute.
>
When an authoring agent encounters such an element thev:ext
attribute tells it how to handle theextension.
v:ext
valueElement interpretationViewer behaviorEditor behavioredit
The element contains high level semantic information which wasused by the original content generator. backwardcompatible
The element contains information from the original contentgenerator which does not affect the appearance of the shape butwhich must be changed if the shape is changed.The element content can be ignored.The element content can be ignored unless the shape is edited,in which case the element must be removed.view
The element contains information which changes the appearanceof the shape from that implied by VML.The element cannot be displayed, the viewer must use thealternate IMG
representation.The element content can be ignored unless the shape isedited. These rules give an editor application the ability to edit anyVML document. v:ext="view"
extensions - the VML definition ensures that the editor knows theCSS layout properties of the shape.
Top-Level Elements
The shape
Element
This is the top-level element used to describe a shape. Thiselement may appear by itself or within a element. If a isreferenced using the type= attribute
, any attributesspecified in the shape will override those found in theshapetype
.
>
The path definition is described in more detailbelow.
Attribute Descriptions.
Name SpaceAttributeTypeDefault ValueDescriptionVMLidstringnullA unique ID that identifies the shape. Used by script toreference the shape in a collection.VMLtypestringnullA reference to a shapetypeid
that describes thestandard path, fill and stroke properties of ashape. hidden
the shape is not rendered and does notgenerate mouse events.CSStop, margin-top, center-y, etcnumber0The position of the top of the containing block of theshape. absolute
.VMLopacitynumber1.0The opacity of the entire shape. A fraction between 0(completely transparent) and 1 (completely opaque.)VMLchromakeycolornullA color value that will be transparent and show anything behindthe shape.VMLstrokebooleantrueIf true, the path defining the shape will be stroked. Bydefault, it will be stroked using a solid line unless there is astroke
sub-element which may specify more complexstroke properties. The stroke sub-element has an on
attribute which will override this if specified.VMLstrokecolorcolor"black"The primary color of the brush to use to stroke the path ofthis shape. The stroke sub-element has a "color" attribute whichwill override this if specified.VMLstrokeweightnumber"0.75pt"The width of the brush to use to stroke the path. The strokesub-element has a "weight" attribute which will override this ifspecified.VMLfillbooleantrueIf "true", the path defining the shape will be filled. Bydefault, it will be filled using a solid color unless there is asub-element that specifies more complex fill properties. If"false", the fill is transparent. The fill sub-element has an "on"attribute which will override this if specified.VMLfillcolorcolor"white"The primary color of the brush to use to fill the path of thisshape. The fill sub-element has a "color" attribute which willoverride this if specified.VMLvstringnullA string containing the commands that define the path - see thedescription of the path
element for moreinformation. @
numberwhere number is the formula’s ordinal number, e.g.,"@
2". formula
element.VMLprintbooleantrueIf "true", this shape should be printed.VMLcoordsizeVector2D"1000 1000"The width and height of the coordinate space inside thecontaining block of this shape. If it is not specified, it is thesame as the width and height of the rectangle.VMLcoordoriginVector2D"0 0"The coordinates at the top-left corner of the containingblock.VMLwrapcoordsstringnullIn the form "x1,y1,x2,y2,x3,y3…" (same as coords in anAREA
). Describes in drawing units around a shape. Usedfor the tight wrapping of text around an object.XML template
Throughout this document XML templates are used tosummarize the full set of attributes which may appear on eachelement. shape
,group
and most of the predefined shapes have CSS2positioning information which locates the shape within itscontainer. absolute
positioning plus margin-left
andmargin-top
properties:
style='position: absolute; margin-left: 10pt; margin-top:10pt; width: 100pt; z-index: 1.5'
A shape within a group can useleft
/top
orcenter-x
/center-y
as appropriate:
style='left: 100; top: 100; width: 1000; height:1000'
style='center-x: 550; center-y: 550; width: 1000; height:1000; rotation: 55deg'
The rotation
, z-index
andflip
properties may also be given when required.
/>
The shapetype
Element
Description
This is the element used to describe a shape so that it may bereferenced at a later point in the document by a shape
element. shape
element except that it cannot reference anothershapetype
element and that the visibility
property is always hidden
. shapetype
elements visible to allow them to be edited - in this case the CSSpositioning properties become relevant.)
When a shape
element makes reference to ashapetype
, the shape
may duplicate someof the attributes that have already been specified in theshapetype
. shape
override those of theshapetype.
>
Attribute Descriptions
See .
XML Template
/>
The group
Element
This top-level element is used to group shapes (including othergroups) so that they can be positioned and transformed as a singleunit.
>
Attribute Descriptions
See for the descriptions of the following attributes:id
, class
, style
(top
, left
, width
,height
, rotation
, z-index
,position
, visibility
),title
, href
, target
,alt
, coordsize
,coordorigin
.
XML template
/>
The background
Element
Description
This element describes the fill of the background of a pageusing vector graphics fills.
>
Attribute Descriptions
See for the descriptions of id
, fill
and fillcolor
.
XML template
/>
Advanced Properties of Shapes
The following sub-elements may be used to describe more advancedproperties of shapes. For example, the shape element only allowsthe description of a solid color fill. One would use thefill
sub-element to describe a gradient fill.
The path
Element
This sub-element may appear inside a shape
or ashapetype
to define the path that makes up the shape.This is done through a string that contains a rich set of penmovement commands. formulas
element (described below) allow greaterdesigner control of how the path scales.
>
Properties
Name SpaceAttributeTypeDefault ValueDescriptionVMLidstringnullA unique ID that identifies the shape. Used by script toreference the shape in a collection.VMLvstringnullA string containing the commands that define the path. (Seebelow for definition of the command set).VMLlimovector2D"0,0"A point along the x and y dimensions of a shape where the shapewill limo stretch.VMLfillokbooleantrueIf set the path may be filled, if unset any fill specificationon the path should be ignoredVMLstrokeokbooleantrueIf set the path may be stroked, if unset any strokespecification on the path should be ignoredVMLshadowokbooleantrueIf set a shadow path may be created from the path, if unset anyshadow specification should be ignored.VMLarrowokbooleanfalseIf set arrowheads may be added to the ends of the path, ifunset any arrowheads specified in thestroke
elementshould be ignored.VMLgradientshapeokbooleanfalseIf set a gradient fill can be produced by repeated drawing ofscaled versions of the path - this must only be set if it ispossible to scale the path in such a way that a fill is alwayscontained in the original path. fill
elementtype="gradientradial"
attribute setting.VMLtextpathokbooleanfalseIf set this indicates that the path is an appropriate warpingpath for the textpath
element. textpath
element must beignored. textpath
element.VMLtextboxrectstringnullA string of the form "L1,T1,R1,B1; L2,T2,R2,B2;…" If the stringis null, then the textbox is set equal to the geometry box. Inpractice 1, 2, 3 or 6 text rectangles may be specified. Detail onhow more than one rect is used, is specified elsewhere. The left,top, right, or bottom values can be a reference to a formula in theform @number
wherenumber
is the formula’s ordinalnumber. The v
attribute string (or the path
property of shape
) is made up of a rich set ofcommands as summarized in the following table:
m
moveto
2Start a new sub-path at the given (x,y) coordinatel
lineto
2*Draw a line from the current point to the given (x,y)coordinate which becomes the new current point. A number ofcoordinate pairs may be specified to form a polyline.c
curveto
6*Draw a cubic bézier curve from the current point to thecoordinate given by the final two parameters, the control pointsgiven by the first four parameters. The current point becomes theend point of the bézier.x
close
0Close the current sub-path by drawing a straight line from thecurrent point to the original moveto point.e
end
0End the current set of sub-paths. A given set of sub-paths (asdelimited by end) is filled using eofill. Subsequent sets ofsub-paths are filled independently and superimposed on existingones.t
rmoveto
2*Start a new sub-path at the coordinate (cpx+x, cpy+y).r
rlineto
2*Draw a line from the current point to the given relativecoordinate (cpx+x, cpy+y).v
rcurveto
6*Cubic bézier curve using the given coordinate relative to thecurrent point.nf
nofill
0The current set of sub-paths (delimited by end -e
) will not be filled.ns
nostroke
0The current set of sub-paths (delimited by end -e
) will not be filled.ae
angleellipseto
6*center (x,y) size(w,h) start-angle, end-angle. Draw a segmentof an ellipse as describes using these parameters. A straight lineis drawn from the current point to the start point of thesegment.al
angleellipse
6*Same as angleellipseto except that there is an implied movetothe starting point of the segment.at
arcto
8*left, top, right, bottom start(x,y) end(x,y). The first fourvalues define the bounding box of an ellipse. The last four definetwo radial vectors. A segment of the ellipse is drawn which startsat the angle defined by the start radius vector and ends at theangle defined by the end vector. A straight line is drawn from thecurrent point to the start of the arc. The arc is always drawn in acounterclockwise direction.ar
arc
8*left, top, right, bottom start(x,y) end(x,y). Same as arctohowever a new sub-path is started by an implied moveto the startpoint of the arc.wa
clockwisearcto
8*left, top, right, bottom start(x,y) end(x,y). Same as arcto butthe arc is drawn in a clockwise direction.wr
clockwisearc
8*left, top, right, bottom start(x,y) end(x,y). Same as arc butthe arc is drawn in a clockwise directionqx
ellipticalqaudrantx
2*end(x,y).A quarter ellipse is drawn from the current point to the givenend point. The elliptical segment is initially tangential to a lineparallel to the x-axis. (i.e. the segment starts outhorizontal)
qy
ellipticalquadranty
2*end(x,y).Same as ellipticalquadrantx except that the elliptical segmentis initially tangential to a line parallel to the y-axis. (i.e. thesegment starts out vertical)
qb
quadraticbezier
2+2*(controlpoint(x,y))*, end(x,y)Defines one or more quadratic bézier curves by means of controlpoints and an end point.
Edit behavior extensions
VML does not mandate a user interface for editing applications.It attempts to convey information about the object which is beingedited - this may imply the behavior of aneditor. v
objectsso that applications behave consistently however the informationencoded is very low level.
The extensions define the behavior of all following points underediting operations which move the points or the associated linesegments. Nine different behaviors are identified for the verticesin the path attribute (the end points, not the control points)depending on whether the associated line segment is a line orcurve.
commandNameparametersDescriptionvertex behaviorline segmentha
AutoLine
0autolinehb
AutoCurve
0autocurvehc
CornerLine
0cornerlinehd
CornerCurve
0cornercurvehe
SmoothLine
0smoothlinehf
SmoothCurve
0smoothcurvehg
SymmetricLine
0symmetriclinehh
SymmetricCurve
0symmetriccurvehi
Freeform
0autoanyThe line segment type defines whether the behavior applies topoints which are adjacent to lines or whether it applies to pointsadjacent to curves. The vertex behavior specifies how the two linesegments either side of a point are expected to behave as the pointis moved.
Vertex behaviorAre (curve) control points calculatedautomatically?Are control points either side of the vertexequidistant?Are control points co-linear with the vertex?Are control points visible to the user?Autoyes--noSymmetricnoyesyesyesSmoothnonoyesyesCornernononoyesFreeformnononoyesThe auto behavior implements some application-definedalgorithm to guess the correct control points when a point ismoved. This is, effectively, the default - it implies that theapplication should use other information to determine the controlpoint behavior. The symmetric, smooth and corner behaviorsdetermine how one control point behaves when the other at thatvertex is moved. The freeform behavior does not recalculate controlpoint position as vertices are moved.
Lexical format of the v
attribute value
This value consists of commandsfollowed by zero or more parameters.
- Either commas or spaces may be used to delimit parameters foreach command.
E.g. " m 0,0
" and"m0 0
" are both acceptable. - Parameters that are zero may be omitted using commas with noparameter.
E.g. " c 10,10,0,0,25,13
"and "c 10,10,,,25,13
" are equivalent. - Parameterized paths are also allowed. In this case, the shapemust also have a
formula
element with a list offormulas that may be substituted into the path using the@
symbol followed by the number of the formula. Theadj
property of the shape contains the inputparameters for these formulas.E.g. " moveto@1@4
".The evaluations of the formulasare substituted into the appropriate positions. Note that @
also serves as a delimiter.
In the event that a path is malformed VML requires the followingbehavior if the page is displayed.
- Missing parameter values must be supplied as 0.
- Unrecognized commands must be skipped - they should be treatedas though they are space characters.
An application is also permitted to fail to display the page(with a diagnostic) or to alert the user that some content ismalformed.
XML template
/>
The formulas
Element
This sub-element may appear inside a shape
or ashapetype
to define formulas that can vary the path ofa shape, its inscribed text rectangles, and connectionsites. adj
values change on the shape. formulas
element.
Attribute Descriptions for
none
The f
element offormulas
Each f
element defines a single value as the resultof the evaluation of an expression. The expression is defined bythe cdata
content of the eqn
attributeand has the general form of an operation followed by up to threearguments, which may be adjust handle values, the results ofearlier guide formulas, fixed numbers or pre-defined values.
>
Attribute Descriptions
Name SpaceAttributeTypeDefault ValueDescriptionVMLeqnstringnullA single formula, evaluated as described below.
In the following table, the arguments are given thenames v
,P1
, P2
(in that order), thus the element is simply:
operationpara-
metersexact?resultdescription
val
1
yesv
Defines a guide
value from some other value.sum
3
yesv + P1 P2
Used for addition and subtraction.product
3
roundsv × P1 / P2
Used for multiplication and division.mid
2
rounds to zero(v + P1) / 2
Average.abs
1
yesabs(v)
Absolute value.min
2
yesmin(v, P1)
The lesser of v
andP1
.max
2
yesmax(v, P1)
The greater of v
andP1
.if
3
yesv > 0 ? P1 : P2
Condition testing.mod
3
noModulus (etc.)atan2
2
noatan2(P1, v)
Polar arithmetic – result is indegrees·216. (fd
units.)sin
2
nov × sin(P1)
Sine, argument is indegrees·216. (fd
units.)cos
2
nov × cos(P1)
Cosine, argument is indegrees·216. (fd
units.)cosatan2
3
nov × cos(atan2(P2, P1)
Preserves full accuracy in intermediate calculation.sinatan2
3
nov × sin(atan2(P2, P1)
sqrt
1
nosqrt(v)
Result is positive, rounds down.sumangle
3
yesv + P1×216 -P2×216
v
is an existing angle (scaled by216),P1
andP2
are numbers of degrees.ellipse
3
no tan
2
nov × tan(P1)
Tangent, argument is indegrees·216. (fd
units.)The formulas are evaluated to full precision - however theresult is always a 32-bit integer.
When an operation is marked as exact then a conformingimplementation must always generate the correct arithmetic answer(unless the calculations overflow internally). product
operation is required to round to thenearest integer.
The mid
operation is required to round towards0.
All other operations are inexact, however the implementationmust round non-integral values down (towards -infinity) and shouldperform internal calculations with this form of rounding.
The arguments used in the evaluation of a formula are normallyeither fixed numbers, the result of the evaluation of a previousguide formula or an adjust value - the value of thecorresponding entry in the shape adj
attribute.
@n
The value of guide formula n. #n
Adjust (adj
) value n. width
The width defined by the coordsize
attribute.height
The height defined by the coordsize
attribute.xcenter
The x ordinate of the center of coordorigin
,coordsize
(x+w/2
).ycenter
The y ordinate of the center of coordorigin
,coordsize
(y+h/2
).xlimo
The x value of the limo
attribute.ylimo
The y value of the limo
attribute.hasstroke
1 if the shape has a stroke operation, 0 if it doesnot. on
attribute of thestroke
element, expressed as a number.)hasfill
1 if the shape has a fill operation, 0 if it doesnot. on
attribute of thefill
element, expressed as a number.)pixellinewidth
The line width in output device pixels. This is used to outsetlines from the edge of a rectangle on the assumption that theimplementation draws to lower right pixel in preference to theupper left pixel when a line is on a pixel boundary.pixelwidth
The width of the shape in device pixels (i.e. thecoordsize
width transformed into device space.)pixelheight
The height of the coordsize
in device pixels.emuwidth
The width of the coordsize
in EMUs.emuheight
The height of the coordsize
in EMUs.emuwidth2
Half the width of the coordsize
in EMUs.emuheight2
Half the height of the coordsize
in EMUs.Notice that a pixel
value should be in a squarecoordinate space - so it may be necessary to (effectively) report ahigher device resolution than that which is available if the devicehas non-square pixels.
VML limits the total number of adjust values, guide formulas andadjust handles.
- Up to 8 adjust values.
- Up to 128 guide formulas.
- Up to 4 adjust handles.
XML template
The handles
Element
This sub-element may appear inside a shape
or ashapetype
to define user interface elements which canvary the adj
values on the shape
, therebychanging the value of formulas
and the rendering of apath based on formulas
and adj
values.
Attribute Descriptions for
none.
The h
sub-element ofhandles
Each handle is specified using a single h
sub-element.
Positions are stored within the shape
coordinatespace - this means that handle positions are independent of theactual size of the shape.
>
Attribute Descriptions for
Name SpaceAttributeTypeDefault ValueDescriptionVMLpositionVector2D0, 0The x and y position of the adjust handle.@2
), center
, topleft
,bottomright
, or an adjust value (e.g.#3
). If a constant, formula value,center
, topleft
, orbottomright
is specified, the handle position is fixedin that dimension. If an adjust value (e.g. #3
) isspecified, the handle is free to move that dimension and the adjustvalue is determined by the position of the handle.If the polar
attribute is specified, than theposition
attribute represents the radius and anglevalues of the handle instead of x and y.
coordsize
range into the given range.VMLinvxbooleanfalseThe x position of the adjust handle is inverted by setting itto coordoriginx + coordsizex -x
.VMLinvybooleanfalseThe y position of the adjust handle is inverted by setting itto coordoriginy + coordsizey -y
.VMLswitchbooleanfalseThe adjust handle is switched between the x and y directiondepending on the aspect ratio of the shape. @2
). @2
). @2
). XML template
The fill
Element
This sub-element may appear inside a shape
,shapetype
, background
or most predefinedshape elements to describe how the path should be filled ifsomething beyond a solid color fill is desired. fill
element can used todescribe a powerful set of image or gradient based fill patterns. fill
.
>
Properties
Name SpaceAttributeTypeDefault ValueDescriptionVMLidstringnullA unique ID that identifies the shape. Used by script toreference the shape in a collection.VMLtypestring"solid"May be "solid | gradient | gradientradial | tile | pattern |frame" "Tile", "pattern" and "frame" require the imageattributes to be supplied. "Gradient", "gradientradial" and"gradienttitle" requires the gradient attributes to besupplied. Types beyond these are specified usingsub-elements..VMLonbooleantrueTurns fill display on. Same asfill
attribute inshape
. fillcolor
attributein shape
. This overrides the shape
fillcolor
attribute.VMLopacitynumber1.0Opacity of the fill.VMLcolor2color"white"The secondary color for fill when imageType="pattern" or forgradient fills.Attributes related to imagefills.VMLsrcstringnullURL to an image to load for image and pattern fills.VMLsizeVector2D"auto"The size of the image. Default is pixel size of the image. Maybe specified in CSS absolute units or as a fraction of the pathbounding box.VMLoriginVector2D"auto"Point relative to upper left corner of the image that istreated as the origin of the image, specified as a fraction of theimage size. fillcolor
attribute in shape
) is 0% and secondary color(color2
attribute) is 100%.VMLanglenumber"0"The angle along which the gradient goesVMLfocusnumber"0"Focus point for linear gradient fill. Values go from –100 to+100.VMLfocussizeVector2D0,0Size of the inner most rectangle for radial gradientsVMLfocuspositionVector2D0,0Position of the inner most rectangle for radial gradientsVMLmethodstring"sigma""none", "linear", "sigma" or "any"XML template
/>
The stroke
Element
The sub-element may appear inside a shape
,shapetype
or any predefined shape element to describehow to draw the path if something beyond a solid line with a solidcolor is desired. stroke
element can used to describe a powerful set ofstroke properties. stroke
element.
>
Properties
Name SpaceAttributeTypeDefault ValueDescriptionVMLidstringnullA unique ID that identifies the shape. Used by script toreference the shape in a collection.VMLonbooleantrueTurns the display of the line on and off. Same as strokeattribute in . This overrides the stroke attribute..VMLweightnumber1ptWidth of line. Same as strokeweight attribute in . Thisoverrides the strokeweight attribute.VMLcolorbooleanblackThe color of the line. Same as strokecolor attribute in . Thisoverrides the strokecolor attribute.VMLopacitynumber1.0Opacity of the stroke.VMLstylestring"single""single", "thinthin" (1:1:1), "thinthick", (1:1:2) "thickthin"(2:1:1), "thickbetweenthin" (1:1:2:1:1)VMLmiterlimitnumber8.0The maximum distance between the inner point and outer point ofa joint. This number is a multiple of the thickness of theline.VMLjoinstylestring"round""round" – rounded join, "bevel" – beveled join, "miter" – miterjoinVMLendcapstring"round""flat", "square", "round"VMLdashstylestring"solid""solid|dot|dash|dashdot|longdash|longdashdot|longdashdotdot".May also be a sequence of numbers with a user-defined dashpattern..VMLfilltypestring"solid""solid", "tile", "pattern", "frame".VMLsrcstringnullURL to an image to load for image and pattern fills.VMLimagesizeVector2D"auto"Size of the image to form the brush with. Default is the sizeof the image.VMLimagealignshapebooleantrueIf "true", align the image with the shape else align the imagewith the window.VMLcolor2colornullSecondary color – used when filltype="pattern"VMLstartarrowstring"none"Arrowhead for the start of the line. Can have values "none |block | classic | diamond | oval | open | chevron |doublechevron"VMLstartarrowwidthstring"medium"Arrowhead width for the start of the line. Can have values "narrow | medium | wide".VMLstartarrowlengthstring"medium"Arrowhead length for the start of the line. Can have values"short | medium | long".VMLendarrowstring"none"Arrowhead for the end of the line. Can have values "none |block | classic | diamond | oval | open | chevron |doublechevron"VMLendarrowwidthstring"medium"Arrowhead width for the end of the line. Can have values "narrow | medium | wide".VMLendarrowlengthstring"medium"Arrowhead length for the end of the line. Can have values"short | medium | long".The dashstyle
attribute allows the user to specifya custom defined dash pattern. endcap
styleis applied to each dash, the arrow style is not. flat
a viewer should choose a built-in operatingsystem dash where possible (i.e. something which is fast todraw).
XML template
/>
The shadow
Element
This sub-element may appear inside a shape
or ashapetype
to define a shadow effect on a shape.
>
Properties
Name SpaceAttributeTypeDefault ValueDescriptionVMLidstringnullA unique ID that identifies the shadow on a shape. Used byscript to reference the shape in a collection.VMLonbooleantrueTurns the display of the shadow on and off.VMLtypestringsingleCan have the values: "single | double | emboss |perspective"VMLobscuredbooleanfalseSee through the shadow if there is no fill on the shape.VMLcolorbooleangrayRGB(128,128,128)
The color of the primary shadow.VMLopacitynumber1.0Opacity of the shadow effect.VMLoffsetvector2D2pt,2ptAmount of x,y offset from the shape’s location. Values areeither an absolute measurement, or a fractional value of shape –0.5to +0.5.VMLcolor2booleangray RGB(203,203,203)The color of the second shadow, or highlight in an embossed orengraved shadow..VMLoffset2vector2D0pt,0ptAmount of x,y of second offset from the shape’s location.Values are either an absolute measurement, or a fractional value ofshape –0.5 to +0.5.VMLoriginvector2D0,0A pair of fractional values of shape –0.5 to +0.5.VMLmatrixstringnullA perspective transform matrix in the form,"sxx,sxy,syx,syy,px,py" [s=scale, p=perspective] If offset is inabsolute units then px,py are in units emu-1, otherwisethey are an inverse fraction of shape size.XML template
The textbox
Element
This sub-element may appear inside a shape
or ashapetype
to define text that is to appear inside theshape. This text may contain rich formatting and will be renderedto fit inside the textboxrect
defined by thepath
element.
>
Properties
Name SpaceAttributeTypedefault valueDescriptionVMLidstringnullA unique ID that identifies the shape. Used by script toreference the shape in a collection.CSSpadding-leftnumber0.1inInternal text margin value.CSSpadding-topnumber0.05inInternal text margin value.CSSpadding-rightnumber0.1inInternal text margin value.CSSpadding-bottomnumber0.05inInternal text margin value.CSSv-text-anchorstringtopCan have values "top | middle | bottom| top-center |middle-center | bottom-center | top-baseline | bottom-baseline |top-center-baseline | bottom-center-baseline." This sets thevertical alignment of the text inside the textbox. It should not beconfused with the vertical-align CSS property which has to do withFE font alignment.CSSv-text-wrappingbooleantrueWord wrap on/off. Not all renderers support the option tochange this.CSSlayout-flowstringhorizontalCan have the values "horizontal | vertical |vertical-ideographic | horizontal-ideographic"XML template
/>
The textpath
Element
This sub-element may appear inside a shape
or ashapetype
to define a vector path based on the textdata, font and font styles supplied. v
attribute of the shape.
>
Attribute Descriptions
Name SpaceAttributeTypeDefault ValueDescriptionVMLonbooleanfalseDetermines whether the character paths are displayed ornot.CSSfontstringnullCompound CSS prop of family, weight, size, variant.CSSfont-familystringn/aCSS1 font family name.CSSfont-weightstringnormalIn CSS this property can have the values, "normal | bold |bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 |900"CSSfont-sizestringnullCSS font size value (as CSS1).CSSfont-stylestringnormalCan have the values "normal | italic | oblique"CSSfont-variantstringnormalCan have the values "normal | small-caps"CSStext-decorationstringnoneCan have the values "none | [ underline || overline ||line-through || blink "CSSv-text-spacingnumber100Amount of tightening or tracking.CSSv-text-spacing-modestring"tracking"Can have values "tightening | tracking".CSStext-alignstringcenterCan have the values "left| right |center | justify.CSSv-text-align-altstring"letterjustify"Can have values "letter-jusify | stretch-justify".CSSv-text-kernbooleanfalseTurns character pair kerning on and off.CSSv-rotate-lettersbooleanfalseRotates letters 90 degrees.CSSv-text-reversebooleanfalseReverses the layout order of rows. Used for vertical textlayout.CSSv-same-letter-heightsbooleanfalseStretches lowercase letters to the height of uppercaseletters.VMLfitshapebooleanfalseStretches the text path out to the edges of the shapebox.VMLfitpathbooleanfalseSizes the text to fill the path it lays out on.VMLtrimbooleanfalseRemoves any additional space reserved for ascenders anddescenders if not used.VMLxscalebooleanfalseUse straight x measurement instead of measuring along thepath.VMLstringstringnullThe string to render as a text path.XML template
/>
The imagedata
Element
This sub-element may appear inside a shape
or ashapetype
to define a picture to be rendered on top ofa shape. There is also a top-level element, image
,which has these attributes, along with most of the same attributesas shape
.
>
Properties
Name SpaceAttributeTypeDefault ValueDescriptionVMLidstringnullA unique ID that identifies the element. Used by script toreference the image.VMLsrcstringnullURL to an image to load for image and pattern fills.VMLcropleftnumber0Crop distance from edge of picture expressed as a fraction ofpicture size.VMLcroptopnumber0Crop distance from edge of picture expressed as a fraction ofpicture size.VMLcroprightnumber0Crop distance from edge of picture expressed as a fraction ofpicture size.VMLcropbottomnumber0Crop distance from edge of picture expressed as a fraction ofpicture size.VMLgainnumber1Adjusts the intensity of all colors. Essentially sets howbright white will be.VMLblacklevelnumber0Allows adjustment to set the level so that blacks appear astrue blacks, and all other colors are visible as shades aboveblack.VMLgammanumber1Gamma correction - a factor by which the intended targetdisplay gamma differs from from the sRGB profile, can be used tocorrect for images not prepared for sRGB displays and to adjustoverall image contrast.The chromakey may specify a pixel index using the extendednotation for colors.
The chromakey is applied before any image transformation -including color modifications, gamma correction and scaling.
VMLgrayscalebooleanfalseDisplay picture in grayscale.unsigned Y709FromRGB(unsigned ur, unsigned ug, unsignedub)
(This is a 32 bit value - shift left 24 to get an 8 bit graylevel value.)
VMLbilevelbooleanfalseDisplay picture in only two colors (usually black and white)using a function:inline ULONG UBlackWhite(ULONG uc)
To convert an image to black and white grayscale
isalso specified.
XML template
/>
Predefined Shapes
Predefined shapes serve two purposes - they provide a morecompact representation of a small number of very frequentlyencountered drawing operations (particularly rectangles andcircles) and they give an easy to use form for people who hand-editVML.
Common Properties ofAll Predefined Shapes
Predefined shapes have the same properties as shape
except that the type
attribute is notpermitted.
The line
Element
This element is used to specify a straight line.
>
Attributes
Name SpaceAttributeTypeDefault ValueDescriptionVMLfromVector2D"0 0"The starting point of the line in the coordinate space of theparent element.VMLtoVector2D"10 10"The ending point of the line in the coordinate space of theparent element.The following attributes ofshape
are ignored in aline
.CSStop, margin-top, center-yThe shape is not defined using a rectangle.CSSleft, margin-left, center-xThe shape is not defined using a rectangle.CSSwidthThe shape is not defined using a rectangle.CSSheightThe shape is not defined using a rectangle.VMLfilllines cannot be filledVMLfillcolorlines cannot be filledXML template
/>
Thepolyline
Element
The polyline element is used to define shapes made up ofconnected line segments.
>
Attributes
Name SpaceNameTypeDefault ValueDescriptionVMLpointsstring"0 0 10 10"A list of pairs of points that define a set of straight linesegments. Points are specified in the coordinate system of theparent element (either a group or the document)The following attributes ofshape
are ignored in apolyline
.CSStop, margin-top, center-yThe shape is not defined using a rectangle.CSSleft, margin-left, center-xThe shape is not defined using a rectangle.CSSwidthThe shape is not defined using a rectangle.CSSheightThe shape is not defined using a rectangle.It is necessary to compute the bounding rectangle of thepolyline to determine the content width and height.
XML template
/>
The curve
Element
This element is used to draw a cubic bézier curve.
>
Attributes
Name SpaceNameTypeDefault ValueDescriptionVMLfromVector2D"0 0"The starting point of the line in the coordinate space of theparent element.VMLcontrol1Vector2D"10 10"The first control point for the curve.VMLcontrol2Vector2D"20 0"The second control point for the curveVMLtoVector2D"30 20"The ending point of the line in the coordinate space of theparent element.The following attributes ofshape
are ignored in aline
.CSStop, margin-top, center-yThe shape is not defined using a rectangle.CSSleft, margin-left, center-xThe shape is not defined using a rectangle.CSSwidthThe shape is not defined using a rectangle.CSSheightThe shape is not defined using a rectangle.XML template
/>
The rect
Element
This element is used to draw a simplerectangle.
XML template
/>
Theroundrect
Element
This element is used to draw a rectangle with roundedcorners.
>
Attributes
Name SpaceAttributeTypeDefault ValueDescriptionVMLarcsizenumber"0.2"Defines rounded corners as a percentage of half the smallerdimension of the rectangle. 0.0 (0%) – square corners, 1.0 (100%) -smaller dimension forms a semi-circle.XML template
/>
The oval
Element
This element is used to draw an oval defined by the CSS2 contentwidth and height.
XML template
/>
The arc
Element
This element is used to draw an arc defined as a segment of anoval.
>
Properties
Name SpaceAttributeTypeDefault ValueDescriptionVMLstartanglenumber0The angle where the arc starts.VMLendanglenumber90The angle where the arc endsXML template
/>
Theimage
Element
This element is used to draw a bitmap that has been loaded froman external source. There is an implied rectangle that is the samesize as the image. Any stroke or fill will be applied to thisimplied rectangle. chromakey
attribute.
>
Properties
Name SpaceAttributeTypeDefault ValueDescriptionVMLsrcstringnullURL to an image to load for image and pattern fills.VMLcropleftnumber0Crop distance from edge of picture expressed as a percentage ofpicture size.VMLcroptopnumber0Crop distance from edge of picture expressed as a percentage ofpicture size.VMLcroprightnumber0Crop distance from edge of picture expressed as a percentage ofpicture size.VMLcropbottomnumber0Crop distance from edge of picture expressed as a percentage ofpicture size.VMLembosscolorcolor0Color used to display the picture when doing an embossedshadow.VMLgainnumber1Picture contrast setting.VMLblacklevelnumber0Picture brightness setting.VMLgammanumber1Picture gamma setting.VMLgrayscalebooleanfalseDisplay picture in grayscale.VMLbilevelbooleanfalseConvert all colors in the picture to either 0 or full intensitycomponent values (converts a color bitmap to 8 colors, converts agrayscale bitmap to black and white.)XML template
/>
Normative references
VML is based on several other standard forms.
- HTML 4.0 Specification
- This is a W3C recommendation, therefore is notsubject to change.
- Cascading Style Sheets, Level2
- This is a W3C proposed recommendation, the review period hasnow ended and the proposal is likely to become a recommendation inthe immediate future.
For the most part VML isbased on CSS1 (see below), therefore reliance on CSS2 isminimal. - Cascading Style Sheets, level1
- This defines many of the basic types used in VML - for examplethe fundamental lexical syntax used to describe length andcolor are defined here.
This is a W3Crecommendation, therefore not subject to change. - Extensible Markup Language(XML) 1.0
- This defines the basic lexical form used for the encoding ofVML.
It is a W3C recommendation, not subject tochange. VML requires proposed extensions to XMLto support the VML extensibility mechanisms. VMLalso defines mechanisms which facilitate the interaction of HTMLand VML XML within a single HTML page. - Namespaces inXML
- This is a W3C working draft, therefore subject tochange.
The document defines a mechanism toidentify unknown XML tags and to reliably and safely add new XMLtags. It is intended that VML track the relevantchanges, although at this stage it seems certain that thefundamental requirements of VML will be met. - XML Linking Language(XLink)
- Applications needing VML must identify links to externalobjects even though they may occur in extensions.
The specifications adopted for identifying such links within XMLwill be used by VML. - IEC61966-2
- This IEC Technical Committee will formalize the definition ofsRGB (61966-2.1).
At present the document is aworking draft. However it seems unlikely that anychanges will be made to the encoding model on which VML has somereliance. - PNG (Portable Network Graphics) Specification
- This defines the PNG file format, oneof the recommended formats for raster data in VML.
The definition can also be found at PNG (Portable NetworkGraphics) Specification on the W3C web site. - ISO10918-1 (JPEG)
- This defines the underlyingcompression scheme used in the other raster format recommended byVML.
However it is important to realize that VMLexpects JPEG data to be presented in particular forms - JFIF orExif - arbitrary JPEG data is not compatible withVML. ISO standards can be obtained from nationalstandards organizations, ANSI Catalogs &Standards Information in the US.
Informative references
VML does not rely on the definition of PostScript, however thatdefinition is extremely helpful in understanding VML.
- The PostScript Language Reference Manual
- ISBN 0-201-10174-2, Adobe Systems,Addison-Wesley.
Either edition of the book isappropriate. It contains the clearest descriptionof the "filled path" imaging model which underlies most twodimensional vector graphic implementations. - Inside Macintosh, Imaging with QuickDraw
- ISBN 0-201-63242-X.
VML is designed to beimplementable with QuickDraw on a Macintosh. Implementations based on QuickDraw must do more work (because ofthe lack of arbitrary path support), yet highly efficientimplementations are still possible.
The original W3C requirementsspecification can be found at W3C Scalable GraphicsRequirements.
VML is based on well-established vector graphicaltechniques.
- JPEG Still Image Data Compression Standard
- William B. Pennebaker, Joan L. Mitchell, ISBN0-442-01727-1.
This book not only contains adetailed description of JPEG but also has ISO DIS 10918-1 in anappendix (this being a copy of the draft standard beforeit was approved). - ISO 8879
- ISO 88790:1986 (E).
Information processing -Text and Office Systems - Standard Generalized Markup Language(SGML). This is the basis of XML - XML is anapplication profile of SGML. - OpenTypeSpecification v.1.1
- This describes the OpenType and TrueType definition of thequadratic bézier (which omits the end points of the curve).
- Vector Markup Language (VML)
- Vector Markup Language (VML)
- shell command language
- IE里面的画笔---VML(Vector Markup Language)入门之一
- div+css - 其他HTML问题 - Vector Markup Language (VML):
- STL vector unique
-  
- Draw vector picture using Javasc…
-
- Ltp: Language Technology Platfor…
- c++ vector
- C++ vector
- VECTOR FIND()
- STL----vector 用法
- STL 型式(STL idiom) vector
- 区别: vector list deque set map(…
- Java GUI 使用 Vector 类 建立表格
- IE里面的画笔---VML(Vector Markup Language)入门之二
- javascript如何传递后台传递过的js…
- Windows下如何根据端口号查杀进程
- iframe实现无刷新上传文件
- 基于tomcat配置JNDI
- JQuery动态创建DOM对象、表单元素
- Vector Markup Language (VML)
- sqlite动态创建表
- TCP小结
- JAVA常用库
- 坐标系统投影变换分带方法
- 大学里的学生(Student)需要交学费
- GoogleMap中扩展图形的画法
- __elv_next_request 和 blk_peek_request
- myeclispe8.5优化