Obligement - L'Amiga au maximum

Mardi 27 juin 2017 - 21:09  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Soutien

N'hésitez pas à soutenir le projet Obligement



Contact

David Brunet

Courriel

 


Programmation : Amiga E - le clipboard.device
(Article écrit par Pierre Girard et extrait d'Amiga News - octobre 1996)


Ce mois-ci, je vous propose d'étudier un élément très utile du système Amiga, surtout si vous décidez de programmer un traitement de texte : le clipboard.device. Vous savez, le copier-coller de CygnusEd ou de Final Writer qui vous permet d'économiser des heures de mise en page. Eh oui, vous aussi vous pouvez le faire.

Coupez !

Le clipboard.device a deux utilisations principales : tout d'abord, couper ou copier un morceau de document pour l'insérer ailleurs (sous un éditeur quelconque). Mais le plus utile, à mon avis, est la communication entre les différentes tâches. Prenons un exemple concret : vous éditez un document sous CygnusEd et il vous faut récupérer un paragraphe de celui-ci sous Final Writer. C'est facile ! On copie ou coupe sous CED, on passe sous Final Writer et on colle. Cela ne marche, bien sûr, que si le logiciel utilise le clipboard.device et n'utilise pas un "clipboard" (presse-papiers) à usage "interne" (par exemple l'éditeur de fichier Zaphod propose les deux options). Ce qui est vrai pour le texte l'est aussi pour les autres données. Ainsi, suivant le logiciel, il vous est possible d'utiliser le presse-papiers pour stocker des graphiques, des sons, etc. en fait un peu n'importe quoi, tant qu'il s'agit d'un fichier IFF.

Comment qu'on fait ?

La programmation des devices m'a toujours parue difficile et pourtant, quand on a vu un exemple, cela paraît tout de suite plus simple. Avant de commencer le travail sérieux, il faut préparer le terrain. En effet, les devices ont besoin, comme toutes les tâches qui ont pour vocation de communiquer, d'un port de message (ici, il s'appelle message - comme c'est original !). Nous utilisons à cet effet une instruction qui porte bien son nom, CreateMsgPort(). Mais cela ne suffit pas. Il convient aussi de définir une structure IORequest qui contiendra les informations utiles au device. Maintenant, ouvrons le device, comme on ouvre une bibliothèque. On utilise pour cela l'instruction OpenDevice(nom, unité, iorequest, drapeaux). Bon, tout est prêt.

Le traitement

Tout d'abord, il faut s'occuper de déterminer la longueur des données à transférer. Nous utilisons deux variables pour stocker la longueur du texte brut (slen) et la longueur totale des données, c'est-à-dire avec l'en-tête IFF (length). Si la longueur du texte est impaire, nous lui ajoutons 1. L'en-tête IFF a une description précise qui se décompose en longs-mots. En premier, on trouve le signe de reconnaissance des fichiers IFF, c'est-à-dire FORM. Ensuite, vient la longueur totale du fichier, c'est-à-dire la longueur du texte + celle de l'en-tête (slen+12). On trouve après deux longs-mots qui sont FTXT et CHRS ce qui signifie que nous écrivons un fichier texte IFF qui ne comprend que des caractères. Tout ces longs-mots sont envoyés au presse-papiers grâce à la procédure putlong() qui transmet un long au presse-papiers. Revenons maintenant un peu en arrière, car j'ai oublié de vous dire qu'il faut initialiser les valeurs de offset, error et clipid.

Il ne reste plus qu'à envoyer les données au clipboard.device. Pour cela, il nous faut d'abord remplir la structure IORequest avec ior.data qui pointe sur text et ior.length sur slen. Vient le moment de déterminer l'action à accomplir définie dans ior.command (ici, CMD_WRITE). Un petit DoIO(ior) et c'est parti. A ce moment-là, si tout va bien, votre argument est déjà copié dans le presse-papiers. Cependant, il faut ajouter un octet vide si la longueur est impaire, et surtout signaler au clipboard.device que l'on a fini d'écrire (CMD_UPDATE).

Que dire de plus ?

Sinon que la gestion des autres devices se fait à peu près de la même manière. Il est à noter que certains devices utilisent uniquement les fonctions d'exec comme DoIO() ou AbortIO() et tout se passe donc dans la structure IORequest. D'autres, par contre, ont leurs propres fonctions comme par exemple le timer.device avec CmpTime() ou encore SubTime(). Voilà, il ne vous reste plus qu'à vous pencher sur le trackdisk.device pour réaliser des superbes trackdémos. Bye.


[Retour en haut] / [Retour aux articles] [Article précédent] / [Article suivant]