• Nenhum resultado encontrado

uma introdução prática Helder da Rocha

N/A
N/A
Protected

Academic year: 2021

Share "uma introdução prática Helder da Rocha"

Copied!
25
0
0

Texto

(1)
(2)

na vi s .com.br

Programa  (4  dias)  

•  Introdução  

•  O  que  é  SVG,  ferramentas,  suporte,  plataformas  

•  Parte  I  

•  1.  Cores  de  preenchimento,  es@los  e  traços  

•  2.  Figuras  básicas:  retângulo,  círculo,  elipse,  polígono,  linha  

•  3.  Estrutura  do  documento,  símbolos,  marcadores  

•  Parte  II  

•  4.  Caminhos,  curvas  Bézier  e  arcos  

•  5.  Texto,  fontes  e  efeitos  com  texto  

•  6.  Filtros  e  efeitos  gráficos  com  gradient,  paTern,  clipping,  masks  

•  Parte  III  

•  7.  Transformação  de  coordenadas  

•  8.  Manipulação  de  componentes  SVG  com  JavaScript  e  DOM  

•  9.  Animação  SVG  com  SMIL  

•  Parte  IV  

(3)

na vi s .com.br hTp://www.youtube.com/watch?v=jHteVqfKhNo   (hTp://www.helderdarocha.com.br)  

O  autor  

(4)

na

vi

s

.com.br

O  que  é  SVG?  

• 

Scalable  Vector  Graphics  

• 

Gráfico  

• 

linhas,  poligonos,  figuras,  texto,  filtros,  efeitos  

• 

Escalável  

• 

Zoom  eficiente  e  rápido  

• 

Pode  ampliar  e  reduzir  sem  perder  qualidade  

• 

Vetorial  

• 

Armazena  a  equação  dos  gráficos  (e  não  um  mapa  de  

pixels  como  imagens  bitmap)  

• 

Imagens  maiores  ocupam  mesmo  espaço  que  imagens  

menores,  e  não  perdem  qualidade  

• 

Pode  tratar  gráficos  separadamente  (como  objeto),  

(5)

na

vi

s

.com.br

Vetores  e  bitmaps  

Bitmap,  10kB  

Bitmap  ampliado,  250kB   Vetor,  1kB  

(6)

na

vi

s

.com.br

SVG  é  XML!  

• 

Tudo  expresso  em  XML  

• 

Pode  ser  alterado  em  editor  de  textos  

• 

Pode  ser  processado  como  texto  

• 

Pode  ser  transformado  via  XSLT  

• 

Pode  ter  objetos  selecionados  via  XPath  

• 

Pode  ser  validado  com  XML  Schema  

• 

Pode  ter  a  aparência  de  objetos  alteradas  com  CSS  

• 

Pode  ter  comportamento  de  objetos  alterado  com  

JavaScript  e  DOM  

• 

Pode  ser  embu@do  em  HTML  como  texto  

(7)

na

vi

s

.com.br

SVG  é  um  formato  gráfico  

• 

Desenhos  podem  ser  produzidos  em  ferramentas  

gráficas  populares  

• 

Corel  Draw  

• 

Adobe  Illustrator  

• 

OpenOffice  

• 

Formato  aberto  e  mul@plataforma  

• 

Pode-­‐se  criar  um  SVG  no  Illustrator  e  fazer  alterações  

em  um  editor  de  texto  e  vice-­‐versa  

• 

Pode-­‐se  desenhar  partes  de  um  SVG  no  Corel  Draw,  e  

usar  XSLT  para  gerar  gráficos  maiores  usando  as  partes  

como  componentes  básicos  

(8)

na vi s .com.br

Tecnologias  similares  

•  Flash  /  Flex  

•  Solução  +  popular  de  gráficos  vetoriais  e  animação  2D  na  Web  

•  Proprietária  

•  Perdendo  espaço  para  tecnologias  emergentes  como  SVG  

•  HTML5  Canvas  

•  Linguagem  gráfica  2D  baseada  em  JavaScript,  embu@da  em  HTML  com   recursos  similares  a  SVG  

•  É  possível  interagir  com  SVG  via  HTML  DOM  

•  WebGL  

•  Linguagem  gráfica  3D  em  HTML  5  Canvas  com  sintaxe  do  OpenGL  ES  

•  Outros  formatos  de  gráfico  vetorial  (obsoletos,  em  ex@nção,   proprietários,  incompatveis  com  a  Web,  etc.)  

(9)

na

vi

s

.com.br

Origens  do  SVG  

• 

SVG  foi  criado  em  1998  a  par@r  de  propostas  enviadas  à  

W3C  para  a  padronização  de  linguagem  vetorial  para  a  Web  

•  Especificação  final  1.0  publicado  em  2001  

•  Especificação  1.1,  2a.  ed,  2010:  hAp://w3.org/Graphics/SVG    

• 

As  principais  influências  do  SVG  são    

•  VML  da  Microsow  (com  HP,  Autodesk  e  Macromedia)  

•  PGML,  da  Adobe  (com  IBM,  Netscape  e  Sun)  

•  CSS  e  HTML  (W3C)  

• 

Primeira  especificação  escrita  por  Jon  Ferraiolo  (Adobe)  

• 

A  Adobe  foi  a  empresa  que  mais  inves@u  no  SVG  nos  

primeiros  anos  

•  Produziu  o  viewer  mais  popular    (Adobe  SVG  Viewer)  

(10)

na vi s .com.br

Mercado  

• 

Mercado  crescente  

•  Muitas  aplicações  populares  e  plataformas  suportam,  produzem   ou  exportam  SVG  desde  as  primeiras  versões  

•  Exemplos:  Adobe  Illustrator,  Corel  Draw,  OpenOffice.org,   Blender,  GIMP,  Nokia  S60,  ...  

•  Google  indexa  conteúdo  SVG  desde  agosto  de  2010.  

• 

Suporte  na@vo  SVG  em  browsers  (StatCounter):  

•  Internet  Explorer  (46%  mercado):  SVG  1.1  a  par@r  do  IE  9.0  

•  Firefox  (30%):  SVG  1.1  desde  2005  (parcial)  

•  Webkit:  Chrome  e  Safari  (18%):  SVG  1.1  desde  2006  (parcial)  

•  Opera  (2%)  SVG  1.1  desde  versão  8.0,  completo  desde  10.0  

•  Mobile*  (4%):  SVG  1.1/SVG  1.2  Tiny  

(11)

na vi s .com.br

Plataformas  SVG  

• 

SVG  Full  

• 

SVG  1.0  e  SVG  1.1  –  quase  iguais  no  que  se  refere  à  

componentes  e  sintaxe  (em  1.1,  o  DTD  é  modular)  

• 

Formato  SVGZ  (SVG  comprimido  com  ZIP)  

• 

SVG  Mobile  

• 

SVG  1.2  Tiny  (SVGT)  e  SVG  Basic  (SVGB):  des@nados  a  

disposi@vos  móveis,  tablets,  etc.  

• 

A  3GPP  adotou  SVG  Tiny  como  padrão  de  mídia  vetorial  

• 

Em  desenvolvimento  

• 

SVG  2.0  (antes  chamado  de  SVG  1.2)  –  tem  recursos  de  

transformação  3D  

(12)

na

vi

s

.com.br

Suporte  SVG  1.1  

•  Para  testar,  executar  e  exibir  os  exemplos  demonstrados  neste  curso  foram   usados  os  seguintes  browsers  e  plataformas  

•  Plataforma  Mac  OS  X  (10.6)  e  Linux  (Ubuntu)  

•  Google  Chrome  10.0  (Webkit)  

•  Safari  4.04  e  5.03  (Webkit)  

•  Firefox  4  (Beta)  (Mozilla)  

•  Opera  10.62  (Presto)  

•  Plataforma  Windows  (XP)  

•  Internet  Explorer  8  (Windows  XP)  com  diversos  plug-­‐ins  JavaScript  

•  Chrome  10,  Opera  10,  Firefox  4,  Safari  4  (Windows  XP)  

•  Plataforma  Windows  7  

•  Internet  Explorer  9  

•  Ferramentas  (mul@plataforma  –  usadas  em  Mac  OS  X)  

•  Squiggle  (SVG  Viewer  do  framework  Ba@k)  

(13)

na

vi

s

.com.br

Suporte  no  Windows?  

• 

Nenhum  suporte  na@vo:  Internet  Explorer  6,  7,  8  

•  IE  foi  um  dos  primeiros  browsers  a  ter  suporte  SVG  1.0  através   do  Adobe  SVG  Viewer  Plugin  (2000,  Windows  98/2000/XP)  

•  Mas  Microsow  nunca  inves@u  no  suporte  na\vo  a  SVG,  e  Adobe   –  proponente  da  especificação  SVG  1.0  –    deixou  de  dar  suporte   ao  popular  plug-­‐in  em  janeiro  de  2009.  

•  Adobe  Plugin  ainda  funciona  em  IE  6,  7,  8:  parcial  e  com  bugs  

• 

Soluções  usando  o  Internet  Explorer  

•  Usar  Internet  Explorer  9  (mas  só  roda  em  Vista  ou  Seven)  

•  Plug-­‐in  SVGWeb  do  Google:  hAp://code.google.com/p/svgweb/  

•  Outros  plug-­‐ins  que  embutem  SVG:  hAp://www.amplesdk.com/  

• 

Usar  outros  browsers  no  Windows  

•  Melhor  suporte  (12/2010):  Opera,  Google  Chrome,  Firefox  4  

(14)

na

vi

s

.com.br

Como  criar  um  SVG  em  XML  

• 

Elemento  raiz  

• 

<svg>  

• 

Namespace  

• 

hTp://www.w3.org/2000/svg  

• 

Um  gráfico  SVG  muito  simples:  

<?xml  version="1.0"  encoding="UTF-­‐8"?>  

<svg  xmlns="http://www.w3.org/2000/svg"    

         width="100%"  height="100%">  

       <circle  r="50"  cx="100"  cy="100"  fill="green"/>    

</svg>  

(15)

na

vi

s

.com.br

Como  exibir  

•  Em  um  browser  

•  Simplesmente  abra  o  arquivo  SVG  em  um  browser  

•  Em  outras  aplicações  

•  Ferramentas  gráficas:  Inkscape,  Sketsa,  Illustrator,  Corel  Draw  

•  SVG  Viewers  (Apache  Squiggle),  interfaces  de  tablets,  celulares,  etc.  

Opera  

Chrome  

Safari  

Firefox  

IE  8  com  plug-­‐in   WebSVG  do  Google   (Suporte  naHvo  em  IE  

(16)

na

vi

s

.com.br

Ba\k  Squiggle  

• 

Visualizador  e  editor  SVG  da  Apache  (open-­‐source)  

• 

Permite  exibir  SVG,  depurar  scripts,  analisar  código-­‐fonte  

(17)

na

vi

s

.com.br

Como  vincular  em  HTML/XHTML  

• 

A  forma  recomendada  é  usar  <object>  

•  <object  src="svgdemo.svg"    

               classid="image/svg+xml"                    type="image/svg+xml"    

               height="300"  width="400"  />  

• 

Outras  formas  também  funcionam  (mas  não  em  

todos  os  browsers)  

•  <img  src="svgdemo.svg"    

         height="300"  width="400"  />  

•  <embed  src="svgdemo.svg"    

             type="image/svg+xml"    

(18)

na vi s .com.br

Como  embu\r  

• 

Em  XML  

• 

Em  HTML5  

<xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  version="1.0">          <xsl:template  match="figura">  

               <svg  xmlns="http://www.w3.org/2000/svg"  width="100%"  height="100%">                          <circle  r="50"  cx="100"  cy="100"  fill="green"/>    

               </svg>  

       </xsl:template>  

</xsl:stylesheet>   <catalogo  xmlns="http://www.acme.com/Catalogo"  

                   xmlns:svg="http://www.w3.org/2000/svg">          <imagem>  

               <svg:svg    width="200"  height="200">  

                       <svg:circle  r="50"  cx="100"  cy="100"  fill="green"/>                    </svg:svg>          </imagem>   </catalogo>   <!doctype  html>   <html>          <head>  

               <meta  charset="UTF-­‐8">  

                       <title>Hello  SVG!</title>          </head>  

       <body>  

               <h1>Hello  SVG!</h1>  

               <svg>    

                       <circle  r="50"  cx="50"  cy="50"  fill="green"/>                    </svg>  

(19)

na

vi

s

.com.br

Como  programar  

• 

Intera\vidade:  para  interagir  e  manipular  SVG  em  

tempo  de  exibição  

• 

Scrip@ng  em  SVG  1.1  com  W3C  Document  Object  Model  

Level  2  (DOM  2.0)  

• 

Para  programar  o  DOM,  pode-­‐se  usar  qualquer  linguagem  

suportada  pelo  viewer  u@lizado  

• 

JavaScript  (ECMA  Script)  é  a  linguagem  mais  usada  (e  

única  suportada  pela  maioria  dos  visualizadores  SVG)  

• 

Geração:  Para  gerar  e  manipular  SVG  antes  da  exibição  

• 

Com  Java,  pode-­‐se  usar  o  popular  framework  open-­‐source  

Apache  Ba@k:  

hAp://xmlgraphics.apache.org/baHk  

• 

Pode-­‐se  gerar  SVG  através  de  XSLT  com  amplo  suporte  em  

diversas  plataformas  e  linguagens  

(20)

na

vi

s

.com.br

Geração  de  imagem  

• 

Muitas  vezes  é  necessário  converter  um  SVG  em  imagem  

•  Ex:  para  gerar  uma  visualização  alterna@va  a  browsers  que  não   suportam  SVG  

• 

Isto  pode  ser  feito  dinamicamente  através  do  framework  

Ba@k,  em  aplicações  Web  escritas  em  Java  

• 

Ou  executado  via  linha  de  comando  usando  o  SVG  

Rasterizer  do  Ba\k  

•  http://xmlgraphics.apache.org/batik/tools/rasterizer.html  

• 

Exemplo  de  uso:  default  é  gerar  PNG  

•  O  comando  abaixo  gera  arquivo.png  

 java  -­‐jar  batik-­‐rasterizer.jar  arquivo.svg  

• 

Mas  também  é  possível  gerar  outros  formatos  

•  O  comando  abaixo  gera  um  JPEG  

(21)

na

vi

s

.com.br

Soluções  para  IE  e  browsers  an\gos  

•  Fornecer  uma  imagem  alterna@va  quando  um  browser  não  suporta   SVG  é  recomendado,  mas  há  perdas:  

•  Perde-­‐se  intera@vidade  e  animação  

•  Zoom  perde  qualidade  

•  Imagens  geralmente  são  maiores  

•  Alguns  plug-­‐ins  e  extensões  tentam  converter  SVG  em  VML  ou  

Flash,  usando  JavaScript,  para  que  funcionem  em  browsers  an@gos   e  no  Internet  Explorer  com  mais  recursos  que  imagens  

•  A  maioria  ainda  está  em  versões  alfa  ou  beta,  e  não  implementam   vários  recursos  

•  Mas  alguns  já  conseguem  implementar  intera@vidade  e  animação  

•  Alterna@vas  mais  maduras  (em  12-­‐2010)  

•  SVGWeb  (Google  Code)  

•  Ample  SDK  

•  FlashCanvas  (converte  HTML  5  Canvas  em  Flash)  +  canvg  (converte  

(22)

na vi s .com.br

SVGWeb  

•  hAp://code.google.com/p/svgweb/  

•  Requer  instalação  de  biblioteca  JavaScript  e  hacks  que  usam  Flash  para   exibir  SVG  

•  Browser  precisa  ter  plug-­‐in  Flash  

•  Suporte  SVG  1.1  ainda  limitado  (versão  alfa  –  12/2010)  

•  Suporta  animações  SMIL  simples  e  scrip@ng  

•  Código  SVG  pode  ter  que  ser  adaptado  (evitar  usar  symbol,  filter,  etc.)  

•  Se  browser  suportar  SVG,  o  plug-­‐in  é  ignorado  

•  É  preciso  carregar  via  HTML  (embu\r  dentro  de  um  bloco  <script>  ou  usar   <object>  para  vincular):  

<html>   <script  src="src/svg.js"  data-­‐path="src"  />   <body>      <object  src="svgdemo.svg"                                    classid="image/svg+xml"                                  width="800"  height="600"                                  id="mySVGObject"  />   </body>   Precisa  carregar   biblioteca  antes   de  qualquer  outro   script!  

(23)

na vi s .com.br

Ample  SDK  

•  hAp://www.amplesdk.com/  

•  Também  usa  bibliotecas  JavaScript  

•  Mas  suporta  outros  recursos  além  do  SVG,  como  XUL,  HTML  5,  etc.  

•  Suporta  scripts  rodando  dentro  do  SVG  (intera@vidade  e  animação)  

•  Suporta  gráficos  complexos  (porém  ainda  não  suporta  alguns   elementos  –  pode-­‐se  re-­‐escrever  o  SVG  com  apenas  elementos   suportados)  

•  É  preciso  carregar  via  HTML  (embu@do  ou  externo)  

<!DOCTYPE  html>  

<html>          <head>  

               <script  type="text/javascript"  src="ample/runtime-­‐dev.js"  />  

               <script  type="text/javascript"  src="ample/languages/svg/svg.js"  />          </head>  

       <body>  

               <script  type="application/ample+xml"  src="svgdemo.svg"  />          </body>  

(24)

na

vi

s

.com.br

FlashCanvas  e  canvg  

• 

Na  verdade  são  duas  bibliotecas  

•  É  preciso  usar  as  duas  

• 

FlashCanvas  converte  HTML  5  Canvas  em  Flash  

•  hAp://flashcanvas.net/  

• 

canvg  converte  SVG  em  HTML  5  Canvas  

•  hAp://code.google.com/p/canvg/  

• 

Para  usar  FlashCanvas  apenas  importe  a  biblioteca  

<script  type="text/javascript"  src="flashcanvas.js"/>  

• 

Para  usar  canvg,  crie  um  <canvas>  com  um  id,  e  inicialize  

via  uma  chamada  JavaScript  

<script  type="text/javascript"  src="canvg/rgbcolor.js"/>    

<script  type="text/javascript"  src="canvg/canvg.js"/>                 <script  type="text/javascript">    

     function  init()  {      canvg('tela',  'svgdemo.svg');      }  

</script>  ...  

<body  onload="init()">  

(25)

na vi s .com.br

Exercícios  

• 

Experimente  

• 

Testar  se  seu  browser  suporta  SVG  (como?  

independente,  embu@do  em  HTML5?)  

• 

Digitar  o  SVG  mostrado  como  exemplo,  alterá-­‐lo  e  

observar  o  que  acontece  

• 

Exemplos  e  recursos  

• 

Veja  vários  exemplos  de  SVG  em  exemplos/  

• 

Biblioteca  SVGWeb  e  outras  em  sohware/  

• 

Ferramentas  Sketsa  e  Squiggle  em  sohware/  

Referências

Documentos relacionados

Analisando-se a edificação administrativa submetida a uma explosão hipotética de 80 toneladas de TNT (66,7 toneladas de TNT multiplicado por um fator de segurança de 1,20) de um

Em geral, todo o fruto pode ser usado, a polpa e a semente para fins alimentícios, e atualmente tem-se estudado formas de uso para a casca, como artesanato, compostagem e produção

Se Epstein, que além de cineasta era também poeta, buscava desenvolver uma estética cinematográfica na qual o cinema passaria a não mais narrar, mas a indi- car, cineastas

O Santuário Nossa Senhora de Fátima da Serra Grande está localizado na região serrana do nordeste, na cidade de São Benedito, onde o povo clamou por um espaço sagrado

– Chomsky mostrou que a teoria do comportamento não trata o aspecto de criatividade em linguagem – ela não explica como que uma criança pode. compreender e construir novas

(B) projeto básico aprovado pela autoridade competente e disponível para exame dos interessados em participar do processo licitatório. (C) relatório básico aprovado pela

Esta iniciação científica foi desenvolvida dentro do contexto do projeto de pesquisa Análise de Sensibilidade, realizado pelo laboratório NExO – PUC-Rio e

• Apesar de demonstrar melhora do controle local com radioterapia na adjuvância em pacientes com linfonodos positivos de alto risco, deve-se avaliar quem realmente se benficia de