Obligement - L'Amiga au maximum

Mardi 23 avril 2024 - 17:12  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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 périphériques logiques 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 périphériques logiques 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 périphérique logique. Maintenant, ouvrons le périphérique logique, 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 décalage ("offset"), erreur ("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 périphériques logiques se fait à peu près de la même manière. Il est à noter que certains périphériques logiques 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 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]