ScreenXtra et Capture Xobj (D6)
L'Xobjet Capture pemet la copie d'un partie de la scène
et l'enregistrement de l'image sur le disque de l'utilisateur.
Léger et d'une utilisation aisée puisqu'il
n'admet que deux méthodes, Capture Xobj possède
néammoins deux défauts : Il ne fonctionne
que sur Mac et, comme tout xobjet, requiert une instanciation.
Un approche plus moderne du developpement lui préferera
L'Xtra ScreenXtra qui accomplit les mêmes
tâches plus quelques autres beaucoup plus simplement.
Nous vous présentons ici les deux xchoses.
Utiliser Capture Xobj (D6)
On commence par ouvrir la fenêtre message de Director
5 et l'on s'enquiert des Xchoses disponibles en saisissant
ShowXlib :
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
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 de fichier
du fragment de code externe que nous voulons utiliser. L'Xobjet
Capture est sur le bureau du Mac:
openxlib "Macintosh HD:desktop folder:capture 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: 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
-- "Macintosh HD:desktop folder:capture xobj"
-- XObject: Capture Id:27112
On passe à l'Xobjet la méthode globale mDescribe
afin de connaître les méthodes disponibles
::
put Capture(mdescribe)
-- Factory: Capture ID:27112
-- Capture XObject v1.00
-- 9/30/94 -
-- (c) Copyright 1994 by Oakleaf Designs
--Oakleaf Designs 10018 Oakleaf Place Cupertino,
-- CA 95014-1107 Phone: 408/257-1547 Fax: 408/252-6116
-- Email: info@oakleaf.com
-- WWW: http://www.oakleaf.com
IIIII mNew, t, l, b, r -- Create new instance
IS mSave, filename -- Write named PICT file
----
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. 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 devons commencer par créer une instance de
l'objet en utilisant la méthode globale mNew. C'est
lors de l'instanciation qu'il nous faut indiquer les coordonnées
rectangulaires de la portion de la scène à
capturer. Nous allons stocker l'instance dans la variable
CRAPO.
set CRAPO to Capture(mNew, 20,20, 120,120)
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.
Capture ne nous laisse pas d'autre choix que d'enregistrer
au format PICT une copie de la zone désignée.
CRAPO(mSave, "Macintosh HD:Desktop folder:essai.pict")
Apparaît alors sur le bureau l'icône d'un fichier
PICT. C'est l'image de la zone capturée. Si nous
souhaitons réutiliser cette copie dans l'animation
en cours, il nous faut demander à Lingo son ajout
au scénario. Nous créeons un nouvel acteur
(acteur numéro 5) de type dessin dans la distribution
:
new(#bitmap, member 5 of castLib 1)
Et nous lions cet acteur au fichier image créé
sur le bureau par Capture Xobj :
set the filename of member 5 to "essai.pict"
La copie réalisée d'une partie de la scène
fait désormais partie de la disrtribution et peut
être utilisée dans l'animation.
Nous pouvons nous débarrasser de l'objet CRAPO et
libérer la mémoire :
CRAPO(mDispose)
on clos le fichier de l'xobjet par :
closeXlib "Macintosh HD:desktop folder:capture xobj"
ScreenXtra
Xtra Lingo "moderne", plus facile à mettre en oeuvre,
plus complet aussi, ScreenXtra satisfera tous ceux que les
formulations objet rebutent. Une fois le fichier de l'Xtra
ouvert (et il peut l'être automatiquament s'il se
trouve dans le dossier Xtras au lancement de l'application),
on dispose de nouvelles instructions sans avoir eu besoin
de créer aucune instance de l'Xtra. ScreenXtra permet
aussi la génération directe d'un acteur à
partir d'une copie d'écran. Voyons cela :
Parce qu'il n'était pas situé dans le dossier
Xtras de l'application, on doit ouvrir le fichier ScreenXtra
situé sur le bureau. Nous saisissons dans la fenêtre
message :
openxlib "Macintosh HD:desktop folder:ScrnXtra"
La commande showXlib nous informe de la disponibilité
de ScreenXtra :
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
-- "ScrnXtra"
-- Xtra: ScrnXtra
On veut connaître les "méthodes" mais ici
plutôt les commandes de l'Xtra, on saisit donc :
put interface(xtra "ScrnXtra")
C'est une série de commandes de script que l'on
obtient, regroupées selon qu'elles permettent la
capture d'une partie de la scène ou bien d'une partie
de l'écran.
-- "xtra ScrnXtra -- ScrnXtra v2.0.4 of 16-Feb-98 by Kent
Kersten
-- Copyright (c) 1996,97,98 Little Planet Publishing. All
rights reserved.
-- For updates see http://www.littleplanet.com/kent/kent.html
-- Contact the author at kent@littleplanet.com
-- This no-charge Xtra may be freely distributed as long
as it is
-- accompanied by its documentation and sample movie.
--
-- Stage Capture Functions --
* StageToMember int left, int top, int right, int bottom,
any memberNumOrName, *
* StageResizeToMember int left, int top, int right, int
bottom, int newWidth, int newHeight, any memberNumOrName,
*
* StageToClipboard int left, int top, int right, int bottom
* StageResizeToClipboard int left, int top, int right, int
bottom, int newWidth, int newHeight
* StageToFile int left, int top, int right, int bottom,
string filename
* StageResizeToFile int left, int top, int right, int bottom,
int newWidth, int newHeight, string filename
--
-- Screen Capture Functions --
* ScreenToMember int left, int top, int right, int bottom,
any memberNumOrName, *
* ScreenResizeToMember int left, int top, int right, int
bottom, int newWidth, int newHeight, any memberNumOrName,
*
* ScreenToClipboard int left, int top, int right, int bottom
* ScreenResizeToClipboard int left, int top, int right,
int bottom, int newWidth, int newHeight
* ScreenToFile int left, int top, int right, int bottom,
string filename
* ScreenResizeToFile int left, int top, int right, int bottom,
int newWidth, int newHeight, string filename "
Dès lors, il est aisé d'appeler l'une de
ces instructions comme on le ferait de n'importe quel commande
Lingo :
screentomember(10, 10, 110, 110, 3)
Cette instruction demande la création d'un acteur
bitmap (numéro 3) reprenant la zone de l'écran
délimité par le rectangle : 10, 10, 110,
110.
Voyez le bel acteur que nous venons d'ajouter à
la distribution : un carré de 100 pixels de
coté, copie de notre écran.
Nous vous laissons le soin de découvrir les autres
possibilités de ScreenXtra.
On peut songer à quantité d'utilisations
de cet outil. La plus évidente : pemettre en animation,
à l'utilisateur de conserver un dessin réalisé
avec des sprites déplaçables en mode trace.
L'Xtra peut aussi servir à créer des miniatures
des pages consultées pour en constituer un historique...
L'Xobjet capture est téléchargeable sur le
site d'Oakleaf Designs à Cupertino.
http://www.oakleaf.com/
ScreenXtra peut être téléchargé
gratuitement sur la page de son auteur :
http://www.littleplanet.com/kent/kent.html
Dans un article récent,
nous mettions en oeuvre la propriété picture
of the stage qui permet - dans Director 7 - d'effectuer
une capture d'écran de la scène.
|