Je ne peux pas içi expliquer le codage bit à bit des pixels d'une image. En gros, pour les nombres de plans jusqu'à 8, un pixel est associé à un index de couleur dans une palette.Cet index pointe donc sur la vraie couleur du pixel. A partir de 15 plans, on est en True Color, c'est à dire que chaque pixel est associé à sa valeur de couleur (donc sur 15, 16, 24 ou 32 bits). Autant en True Color, on s'en sort assez bien, autant en mode palette (bit-plan), cela devient rapidement complexe car chaque pixel voit un des bits de son index codé sur un mot 16 bits. Il faudrait donc rechercher ce bit, rassembler les mêmes bits d'un pixel pour reconsitituer son index, etc... Cela devient rapidement lassant et pour aller vite, cela nécessite des optimisations en assembleur. Heureusement, VISION propose des fonctions vous simplifiant le travail avec VAPI.
Les LDV de VISION peuvent au choix travailler dans un des 3 formats suivants (notez bien que votre LDV n'a aucun intérêt à gérer les 3 formats, VISION lui passera le format qu'il souhaite):
Ce petit tableau précise ces différents formats (R = Rouge, V = Vert, B = Bleu):
Format | Nombre de bits / pixel | Description |
Standard | 1, 2, 4, 8 | Format standard défini par ATARI. Les plans de pixels (16 pixels) sont mis les uns à la suite des autres. En True-Color, ce format existe peut être mais j'aime autant pas le savoir ! |
ATARI | 1, 2, 4, 8 | Format bit-plan ATARI. Très classique, c'est le format des modes ST-Basse, ST-Moyenne et ST-Haute, puis par extension, le format des modes bit-plan du Falcon. Contrairement au mode Standard, les plans sont entrelacés (Plan0 - Plan1 - Plan2 - Plan 3, par exemple pour 16 couleurs (4 bits, soit 4 plans)) |
16 | Mode True Color du FALCON. Chaque pixel
est codé sur un mot 16 bits de la façon suivante: RRRRRVVVVV0BBBBB 15 --> 0 Bit # En fait le codage effectif est sur 15 ou 16 pixels. Le niveau de vert peut être codé sur 6 bits (65K) au lieu de 5 (32K). |
|
24 | Dommage que VISION ne le gère pas ! | |
32 | RVB0, R, V, B = composante rouge,verte ou bleue sur 8 bits (0...255) | |
Spécifique | 1, 2, 4, 8, 16, 24, 32 | Spécifique à la carte graphique. Aucune hypothèse sur le codage des bits d'un pixel ne peut être faite. |
Privilégiez au maximum le format spécifique car c'est le plus économe en mémoire. Si votre LDV ne doit manipuler que des lignes et des colonnes, vous n'avez pas à vous soucier du codage interne des pixels, les fonctions VDI vro_... s'en chargent.
Si vous devez manipuler des pixels, je vous conseille d'utiliser le format ATARI car VISION vous permet de récupérer facilement les index au travers de VAPI.
Le format standard ne sert pas à grand chose, si ce n'est en interne à VISION pour afficher les images correctement. Donc, à moins que vous n'ayez développé des routines équivalentes à celles proposées dans VAPI, je vous déconseille l'utilisation de ce format.
Vous devez savoir programmer en C ! Les LDV ne dépendent pas à priori du compilateur (j'ai fait au mieux mais comme je n'utilise que Pure C, je ne peux pas être catégorique).
Vous devez être à l'aise en C et ne pas être effrayé par la manipulation des pointeurs sur les structures et fonctions.
Si vous connaisez les LDG, ce sera utile mais pas obligatoire, le squelette de LDV les cachent assez bien.