SVG et javascript. Le fichier SVG: plugin dans la page html. Le fichier SVG est repéré par son nom, ici "carte" Le système de coordonnées



Documents pareils
point On obtient ainsi le ou les points d inter- entre deux objets».

Tp_chemins..doc. Dans la barre "arche 2" couleur claire 1/5 21/01/13

Ceci est un aperçu du livre "QCAD - Introduction à la conception assistée par ordinateur (CAO)" QCAD

Introduction à Adobe Illustrator pour la cartographie et la mise en page

Réalisation de cartes vectorielles avec Word

Initiation au dessin Bitmap

Guide Draw. Chapitre 5 Combiner plusieurs objets

31. OOo Draw Réglages propres à Draw

Construction de la bissectrice d un angle

LES NOUVEAUTÉS DE ARCON 15 PRO

Publication Assistée par Ordinateur

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

Adobe Illustrator Logiciel de dessin vectoriel et de Cartographie Assistée par Ordinateur

PR OC E D U RE S D E B A S E

Utilisation du logiciel GALAAD

.. CSS. Damien Nouvel. Damien Nouvel (Inalco) CSS 1 / 15

TBI et mathématique. Pour vous soutenir dans votre enseignement des mathématiques. Les outils du logiciel Notebook. les ressources internet

2013 Pearson France Adobe Illustrator CC Adobe Press

Aide GeoGebra. Manuel Officiel 3.2. Markus Hohenwarter et Judith Hohenwarter

Designer d escalier GUIDE DE L UTILISATEUR. Stair Designer-1

Manuel de dessin Floorplanner. Floorplanner. Manuel de dessin. Page. Sujet. Sujet. Page Floorplanner Avancé. 1.

Note de cours. Introduction à Excel 2007

La C.A.O (Conception Assistée par Ordinateur). Le logiciel de C.A.O.

Activité 11 : Nuage de points ou diagramme de dispersion

C.F.A.O. : Conception et Fabrication Assistées par Ordinateur.

Guide pour la réalisation d'un document avec Open Office Writer 2.2

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

Initiation à linfographie

Fonctions de plusieurs variables

Vision industrielle et télédétection - Détection d ellipses. Guillaume Martinez 17 décembre 2007

SUPPORT DE COURS FLASH CS4

Cours de D.A.O. Mécanique

L espace de travail de Photoshop

Prise en main du logiciel. Smart BOARD Notebook 10

Infolettre #18 : Les graphiques avec Excel 2010

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

Traceur de courbes planes

Published : License : GPL

Support de formation Notebook

Publier dans la Base Documentaire

Formation tableur niveau 1 (Excel 2013)

COTISANT AU RÉGIME GUIDE D ACCÈS AU COMPTE

CoDeSys Visualisation. Complément par Manuel de CoDeSys 2.3

RÉALISATION DE GRAPHIQUES AVEC OPENOFFICE.ORG 2.3

Tutoriel : logiciel de présentation Openoffice Impress

Maîtriser les fonctionnalités d un traitement de texte (Word OpenOffice)

Fonctions de deux variables. Mai 2011

Les algorithmes de base du graphisme

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Introduction à Expression Web 2

Opérations de base sur ImageJ

Guide de réalisation d une campagne marketing

VOS PREMIERS PAS AVEC TRACENPOCHE

T u t o r i e l s PhotoFiltre

Deux disques dans un carré

MEMENTO D'UTILISATION Du T.N.I. SmartBoard (Version )

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Correction des Travaux Pratiques Organiser son espace de travail

Mise en forme d'un document écrit sous Word - quelques rappels pour consolider ses connaissances -

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Les calques : techniques avancées

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

FICHE 1 : ENTRER DANS LE LOGICIEL POWERPOINT

Fonctions de plusieurs variables

COMMENCER AVEC VUE. Chapitre 1

COMPTE-RENDU «MATHS EN JEANS» LYCEE OZENNE Groupe 1 : Comment faire une carte juste de la Terre?

Optimisation, traitement d image et éclipse de Soleil

INTRODUCTION. Pour réaliser une pièce sur Charlyrobot, il faut le faire en trois étapes :

Salle de technologie

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz mqwertyuiopasdfghjklzxcvbnmqwert

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Parcours FOAD Formation EXCEL 2010

ou clic objet. R rouge B bleu : 65 Le fond votre travail en P :. d étoiles dupliquer. Esbly Page 1 / 5

Synoptique des icônes Interwrite Workspace

Photoshop Séquence 4 - Créer une image de taille personnalisée taille

Calcul intégral élémentaire en plusieurs variables

Introduction W3C... FLOSS Manual Fr - Initiation à Inkscape 7

Baccalauréat L spécialité, Métropole et Réunion, 19 juin 2009 Corrigé.

TP JAVASCRIPT OMI4 TP5 SRC

Ladibug TM 2.0 Logiciel de présentation visuel d'image Manuel de l utilisateur - Français

Publication dans le Back Office

GIMP. Le traitement d'images libre INSTALLATION SUR WINDOWS

SINE QUA NON. Découverte et Prise en main du logiciel Utilisation de bases

Centre de formation: Collège IBN BASSAM - TEMARA. Ce cours est proposé par le professeur d informatique:

FICHE 17 : CREER UN SITE WEB

Un exemple avec WORKSPACE d'interwrite

L interface Outils, palettes, règles, repères, grille Paramétrer les préférences

Utiliser le logiciel Photofiltre Sommaire

Cours Excel : les bases (bases, texte)

TP1 : Initiation à l algorithmique (1 séance)

EXERCICES DE REVISIONS MATHEMATIQUES CM2

Mon aide mémoire traitement de texte (Microsoft Word)

Nom : Groupe : Date : 1. Quels sont les deux types de dessins les plus utilisés en technologie?

8.1 Généralités sur les fonctions de plusieurs variables réelles. f : R 2 R (x, y) 1 x 2 y 2

F411 - Courbes Paramétrées, Polaires

Prise en main rapide

Transcription:

Le fichier SVG: plugin dans la page html SVG et javascript <embed width="600" height="488" src="europe.svg" name="carte" align="left"> Le fichier SVG est repéré par son nom, ici "carte" Le système de coordonnées Par défaut, l'angle supérieur gauche a pour coordonnées 0;0 et l'angle inférieur droit width;height. On peut redéfinir ces coordonnées avec viewbox="-2760 0 5559 4524" Attention: toutes les coordonnées sont entières On peut définir de nouveaux cadrages avec les balises <svg> <svg width="200" height="200"> <rect style="fill:yellow" width="100" height="100" /> par défaut x=0,y=0 <svg x="100" y="100" width="100" height="100"> <rect style="fill:orange" width="100" height="100" /> par défaut x=0,y=0 Les objets géométriques Suite de tracés enchaînés: <path d=" "/> Commandes Majuscules: coordonnées absolues minuscules: coordonnées relatives A a Arc d'ellipse tracé à partir du point courant paramètres: demi-axe horizontal, demi-axe vertical, 3 fois 0 ou 1 pour définir l'arc à tracer, coordonnées du point d'arrivée Comme sont définis le point de départ, le point d'arrivée et les axes de l'ellipse, il y a 4 arcs possibles. C c courbe de Bézier cubique C -445,2375-1595,3600 483,2226 H h ligne horizontale H 100 L l joint le point L 50 100 L est implicite dans la liste M m va au point sans tracer M 100 200 Q q courbe de Bézier quadratique S s courbe lissée T t courbe de Bezier quadratique lissée V v ligne verticale V 50 Z z ferme la ligne polygonale z Rectangle: <rect id="bkgrnd" x="0" y="0" width="400" height="400" style="fill:#e0e0e0"/> x et y coordonnées de l'angle supérieur gauche, width est la largeur et height la hauteur Ellipse: <ellipse id="forme" cx="200" cy="300" rx="50" ry="30" style="fill:#aacc00"/> cx et cy sont les coordonnées du centre, rx et ry les demi-axes 1

Cercle: <circle id="forme" style="stroke:black; fill:none" cx="50" cy="50" r="10" /> cx et cy sont les coordonnées du centre, r le rayon Ligne: <line x1="50" y1="50" x2="100" y2="50" /> Ligne brisée: <polyline points="50,50,75,150,100,50,125,150,150,50,175,150" /> Polygones: <polygon points="99,50,143,125,56,124,99,50" /> Les styles Couleurs Couleurs prédéfinies: black silver gray white maroon red purple fuchsia green lime olive yellow navy blue teal aqua Couleur RVB donnée par ses composantes (0 à 255) en hexadécimal "#A0B1C2" en décimal rgb(255,0,0) en pourcentage rgb( 100%,0%,0%) Couleur de tracé: style="stroke:black " Couleur de remplissage: style="fill:black" Opacité et transparence style="fill:blue;fill-opacity:0.2" le coefficient va de 0 (rien n'est dessiné à 1 opaque) Attention: les objets sont dessinés dans l'ordre du fichier, le dernier de la liste est au-dessus des autres Epaisseur de ligne: style="stroke-width:1" Styles pour joindre les lignes: <path style="stroke-linejoin:miter" d=".."/> <path style="stroke-linejoin:round" d=".."/> <path style="stroke-linejoin:bevel" d=" "/> Styles de lignes <path d="m300, 50h200" style="stroke-linecap:round; strokedasharray:30 20 15 20" /> <path d="m300,100h200" style="stroke-linecap:square; strokedasharray:30 20 15 20" /> <path d="m300,150h200" style="stroke-linecap:butt; strokedasharray:10 5 20 5" /> <path d="m300,200h200" style="stroke-linecap:butt; strokedasharray:40 5 25 5" /> <path d="m300,250h200" style="stroke-linecap:butt; strokedasharray:5 5" /> 2

Le texte Polices: <style="font-family:times Roman" > ou < style="font-family:helvetica;font-style:italic"> Taille: < style="font-size:18"> Couleur: <style="fill:red"> Alignement sur la position définie par x et y <text x="280" y="70" >Texte aligné à gauche par défaut</text> <text x="280" y="100" style="text-anchor:start">texte aligné à gauche</text> <text x="280" y="130" style="text-anchor:middle">texte centré</text> <text x="280" y="160" style="text-anchor:end">texte aligné à droite</text> Pour changer la couleur d'un mot au milieu d'une phrase: <tspan style="fill:red">rouge</tspan> Les textures Exemple de texture avec un gradient circulaire Définition de la texture <defs> <radialgradient id="grad1" cx="250" cy="250" r="300" fx="250" fy="250"> <stop offset="0%" style="stop-color:#ff0000"/> <stop offset="25%" style="stop-color:#0000ff"/> <stop offset="50%" style="stop-color:#00ff00"/> <stop offset="75%" style="stop-color:#0000ff"/> <stop offset="100%" style="stop-color:#ff0000"/> </radialgradient> </defs> Utilisation de la texture ainsi définie pour remplir un rectangle: <rect style="fill:url(#grad1)" x="50" y="50" width="400" height="400" /> Autres exemples de gradients: <lineargradient id="lingrad1" x1="0" y1="0" x2="350" y2="0"> <stop offset="0" style="stop-color:green"/> <stop offset="0.5" style="stop-color:red"/> <stop offset="1" style="stop-color:yellow"/> </lineargradient> 3

Les transformations Des transformations peuvent être appliqués aux objets (y compris le texte) Sont définies la translation: <rect height="100" width="30" transform="translate(130 50)"/> Le rectangle dont l'angle de départ avait pour coordonnées (100;30) sera translaté de 130 en x et 50 en y, son angle de départ sera alors (230;80) Attention pour les transformations, le centre est obligatoirement (0;0) et les ordonnées sont orientées du haut vers le bas.. la rotation: <rect height="100" width="30" transform="rotate(60)"/> l'angle est en degrés, orienté dans le sens trigonométrique pour le repère et donc le sens contraire pour la représentation habituelle du plan. les symétries par rapport aux axes: <rect height="100" width="30" transform="skew-x(40)"/> <rect height="100" width="30" transform="skew-y(40)"/> l'homothétie généralisée avec un rapport en x et un autre en y: <rect height="100" width="30" transform="scale(2 3)"/> et toute transformation à partir d'une matrice: <rect height="100" width="50" transform="matrix(0 1 1 0 80 50)"/> Sur cet exemple, l'angle du rectangle de départ est à (0;0) valeurs par défaut de x et y. La matrice (0 1 1 0) est celle de la symétrie axiale par rapport à la 1 ère bissectrice, l'autre pour le plan habituel, et une translation de (100;100) est appliquée, d'où le résultat: Avec le plugin d'adobe, le résultat le plus fiable est obtenu à partir des matrices des transformations Les Animations Un exemple, un disque tourne en s'étirant et se rétractant: <svg> <g transform="translate(160 150)"> <circle id="circle1" style="fill:#3333ff;stroke-width:1;opacity:.8" cx="0" cy="0" r="30"> <animatetransform attributename="transform" type="rotate" values="0;360" additive="sum" dur="3s" repeatdur="indefinite"/> <animatetransform attributename="transform" type="scale" values="4 1;0.5 1;4 1" additive="sum" dur="4s" repeatdur="indefinite"/> </circle> Notons que les transformations ayant (0;0) pour centre, on définit le disque centré en (0;0), puis on lui applique une translation (160 150) pour qu'il soit visible. On peut évidemment commander une animation avec la souris en cliquant sur un objet. Voir plus loin la gestion des actions de la souris sur le dessin. 4

Accès aux objets: Un exemple d'objet: une ligne polygonale fermée <g id="france" style="stroke:#131516;stroke-width:3;stroke-linejoin:round;fill:#deecb3"> <path d="m-1006 3752 l 25-36 8-31 13-12 0-102 -17-17 -17 21 0 16-58 19-10 77 20 36 27 29 9 0 z"/> Appels javascript depuis le fichier HTML Récupérer la couleur du remplissage a=document.carte.getsvgdocument().getelementbyid('france').getattribute('style'); b=a.indexof('fill:');couleur=a.substring(b+5,b+12); ( b vaut dans notre exemple "stroke:#131516;stroke-width:3;stroke-linejoin:round;fill:#deecb3 ") Attribuer une couleur de remplissage à l'objet document.carte.getsvgdocument().getelementbyid('france').getstyle().setproperty('fill', '#FF0000') Montrer/cacher cet objet document.carte.getsvgdocument().getelementbyid('france').getstyle().setproperty("display","none")} document.carte.getsvgdocument().getelementbyid('france').getstyle().setproperty("display","inline") Modifier un objet Depuis la page HTML Tous les attributs d'un objet sont modifiables Ici le plugin est nommé "figure", l'objet est un rectangle, nous modifions sa largeur document.figure.getsvgdocument().getelementbyid('id_objet').setattribute('width',200); En utilisant une fonction définie dans le fichier svg Nous voulons dessiner un triangle dont les coordonnées des sommets sont envoyées Depuis le fichier HTML, appel en javascript: window.triangle(xa,ya,xb,yb,xc,yc); Dans le fichier svg: Au chargement, appel de la fonction OnLoadEvent(evt) pour définir l'objet window.triangle <svg id="root" xml:space="preserve" width="400" height="400" onload="onloadevent(evt)">.. Le tracé est défini, vide au départ, il a l'id "trace1" <path id="trace1" style="stroke-width:1; stroke:blue; fill:none" d=""/> <script><![cdata[ Fonction triangle qui construit la chaîne d function triangle(a,b,c,d,e,f) { var str="m"; str+=a+" "+b+" "+c+" "+d+" "+e+" "+f+" z"; trace1.setattribute("d", str);} Déclaration de l'objet window.triangle function OnLoadEvent(evt) { var doc = evt.gettarget()!= null? evt.gettarget().getownerdocument() : null; if (doc!= null) { trace1 = doc.getelementbyid("trace1"); window.triangle = triangle;}} ]]></script> Nous aurions le même effet en plus simple avec dans le fichier HTML, l'appel: tri="m "+xa+" "+ya+" "+xb+" "+yb+" "+xc+" "+yc+" z"; document.figure.getsvgdocument().getelementbyid("trace1").setattribute("d",tri); 5

Travailler à la souris sur le dessin Nous pouvons récupérer les actions de la souris sur le dessin Un exemple simple: Quand la souris est sur le dessin, les coordonnées du pointeur sont récupérées et affichées dans un formulaire nommé "coords" de la page HTML, quand la souris sort du rectangle, l'affichage est vide. <?xml version="1.0" encoding="iso-8859-1"?> <svg id="root" xml:space="preserve" width="400" height="400"> <script><![cdata[ var xm; var ym; function coordonnees(evt) {xm=evt.getclientx();ym=evt.getclienty(); document.coords.x.value=xm;document.coords.y.value=ym;} function sorti(evt) {document.ou.t1.value="";document.ou.t2.value="";} ]]></script> <g onmousemove="coordonnees(evt)" onmouseover="coordonnees(evt)" onmouseout="sorti(evt)"> <rect id="bkgrnd" x="0" y="0" width="400" height="400" style="fill:#e0e0e0"/> Autre exemple: déplacer une figure en cliquant à la souris et en déplaçant la souris: <?xml version="1.0" encoding="iso-8859-1"?> <svg id="root" xml:space="preserve" width="400" height="400" onload="onloadevent(evt)"> <script><![cdata[ var appui=false; var xm; var ym; function accrocher(evt) {if (evt.gettarget().getattribute("id")=="bkgrnd") {xm=evt.getclientx();ym=evt.getclienty();appui=true; rectangle.setattribute("x",xm); rectangle.setattribute("y",ym);}} function bouger(evt) {if (appui==true) {xm=evt.getclientx();ym=evt.getclienty(); rectangle.setattribute("x",xm); rectangle.setattribute("y",ym);}} function lacher(evt) {if (evt.gettarget().getattribute("id")=="rectangle") {appui=false;}} function OnLoadEvent(evt) { var doc = evt.gettarget()!= null? evt.gettarget().getownerdocument() : null; if (doc!= null) { rectangle=doc.getelementbyid("rectangle");}} ]]></script> <g onmousemove="bouger(evt)" onmousedown="accrocher(evt)" onmouseup="lacher(evt)"> <rect id="bkgrnd" x="0" y="0" width="400" height="400" style="fill:#e0e0e0"/> <rect id="rectangle" x="0" y="0" width="100" height="50" style="fill:#cc0000"/> Quand on clique, le rectangle est collé à la souris et suit ses mouvements tant que le bouton est pressé. 6