On souhaite réaliser un diaporama avec effets graphiques. L’effet de base est illustré dans la vidéo suivante : exemple. La réalisation est en deux parties :
- réaliser une composition Quartz permettant d’animer l’affichage d’un ensemble d’images
- intégrer et piloter cette composition depuis une application MacOSX
Première partie : Quartz
Revenir sur votre composition Quartz d’animation (si vous n’en avez pas une fonctionelle, fabriquez en une simple).
- Modifiez votre composition de sorte à exporter certains paramètres comme des paramètres d’entrée, c’est-à-dire des paramètres dont les valeurs pourront être injectées depuis l’extérieur de la composition. Commencer par le paramètre contrôlant la vitesse de rotation. Sélectionner par clic doirt l’entrée du patch Quartz et choisir
Publish Inputs
. Choisir un nom adéquat pour l’export. - Tester que ce paramètre est effectivement utilisable en sélectionnant l’onglet
Parameters
dans la barre d’outils. Modifiez la valeur directement dans le formulaire présenté et vérifier que cela fonctionne comme attendu.
Seconde partie : XCode
- Créer ou modifier une application xcode intégrant la composition Quartz précédente. Ajouter deux boutons, l’un de libellé
+vite
l’autre-vite
. - Ajouter une classe Cocoa descendante de
NSObject
contenant un attribut entier correspondant à la valeur vitesse et un Outlet de typeQCView
. - Instancier via le constructeur d’interface un objet de la classe précédente. Établir le lien Outlet entre l’objet et la
QCView
. - Établir un lien réactionnel (une Action) entre les boutons
+vite
et-vite
et la classe de l’objet métier. Une action s’appelleraplusVite
et l’autremoinsVite
. - Modifier le code de ces méthodes de sorte à modifier en conséquence la valeur de l’attribut stocké par l’objet (afficher cette valeur via un appel à
NSLog
. Tester. Question : comment est initialisé l’attribut ? Est-ce la bonne valeur de départ ? - Rechercher dans la document de la
QCView
comment modifier la valeur d’un paramètre exporté d’une composition Quartz jouée dans uneQCView
. Faire en sorte que les deux actions modifient le paramètre. Tester.
Troisième partie : XCode
- Rechercher dans la documentation comment une
QCView
peut en retour appeler du code contenu dans l’application (piste: cet appel est effectué sur une base temporelle). Implanter du code de sorte qu’une méthode de l’objet métier soit appelée sur une base temporelle (y placer un appel àNSLog
). - Rechercher dans la documentation comment les valeurs de paramètres de sortie de composition Quartz peuvent être consultées dans un code applicatif. Modifier la composition Quartz pour produire une valeur indiquant qu’il est temps de changer d’image. Rajouter une entrée publique à la composition permettant d’injeter une image
NSImage
. - Modifier le code de sorte que lorsque cet indicateur est positionné, l’application change d’image tournante (on s’autorisera à basculer entre deux images pour commencer). Consulter la documentation de
NSImage
pour retrouver comment des images peuvent être lues depuis le système de fichiers. - Modifier le code de sorte à ajouter un
NSOpenPanel
lorsqu’on choisit l’optionOuvrir
du menu de l’application. CePanel
devra permettre de choisir dans le système de fichiers un répertoire contenant des images (on pourra supposer que le répertoire contient effectivement des images et uniquement des images). Les images du répertoire seront utilisées dans l’ordre comme suite d’image à afficher par la composition animée.
Quatrième partie : cosmétique + extension…
- Fournir une application au standard attendu : icône, etc
- Définir une extension de fichier .dpr (.diaporama) reconnue par l’application dont le contenu pourra être une liste d’URL désignant des images qui seront utilisées lors de la projection
- …