Un curseur en couleur dans Director 5 

 

 

L'Xobjet ColorCursor permet à Director d'exploiter une ressource de type crsr. Ces ressources définissent sur le mac un curseur de couleur et ne doivent pas être confondues à ce titre, avec les ressources de type CURS qui dotent nos applications de curseurs banals. On voit sur cette image le fichier de ressources de l'application Adobe Premiere ouvert grâce à ResEdit. Les deux types de ressources sont présents.

Si l'on souhaite exploiter grâce à l'Xobjet ColorCursor une ressource crsr, il convient bien sûr d'en doter notre animation. La petite flèche bleue de Premiere me plaît bien. Et si nous l'utilisions ?

La Commande Lingo openResFile permet l'ouverture d'un fichier de ressources (d'une application par exemple) et sa mise à la disposition d'un animation. Comme nous ne souhaitons pas joindre l'application d'Adobe à tous les exemplaire de notre animation (!!!) il va nous falloir isoler la ressources que nous voulons utiliser. Pour ce faire deux procédés : Créer via ResEdit un fichier de ressources nouveau dans lequel nous copie-collerons la ressources flèche bleue. Placé à coté de l'animation, ce fichier ResEdit sera ouvert depuis notre animation par openResFile. Solution élégante en production puisqu'elle laisse la possibilité de changer l'aspect du curseur sans toucher au fichier Director mais pour des raisons de compacité nous choisirons la deuxième méthode : copier-coller la ressource directement dans le fichier de l'animation. Lorsque grâce à l'xobjet nous demanderons à Director de l'utiliser, il ne lui faudra pas chercher bien loin.

La manipulation ne prend que quelques secondes : Dans ResEdit nous ouvrons le fichier de ressources d'Adobe Premiere. Lorsque nous double-cliquons sur le type crsr notre écran se présente comme sur l'image plus haut. Nous sélectionnons alors la ressources identifiée par le numéro 1030 (c'est notre flèche bleue) et nous la plaçons dans le presse-papiers par Édition/copier.

Sans quitter ResEdit, nous demandons l'ouverture de notre animation Director "essai.dir". ResEdit risque fort de nous avertir que ce fichier n'a pas de "ressource fork" (fichier de ressources) et qu'il va devoir en créer un si nous insistons. On dit OK et ResEdit ouvre alors le fichier de ressources vide de notre animation. On colle notre ressource dedans par Édition/coller. ResEdit crée tout de suite un type crsr et place la ressource 1030 dedans. Nous pouvons double-cliquer sur le type crsr pour voir la ressource ajoutée à l'animation et si nous double-cliquons sur le ressource cette fois ResEdit ouvre l'éditeur de ce type de ressources, grâce auquel nous pouvons modifier notre flèche.

   
l'éditeur des ressources de type crsr de ResEdit

À noter : nous n'avons pas procédé à d'éventuelles modifications sur le fichier de ressources de Premiere ! tout utilisation d'un éditeur de type dans ResEdit alors qu'un fichier original est ouvert est périlleuse, rappelons-le, car ResEdit comme la plupart des gestionnaires de bases de données met à jour immédiatement les modifications et seulement en cas de renoncement "DISCARD" restaure les fichiers originaux d'après une copie en mémoire. Certes ResEdit est LE logiciel le plus stable de la création mais l'EDF a sa part dans les plantages possibles !!!

Quittons ResEdit maintenant en enregistrant les modifications du fichier Director. Veillons à placer colorCursor aux cotés de notre animation ou tout au moins notons le chemin qu'il faudra utiliser et lançons Director afin de mettre notre xobjet au travail.

Toujours on commence par ouvrir la fenêtre message de Director et l'on s'enquiert des Xchoses disponibles en saisissant ShowXlib :

showXlib
-- XLibraries:
--   Xtra: QTVRXtra
--   Xtra: ScriptColor
--   Xtra: PrintOMatic_Lite
--   Xtra: NetLingo
--   Xtra: Mui
--   Xtra: fileio
-- "*Standard.xlib"
--   XObject: SerialPort       Id:200 
--   XObject: XCMDGlue         Id:2020

Rappelons que la première partie de cette liste, cite les Xtras disponibles (placés dans le dossier Xtras au lancement de l'application). Nous ne nous intéressons qu'aux xobjets : aucun Xobjet externe n'apparaît dans la deuxième partie,  nous allons y remédier en indiquant à Director le chemin et le nom exacte de fichier du fragment de code externe que nous voulons utiliser :

openXlib the moviepath & "ColourCursor-XObj"

Director n'indique pas si l'ouverture de l'Xobjet a réussie. pour le savoir et connaître le nom véritable de l'Xobjet, Il nous faut interroger Director un nouvelle fois :

showxlib
-- XLibraries:
-- Xtra: QTVRXtra
-- Xtra: ScriptColor
-- Xtra: PrintOMatic_Lite
-- Xtra: NetLingo -- Xtra: Mui
-- Xtra: fileio -- "*Standard.xlib"
-- XObject: SerialPort Id:200
-- XObject: XCMDGlue Id:2020
-- "Macintosh HD:Desktop Folder:ColourCursor-XObj"
-- XObject: ColorCursor Id:9015

 

ColorCursor est désormais utilisable. Mais quelles sont ses méthodes. Passée à l'objet, la méthode globale mDescribe fournit la liste des fonctions disponibles :

put ColorCursor(mdescribe)

-- Factory: ColorCursor ID:9015
-- ColorCursor, and X-Object for using color cursor resources
-- by Chris Perkins 1993. (CPerkins@aol.com)
I mNew
XI mGetSetCursor, crsrID -- crsrID is the resource ID number of a 'crsr' type resource
X mReleaseCursor -- CALL THIS BEFORE DISPOSING OBJECT or using the lingo <cursor> routine
----
-- <Null>

Les premières lignes portent mention de l'auteur. Les lignes suivantes présentent une à une et de façon conventionnelle, les méthodes utilisables pour aspeak. Chacune de ces lignes est rédigée de la même manière :

Le groupe de lettres initiales (capitales souvent) fournit de indications sur le type que la fonction retourne (premier caractère) et le type d'arguments qu'elle requiert (tous les autres).

X indique que la fonction ne retourne aucune valeur
I désigne un entier (ou un booléen)
S une chaîne de caractères entre guillemets

plus rarement on rencontre dans ces listes :
L pour une liste d'entiers ou un entier long
P pour une image
O pour une instance d'objet
V pour un type de donnée variable

Nous devons commencer par créer une instance de l'objet en utilisant la méthode globale mNew. L'instance (ou enfant) doit recevoir un nom de baptême nous permettant de l'invoquer : plus précisément nous allons utiliser une variable pour nommer celle-ci.

set CRAPO to ColorCursor (mNew)

La méthode mNew est passée à l'Xobjet. Un objet-enfant est créé qui est stocké dans la variable CRAPO.

Notre objet CRAPO est maintenant prêt à obéir à nos instructions. Toujours avec les Xobjets la structure est la suivante : à l'objet on passe une méthode et ses arguments entre parenthèses. Ici il faut indiquer outre le nom de l'enfant le numéro d'identifiant de la ressource : 1030. Avant de valider la saisie dans la fenêtre message prenons la précaution de placer le curseur de souris sur la scène. Lorsque la souris est au dessus de la fenêtre message en effet, Director appelle le pointeur d'insertion standard (ID 1). Évitons-nous une déception prévisible !

CRAPO(mGetSetCursor, 1030)

Le résultat ne se fait pas attendre, et tant qu'aucune autre instruction ne viendra changer l'aspect du curseur (tant que la souris ne survole pas une zone de saisie active par exemple) notre curseur est parfaitement opérationnel.

Pour changer une nouvelle fois de curseur maintenant, utiliser plus traditionnellement un acteur 1 bit ou encore un pointeur système, il semble découler de ce que nous venons de dire qu'il suffise de donner une nouvelle instruction en ce sens. Mieux vaut, en fait, prévenir l'enfant CRAPO de notre décision :

CRAPO(mReleaseCursor)

Puis seulement faire appel à un autre curseur :

cursor 0

Enfin pour se débarrasser de l'objet CRAPO et libérer la mémoire :

CRAPO(mDispose)

Un vérification n'est jamais inutile. Demandons si CRAPO n'existe plus.

put crapo
-- Void

L'xobjet ColorCursor est distribué par g/matter
Il est téléchargeable sur le site ftp Sharedcast : ftp://ftp.sharedcast.com/pub/XObjs/