Scalable Vector Graphics
Ricardo Alexandre G. C. Martins
[email protected]
O que é ? Para que serve ?
Aplicação XML
Maneira portável e compacta de representar informação gráfica
(imagens vetoriais)
Atualmente é suportado por diversos softwares de grandes empresas
como Adobe (SVG Viewer) e Jasc (Paint Shop Pro)
Permite desenvolver aminações e interação com o usuário, utilizando
Javascript
Possibilidade de criação de imagens “on-demand” através do uso de
stylesheets
Primitivas Suportadas
Linha
Círculos e Elipses
Retângulo
Polígono
Polilinhas
Código-fonte
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg width="520" height="300">
<title> Exemplo do uso de primitivas</title>
<!-- Linha, circulo, retangulo, poligono e arco -->
<line x1="420" y1="16" x2="420" y2="150" style="stroke:black;"/>
<circle cx="350" cy="41" r="25" style="stroke:blue; fill:green;"/>
<rect x="160" y="16" width="120" height="60"
style="stroke:#99CC00; stroke-dasharray:5,2; fill:blue"/>
<polygon points="48,16 16,96 96,48 0,48 80,96"
style="fill:#ccffcc; stroke:green;"/>
<path d="M125,185 A100,50 0 1,0 225,185" style="fill:none; stroke:red"/>
</svg>
Estilos
Possibilidade da criação de grupos
Possível manipulação das características (cores, larguras, transparência,
orientação do texto, etc.)
Utilização de filtros, que permitem criar e alterar sombras, iluminação,
gradientes
Código Fonte
<filter id="sombra">
<feGaussianBlur in="SourceAlpha" stdDeviation="2"/>
</filter>
<filter id="glow">
<feColorMatrix type="matrix" values=
"0 0 0 0 0
0 0 0 0.9 0
0 0 0 0.9 0
0 0 0 1 0"/>
<feGaussianBlur stdDeviation="2.5" result="coloredBlur"/>
<feMerge>
<feMergeNode in="coloredBlur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
Código fonte (cont)
<text x="190" y="50" style="filter:url(#glow); fill:#003333; font-size:18;">
Have a nice day !!!
</text>
<g id="smile">
<circle cx="165" cy="155" r="60"
style="stroke:black; filter:url(#sombra);"/>
<circle cx="160" cy="150" r="60"
style="stroke:black; fill:yellow;"/>
<ellipse cx="140" cy="125" rx="5" ry="10"
style="stroke:black; fill:black;"/>
<ellipse cx="180" cy="125" rx="5" ry="10"
style="stroke:black; fill:black;"/>
<path d="M 120,165 A80,150 0 0,0 200,165"
style="stroke:black; fill:none;"/>
</g>
<use xlink:href="#smile" x="190" y="0"/>
Animações
Controladas pelo autor
Interativas (com o uso de Javascript)
Animações controladas pelo
autor
…
<circle cx="110" cy="240" r="10" style="stroke:black; fill:#CCCCCC;">
<animate attributeName="cx" attributeType="XML"
from="110" to="340" begin="0s" dur="5s" fill="freeze"/>
</circle>
…
Animações Interativas
<script type="text/ecmascript">
<![CDATA[
function aumenta(evt)
{
circulo = evt.getTarget();
circulo.setAttribute("r","50");
}
function diminui(evt)
{
circulo = evt.getTarget();
circulo.setAttribute("r","25");
}
// ]]>
</script>
Animações Interativas (cont.)
<title>Imagem interativa</title>
<desc>Exemplo de imagem interativa</desc>
<circle cx="250" cy="100" r="25" style="fill:red;"
onmouseover="aumenta(evt)" onmouseout="diminui(evt)"/>
<text x="250" y="175" style="text-anchor:middle;">
Passe o rato sobre o circulo para mudar seu tamanho
</text>
Referências
Eisenberg, J. David, Editora O'Reilly, SVG Essentials
The End
Download

Slide 1