J'ai mentionné CText et d'autres types d'extensions au langage AMOS, mais sans encore entrer dans les détails sur la façon dont vous les utiliseriez. Cependant, le moment est venu.
CText est une autre extension du langage AMOS écrite par Aaron Fothergill de Shadow Software, et vous l'ajoutez à votre système AMOS comme toute autre extension. D'abord, vous utilisez le programme INSTALL pour copier la bibliothèque CTEXT.Lib
dans votre répertoire AMOS_SYSTEM
, puis vous utilisez le programme Config1.x.AMOS
, quel que soit votre système, pour vous assurer qu'AMOS sait que l'extension est chargée et prête à l'emploi. Une fois installée, l'extension apparaît sur l'écran de démarrage d'AMOS et les commandes deviennent partie intégrante de l'ensemble de commandes AMOS.
CText signifie Colour Text (Texte en couleur), et c'est une extension du langage AMOS qui vous permet d'utiliser des polices en couleur qui sont en fait des polices basées sur des banques d'icônes. En d'autres termes, la police est composée d'icônes plutôt que de texte, et là où vous utiliseriez normalement les commandes TEXT
, vous pouvez maintenant utiliser les commandes CTEXT
pour obtenir de magnifiques polices en couleur.
Celles-ci peuvent être dessinées en jusqu'à 64 couleurs en utilisant n'importe quel programme de dessin pour Amiga, et peuvent être affichées à l'écran avec un espacement proportionnel et même du crénage. Les polices CText sont chargées en tant que banques d'icônes, et une fois chargées, elles n'ont plus besoin de l'être à nouveau. Lorsqu'elles sont requises, vous les appelez simplement et, si elles sont chargées dans la bonne banque, elles s'affichent à l'écran comme n'importe quelle police normale.
Utilisé dans un environnement AMOS, CText fonctionne exactement de la même manière que la commande TEXT
, et en fait s'affiche plus rapidement que l'utilisation de TEXT
avec une police basée sur disque. Sur la disquette de CText, vous disposez de deux versions de l'extension CText, une pour AMOS 1.23 et une pour la version 1.3 et supérieures, autrement dit les versions compilateur d'AMOS.
Celles-ci s'installent via un programme AMOS appelé CText_INSTALL.AMOS
, que vous devez exécuter. Dans la nouvelle version de CText, appelée CText 2.0, il existe une nouvelle version du programme FONT_SETTER.AMOS
, qui sert à configurer vos polices CText pour leur utilisation. Également présents sur la disquette : un certain nombre de démos que vous pouvez exécuter et examiner, ainsi qu'un vaste répertoire de polices à essayer. Le tableau 7.1 vous donne une liste de ces polices, et ceux qui ont une grande expérience des polices en PAO sur Amiga et Mac reconnaîtront certains de ces noms.
Tous les programmes des versions précédentes de CText étaient fournis sous deux formes, pour AMOS V1.23 et V1.3, et cela était nécessaire car les systèmes d'extension de ces versions d'AMOS sont légèrement différents, et requièrent des versions légèrement différentes de l'extension CText. Il n'existe qu'une seule version du nouveau système, car ce CText 2.0 est uniquement disponible en tant que mise à jour du système d'origine.
CText est conçu pour être utilisé en remplacement de la commande TEXT dans AMOS. Au lieu d'utiliser les méthodes habituelles pour obtenir du texte en couleur, c'est-à-dire des polices IFF et beaucoup de programmation judicieuse, il utilise simplement une banque d'ICÔNES (banque échangée vers la banque 10) pour stocker tous les caractères, ainsi qu'une petite table de données de 768 octets permettant d'indiquer quelle icône utiliser pour chacun des 256 caractères, ainsi que la largeur et la ligne de base de chaque caractère (en mode d'espacement proportionnel).
Si vous n'utilisez que du texte non proportionnel avec une largeur et une ligne de base fixes, alors les octets 2 et 3 sont ignorés. L'une des astuces de CText est que vous pouvez assigner la même icône à plusieurs caractères.
CText nécessite que ses icônes soient dans la banque 10, donc normalement vous les chargez dans la banque 2 comme d'habitude, en utilisant NO ICON MASK ou MAKE ICON MASK selon le besoin, puis vous utilisez la commande BANK SWAP pour les transférer dans la banque 10, comme ceci :
Bank swap 2,10
La seule autre chose que vous devez charger pour la police est la table de données de police de 768 octets :
BLOAD "afont.abk.CFNT",font data
Le programme Fontsetter sauvegarde toujours les données de police avec le nom de la banque d'icônes suivi de .CFNT.
Cette routine permet de charger une police CText en mémoire :
F$="Bigfont" Load F$+".abk" Make Icon Mask Bank Swap 2,10 Bload F$+".abk.cfnt",Font Data
Une fois que vous avez votre propre copie de CText 2.0, vous pouvez essayer ce programme pour parcourir quelques-unes des polices et voir à quoi elles ressemblent :
Rem * Show CText Fonts.AMOS * Rem Do Curs Off : Flash Off : Cls 0 Erase 2 Erase 10 F$=Fsel$("CTEXT2:fonts/*.abk","","Load a CFont") Load F$ No Icon Mask Get Icon Palette Bank Swap 2,10 Bload F$+".cfnt",Font Data Autoback 0 Font Size 0,0 Ctext 10,30,"Hello World, CText here!" Wait Key Loop
Le programme affichera une boîte de dialogue pour vous permettre de charger une police, puis il la chargera. NO ICON MASK
signifie que la police n'est pas transparente sur la couleur 0, mais sur un écran noir cela n'a pas d'importance. Si vous souhaitiez superposer du texte sur quelque chose d'autre, vous pourriez utiliser MAKE ICON MASK
à la place.
GET ICON PALETTE
récupère évidemment la palette de la banque d'icônes, dans ce cas la police que nous avons chargée. BANK SWAP
transfère la police iconisée vers la banque 10, où CText fonctionne, et BLOAD
charge le fichier de données de police. Le mot FONT DATA
est une variable réservée, et c'est là que les 768 octets de données sont stockés en mémoire. La police est affichée, et le programme attend que vous appuyiez sur une touche, puis tout recommence.
Dans CText 2.0, un certain nombre de nouvelles commandes sont disponibles, qui fonctionnent comme suit :
Cette commande définit la largeur et la ligne de base de la police. Si la valeur zéro est utilisée pour X ou Y, alors la largeur ou la ligne de base correspondante sera utilisée depuis la table de données. Exemples :
Font Size 32,16 : Tous les caractères ont une largeur de 32 pixels et une ligne de base de 16 pixels Font Size 0,16 : Largeur proportionnelle, mais ligne de base fixe de 16 pixels Font Size 11,0 : Largeur fixe de 11 pixels, avec ligne de base proportionnelle Font Size 0,0 : Largeur et ligne de base proportionnelles
La commande pour afficher le texte est CText
, qui utilise exactement les mêmes paramètres que la commande TEXT
, vous pouvez donc simplement remplacer toutes vos commandes TEXT
par CText
, et vos programmes fonctionneront normalement.
Les polices multiples (Multifonts) sont une nouvelle fonctionnalité. Cette commande permet de choisir le numéro de la police à partir de votre programme, où n
est le numéro de la police.
Normalement, CText utilise la banque 10 pour stocker les icônes et la banque 11 pour stocker les données de police en mode multifontes. Mais il se peut que vous souhaitiez changer de banques pour une raison quelconque, par exemple si autre chose dans votre programme occupe déjà cet espace. Cette commande permet donc de définir la banque de données (a) et la banque d'icônes (b).
Cette commande permet de créer un effet de crénage du texte, c'est-à-dire que les lettres se chevauchent un peu plus ou un peu moins. Cela permet au texte de prendre moins de place, tout en étant parfois plus esthétique.
Cette commande permet d'incliner le texte vers le haut ou vers le bas par paliers.
Cette commande imprime la police deux fois avec un léger décalage.
Cette commande définit des tabulations sur l'écran. Si vous avez déjà utilisé un traitement de texte ou une machine à écrire, cela vous semblera familier.
=PLEN(string)
: Renvoie la longueur en pixels de la chaîne. Utile pour prévoir l'espace qu'elle prendra à l'écran.=PHEIGHT(string)
: Renvoie la hauteur de la chaîne, comme PLEN
.=LAST CTX
: Détecte la position du dernier pixel de la dernière chaîne affichée.=CFONT$(n)
: Permet de changer de police au milieu d'une chaîne.=KERN$(n)
: Fonction similaire à CFONT$
mais pour le crénage.=CTAB
: Insère une tabulation directement depuis une chaîne.FONT BASE
=FONT DATA
Renvoie l'emplacement en mémoire des zones de données de CText et de la police. Utile pour créer des effets spéciaux en code machine.Toutes ces nouvelles fonctions améliorent la façon dont vous pouvez utiliser le programme de façon spectaculaire, et un bon nombre de ces commandes vous permettent de créer des textes en mouvement avec une grande facilité. La création et la manipulation de texte ne pourraient pas être plus simples. Alors, comment créer une police utilisable avec l'extension CText ?
Les polices CText sont très faciles à créer. Il vous faut créer une banque d'icônes AMOS, chaque icône correspondant à un caractère de la police. Il existe déjà un certain nombre de disquettes dans le domaine public contenant des polices couleur sous forme de fichiers IFF. Et l'avantage est qu'il n'y a aucune restriction de couleur, de plan de bits ou de taille, donc si AMOS peut afficher le fichier IFF, CText peut afficher la police. Les disquettes PD abondent, mais l'une des meilleures méthodes consiste à prendre une police PD et l'adapter, ce qui permet de récupérer les brillantes idées de conception tout en utilisant sa propre palette ou une variation sur leur thème.
Bon, supposons que vous souhaitiez créer votre propre police. Vous aurez besoin de Deluxe Paint pour cela. Je pourrais couvrir toutes les possibilités en disant « vous pouvez utiliser n'importe quel logiciel de dessin compatible IFF », mais à quoi bon ? Tout le monde utilise DPaint, alors inutile de lutter ! Vous créez une police en plaçant tous les caractères sur l'écran en rangées, comme ceci :
ABCDEFGHI-J KLMNOPQRST UVWXYZ B'tC
en veillant à ce qu'il y ait des espaces entre tous les caractères. Ensuite, enregistrez l'écran sous forme de fichier IFF sur disque.
Ensuite, vous chargez SpriteX et découpez les caractères sous forme de sprites, en utilisant l'outil de capture de sprites intégré. Une fois la découpe terminée, parcourez la banque avec la fonction Auto Scrunch activée pour éliminer tout espace perdu. (Les versions récentes de SpriteX permettent de le faire automatiquement en appuyant sur la touche Z.) Une fois cette étape réalisée et que vous êtes satisfait de la police, cliquez sur le bouton SWAP dans la ligne supérieure, afin de transformer la banque de sprites en banque d'icônes.
Ensuite, vous devez utiliser le programme Fontsetter. Cet utilitaire permet d'assigner les icônes aux caractères ASCII ainsi que les largeurs et les lignes de base. En cliquant sur l'un des caractères ASCII listés, ...
L'image utilisée apparaît dans la zone d'édition à gauche, en bas de l'écran. Vous pouvez utiliser le bouton gauche de la souris pour faire glisser les lignes de ligne de base et de largeur autour de ce caractère, ou cliquer avec le bouton droit pour définir automatiquement la largeur comme étant la largeur de l'icône + 2 pixels et la ligne de base jusqu'en bas de l'icône. En cliquant sur les caractères ASCII avec le bouton droit, vous stockez l'icône affichée dans la case de droite pour ce caractère.
Les multifonts sont des polices CText contenant plus d'un jeu de caractères. Cela signifie que vous pouvez disposer de plusieurs styles dans votre programme en même temps, plutôt qu'un seul ensemble qui pourrait devenir lassant au bout d'un moment. La création de plusieurs types de polices dans une seule banque est largement gérée par le programme Fontsetter.
Avec Fontsetter, vous pouvez créer des polices depuis zéro, mais avec le programme Font Converter, vous pouvez convertir directement une police AmigaDOS classique en une police CText. Cela signifie que vous pouvez utiliser la richesse des polices couleur disponibles dans le domaine public et dans le commerce, comme l'épique ensemble Karafonts. Quelle que soit la méthode choisie pour générer vos polices CText, vous ne le regretterez pas car c'est la meilleure façon de gérer les polices dans les jeux AMOS.
Pour vous faciliter encore plus la tâche, un programme tutoriel est inclus sur la disquette, qui vous guide à travers tous les aspects de l'utilisation du programme, et s'assure que vous comprenez bien tous les concepts de base.
Comme vous pouvez le voir, c'est un jeu d'enfant, et je recommande vivement ce programme à tous ceux qui prennent la programmation AMOS au sérieux. La flexibilité et la rapidité du système sont telles que je ne vois vraiment plus personne utiliser les vieilles routines de police IFF éculées. Mais pour tirer le meilleur parti de CText, il faut vraiment utiliser SpriteX, et par chance, une nouvelle version est déjà disponible au moment où vous lirez ceci. Voir le chapitre 10 pour plus de détails sur SpriteX 2.0.