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.
<
Sommaire
|