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 : Fonction ImageSize

Déclaration

function ImageSize( x1, y1, x2, y2 : Integer ) : LongInt

Description

La fonction ImageSize calcule la taille de la section d'écran avec les points d'angle (x1, y1) et (x2, y2) plus une constante pour la taille d'un buffer, comme c'est le cas pour l'utilisation de GetImage et PutImage sont requis.

Avant d'appeler ImageSize, vous devez passer en mode graphique avec InitGraph ou SetGraphMode.

Références croisées GetImage PutImage

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 :
  • 6 + (40×32) = 1286 octets si vous avez 8 bits par pixel
  • 6 + (40×32)/2 = 646 octets si vous avez 4 bits par pixel
  • 6 + (40×32)/4 = 326 octets si vous avez 2 bits par pixel
  • 6 + (40×32)/8 = 166 octets si vous avez 2 bits par pixel

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!

Les unités CRT, DOS, Graph, Overlay, Printer et System sont standard à TOUS les compilateurs Pascal compatible avec Turbo Pascal 5. L'unité String a été introduit avec Turbo Pascal 7 (Et Pure Pascal 1.1) et permet de manipuler les chaines de caractères de type langage C. Les Unités GEM (VDI et AES) et TOS (BIOS, GEMDOS et XBIOS) sont spécifiques au système Atari ST et contiennent parfois des fonctions équivalentes à certaines fonctions des Unités générales (notamment BIOS). Les fonction XBIOS sont des fonctions permettant de tirer pleinement partie du matériel spécifique Atari, notamment Falcon (Audio, DSP, Blitter, Résolutions étendues etc)


Copyright © 2021 par Albatros Concept (Bruno Aubin)