URL: https://linuxfr.org/news/sortie-de-kivy-107-framework-pour-des-applications-multitouches Title: Sortie de Kivy 1.0.7 - Framework pour des applications multitouches Authors: tito Date: 2011年07月18日T17:20:19+02:00 Tags: python, prometteur, android, multitouch et framework Score: 30 [Kivy](http://kivy.org/) est un framework complet pour la création d'interfaces nouvelles comme des applications multitouches. Développé en Python/Cython/OpenGL ES 2 et sous licence LGPL, ce framework a la capacité de tourner sur Windows, MacOSX, Linux, Android (iOS en développement). Cette version 1.0.7 intègre une gestion de configuration d'application, les outils nécessaires pour faire un paquet sous les différentes plateformes, et des performances accrues grâce à une gestion optimisée des textures. Par ailleurs, l'équipe de Kivy a développé [PreseMT](http://github.com/tito/presemt), un outil permettant la création de présentation. Cet outil consiste à mettre des images et du texte sur un plan infini, puis d'enregistrer des vues de ce plan comme des vignettes. ---- [Kivy - Site officiel](http://kivy.org/) [Kivy - Documentation](http://kivy.org/docs/) [Kivy - Code source](http://github.com/tito/kivy) [Kivy 1.0.7 - L'annonce](http://groups.google.com/group/kivy-users/browse_thread/thread/7dea1f9fa79b852b) [PreseMT - Code source](http://github.com/tito/presemt) [Video Kivy sur Android](http://vimeo.com/22725621) [Video Planet White](http://www.youtube.com/watch?v=pI635uAppoU) ---- Kivy est modulaire et découpé en plusieurs parties. ##Core providers Au lieu d'utiliser une bibliothèque précise pour la lecture d'image, de vidéos... Kivy a une approche abstraite. Chaque fonctionnalité est implémentée une ou plusieurs fois en utilisant diverses bibliothèques. Ce qui permet au framework d'utiliser la meilleure implémentation selon la plateforme ou le système courant. Par exemple, le chargement d'image peut se faire avec Pygame, PIL, la lecture de la caméra peut se faire avec OpenCV, GStreamer, VideoCapture, etc. ##Inputs La gestion des inputs est toujours problématique tant par la diversité de ceux-ci et par les multiples approches possibles. Kivy a opté pour une structure de données unique quelle que soit l'entrée: souris, tablette, stylet, fiducials, kinect, accéléromètre, etc. Cette structure, nommée MotionEvent, est générée par un ou plusieurs "Input Providers", qui sont automatiquement créés par Kivy selon la plateforme. À ce jour, Kivy gère nativement les évènements multitouches WM_Touch, WM_Pen de Windows, MTDev, HIDInput et LinuxWacom sous Linux (selon noyau et disponibilité), MacOSX, Android, ainsi que TUIO. Ensuite, cette structure est envoyée dans l'arbre des widgets par 3 événements uniques: on_touch_down, on_touch_move, on_touch_up, si le MotionEvent contient au minimum une information de position 2D. Sinon, ce n'est pas considéré comme une touch. Il est toujours possible de s'inscrire à la fenêtre et de récupérer tous les évènements d'entrées. À noter que Kivy intègre un simulateur multitouch avec la souris : le bouton droit permet de laisser une touche à l'écran, indiquée par un rond rouge. ##Graphics Un moteur graphique optimisé pour l'affichage 2D est basé sur OpenGL ES 2. Cette version est celle que l'on retrouve en grande majorité dans les mobiles et utilise une manière moderne de faire du rendu graphique. En se restreignant à ces instructions, Kivy est capable de faire son rendu sur les ordinateurs de bureaux ou les mobiles. Kivy implémente par défaut plusieurs instructions pour changer la couleur, tracer des rectangle, ellipse... en utilisant une texture ou non. Un point intéressant est son compilateur d'instructions à la volée qui permet, après analyse, de réduire le nombre d'instructions graphiques à envoyer au GPU à son minimum. Cette partie est encore en cours de développement, mais le but serait de pouvoir de combiner les instructions entre elles dans la mesure du possible. ##Widgets Plus de 20 widgets sont disponibles, utilisant les couches décrites ci-dessus. La base d'un Widget est basée sur des évènements, et liée à des instructions graphiques. Lorsque l'on change une propriété du widget, celui-ci mettra à jour sa représentation graphique, et déclenchera un nouvel affichage. Un langage nommé Kv a été créé afin de permettre de créer rapidement une représentation graphique d'un widget, ainsi que de créer des interactions. Ce langage s'apparente à QML de Qt, ou encore à la CSS pour HTML.