Blame platform-demos/fr/magic-mirror.vala.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="magic-mirror.vala" xml:lang="fr">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Magic mirror (Vala)</title>
Packit 1470ea
    <link type="guide" xref="vala#examples"/>
Packit 1470ea
Packit 1470ea
    <desc>Use your webcam as a mirror using the GStreamer framework and GTK+</desc>
Packit 1470ea
Packit 1470ea
    <revision pkgversion="0.1" version="0.1" date="2011-03-19" status="review"/>
Packit 1470ea
    <credit type="author">
Packit 1470ea
      <name>Daniel G. Siegel</name>
Packit 1470ea
      <email its:translate="no">dgsiegel@gnome.org</email>
Packit 1470ea
    </credit>
Packit 1470ea
    <credit type="author">
Packit 1470ea
      <name>Johannes Schmid</name>
Packit 1470ea
      <email its:translate="no">jhs@gnome.org</email>
Packit 1470ea
    </credit>
Packit 1470ea
    <credit type="editor">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2013</years>
Packit 1470ea
    </credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luc Rebert,</mal:name>
Packit 1470ea
      <mal:email>traduc@rebert.name</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Alain Lojewski,</mal:name>
Packit 1470ea
      <mal:email>allomervan@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011-2012</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luc Pionchon</mal:name>
Packit 1470ea
      <mal:email>pionchon.luc@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Bruno Brouard</mal:name>
Packit 1470ea
      <mal:email>annoa.b@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011-12</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luis Menina</mal:name>
Packit 1470ea
      <mal:email>liberforce@freeside.fr</mal:email>
Packit 1470ea
      <mal:years>2014</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
<title>Miroir magique</title>
Packit 1470ea
Packit 1470ea
<synopsis>
Packit 1470ea
  

Your mirror just fell off the wall and broke into a thousand pieces — but you need a mirror to shave your beard off or add some makeup! You only have 15 minutes left before catching the bus to work. So what can you do?

Packit 1470ea
  

Dans ce tutoriel, nous allons faire un programme qui va vous permettre d'utiliser votre webcam comme miroir. Vous apprendrez comment :

Packit 1470ea
  <list>
Packit 1470ea
    <item>

créer une application GTK+,

</item>
Packit 1470ea
    <item>

accéder à votre webcam en utilisant GStreamer et intégrer le résultat dans une fenêtre,

</item>
Packit 1470ea
    <item>

récupérer des photos de votre webcam,

</item>
Packit 1470ea
  </list>
Packit 1470ea
  

Vous avez besoin de ce qui suit pour pouvoir suivre ce tutoriel :

Packit 1470ea
  <list>
Packit 1470ea
    <item>

l'installation du paquet <link xref="getting-ready">Anjuta IDE</link>,

</item>
Packit 1470ea
    <item>

l'installation des paquets GTK, GStreamer et d'un compilateur Vala,

</item>
Packit 1470ea
    <item>

des connaissances de base d'un langage de programmation d'objets.

</item>
Packit 1470ea
  </list>
Packit 1470ea
</synopsis>
Packit 1470ea
Packit 1470ea
<media type="image" mime="image/png" src="media/magic-mirror.png"/>
Packit 1470ea
Packit 1470ea
<section id="anjuta">
Packit 1470ea
  <title>Création d'un projet dans Anjuta</title>
Packit 1470ea
  

Avant de commencer à programmer, vous devez ouvrir un nouveau projet dans Anjuta. Ceci crée tous les fichiers qui vous sont nécessaires pour construire et exécuter votre programme plus tard. C'est aussi utile pour tout regrouper en un seul endroit.

Packit 1470ea
  <steps>
Packit 1470ea
    <item>
Packit 1470ea
    

Lancez Anjuta et cliquez sur <guiseq><gui>Fichier</gui><gui>Nouveau</gui><gui>Projet</gui></guiseq> pour ouvrir l'assistant de création de projet.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Choose <gui>GTK+ (simple)</gui> from the <gui>Vala</gui> tab, click <gui>Forward</gui>, and fill out your details on the next few pages. Use <file>magic-mirror</file> as project name and directory.

Packit 1470ea
   	</item>
Packit 1470ea
   	<item>
Packit 1470ea
    

Désactivez <gui>Utiliser GtkBuilder pour l'interface utilisateur</gui> car nous allons créer l'interface utilisateur manuellement. Consultez le tutoriel <link xref="guitar-tuner.vala">Accordeur de guitare</link> à propos de l'utilisation du constructeur d'interface GtkBuilder.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Assurez-vous que <gui>Configuration des paquets externes</gui> est activé. Sur la page suivante, sélectionnez gstreamer-0.10 dans la liste pour inclure la bibliothèque <app>GStreamer</app> à votre projet.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Cliquez sur <gui>Appliquer</gui> et votre projet est créé. Ouvrez <file>src/miroir_magique.vala</file> depuis l'onglet <gui>Projet</gui> ou l'onglet <gui>Fichiers</gui>. Vous devez voir apparaître du code commençant par les lignes :

Packit 1470ea
    
Packit 1470ea
using GLib;
Packit 1470ea
using Gtk;]]>
Packit 1470ea
    </item>
Packit 1470ea
  </steps>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="build">
Packit 1470ea
  <title>Première construction du programme</title>
Packit 1470ea
  

Le programme charge et affiche une fenêtre (vide). Vous trouverez plus de détails ci-dessous ; passez cette liste si vous comprenez les bases :

Packit 1470ea
  <list>
Packit 1470ea
  <item>
Packit 1470ea
    

Les deux lignes using importent des espaces de noms que nous n'aurons plus à nommer explicitement.

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
    

Le constructeur de la classe principale Main crée une nouvelle fenêtre et définit son titre. Ensuite, la fenêtre est affichée et un signal permettant de quitter l'application est connecté à la fermeture de la fenêtre. Plus d'informations sur les signaux sont données plus tard.

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
    

La fonction statique main est exécutée par défaut quand vous lancez une application Vala. Elle appelle d'autres fonctions qui créent la classe « Main », initialise et ensuite exécute l'application. La fonction Gtk.Main démarre la boucle principale GTK, qui lance l'interface utilisateur et commence à écouter les événements (comme des clics de souris ou des appuis sur des touches).

Packit 1470ea
   </item>
Packit 1470ea
  </list>
Packit 1470ea
Packit 1470ea
  

Le programme est prêt à être utilisé, donc vous pouvez le compiler en cliquant sur <guiseq><gui>Construire</gui><gui>Construire le projet</gui></guiseq> ou en appuyant sur <keyseq><key>Maj</key><key>F7</key></keyseq>.

Packit 1470ea
  

Pour configurer le répertoire de compilation, modifiez la <gui>Configuration</gui> à <gui>Par défaut</gui> et cliquez sur <gui>Exécuter</gui>. Il ne faut le faire qu'une seule fois, à la première compilation.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="webcam">
Packit 1470ea
 <title>Accès au flux vidéo de votre webcam avec GStreamer</title>
Packit 1470ea
 

L'architecture multimédia de GStreamer sait gérer les vidéos en provenance de webcams. Ajoutons GStreamer à notre application et nous pouvons ainsi accéder au flux vidéo.

Packit 1470ea
Packit 1470ea
Packit 1470ea
using GLib;
Packit 1470ea
using Gtk;
Packit 1470ea
Packit 1470ea
public class Main : Object
Packit 1470ea
{
Packit 1470ea
	private Gst.Element camerabin;
Packit 1470ea
Packit 1470ea
	public Main () {
Packit 1470ea
		this.camerabin = Gst.ElementFactory.make ("camerabin", "camera");
Packit 1470ea
		this.camerabin.set_state (Gst.State.PLAYING);
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	static int main (string[] args) {
Packit 1470ea
		Gtk.init (ref args);
Packit 1470ea
		Gst.init (ref args);
Packit 1470ea
		var app = new Main ();
Packit 1470ea
Packit 1470ea
		Gtk.main ();
Packit 1470ea
Packit 1470ea
		return 0;
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
]]>
Packit 1470ea
 <steps>
Packit 1470ea
 <item>

Enlevons d'abord la fenêtre créée précédemment, car GStreamer va gérer l'affichage de l'image à l'écran.

Packit 1470ea
 </item>
Packit 1470ea
  <item>
Packit 1470ea
  

Créons maintenant un élément GStreamer qui va accéder à notre webcam. Nous utilisons l'élément « Camerabin », qui est un élément caméra tout-en-un et qui sait faire des photos, des vidéos, appliquer des effets et beaucoup plus encore. Parfait dans notre cas ! Avec this.camerabin.set_state (Gst.State.PLAYING) nous disons au pipeline GStreamer, que nous venons de créer, de commencer la lecture. Facile, non ?

Packit 1470ea
  

Of course it is also possible to integrate the video more tightly into other

Packit 1470ea
  windows but that is an advanced topic that includes some details of the X Window
Packit 1470ea
  System we will omit here.
Packit 1470ea
  

Packit 1470ea
  

Compilez et exécutez le programme à nouveau. Vous obtenez finalement deux fenêtres. À l'étape suivante, nous allons intégrer la vidéo dans la fenêtre GTK+.

Packit 1470ea
  </item>
Packit 1470ea
 </steps>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="impl">
Packit 1470ea
 <title>Implémentation de référence</title>
Packit 1470ea
 

Si vous rencontrez des difficultés avec ce tutoriel, comparez votre programme à ce <link href="magic-mirror/magic-mirror.vala">programme de référence</link>. Il existe aussi une <link href="magic-mirror/magic-mirror-advanced.vala">implémentation plus complète</link> qui intègre la fenêtre à une fenêtre standard Gtk, mais qui nécessite des techniques avancées ainsi que l'ajout de boutons pour lire/arrêter l'image.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="further">
Packit 1470ea
<title>Documentation complémentaire</title>
Packit 1470ea

Pour en savoir plus à propos de la programmation en langage Vala, consultez le <link href="http://live.gnome.org/Vala/Tutorial">manuel Vala</link>.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="conclusion">
Packit 1470ea
<title>Conclusion</title>
Packit 1470ea
  

Ça y est ; vous avez réussi à créer une application fonctionnelle pour webcam en 15 minutes. Maintenant, vous pouvez vous raser ou maquiller votre joli visage avant de passer une belle journée sur votre lieu de travail, où vous allez pouvoir épater vos amis et collègues avec une application géniale faite en 15 minutes.

Packit 1470ea
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
</page>