Round Window et les windowType (Director 5 & 6)
La création d'animations dans une fenêtre (MIAW, pour
Movie In A Window) est un moyen simple d'ajouter une dimension supplémentaire
à une animation trop linéaire. L'apparition à
tout instant d'un index, d'un dialogue ou encore d'un écran
de petite taille diffusant une animation autonome font partie des
utilisations courante des MIAWs.
Mais comment peut-on échapper aux types de fenêtres
proposés par le manuel ? C'est à l'exploration
de ces possibilités trop peu connues que vous convie le Crapo.
On commence bien sûr par créer une animation de petite
taille (en changeant ses dimensions par le menu Modifier/Animation/Propriétés)
que l'on enregistre sur le bureau. On voit ici une animation simplette
présentant une trajectoire, mais rien n'interdit d'utiliser
un projet complexe et interactif.
Pour appeler une fenêtre s'ouvrant sur notre mini-animation,
nous créons un autre document de taille normale celui-là
et affichons la fenêtre Message. C'est de là que nous
allons pratiquer nos expériences.
Nous saisissons les première commandes permettant de créer
la fenêtre et de lui affecter le fichier Director enregistré
sur le bureau. Nous donnons le chemin complet :
set the fileName of window "maFenetre" to "Macintosh HD:desktop
folder:minimiaw.dir"
Notre fenêtre a désormais un nom et nous pouvons dès
lors demander son ouverture :
open window "maFenetre"
L'aspect que Director confère à notre MIAW n'est
pas des plus heureux. Nous savons que nous pouvons changer cela
en agissant sur la propriété the windowType of window...
Les valeurs possibles sont -1, 1, 2, 3, 4, 8, 12, 16 pour obtenir
respectivement :
Ainsi on peut saisir :
set the windowType of window "maFenetre" to 1
Ce type de fenêtre correspond visiblement à une fenêtre
d'alerte type. C'est que Director fait ici appel au ressources système.
Le type 16 par exemple correspond sur le Mac à la fenêtre
dédiée à la calculette du menu pomme.
Director fournit quand à lui un autre type sous la forme
d'une ressource WDEF nommée "infinity windoid" integrée
aux ressources de l'application comme des projections. On peut l'utiliser
par :
set the windowType of window "maFenetre" to 48
On notera en outre et pour mémoire les types 5 et 6 que
l'on peut voir plus bas :
Le type 13 constituant un mixte des deux (un monstre ?). On trouvera
plus d'intérêt enfin au type 19, qui reprend le thème
de la calculette mais avec des coins carrés.
Et c'est tout ? En fait, et sur Mac, l'instruction Set the windowType
to... ordonne au Ressource Manager de MacOS de chercher une ressource
WDEF (Window Definition) correspondante. Le ressource Manager cherche
d'abord dans le fichier de l'animation (le document), dans le fichier
de préférences de l'application ensuite , dans celui
de l'application elle même (Director ou la projection), enfin
dans le fichier de ressources du système. La compréhension
de ce mécanisme est importante car il rend possible l'appel
de tout autre type pourvu qu'il soit mis à la portée
du Ressource Manager. Mettons tout de suite cela en pratique :
D'autres types de fenêtres (sur Mac)
Pour son usage personnel, le Système possède quelques
ressources WDEF intéressantes. La ressource WDEF d'Id 124
et ses variantes par exemple sont utilisées par AppleGuide
pour dessiner ses fenêtres. Pour lui emprunter cette WDEF,
il nous faut multiplier son identifiant par 16 et ajouter au produit
le numéro d'une éventuelle variation ou style. Par
défaut le style principal porte le numéro 0. Donc
124*16 + 0 = 1984. Essayons.
Set the windowType of window "maFenetre" to 1984
De nombreuses variantes peuvent être appelées, de
1984 à 1999. Les windowType 1992 et suivants donnent des
fenêtres avec barre de titre à gauche.
Set the windowType of window "maFenetre" to 1996
À tester aussi les windowType 2017 et 2025, 2018 et 2026,
2019 et 2027, 2020 et 2028, 2021 et 2029, 2022 et 2030, 2023 et
2031 (WDEF ID 126 et variantes) qui correspondent aux fenêtre
des bulles d'aide du Mac. Chaque style ou variante permettant de
placer la pointe de la bulle dans un angle différent. Ces
fenêtres ne supportent pas les clics mais sont tout à
fait utilisables. (Bien sûr avec ces fenêtre, on devra
utilise la propriété the rect of window pour obtenir
un placement pertinent.)
Set the windowType of window "maFenetre" to 2022
Utilisant le même mécanisme d'appel à une ressource
WDEF, il est possible aux développeur de créer leur
propres ressources WDEF et de les coller (via ResEdit) sur le chemin
de recherche du Ressource Manager. Round Window de Mattias Ellert
est une WDEF (libre de droit) définissant une fenêtre
ronde. Le CrapoWeb se propose de l'utiliser.
Round Window par Mattias Ellert
On commence bien sûr par ce procurer la ressource WDEF en
la téléchargeant sur le site de l'auteur :
Mattias Ellert's Macintosh Software Archive : http://www.tsl.uu.se/~ellert/software.html
Round Window se présente comme une application de démonstration
qui ne fait rien d'autre qu'afficher les styles disponibles (une
WDEF peut contenir 16 style ou variantes). Nous utilisons ResEdit
afin d'ouvrir le fichier de ressources de Round Window pour y copier
la WDEF d'ID 32.
On ouvre maintenant de la même façon le fichier de
l'animation que l'on souhaite doter (La scène, qui appellera
la fenêtre ronde). ResEdit risque fort de nous avertir que
ce document n'a pas de fichier de ressources et qu'il va devoir
en créer un. On accepte. On colle aussitôt le contenu
du presse-papiers. ResEdit crée alors dans le nouveau fichier
de ressources de l'animation un sélecteur de type (WDEF)
et dedans, place la ressource ID 32 "Round Window". Une ressources
ne devrait pas avoir un numéro d'identifiant inférieur
à 128 selon Apple. Le numéro d'identifiant de Round
Window sera peut être modifié par les bidouilleurs
scrupuleux mais alors il faudra s'en souvenir quand on appellera
The windowType. Pour l'instant on quitte ResEdit en enregistrant
les modifications de notre fichier d'animation.
Tout est prêt. Notre script d'appel de la fenêtre doit
être ainsi rédigé :
set the fileName of window "maFenetre" to "Macintosh HD:desktop
folder:minimiaw.dir"
set the windowType of window "maFenetre" to (WDEF ID *16 + numéro
de style, par défaut 0)
set the title of window "maFenetre" to "CrapoFenetre"
open window "maFenetre"
Voilà ce que donne le windowType 512. Essayez 514 et vous
y trouverez de nombreuses applications.
L'Xtra Border et ButtonWindow Xobj : Le problème des
bordures
Toutes ces fenêtres même les plus dépouillées
ont une bordure bien visibles. Cette bordure il semble impossible
de s'en débarrasser puisque même la scène la
laisse apparaître quand elle n'est pas noire. C'est pour supprimer
ces bords noirs autour de la scène qu'a été
développé l'Xtra border. Parce que dans sa version
Macintosh, Border se contente d'ajouter une ressource WDEF à
l'animation, nous savons que nous pouvons l'utiliser aussi pour
créer une MIAW sans bordure.
On peut télécharger l'Xtra Border sur le site de
l'éditeur MediaConnect.
Media Connect Attn.: Stefan Schmidt-Bilkenroth Gratzmüllerstr.
1 D-86150 Augsburg Germany Phone: +49 (0)821 / 34 75 20 Fax: +49
(0)821 / 34 75 2-49 Internet: www.mcmm.com
E-Mail: ssb@mcmm.com
Dans sa version Mac, Border se présente comme une application
patchant (c'est-à-dire modifiant) un projecteur. Son utilisation
en mode auteur exige donc que l'on ouvre le fichier de ressource
depuis Director par OpenResFile ou encore que l'on "démonte"
la ressource WDEF en ouvrant le patch via ResEdit pour copier la
WDEF d'ID 100. Collée dans le fichier de ressources de notre
animation, la ressource pourra être appelée par :
set the windowType of window "maFenetre" to 1600
Difficile de vous montrer ici une fenêtre sans bordure !!!
Essayer, et vous verrez une jolie fenêtre rectangulaire se
fondant parfaitement avec tout objet sur l'écran.
Et si je veux une fenêtre RONDE et SANS BORDURE direz-vous ?
Eh bien, si le sujet vous passionne tant, sachez que le Crapo possède
dans ses archives un exemplaire
de l'Xobjet ButtonWindow (xobjet de Director 4) qui contenant
une ressource WDEF (ID 129) permettait d'en disposer dans une animation
et ce, sans recourir à aucune MIAW.
Pour mettre ne uvre l'Xobjet, on commence par changer la
couleur de la scène (si elle est blanche, on ne verrra pas
notre fenêtre) puis on ouvre le fichier par openXlib (nous
utilisons la fenêtre message).
openxlib "buttonwindow"
On appelle ensuite la liste des Xchoses disponibles par ShowXlib
afin de savoir si notre xobjet a été ouvert :
showxlib
-- XLibraries:
-- Xtra: FileXtra
-- Xtra: UiHelper
-- Xtra: JavaConvert
-- Xtra: CompileJava
-- Xtra: QuicktimeSupport
-- Xtra: NetLingo
-- Xtra: Mui
-- Xtra: fileio
-- "*Standard.xlib"
-- XObject: SerialPort Id:200
-- XObject: XCMDGlue Id:2020
-- "buttonwindow"
-- XObject: buttonWindow Id:4001
Pour connaître les méthodes de buttonWindow, on lui
passe la méthode mDescribe :
buttonwindow(mdescribe)
-- Factory: buttonWindow ID:4001
-- roundWindow, a test, v0.0
IIII mNew, topL, botR, IDnumber -- create and show a round window
-- note: topL = top*65536 + left, botR = bottom * 65536 + right
XI mMove, newTopL -- move the window to the specified position
XI mOffset, downRight -- move window by specified amount
X mBringToFront -- make window frontmost
XP mDraw, picture -- draw picture into the window
-- note: topL & botR specify picture's placement within the
window
-- and must be in local coordinates
I mScreenSize -- returns the width & height of the main screen
area
-- as an integer in height*65536+width form
I mGetTopLeft -- returns the top left corner of the window rect
-- again as an integer - top*65536+left
I mGetHighWide -- returns height & width of the window rect
-- as usual - height*65536+width
X mDispose -- close window and dispose of object
On notera la deuxième ligne de ces instructions de fabrique :
"RoundWindow, a test, v0.0". Avant même de se poser la question
des droits d'utilisation commerciale d'une telle xchose, il est
bon de méditer ce numéro de version. Nous ne présentons
cet xchose ici que pour mémoire. Les lignes suivantes maintenant
présentent une à une et de façon conventionnelle,
les méthodes utilisables. 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
S une chaîne de caractères entre guillemets
plus rarement on rencontre dans ces listes :
L pour une liste d'entiers
P pour une image
O pour une instance d'Xobjet
V pour une variable
Nous créons notre objet en lui passant la méthode
mNew et les arguments requis. Nous stockons l'instance dans une
variable CRAPO.
set CRAPO to buttonwindow(mNew, 144*65536+176, 244*65536+ 276,
1)
NB : Il faut indiquer à l'objet les coordonnées
de la fenêtre à l'aide d'un système de coordonnées
bien spécial. Au sommet du rectangle de la fenêtre
multiplié par 65536 on ajoute la position gauche. Nous avons
utilisé les valeurs retournées par the stageTop et
the stageLeft ici afin de placer notre fenêtre dans l'angle
supérieur gauche de la scène. Nous avons ajouté
100 pixels à chacune de ces valeurs pour donner à
notre fenêtre un diamètre de 100 pixels.
La fenêtre apparaît, ronde et sans aucune bordure...
que si la scène n'est pas blanche ! Nous souhaitons y voir
apparaître un acteur bitmap (acteur numéro 3 par exemple).
Nous stockons l'image dans une variable MONDESSIN.
set MONDESSIN to the picture of member 3
Et nous passons à l'objet CRAPO la méthode mDraw
suivi de la variable :
CRAPO(mDraw, MONDESSIN)
Déplacer la fenêtre, c'est faire usage une nouvelle
fois de ce système inhabituel de coordonnées :
CRAPO(mMove, 276*65536+144)
Les meilleurs choses ont une fin, nous libérons la mémoire
par la méthode mDispose.
CRAPO(mDispose)
closeXlib
Round Window de Mattias Ellert est téléchargeable
sur le site de l'auteur :
http://www.tsl.uu.se/~ellert/software.html
Round Window est Freeware.
L'Xtra Border (shareware) se trouve sur le site de MediaConnect :
http://www.mcmm.com/english/pages/homee.html
L'Xtra a été mise à jour pour D7 et son nouveau
Type de scène. Le patch pour projecteur Mac est gratuit.
ButtonWindow était inclus dans le MediaBook CD for Director.
Director 7.0.2 permet d'assigner un acteur bitmap au windowType.
les possesseurs de cette version consulteront avec profit cet
article sur cette nouvelle possibilité.
<
Sommaire
|