Accueil        Lexique        UNITéS        Algorithmes        Tutoriel   

Les unités de Pure Pascal (langage Pascal pour les ordinateurs de la gamme Atari ST), compatible Turbo Pascal.

Unité Graph : Procédure PutImage

Déclaration

procedure PutImage( x, y : Integer; var bitmap; mode : Word )

Description

La procédure PutImage copie le contenu du buffer aux coordonnées (x, y). mode spécifie un lien logique entre le contenu du buffer et le fond d'écran. Le tampon doit d'abord être rempli avec GetImage.
PutImage n'est jamais tronqué aux bords de la fenêtre de dessin !

Avant d'appeler PutImage, il faut passer en mode graphique avec InitGraph ou SetGraphMode.

Références croisées GetImage ImageSize

Exemple

uses Graph;
var
  driver, mode : Integer;
  p : Pointer;
  size : LongInt;
begin
  driver := Detect;
  InitGraph( driver, mode, '' );
  Bar( 20, 20, 80, 80 );
  SetFillStyle( HatchFill, 1 );
  Bar( 40, 40, 100, 100 );
  size := ImageSize( 30, 30, 70, 70 );
  GetMem( p, size );
  GetImage( 30, 30, 70, 70, p^ );
  Readln;
  PutImage( 130, 30, p^, NormalPut );
  PutImage( 20, 20, p^, XORPut );
  Readln;
  CloseGraph;
end.

Format de sauvegarde (Ajout du webmaster Bruno AUBIN)

Avec la procédure GetImage, le format de sauvegarde dans la zone mémore pointée par la variable image est ainsi donnée:
  1. Largeur en pixels (Type word)
  2. hauteur en pixels (Type word)
  3. nombre de bits par pixels (Type word) : 65536 bit maxi (le maximum possible dans tous les systèmes informatique actuels est de 24 bits, ou 32 avec le masque)
  4. Données...
Les données sont une suite alignée de couleurs de l'ensemble de l'image, comme pour le format RAW.

Le format des données dépend du nombre de bits données dans le 3ème paramètre d'entête. En général, le nombre de bits est de 1 bit (2 couleurs possibles), 2 bits (4 couleurs possibles), 4 bits (16 couleurs), 8 bits (256 couleurs), 16 bits soit 2 octets (65536 couleurs comme sur l'Atari Falcon 030) ou 24 bits soit 3 octets (Format true color).
Ce nombre de bits dépend du nombre de couleurs gérées sur votre mode vidéo courant, il peut être supérieur à ce que Graph peut gérer en nombre de couleurs (qui est de 16 couleurs max sur Turbo Pascal et Pure Pascal).

Si vous voulez écrire une fonction ou une procédure pour manipuler les données du pointeur image, vous devez donc tenir compte du nombre de bits par couleur (3ème paramètre) sauvegardé dans cette zone. S'il s'agit de 4 bits, cela signifie qu'un octet (8 bits) donne les couleurs de 2 pixels consécutifs. S'il s'agit de 2 bits, un octet donnera les couleurs de 4 pixels consécutifs.
Pour gérer les couleurs de pixels par octet de data, vous devez créer une variable "masque" dont la valeur est 2nb_bits-1 pour avoir la couleur du pixel le plus à droite de l'octet, puis diviser par 2nb_bits pour décaler les bits de gauche vers la droite. Il vaut mieux utiliser la division que les décalages de bits, cette opération est au moins aussi rapide, voire plus, lorsque converti en langage machine que les seuls décalages de bits!!.

Important : Il est à noter aussi que pour chaque rangée, le format image utilise des données pour un multiple de 8 pixels par excès. Ca signifie que si vous enregistrez 65 pxl de large (64+1), la fonction GetImagesize prendra en compte 72 pixels de large (au lieu de 65)!

Exemple

Si vous avez sauvegardé une image de 37×32 pxl, le nombre de pixel de large sera de Round(37/8 + 0.5)×8 = 40 et la place nécessaire en octets sera de :
Vous trouverez dans cette zone la liste de toutes les Unités (équivalent des "Librairies" en C) de Pure Pascal. Les Unités indiqués comme standards existent dans la majorité des compilateurs Pascal existant sur ordinateurs 16 bits et au dela (dont Turbo Pascal 3 mini). Les unités indiqués comme Atari sont spécifiques aux systèmes d'exploitation des Atari ST (TOS n.n).

Accès aux unités

Les menus déroulants de chaque unité sont des accès directs aux procédures et fonctions, classés alphabétiquement (sans tenir compte de la casse, puisque le langage Pascal ne tient pas compte de la casse!)
CRT (Standard)

DOS (Standard)

GEM : AES (Atari)

GEM : VDI (Atari)

Graph (Standard)

Overlay (Standard)

Printer Strings (Standard)

System (Standard)

TOS : BIOS (Atari)

TOS : GEMDOS (Atari)

TOS : XBIOS (Atari)

Cette page Unités est issu du fichier UNIT.HLP de la documentation de Pure Pascal (d'Application Systems Heidelberg), qui a été convertie en format TXT puis traduite de l'Allemand grâce à Google Translator : des milliers de copier/coller de et vers Google translator ont été nécessaires, ne connaissant pas un mot d'Allemand!


Copyright © 2021 par Albatros Concept (Bruno Aubin)