Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 13/07/2009, à 07:33

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

des nouvelles ; beaucoup de galères cette semaine, lorsque je me suis rendu compte d'une très grave lacune de la bibliothèque goocanvas ; l'absence de fonction move_to pour déplacer les objets ! sad
Cette limite est connue(et assumée)  des devs, qui n'ont pas fait d'efforts pour y remédier. Exemple de discussion ici : http://bugzilla.gnome.org/show_bug.cgi?id=556145 et de tentative de remédiation (en C++) ici : http://www.murrayc.com/blog/permalink/2 … periences/ ; aucune de ces solutions ne convenant, j'ai donc trouvé une méthode personnelle, légère en mémoire, pour parvenir au même résultat, que je vous indique ici si vous en avez besoin en tant qu'utilisateur de goocanvas.

Le principe est le suivant : chaque "objet" (cercle, ligne , boîte) utilisé sur le canvas est un G_OBJECT disposant d'un champ nommé "title" que l'on peut utiliser librement. J'ai donc tout simplement "surchargé" les primitives de dessin, en définissant un code sur une lettre, associé à chaque primitive de dessin ; exemple pour un rectangle, j'utilise la lettre-clé "R" :

   str= g_strdup_printf ("%s",gdk_color_to_string(&PenColor));  
    str1 = g_strdup_printf ("%s",gdk_color_to_string(&FillColor));    
    pDrawings=goo_canvas_rect_new(ancetre,
       x1t+EDITOR_CANVAS_MARGINS,y1t+EDITOR_CANVAS_MARGINS,
	   x2t-x1t,y2t-y1t,
	   "line-width", epl,
	   "radius-x", xr,
	   "radius-y", yr,
	   "stroke-color", str,
	   "fill-color", str1,
	   NULL);	
	g_object_set(G_OBJECT(pDrawings),"title","R",NULL);	
	g_free(str);
	g_free(str1);

mais les difficultés ne s'arrêtent pas là ! Chaque objet a des champs différents ; exemple, pour un rectangle, deux champs "x" et "y" définissant le coin supérieur gauche, quant aux ellipses, les champs deviennent "center_x" et "center_y". Donc, une fonction de déplacement doit être assez intelligente pour modifier son propre comportement selon la nature de l'objet graphique à déplacer. Voici donc ce que donne cette fonction chez moi (elle n'est pas optimisée, car encore en test) ; le switching se fait selon la lettre-clé, et cela permet de "lire" et "modifier" les bons champs de l'objet, ce qui provoque le déplacement voulu.

void item_move_to(GooCanvasItem *item, gdouble xtran, gdouble ytran)
{
	gchararray title;
	gdouble x,y;/* pour les rectangles */
	gdouble xc,yc; /* pour les ellipses */
	
	g_object_get(item,"title",&title,NULL);
    
    /* switcher selon le type d'objet */
    /* récupérer anciennes coordonnées */
    /* détruire ancienne position */
    /* recréer à la nouvelle position */

   /* rectangle */
    if (strcmp("R",title)==0)
     {      
       g_object_get(item,"x",&x,"y",&y,NULL);
       g_object_set(item,"x", x+xtran, "y", y+ytran, NULL);
       return;
     }
    /* ellipse */
    if (strcmp("C",title)==0)
     {
       g_object_get(item,"center_x",&xc,"center_y",&yc,NULL);
       g_object_set(item,"center_x",xc+xtran,"center_y",yc+ytran,NULL);
       return;
     }

l'intérêt de tout ceci, c'est que l'éditeur vectoriel est maintenant capable de gérer le déplacement/ repositionnement des objets. De plus, il sera aisé de dériver de la fonction item_move_to() une procédure de lecture/écriture des données graphiques sur fichier, grâce au switching et à l'accès aux G_OBJECTS. smile

Dernière modification par kevlar (Le 13/07/2009, à 07:46)

Hors ligne

#52 Le 13/07/2009, à 07:53

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

une petite démo :
C'est quoi ce dessin ????? :
mini_090713085626839249.png

Après quelques drag-n'drop et la zolie fonction item_move_to, on comprend mieux ce qui se passe ! lol
mini_090713085659345457.png

Hors ligne

#53 Le 13/07/2009, à 23:17

cyril380

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

Salut kevlar, je vois que tu maitrise pas mal gtk, peut être peux tu nous renseigner:

http://forum.ubuntu-fr.org/viewtopic.php?id=329771  (en bas de page)

#54 Le 27/07/2009, à 12:59

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

je viens d'intégrer au sein d'un seul programme les deux modules (table de montage, ou timeline en anglais wink) et éditeur vectoriel. Depuis une bonne semaine, plusieurs fonctions ont été ajoutées à l'éditeur : déplacement d'objets, redimensionnement d'objets. La rotation est possible, mais ne fonctionne pas encore de manière satisfaisante (impossible de déplacer correctement un objet après rotation ... est-ce un bug dans Goocanvas, ou une erreur de ma part ... à voir:()
Voici une copie d'écran de l'état actuel des progrès :
mini_090727020033306092.png

là, je vais prendre une semaine de semi-repos, en débugant le tout, et en ajoutant les dialogues de choix des couleurs, de trait, etc...

Dernière modification par kevlar (Le 27/07/2009, à 13:01)

Hors ligne

#55 Le 02/08/2009, à 13:05

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

voilà, une semaine après :
- choix des couleurs implémenté.
- choix de la fonte, du texte à saisir.
Et surtout, depuis ce matin, gestion des profondeurs des calques, avec des éléments graphiques qui se déplacent en suivant la position du calque dans la liste. Par contre, contrairement à l'original (Macromedia Flash), le calque en haut de la liste, est, pour le moment, considéré comme le calque de fond. Copie d'écran :
mini_090802020512420251.png

Hors ligne

#56 Le 02/08/2009, à 15:24

leibowitz

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

Beau travail. J'espère sincèrement que tu iras très loin dans ce projet.

Courage pour la suite

Hors ligne

#57 Le 02/08/2009, à 18:52

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

Merci de tes encouragements.  C'est vrai que cette semaine ça a bloqué. Maintenant, il faut que j'attaque les "scénarios" de l'animation indexés sur les images-clefs : rotations, déplacements, effets de zoom, etc ...

Hors ligne

#58 Le 03/08/2009, à 20:49

Tyler_Durden

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

très très bon travail, chapeau et bonne continuation

Hors ligne

#59 Le 04/08/2009, à 07:48

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

merci : je vais commencer à intégrer ce qui s'appelle sous le "vrai" Flash les fonctions d'interpolation de mouvement indexées sur les images-clefs (motion tween).

Hors ligne

#60 Le 04/08/2009, à 10:34

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

voici un exemple de ce que donne la table de montage avec des interpolations de mouvement entre les images-clefs :
mini_090804113456465989.png
Comme vous le voyez, j'ai reproduit la symbolique d'Adobe Flash. Cependant, j'aimerais avoir des suggestions concernant les métaphores pour :
- un mouvement de rotation
- un mouvement de zooming.
Il faut que le dessin correspondant puisse être décrit par un svgpath (un "chemin" décrivant une suite de mouvements de curseur et de dessins, comme sur l'exemple ci-dessous, qui correspond aux flèches bleues :

svgpath = g_strdup_printf("M %d %d  L %d %d L %d %d M %d %d L %d %d",
			                 first_kf*RULER_WIDTH+RULER_WIDTH,ligne*RULER_HEIGHT+RULER_HEIGHT/2,
			                 last_kf*RULER_WIDTH,ligne*RULER_HEIGHT+RULER_HEIGHT/2,
			                 last_kf*RULER_WIDTH-4,ligne*RULER_HEIGHT+RULER_HEIGHT/2-4,
			                 last_kf*RULER_WIDTH,ligne*RULER_HEIGHT+RULER_HEIGHT/2,
			                 last_kf*RULER_WIDTH-4,ligne*RULER_HEIGHT+RULER_HEIGHT/2+4);
			   /* on trace le dessin approprié */
			   time_line_item= goo_canvas_path_new(root,
			                     svgpath,
	                            "stroke-color", "blue",
	                             NULL);
	           g_free(svgpath);

Hors ligne

#61 Le 20/08/2009, à 11:40

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

Des nouvelles, car je n'ai pas pu me consacrer entièrement au projet depuis quelques semaines ... hmm
Connaissant mieux le "vrai" Adobe Flash, j'ai dû reprendre mon travail sur plusieurs plans :
-1/ possibilité de poser des images-clés vides.
-2/ possibilité d'avoir des dessins différents  sur chaque image-clé, ce qui a nécessité de reprendre une partie du modèle de stockage. En tout cas, ça commence à fonctionner, comme le montre la copie d'écran ci-dessous :
mini_09082012410191663.png
sur le même calque, j'ai posé deux dessins différents, l'un sur l'image-clé 1, l'autre sur l'image-clé 30. Donc, à ce stade, il est quasiment possible de faire de l'animation type onion-skin (apparition, disparition d'objets pour produire l'animation).

Je suis en train également de me poser des questions sur le moteur de rendu SWF (Flash) ; initialement, je souhaitais interfacer mon programme avec  le compilateur "swfc" issu des swftools. Or, pour des raisons que la raison ignore, ce compilateur est très mal documenté, alors qu'il s'agit bien d'un programme open source ! J'ai découvert récemment swfmill, qui lui est clairement documenté. Si quelqu'un a un avis, je suis preneur ... smile. Peut-être existe-t-il une autre voie ?

Quand j'aurai fait ce choix, je pourrai assez vite commencer à produire de petites animations. Je n'ai pas encore stabilisé le format que va utiliser mon programme d'animation pour ses propres données ( à priori : du texte zippé, ce qui, en cas de crash, permet de reconstituer les fichiers sans tout perdre ... c'est ce qui est fait par le SVG, l'ODF ...).

De même, si quelqu'un avait des liens sur le format de fichier "flash swf" APRES compilation (donc le format binaire ...) je pourrai peut-être, à long terme, créer ma propre API d'exportation.

Dernière modification par kevlar (Le 20/08/2009, à 11:49)

Hors ligne

#62 Le 30/08/2009, à 13:50

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

et après une semaine, voici les dernières infos :
- légère reprise des menus pour se rapprocher du "modèle" de chez Adobe, et mise en place des mêmes raccourcis quand c'est possible.
- implémentation de la sauvegarde/relecture des animations : il doit bien sûr rester un max de bugs, mais, sur le principe, cela fonctionne ! Une animation préparée à la session précédente peut être maintenant réutilisée. Pour ce travail, il a fallu utiliser une version de goocanvas qui n'est plus celle des dépôts Hardy (0.9) mais la 0.11 minimum ; pas de problème, ils en sont déjà à la version 0.15 de leur côté ! big_smile ; ainsi, chaque objet graphique a maintenant un nom, sur le même principe utilisé par les programmeurs d'Inkscape. Et vous allez voir que cette simple astuce a rendu possible bien des progrès ! Ainsi, le premier rectangle que je dessine porte le nom de R1, si après cela je dessine un cercle, il va s'appeler C2, etc.
Pourquoi ? Pour faire comme chez Adobe, si mon pifomètre décompileur fonctionne correctement ; en effet, avec l'éditeur Adobe Flash original, quand on crée une nouvelle image-clé, celle-ci recopie le contenu de la précédente. Il lui faut donc bien dupliquer les éléments graphiques. Mais, comme ces éléments peuvent être déplacés lors de l'animation, il faut que la référence reste constante, elle, d'où l'utilisation du nom de chaque élément.De plus, chez Adobe, il est possible d'utiliser des éléments dupliqués qui vont subir une animation, tout en permettant l'apparition de nouveaux éléments non animés, sur la même image-clé ! Quand j'ai compris cela, j'ai passé quelques temps (:() à reprendre mon code, mais normalement c'est bon.
- enfin, j'ai commencé à écrire la procédure d'exportation vers le format Flash (swf) ; pour le moment, elle ne fait pas grand chose (juste exporter les dimensions, couleurs, fond d'écran) car j'étais bloqué par la réécriture du code pour le reste. Mais là encore, je suis maintenant plus confiant, et je devrais commencer à coder cela ces jours-ci.:P

Dernière modification par kevlar (Le 30/08/2009, à 14:00)

Hors ligne

#63 Le 29/12/2009, à 11:54

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

là, je suis content ! smile cela fait deux jours que j'ai repris ce programme, après 4 mois d'arrêt, et ça y est : première animation produite entièrement en mode wysiwyg avec un programme Gtk, du moins je le pense ;
Voici cette animation ; aucun intérêt artistique, juste pour valider le concept :
http://site.voila.fr/kevlar/temp/premiere.swf

Il reste des milliards de choses à faire, mais les idées sont claires, on peut avancer ! big_smile

Dernière modification par kevlar (Le 29/12/2009, à 11:57)

Hors ligne

#64 Le 29/12/2009, à 12:08

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

et un deuxième essai ; paradoxalement, les problèmes ne viennent pas du fonctionnement de l'exportation, mais de certaines éléments de l'éditeur (sélection, déplacement) yikes
http://site.voila.fr/kevlar/temp/2.swf

Hors ligne

#65 Le 30/12/2009, à 13:02

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

aujourd'hui, après une correction de bug de l'éditeur (choix de couleur de remplissage modifiait le bord de la page ! mad) premier essai d'utilisation des "images-clés" avec les fonctions de "jumping" ; contrairement aux essais d'hier, je ne dessine pas plusieurs images pour simuler un mouvement, mais cette fois-ci, je prends un objet que je déplace à différents endroits de l'écran ;
http://site.voila.fr/kevlar/temp/jumping1.swf

Hors ligne

#66 Le 30/12/2009, à 14:39

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

bon, continuons : nous allons vérifier s'il est possible de créer un véritable "clip" : celui-ci va contenir un décor d'arrière-plan (un champ d'étoiles) sur lequel va se déplacer un objet volant (ce sera sur un autre calque) ; et, surtout, ce sera une véritable animation, dans le sens où l'objet se déplace par interpolation de mouvement, comme dans Adobe Flash (r).
Voici une copie d'écran en cours de travail :
capture2c.th.png

et voici le résultat sous forme d'animation :
http://site.voila.fr/kevlar/temp/interp … ouches.swf

Dernière modification par kevlar (Le 30/12/2009, à 14:43)

Hors ligne

#67 Le 31/12/2009, à 17:34

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

après quelques heures, mise en place de l'exportation des ellipses, quelques bugs supplémentaires corrigés, et un petit jeu pour se détendre :
http://site.voila.fr/kevlar/temp/billard.swf

Hors ligne

#68 Le 31/12/2009, à 20:43

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

un point intéressant : comment tracer des lignes de manière simple, dans un fichier Flash, sans utiliser ActionScript ? En détournant une instruction du compilateur swfc des swftools. Exemple de fichier .sc traçant une ligne simple :

.flash bbox=300x300 version=6 name="flash.swf"
.box fond width=300 height=200 fill=white color=yellow line=2

#une méthode très simple pour faire une ligne entre la position 10.5-10.5 et la position 150.5 150.5 !
.outline line_outline:
        M 10.5 10.5 L 150.5 150.0
.end
.filled line outline=line_outline fill=#000000 color=#000000
.put fond
.put line
.end #end swf movie

une fois passé dans la moulinette du programme, on peut développer une animation primitive et sinusoïdale lol:lol::lol:
http://site.voila.fr/kevlar/temp/lignes.swf

Sur ce, bonne année à tous ! smile:):):)

Hors ligne

#69 Le 31/12/2009, à 21:50

Khyl

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

Bravo, très sympa ce que tu arrives à produire, continue d'avancer, ça commence à bien prendre forme.

Hors ligne

#70 Le 01/01/2010, à 09:22

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

merci, à chaque jour suffit son lot de bugs lol mais ça avance, c'est l'essentiel !

Hors ligne

#71 Le 01/01/2010, à 15:57

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

comme vous avez dû le remarquer, aucun de mes exemples de fichiers flash(tm) en ligne ne contenait de texte, alors même que le logiciel sait gérer les zones de texte. Pourquoi ? Parce que le compilateur swfc a une exigence ; connaître le chemin d'accès EXACT aux fontes utilisées, sous peine d'erreur de compilation. Exemple :

.font myfont "arial.ttf"

ne marche pas, car il ne sait pas où se trouve le fichier contenant la fonte ! sad

Par contre, la tournure :

.font myfont "/usr/share/fonts/TTF/arialbd.ttf"

fonctionne ! big_smile

Vous avez dû vous dire alors, mais c'est tout simple, GTk/Cairo/Pano doit bien avoir une fonction permettant, connaissant la fonte choisie (exemple : Arial 12) me donner le fichier contenant la fonte ?
Que non ! Rien n'existe, et après 3 heures de recherche l'autre jour, rien trouvé d'intéressant, sauf ce lien qui traitait de l'OpenGl : http://cpansearch.perl.org/src/MLEHMANN … ngo-font.c
Eh bien, aujourd'hui, après adaptation de son code(merci à lui), j'arrive à peu près à déterminer le fichier TTF connaissant une fonte choisie par l'utilisateur ! smile:):)

Dernière modification par kevlar (Le 01/01/2010, à 16:03)

Hors ligne

#72 Le 01/01/2010, à 16:06

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

Voici donc le code (non débugué) ; dans cette fonction, j'ouvre un dialogue standard Gtk pour choisir une fonte, et je parviens à récupérer le NOM du fichier contenant la fonte ... Voilà, nous ne sommes plus très loin de l'intégration du texte dans les animations wink;);)

//*****************************
 * choix de la fonte ;
 * en sortie, donne un pointeur
 * sur une structure de type
 * PangoFontDescription
 * ****************************/
PangoFontDescription *dlg_fontes(gchar *message)
{
	GtkResponseType result;
    PangoFontDescription *font_desc=NULL;
	
	FcPattern *FontPattern;
	FcPattern *matched;
	FcResult MatchingResult;
    FcChar8 *filename2 = NULL;
	gint id;
	FT_Error error;
	 
    GtkWidget *dialog = gtk_font_selection_dialog_new(message);
    result = gtk_dialog_run(GTK_DIALOG(dialog));

    if (result == GTK_RESPONSE_OK || result == GTK_RESPONSE_APPLY)
     {      
      gchar *fontname = gtk_font_selection_dialog_get_font_name(
                            GTK_FONT_SELECTION_DIALOG(dialog));
      font_desc = pango_font_description_from_string(fontname);
	  printf("family de la fonte :%s\n",pango_font_description_get_family (font_desc));
      g_free(fontname);
	  /* utiliser Pango pour trouver le nom du fichier de la fonte */
	  FontPattern = FcPatternBuild (NULL,
			 FC_FAMILY,    
			 FcTypeString, pango_font_description_get_family (font_desc),
			 FC_PIXEL_SIZE, FcTypeDouble, 
			 (double)pango_font_description_get_size (font_desc) / PANGO_SCALE,
			 NULL);
	  /* tester le 'matching' de la fonte utilisée, c'est à dire celle
	   * qui s'en rapproche sur le système */
	  matched = FcFontMatch (NULL, FontPattern, & MatchingResult);
	  /* on teste le fichier */
	  FcPatternGetString (matched, FC_FILE, 0, &filename2);
	  printf("fichier de fonte:%s\n",filename2);    
	  /* réagir si problème de fichier */
     }
    gtk_widget_destroy(dialog);	
	return font_desc;
}

J'allais oublier :
dans l'en-tête du programme, ajouter les deux includes suivants :

/* les deux includes ci-dessous sont indispensables pour accéder aux patterns des fontes */
#include "pango/pangofc-font.h"
#include "pango/pangofc-fontmap.h"

Dernière modification par kevlar (Le 01/01/2010, à 16:11)

Hors ligne

#73 Le 01/01/2010, à 23:01

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

après bien des bugs découverts et pas encore résolus, un petit clin d'oeil pour le début d'année 2010 !
http://site.voila.fr/kevlar/temp/ba_ubuntu.swf
big_smile

Dernière modification par kevlar (Le 01/01/2010, à 23:02)

Hors ligne

#74 Le 03/01/2010, à 14:26

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

aujourd'hui, mise en place de la prévisualisation dans l'onglet lecteur, pour le moment limitée aux fonctions <play> et <stop>
cap3janv.th.png

Hors ligne

#75 Le 06/01/2010, à 21:11

kevlar

Re : Ella : projet de logiciel d'animation Flash & SVG pour Linux

Bien, j'ai modifié beaucoup de choses en interne, un peu le format de fichier, et dialogues, plus la barre d'icônes, ce qui me permet maintenant de gérer la transparence des objets (canal alpha) ; je ne peux pas encore faire d'interpolations de transparence, mais je peux la simuler comme sur cette démo : le fond (texte) est opaque à 100%. Les deux rectangles mobiles sont en transparence (alpha =25 %) et se superposent en se déplaçant tout en laissant voir le fond.:)
Fichier démonstration ici :  http://site.voila.fr/kevlar/temp/transparences1.swf smile

Dernière modification par kevlar (Le 06/01/2010, à 21:14)

Hors ligne