APPLICATIONSDIVERS ★ TRANSPARENCE, TAG ET INVERSION VIDEO ★

Transparence Tag et Inversion Video (CPC Revue)Applications Divers

II s'agit là de commandes Basic spécifiques aux AMSTRAD CPC ; pratiques, spectaculaires, mais aussi avec quelques pièges qui, bien sûr, ne sont pas mentionnés dans le manuel d'origine. Afin de les comprendre facilement et de les "avoir en main", rien de tel qu'un petit programme de démonstration, dont vous pouvez vous inspirer pour augmenter la présentation de vos programmes.

LA TRANSPARENCE
(Lignes 30 à 140 + 2000 à 2070)

Chaque caractère affiché à l'écran est en fait un petit "pavé" carré de 16x16 pixels ( = point d'écran), qu'il s'agisse du A, du point ou de l'espace "blanc". De ce fait, si l'on superpose un caractère sur un autre, le premier en date disparaît complètement.
Avec la commande "Transparence", le fond (couleur PAPER) du second caractère n'efface pas le premier caractère. Il y a alors superposition des deux motifs. La commande est PRINT CHR${22); CHR$(1 ) et, pour l'annuler, c'est PRINT CHR$(22);CHR$(0). Comme cette écriture est lourde, codifions-la par T1 $ et T0$. Voir lignes 40 et 50.
Pour notre démonstration, nous utilisons une ligne de vingt-cinq "O", une ligne de cinq " + " et une autre de cinq " - " (par SHIFT 9). Remarquez au passage comme l'instruction STRING$ est pratique ! (lignes 60 à 90). La ligne 90 définit P$ comme étant une suite de vingt-cinq "pavés curseur", dont le code ASCII est 143. Donc, le second paramètre de STRING$ peut-être indifféremment le code ASCII ou le caractère mis entre guillemets.
En faisant RUN, vous visualisez les deux effets, avec et sans transparence. Remarquez au passage l'effet obtenu en superposant un "O" et un slash ("/").

Le Piège

La grande gaffe classique consiste à oublier d'annuler la transparence sitôt que l'on n'en a plus besoin (remarquez notre PRINT T0$ en bout de la ligne 110). Sans cela, la transparence restera active, même si vous quittez votre programme! Essayez donc de modifier une ligne avec la touche COPY sous transparence, et vous verrez le désastre à l'écran... Un horrible gribouillis absolument illisible ! '

TAG ET TAGOFF
(Lignes 200 à 340)

Lorsque l'on écrit une chaîne par LOCATE, on est limité à 25 positions verticales et 40 positions horizontales (MODE 1), bien fixes. Avec TAG, on peut commencer l'écriture absolument n'importe où, le départ étant le curseur graphique, fixé par exemple par PLOT 523,129,1. Ce troisième paramètre est la couleur de ce qui va être écrit par PRINT ; un PRINT sous TAG oublie totalement le PEN en cours ! Très important : le point curseur graphique se trouve en haut à gauche du "pavé carré" du premier caractère de la chaîne. Après ce PRINT sous TAG, le curseur graphique se trouve alors en haut à gauche du pavé qui suit le dernier caractère de la chaîne.
Un exemple :

PLOT 423,129,3:TAG:PRINT "AMSTRAD";:TAGOFF

Le curseur graphique se trouve en final en haut à droite du "D" d'AMSTRAD (écrit en rouge). La preuve, faisons suivre par PRINT XPOS;YPOS - réponse : 535 129. TAGOFF est bien sûr l'annulation de TAG, à mettre tout de suite après usage, sinon vous ne pourrez plus écrire par des PRINT normaux, même avec un LOCATE !
Super-important : Mettez toujours un point-virgule à la suite de la chaîne à écrire sous AG, sinon, à la suite du mot.
vous aurez droit à deux caractères graphiques assez bizarres : une flèche coudée qui est le symbole de "CR" (Carriage Return) ou CHR$(13), suivie d'une flèche vers le bas, symbole de "LF" (Une Feed) ou CHR$(10h
Après ces préambules, revenons à notre programme de démonstration. On le met à la fois en transparence et en TAG pour afficher notre ligne de 25 "0", en jaune (lignes 210 à 220). TAGOFF, et par LOCATE banal cette même chaîne en rouge (ligne 240). On constate que la transparence joue et que ces "O" rouges s'entrelacent avec les "O" jaunes. Retour en TAG, on descendre curseur graphique et on affiche "llll" (lignes 250-260). Oh, surprise ! Ces "I" ont effacé en partie nos "O" rouges. Vérifions que la transparence n'est pas annulée, ligne 270, après un TAGOFF, affichons quatre "O" bleus sur nos "O" rouges, mais par un LOCATE banal" : la transparence est toujours active. Conclusion : la transparence est inactive avec un PRINT sous TAG.

TAG APRES UN DRAW
(Lignes 400 à 490)

Nous allons entrecroiser des traits verticaux fins (par DRAW) et des barres horizontales (P$), avec ou sans transparence. En bout, on marque "T1" ou "T0 ( = avec ou sans transparence). Dans l'ordre, on fait :

  • une barre T0;
  • un trait bleu T0: le trait apparaît sur la barre, le T0du trait rogne la barre ; normal ;
  • une barre T1 : elle "recouvre" le trait bleu ;
  • un trait rouge T1 : trace sur les deux barres ; le "T1" rogne la barre (pas de transparence en TAG) ;
  • un second trait rouge T1 mais plus court, le "T1" est recentré par un MOVER (ligne 440) ;
  • deux secondes de pause (ligne 450) ;
  • une barre T0;
  • une barre T1 : toutes deux recouvrent les trois traits ;
  • en bas d'écran, une chaîne en transparence "transparence ou non, le dernier recouvre" (c'est la conclusion) : caractères et traits font bon ménage ;
  • plus bas encore, un message sans transparence "tapez une touche" : un trait est localement effacé. Expliquons le MOVER -16,18 de la ligne 440 : nous avons dit que chaque caractère fait 16x16 points graphiques en MODE 1 (32 x 16 en MODE 0, 8 x 16 en MODE 2), et nous voulons centrer les deux caractères de "T1" au-dessus du trait.
    Il faut donc déplacer le curseur de 16 points à gauche (-16) et le remonter d'au moins 16, plus deux de séparation, d'où un MOVER -16,18. Un PLOTR – 16,18 aurait eu le même effet. Rappels : Le R final de DRAWR, PLOTR, MOVER signifie "RELATIF". La différence entre PLOTR et MOVER est que PLOTR trace le point, tandis que MOVER se contente de déplacer le curseur sans le marquer à l'écran. Pour un PRINT sous TAG, c'a6t sans importance puisque si le point est marqué, il sera aussitôt effacé par le "pavé" du premier caractère.

L'ECRITURE NON LINEAIRE
(Lignes 500 à 590)

Nous allons écrire une chaîne en demi-cercle ! Le principe est simple : on va faire des PLOT sur un demi cercle, et en TAG, on y affiche les caractères de la phrase, les uns après les autres. On va même faire mieux ; on change de couleur à chaque lettre (1, 2, 3, 1, 2, 3, etc.). L'effet est assez spectaculaire. Par défaut, l'ORIGIN graphique est située en 0,0 (coin en bas à gauche). En ligne 510, on la met à mi-largeur en la remontant un peu.
Le tracé va se faire selon un angle variant de 180 à 0 degrés, mais nos PLOT vont aller de 172 à 5° car il faut tenir compte de la hauteur de la première et de la dernière lettre. Ligne 534, on calcule l'angle DA entre
deux caractères. Dans une boucle FOR NEXT, on pointe le PLOT de couleur E ; sous TAG, on prélève le caractère suivant dans la chaîne à écrire (ligne 560), en incrémentant E de +1 et en le limitant entre 1 et 3.
En fin de tracé, on n'oublie pas en ligne 580 de tout remettre en ordre (pensez-y!).
Nous avons pris le cas du demi-cercle, mais la même technique par TAG .est applicable pour écrire en diagonale, en ligne brisée ou horizontalement (ou verticalement), mais avec un intervalle inhabituel entre chaque lettre.

MOT EN EVIDENCE
(Lignes 600 à 690)

Pour attirer l'attention sur un mot à l'écran, les méthodes ne manquent pas ! La plus simple est la transition minuscules/majuscules, mais on peut aussi changer de PEN (ligne 620), fabriquer un PEN clignotant (ligne 630). Ici, c'est INK2 qui alterne entre mauve et vert vif. On ralentit la vitesse d'origine par SPEED INK 15,15, c'est-à-dire durée mauve = 15, durée vert = 15 (en 1/50e de seconde). Essayez aussi :
630 INK 2,24,1:SPEED INK 15,10
C'est une alternance jaune ( = PEN1), marine ( = PAPER), plus long en jaune qu'en bleu.
L'inversion vidéo ( = échange PAPER/ PEN) s'obtient par PRINT CHR$(24), appelons cette longueur IV$ (ligne 610). La ligne 650 est alors facile à écrire... On peut combiner l'inversion vidéo avec le flashing (ligne 660) : seul le fond clignote.
Enfin, on peut changer simultanément PAPER et PEN (ligne 670). Des questions de (bon) goût, et d'originalité...
L'inversion vidéo se met et s'annule par CHR$(24).

MENUS DESCENDANTS
(Lignes 700 à 820)

C'est une application de l'inversion vidéo, où vous allez retrouver une certaine présentation de menus propres à des logiciels de qualité. Les différentes options sont présentées, mais une seule est en inversion vidéo. Une action sur la barre d'espacement, et c'est la ligne au-dessous qui est en inversion. Une action sur ENTER et cette option est exécutée. C'est une question d'incrémentation verticale. A chaque descente, l'option précédente est ré-écrite sans inversion. En bas de liste, on repart sur la ligne du haut. Spectaculaire et pas sorcier...

MENUS DEROULANTS
(Lignes 900 à 1030)

Variante de ce qui précède. Cette méthode est utilisée lorsque l'on manque de place à l'écran. Dans une fenêtre (WINDOW#1 ) étroite, ici trois lignes, on fait défiler un menu "déroulant" (sans fin). La ligne du milieu est en inversion vidéo, elle est donc fixe. A chaque pression sur une touche, les options défilent une à une. ENTER fait exécuter l'option en inversion vidéo. Le CHR$(18) de la ligne 910 efface ce qui est à droite du curseur.
La "nervosité" de ces deux menus étonne lorsque l'on sait que c'est pourtant du 100 % Basic.

NOTE SUR WINDOW : Lorsque l'on crée un WINDOW, il faut d'abord y faire un CLS# (ligne 910). La ligne 1020 efface WINDOW#1.

FAISONS LE BILAN

Au cours de ces petits programmes de démonstration, l'auteur en a profité pour illustrer des fonctions Basic de l'AMS-TRAD que certains d'entre vous ne connaissent "que de nom", voire pas du tout. Nous en faisons la liste, suivie du numéro de ligne où elles apparaissent : CHR$(22)(40), STRING$(60,90), CALL &BB06(140), TAG(210), TAGOFF(230), PLOTR(250), DRAWR(420>, MOVER (440), DEG(510), ORIGIN(510), CHR$(24)(610), SPEED INK(630), WHILE/WEND(770), ON... GOTO(820), WINDOW(910), CHR1(18)(910). Il est toujours profitable d'enrichir son vocabulaire...

CPC n°17

★ EDITEUR: CPC Revue
★ ANNÉES: 1985 , 1986
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC REVUE 1986
★ AUTEUR: Michel ARCHAMBAULT
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» Transparence  Tag  Inversion  Video    LISTINGDATE: 2015-11-16
DL: 228
TYPE: text
SiZE: 5Ko
NOTE:

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » RSX - Basicode-2
» Applications » RSX-Center (Sizin Amstrad)
» Applications » RSX Clock (Popular Computing Weekly)
» Applications » RSX Line Box Rec
» Applications » RSX Repeat (CPC Amstrad International)
» Applications » RSX Exform: Extended Diskformat (CPC Magazin)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 723 millisecondes et consultée 1928 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.