61
Scalable Vector Scalable Vector Graphics Graphics Zvi Topol Zvi Topol and Yossi Cohn and Yossi Cohn

Scalable Vector Graphics Zvi Topol and Yossi Cohn

  • Upload
    danika

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

Scalable Vector Graphics Zvi Topol and Yossi Cohn. Outline. Introduction Vector Graphics vs Bitmap Graphics Graphic formats and motivation for SVG. Data types and structural elements. Text and Basic Shapes Transformations and Paths Animation Other SVG Features Demos. Introduction. - PowerPoint PPT Presentation

Citation preview

Page 1: Scalable Vector Graphics Zvi Topol and Yossi Cohn

Scalable VectorScalable VectorGraphicsGraphics

Zvi TopolZvi Topol and Yossi Cohnand Yossi Cohn

Page 2: Scalable Vector Graphics Zvi Topol and Yossi Cohn

2

OutlineOutline Introduction Vector Graphics vs Bitmap Graphics Graphic formats and motivation for SVG. Data types and structural elements. Text and Basic Shapes Transformations and Paths Animation Other SVG Features Demos

Page 3: Scalable Vector Graphics Zvi Topol and Yossi Cohn

3

IntroductionIntroduction

Graphics on the Web has many different uses: The WWW contains milliards of pages of data. Graphics is an important tool to visualize that data

(diagrams, illustrations, images, etc) Graphics is also a good means to convey

messages: art, advertisements, campaigns It also can be used to create virtual environments

and worlds - virtual shops, games, simulators.

Page 4: Scalable Vector Graphics Zvi Topol and Yossi Cohn

4

Introduction(cont’d)Introduction(cont’d)

There are two main ways to represent graphics on the Web:

Bitmapped Graphics - storing the RGB values of each pixel in the image.

Vector Graphics - storing the coordinates of each vectors and the colors in which they are rendered.

Page 5: Scalable Vector Graphics Zvi Topol and Yossi Cohn

5

Bitmapped GraphicsBitmapped Graphics

Bitmapped images are widely used over the Internet: attached to HTML documents using <img> tag.

Main formats: GIF, JPEG, BMP. Represented in Binary format. Image processing is done on server side and image

is transferred as is to client.

Page 6: Scalable Vector Graphics Zvi Topol and Yossi Cohn

6

Vector GraphicsVector Graphics

Uses of the power of transformations, coordinate systems, units and vector-based shapes.

Rendering is done on the client side - using local processing power.

Can be represented in both binary and text formats.

Can include Bitmap images

Page 7: Scalable Vector Graphics Zvi Topol and Yossi Cohn

7

Vectors vs Bitmaps(1)Vectors vs Bitmaps(1)

Size : Vectors cost much less to represent than bitmaps.

Example: a diagonal blue line on 640X480 window costs ~3000 bytes with a Bitmap. Same line using Vector Graphics ~20 bytes.

Bitmaps have problems with resolution and colors when viewed and printed on different kinds of screens and printers at different sizes.

Transformations can be applied on vectors to solve this problem.

Page 8: Scalable Vector Graphics Zvi Topol and Yossi Cohn

8

Vectors vs Bitmaps(2)Vectors vs Bitmaps(2)

Format representation - Bitmaps are binary files, vector based graphics can be represented as text files.

Drawing instruction include text, and so are selectable and searchable. Links can be created to any part of a vector based image.

Flexibility - Vectors are much more flexibly to changes (transformations and different text styles).

Page 9: Scalable Vector Graphics Zvi Topol and Yossi Cohn

9

Vectors vs Bitmaps(3)Vectors vs Bitmaps(3)

Animation is much simpler using vectors. Accessibility to editing - easier to edit quickly a

textual file than a binary file. Interactivity – the ease of using scripts allows very

good interactivity.

Page 10: Scalable Vector Graphics Zvi Topol and Yossi Cohn

10

Vectors vs Bitmaps(4)Vectors vs Bitmaps(4)

SVGPNG

Page 11: Scalable Vector Graphics Zvi Topol and Yossi Cohn

11

Vector Graphics FormatsVector Graphics Formats SVF - Simple Vector Format. Plug-in for CAD

drawing representation - 1996. No more development after 1997. Limited, no animation. http://www.softsource.com/svf

DWF - Drawing Web Format. Plug-in can be used with Javascript - but with no animation enabled. http://www.autodesk.com/whip/

Flash - Marcomedia’s Vector Graphics Format. The most up to date. Supports full multimedia features. Occupies about 70% of the market. http://www.macromedia.com/software/flash

Page 12: Scalable Vector Graphics Zvi Topol and Yossi Cohn

12

Vector Graphics Formats(2)Vector Graphics Formats(2) VML - Vector Markup Language - based 2D

vector format by Microsoft - not developed after 1998. Limited to one single platform - Microsoft. http://www.w3.org/TR/NOTE-VML

WebCGM - computer graphics metafile for the Web - binary format. Primarily designed to visualize technical and scientific drawings. http://www.w3.org/Graphics/WebCGM

VRML - Virtual Reality Modeling Language - devoted to 3D, supports 2D as well - complicated for simple presentations. Http://www.web3d.org

Page 13: Scalable Vector Graphics Zvi Topol and Yossi Cohn

13

Other Vector Graphics ToolsOther Vector Graphics Tools 2D APIs combined with ActiveX - limited to

Microsoft platforms. Java2D - binary program with graphical 2D output

- inserted in web pages as applet - platform independent, but requires more than basic scripting programming skills.

Page 14: Scalable Vector Graphics Zvi Topol and Yossi Cohn

14

Motivation for SVGMotivation for SVG Text based language. Simple to program. Takes advantage of existing tools - XML, CSS,

XSL. Powerful graphics capabilities - high performace,

full animation support. Open standard. Extendable - MathML for instance. Searchable.

Page 15: Scalable Vector Graphics Zvi Topol and Yossi Cohn

15

SVG(1)SVG(1) SVG is a language for describing 2D vector and

mixed vector/raster graphics in XML. Developed by W3C organization. Supported by Sun, Adobe and IBM. Plug-in is required.

Page 16: Scalable Vector Graphics Zvi Topol and Yossi Cohn

16

SVG(2)SVG(2) SVG specification is available in:

http://www.w3.org/TR/2000/CR-SVG-20001102/

First draft released: 11/2/1999.

Current status: Candidate Recommendation - meaning that the specification is maturing and is now ready for more widespread implementation testing.

Page 17: Scalable Vector Graphics Zvi Topol and Yossi Cohn

17

SVG – Concepts(1)SVG – Concepts(1) SVG stands for Scalable Vector Graphics In terms of graphics, scalable means not being

limited to single, fixed units.

In terms of Web scalable means that a particular technology can grow to a large number of files, a large number of users, a wide variety of applications.

SVG, being a graphics technology for the Web, is scalable in both senses of the word

Page 18: Scalable Vector Graphics Zvi Topol and Yossi Cohn

18

SVG – Concepts(2)SVG – Concepts(2) SVG graphics is scalable to different display

resolutions and color spaces. The same SVG graphic can be placed at different

sizes on the same Web page, and re-used at different sizes on different pages.

SVG graphics can be magnified to see fine detail, or to aid those with low vision.

Page 19: Scalable Vector Graphics Zvi Topol and Yossi Cohn

19

SVG Code example(1)SVG Code example(1)

Valid SVG document:

<?xml version="1.0 ”standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd"> <svg width=”300px" height=”200px"> <desc><!-- put a description here --> </desc> <g><!-- your graphic here --> </g>

</svg>

Page 20: Scalable Vector Graphics Zvi Topol and Yossi Cohn

20

SVG Code example(2)SVG Code example(2)

Well formed SVG document:

<?xml version="1.0 ”standalone="no"?> <svg width=”300px" height=”200px” xmlns = 'http://www.w3.org/2000/svg ’> <desc><!-- put a description here --> </desc> <g><!-- your graphic here --> </g>

</svg>

Page 21: Scalable Vector Graphics Zvi Topol and Yossi Cohn

21

Basic Data Types(1)Basic Data Types(1) Main Data types for SVG attributes: <integer> - signed integer numbers of 32 bits. <number> - decimal numbers. <length> - <number> followed by a unit

identifier: 1.5mm - in the user coordinate system - a pure number.

Unit identifiers : as defined in CSS: em, ex, px, pt, pc, cm, mm, in and percentages.

Page 22: Scalable Vector Graphics Zvi Topol and Yossi Cohn

22

Basic Data Types(2)Basic Data Types(2) <coordinate> - represents a <length> in the user

coordinate system - distance from the origin for a specific axis.

<angle> - <number> optionally followed by deg - degrees, grad - gradians or rad - radians. Default is degrees. (as defined in CSS2).

<color> - for representing colors from sRGB color space. Either by keywords recognized by SVG or by hex numbers.

Page 23: Scalable Vector Graphics Zvi Topol and Yossi Cohn

23

Basic Data Types(3)Basic Data Types(3) <paint> - possible values: fill - filling the shape or

stroke - rendering the contour of a shape. <transform-list> - a list of transformations. <uri> - Uniform Resource Identifiers <time> - <number> followed by a time identifier :

ms - milliseconds or s - seconds. May not be negative.

Page 24: Scalable Vector Graphics Zvi Topol and Yossi Cohn

24

SVG document fragmentSVG document fragment SVG code is found inside <svg> element tag. An SVG document fragment consists of any

number of SVG elements contained within an svg element.

<svg> element can be empty, contain basic shapes, or more complex graphic elements.

Page 25: Scalable Vector Graphics Zvi Topol and Yossi Cohn

25

ExampleExample <?xml version="1.0" standalone="no"?> <!

DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd"> <svg width="5cm" height="4cm"> <desc>Four separate rectangles </desc> <rect x="0.5cm" y="0.5cm" width="2cm" height="1cm"/> <rect x="0.5cm" y="2cm" width="1cm" height="1.5cm"/> <rect x="3cm" y="0.5cm" width="1.5cm" height="2cm"/> <rect x="3.5cm" y="3cm" width="1cm" height="0.5cm"/> </svg>

Page 26: Scalable Vector Graphics Zvi Topol and Yossi Cohn

26

Grouping Element(1)Grouping Element(1) The 'g' element is the element for grouping and

naming collections of drawing elements. Enables to execute same operation on all items in

the group. Can be used in conjunction with <desc> and

<title> elements to provide description and semantics about the group

Page 27: Scalable Vector Graphics Zvi Topol and Yossi Cohn

27

Grouping Element(2)Grouping Element(2) Each group can be given the id attribute for

purposes of animation and re-usabilty. Any ‘g’ element can contain other ‘g’ elements

nested within it to an arbitrary depth. Drawing element that is not contained in a ‘g’

element can be considered as a group of its own.

Page 28: Scalable Vector Graphics Zvi Topol and Yossi Cohn

28

Another ExampleAnother Example <?xml version="1.0" standalone="no"?> <!

DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd"> <svg width="5cm" height="5cm">

<desc>Two groups, each of two rectangles </desc> <g id="group1" style="fill:red"> <rect x="1cm" y="1cm" width="1cm" height="1cm" /> <rect x="3cm" y="1cm"

width="1cm" height="1cm" /> </g> <g id="group2" style="fill:blue"> <rect x="1cm" y="3cm" width="1cm" height="1cm" /> <rect x="3cm" y="3cm" width="1cm" height="1cm" /> </g> </svg>

Page 29: Scalable Vector Graphics Zvi Topol and Yossi Cohn

29

The The defsdefs element(1) element(1) The defs element is a container element for

referenced elements.

When SVG elements are drawn into a visual media, the <defs> is not drawn with them.

Page 30: Scalable Vector Graphics Zvi Topol and Yossi Cohn

30

The The defsdefs element(2) element(2) <svg width="8cm" height="3cm">

<desc>Local URI references within ancestor's ‘defs’ element </desc>

<defs> <linearGradient id="Gradient01"> <stop offset="20%" style="stop-color:#39F"/> <stop offset="90%" style="stop-color:#F3F"/> </linearGradient>

</defs> <rect x="1cm" y="1cm" width="6cm" height="1cm" style="fill:url(#Gradient01)" /> </svg>

Page 31: Scalable Vector Graphics Zvi Topol and Yossi Cohn

31

References in SVGReferences in SVG SVG supports two types of references: Local URI reference – the referenced object is

found in the same document. Non-Local URI reference – the referenced object

is found in another document.

The support of references in SVG makes use of Xlink, Xpointer and XML references.

Page 32: Scalable Vector Graphics Zvi Topol and Yossi Cohn

32

The The use use element(1)element(1) The <use>’s purpose is to reuse defined container

elements like <svg> and <g> The 'use' element references another element and

indicates that the graphical contents of that element is included/drawn at that given point in the document.

The ‘use’ element cannot reference entire files.

Page 33: Scalable Vector Graphics Zvi Topol and Yossi Cohn

33

The The use use element(2)element(2) The 'use' element has the attributes x, y, width and

height which are used to map the graphical contents of the referenced element onto a rectangular region within the current coordinate system.

The effect of a 'use' element is as if the contents of the referenced element were deeply cloned into a separate non-exposed DOM tree which had the 'use' element as its parent and all of the 'use' element's ancestors as its higher-level ancestors.

Page 34: Scalable Vector Graphics Zvi Topol and Yossi Cohn

34

The The use use element(3)element(3) <svg width="10cm" height="3cm" viewBox="0 0 100 30">

<desc>Example Use01 - Simple case of 'use' on a 'rect'</desc> <defs> <rect id="MyRect" width=“5cm" height="1cm"/> </defs> <use x=“1cm" y="1cm" xlink:href="#MyRect" /> </svg>

Page 35: Scalable Vector Graphics Zvi Topol and Yossi Cohn

35

The The use use element(4)element(4) The <use> element has an important advantage

over a simple reference to an element: It can apply transformations and style sheets over

the used element by using the matching attributes of the ‘use’ element.

Page 36: Scalable Vector Graphics Zvi Topol and Yossi Cohn

36

The imageThe image element(1)element(1) The <image> indicates that the contents of a

complete file are to be rendered into a given rectangle within the current user coordinate system

The <image> can refer to raster image files such as PNG or JPEG or to an SVG file.

Main attributes: “x”, “y”, “width”, “height” and “xlink:href”

Page 37: Scalable Vector Graphics Zvi Topol and Yossi Cohn

37

The imageThe image element(2)element(2) If <image> references a raster image, then the

raster image is fitted into the region specified by the x, y, width and height attributes such that the top/left corner of the raster image exactly aligns with coordinate (x,y), and the bottom/right corner of the raster image exactly aligns with coordinate (x+width,y+height).

When <image> references an SVG file, then the 'image' element establishes a new viewport - specified by x,y,width,height.

Page 38: Scalable Vector Graphics Zvi Topol and Yossi Cohn

38

The imageThe image element(3)element(3) Unlike <use>, <image> cannot reference

elements inside the SVG document.

One can apply transformations and styles to the <image> element through the matching attributes.

Page 39: Scalable Vector Graphics Zvi Topol and Yossi Cohn

39

The The text text elementelement <text> is used to specify text that is rendered with

other graphical elements. This means that we can apply transformation,

clipping, masking, and so to text. Fonts are as specified in CSS2.

Page 40: Scalable Vector Graphics Zvi Topol and Yossi Cohn

40

>>text> exampletext> example<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN" "http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">

<svg width="10cm" height="3cm">

<desc>Example text01 - 'Hello, out there' in blue</desc>

<text x="2.5cm" y="1.5cm" style="font-family:Verdana; font-size:16pt; fill:blue"> Hello, out there </text>

</svg>

Page 41: Scalable Vector Graphics Zvi Topol and Yossi Cohn

41

Basic Shapes supportedBasic Shapes supported All basic shapes in SVG are represented as

elements, with attributes corresponding to the shape.

<rect> , <circle>, <ellipse>, <line>. <polyline> - defines a set of connected straight

lines. <polygon> - defines a closed shape consisting of a

set of connected straight line segments. Each shape can be stroked, filled and transformed.

Page 42: Scalable Vector Graphics Zvi Topol and Yossi Cohn

42

Rendering Model(1)Rendering Model(1) SVG content is painted on to a canvas : 2D infinite

plain. Rendering occurs relative to a finite rectangular

region of the canvas. This Region is called SVG Viewport. The size of the Viewport (its height and width) is

defined as attributes inside the <svg> element.

Page 43: Scalable Vector Graphics Zvi Topol and Yossi Cohn

43

Rendering Model(2)Rendering Model(2) Examples of viewports:

300x200 view port: 150x200 viewport:

Page 44: Scalable Vector Graphics Zvi Topol and Yossi Cohn

44

Rendering Model(3)Rendering Model(3) SVG uses a "painters model" of rendering:

Paint is applied in successive operations to the output device - when the area overlaps a previously painted area the new paint partially or completely obscures the old.

Rendering order: First Comes First Painted Support for 3 types of graphical elements:

Shapes, Text, Raster images.

Page 45: Scalable Vector Graphics Zvi Topol and Yossi Cohn

45

Coordinate SystemsCoordinate Systems There are two coordinate systems in SVG: Viewport coordinate system – positive integer

numbers representing pixels. User coordinate system – real numbers, this is the

coordinate system as the user sees it. Usually the origin of both coordinate systems are

identical and each pixel in the viewport is mapped to one unit in user coordinate system.

The viewbox attribute can be used to change this mapping.

Page 46: Scalable Vector Graphics Zvi Topol and Yossi Cohn

46

Transformations(1)Transformations(1) A new user coordinate system can be established

by specifying transformations in the form of a transform attribute on a group of graphical elements.

The transform attribute transforms all user space coordinates and lengths on the given element and all of its ancestors.

Transformations maybe nested and so have cummulative effect.

Page 47: Scalable Vector Graphics Zvi Topol and Yossi Cohn

47

Transformations(2)Transformations(2) 2D transformations are represented using 3X3

matrices. Common transformations:

translate(x,y) - establish a new coordinate system whose origin is at (x,y).

rotate(a) – rotates the coordinate system by a degrees around the origin.

scale(a,b) – scales the coordinate system – x axis by a and y axis by b.

Page 48: Scalable Vector Graphics Zvi Topol and Yossi Cohn

48

Transformations(3)Transformations(3) Translation Matrix:

Rotation Matrix:

Scaling Matrix:

Page 49: Scalable Vector Graphics Zvi Topol and Yossi Cohn

49

Transformations(4)Transformations(4)

Page 50: Scalable Vector Graphics Zvi Topol and Yossi Cohn

50

Transformations(5)Transformations(5) SVG allows both to apply transformations as

translate, rotate, scale or to apply a detailed transformation matrix.

Transformations in SVG are applied by the ‘transform’ element.

Page 51: Scalable Vector Graphics Zvi Topol and Yossi Cohn

51

Paths(1)Paths(1) Paths represent the outline of a shape which can

be filled, stroked, used as a clipping path, or any combination of the three.

Paths are described by a set of points. The geometry of the path is defined in terms of

moveto, lineto, curveto, arc, and closepath. Path is represented in SVG by the ‘path’ element.

Page 52: Scalable Vector Graphics Zvi Topol and Yossi Cohn

52

Paths(2)Paths(2) <svg width="4cm" height="4cm" viewBox="0 0 400 400">

<title>Example triangle01- simple example of a 'path'</title> <desc>A path that draws a rectangle</desc> <rect x="1" y="1" width="398" height="398" style="fill:none; stroke:blue"/> <path d="M 100 100 L 300 100 L 200 300 z" style="fill:red; stroke:blue; stroke-width:3"/> </svg>

Page 53: Scalable Vector Graphics Zvi Topol and Yossi Cohn

53

Animation(1)Animation(1) SVG supports the ability to change vector

graphics over time. There are 2 main ways for animating SVG

content: Through SVG animation elements. By access to the SVG DOM.

Page 54: Scalable Vector Graphics Zvi Topol and Yossi Cohn

54

Animation(2)Animation(2)

SVG is a host language in terms of SMIL Animation and therefore introduces additional constraints and features as permitted by that specification.

It also introduces new extensions compatible with SMIL.

Page 55: Scalable Vector Graphics Zvi Topol and Yossi Cohn

55

Animation ElementsAnimation Elements Main animation elements in SVG: ‘animate’ , ‘set’, ‘animateMotion’,

‘animateColor’, ‘animateTransform’. Animation introduces the time dimension to the

document. Time notion in SVG: document begin, document

end.(When <svg>’s onload event was triggered, when <svg>’s resources have been released).

Page 56: Scalable Vector Graphics Zvi Topol and Yossi Cohn

56

More SVG FeaturesMore SVG Features Gradients Scripting (using scripting languages to handle

various events). Filter effects (Lighting, Color spaces, etc..). Clipping and masking (alpha values).

Page 57: Scalable Vector Graphics Zvi Topol and Yossi Cohn

57

Examples(1)Examples(1)Linear Gradient:

Radial Gradient:

Page 58: Scalable Vector Graphics Zvi Topol and Yossi Cohn

58

Examples(2)Examples(2)Filter effects:

Page 60: Scalable Vector Graphics Zvi Topol and Yossi Cohn

60

Tools for SVG authoringTools for SVG authoring CSIRO SVG Toolkit :

http://sis.cmis.csiro.au/svg/index.html

Corel Draw 10:

http://www.corel.com/

PhotoShop

http://www.adobe.com/ Various Converters from Other graphical formats

to SVG.

Page 61: Scalable Vector Graphics Zvi Topol and Yossi Cohn

61

Other related W3C groupsOther related W3C groups SMIL – Synchronized Multimedia Integration

Language.

WIA – Web Accessibility Initiative.