Round Window et les windowType (D5 & D6)
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é.
|