/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S P O U R L E S F O N C T I O N S D E B A S E D ' E D I T I O N */
/* D E S I M A G E S S U I V A N T L A B I B L I O T H E Q U E ' F R A M E - B U F F E R U l t r a N e t ' : */
/* */
/* */
/* Definition : */
/* */
/* Ce fichier contient toutes les */
/* definitions pour les fonctions */
/* de base d'edition des images raster */
/* suivant la bibliotheque d'acces au */
/* frame-buffer 'UltraNet' connecte aux */
/* CRAYs YMP. */
/* */
/* */
/* Author of '$xiidU/fonction$DEF' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 19910000000000). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* O P P O R T U N I T E D E C O M P I L E R C E M O D U L E : */
/* */
/*************************************************************************************************************************************/
#ifdef SYSTEME_CRAYC98_UNICOS
#Aifdef SYSTEME_CRAYC98_UNICOS
#Eifdef SYSTEME_CRAYC98_UNICOS
#ifdef SYSTEME_CRAYC916_UNICOS
#Aifdef SYSTEME_CRAYC916_UNICOS
#Eifdef SYSTEME_CRAYC916_UNICOS
#ifdef SYSTEME_CRAYYMP1_UNICOS
#Aifdef SYSTEME_CRAYYMP1_UNICOS
#Eifdef SYSTEME_CRAYYMP1_UNICOS
#ifdef SYSTEME_CRAYYMP2_UNICOS
#Aifdef SYSTEME_CRAYYMP2_UNICOS
#Eifdef SYSTEME_CRAYYMP2_UNICOS
#ifdef SYSTEME_CRAYYMP4_UNICOS
# if ( (defined(EDFR22)) \
|| (defined(EDFR22h)) \
)
# define __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER \
/* Sur un ordinateur CRAY YMP, compiler la bibliotheque graphique, meme si la norme */ \
/* 'X-Windows' est presente... */
# Aif ( (defined(EDFR22)) \
|| (defined(EDFR22h)) \
)
# Eif ( (defined(EDFR22)) \
|| (defined(EDFR22h)) \
)
#Aifdef SYSTEME_CRAYYMP4_UNICOS
#Eifdef SYSTEME_CRAYYMP4_UNICOS
#ifdef SYSTEME_SUN3_SUNOS_CC
#Aifdef SYSTEME_SUN3_SUNOS_CC
#Eifdef SYSTEME_SUN3_SUNOS_CC
#ifdef SYSTEME_SUN4_SUNOS_CC
# if ( (defined(EDFR13)) \
)
# define __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER \
/* Sur un ordinateur SUN4, compiler la bibliotheque graphique, meme si la norme */ \
/* 'X-Windows' est presente... */
# Aif ( (defined(EDFR13)) \
)
# Eif ( (defined(EDFR13)) \
)
#Aifdef SYSTEME_SUN4_SUNOS_CC
#Eifdef SYSTEME_SUN4_SUNOS_CC
#ifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N C L U D E S S P E C I F I Q U E S D E ' F R A M E - B U F F E R U l t r a N e t ' : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* B U G S D E S B I B L I O T H E Q U E S G R A P H I Q U E S : */
/* */
/*************************************************************************************************************************************/
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_include_1 \
/* Le fichier d'includes <ultra/ugraf.h> est vide... */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_status_1 \
/* Le compte-rendu n'est pas renvoye (ce qui signifie que la valeur initiale de la variable */ \
/* 'compte_rendu_des_operations' reste inchangee quelle que soit la fonction utilisee...). */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_DIMENSION_DE_L_IMAGE_1 \
/* La fonction 'UINIT(...)' demande comme parametres [Xmin,Xmax+1]x[Ymin,Ymax+1], et non */ \
/* pas [Xmin,Xmax]x[Ymin,Ymax] ; ce qui est appele 'Xmax' et 'Ymax' dans 'UINIT(...)' l'est */ \
/* donc improprement... */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_UFLIP_1 \
/* La fonction 'UFLIP(...)' en mode 'SYNCHRONISATION_VERTICALE' ne marche pas, et fait que */ \
/* la suite des operations se passe tres mal, en particulier rien n'apparait a l'ecran... */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_UPAN_1 \
/* La fonction 'UPAN(...)' ne marche pas, et fait que la suite des operations se passe tres */ \
/* mal, en particulier rien n'apparait a l'ecran... */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_FORMAT_DES_NIVEAUX_1 \
/* La fonction 'USCWRT(...)' travaille en entiers, et non pas en caracteres... */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_ORIGINE_DES_LIGNES_1 \
/* La fonction 'USCWRT(...)' ignore "royalement" son parametre donnant l'abscisse du premier */ \
/* point de chaque ligne. */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_IMAGE_1 \
/* L'axe 'OY' du frame-buffer UltraNet descend au lieu de monter... */
# TestADef BUG_SYSTEME_ULTRANET_FRAME_BUFFER_UNE_SEULE_IMAGE_1 \
/* La diffusion d'une seule image est ineffective : il faut l'envoyer deux fois pour la */ \
/* faire apparaitre a l'ecran... */ \
/* */ \
/* ATTENTION, ce bug est defini (parce qu'il existe reellement), mais n'est pas utilise... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D E S F O N C T I O N S D E P A S S A G E D E S */
/* C O O R D O N N E E S A U X L O N G U E U R S E T I N V E R S E M E N T : */
/* */
/*************************************************************************************************************************************/
# define CUXR(abscisse) \
COOR(abscisse,XminU) \
/* Passage d'un 'X' a une longueur, */
# define CUYR(ordonnee) \
COOR(ordonnee,YminU) \
/* Passage d'un 'Y' a une longueur. */
# define CUXA(longueur) \
COOA(longueur,XminU) \
/* Passage d'une longueur a un 'X', */
# define CUYA(longueur) \
COOA(longueur,YminU) \
/* Passage d'une longueur a un 'Y'. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N D U " P L A N D E T R A V A I L " 1 0 2 4 x 1 0 2 4 : */
/* */
/*************************************************************************************************************************************/
# define logXYU \
DIX
# define logXU \
logXYU \
/* Logarithme de la dimension horizontale, */
# define logYU \
logXYU \
/* Logarithme de la dimension verticale. */
# define XminU \
COORDONNEE_MINIMALE \
/* Abscisse minimale, */
# define XmaxU \
COORDONNEE_MAXIMALE(logXU) \
/* Abscisse maximale. */
# define dimXU \
DIMENSION(XminU,XmaxU) \
/* Dimension de l'axe horizontal. */
# define PasXU \
PAS_COORDONNEE \
/* Pas horizontal. */
# define dimXU2 \
MOIT(dimXU) \
/* Definition de la longueur de la moitie de l'axe horizontal. */
# define XminU2 \
ADD2(XminU,dimXU2) \
/* Definition de l'abscisse minimale de [XmaxU/2,XmaxU]. */
# define XmaxU2 \
PRED(XminU2) \
/* Definition de l'abscisse maximale de [XminU,XmaxU/2]. */
# define XcentreU \
XminU2 \
/* Centre "approximatif" de [XminU,XmaxU]. */
# define YminU \
COORDONNEE_MINIMALE \
/* Ordonnee minimale, */
# define YmaxU \
COORDONNEE_MAXIMALE(logYU) \
/* Ordonnee maximale. */
# define dimYU \
DIMENSION(YminU,YmaxU) \
/* Dimension de l'axe vertical. */
# define PasYU \
PAS_COORDONNEE \
/* Pas vertical. */
# define dimYU2 \
MOIT(dimYU) \
/* Definition de la longueur de la moitie de l'axe vertical. */
# define YminU2 \
ADD2(YminU,dimYU2) \
/* Definition de l'ordonnee minimale de [YmaxU/2,YmaxU]. */
# define YmaxU2 \
PRED(YminU2) \
/* Definition de l'ordonnee maximale de [YminU,YmaxU/2]. */
# define YcentreU \
YminU2 \
/* Centre "approximatif" de [YminU,YmaxU]. */
# if ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_01)) \
)
# Aif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_01)) \
)
# Eif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_01)) \
)
# if ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) \
)
# Aif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) \
)
# Eif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) \
)
# if ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03)) \
)
# Aif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03)) \
)
# Eif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03)) \
)
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E N O R M A L I S A T I O N D E S A X E S : */
/* */
/*************************************************************************************************************************************/
# define _cDENORMALISE_OXU(coordonnee) \
_cDENORMALISE_AXES(XminU,dimXU,coordonnee)
# define _lDENORMALISE_OXU(longueur) \
_lDENORMALISE_AXES(dimXU,longueur)
/* Normalisation d'une longueur sur l'axe OX ; l'unite represente [XminU,XmaxU]. */
# define _cDENORMALISE_OYU(coordonnee) \
_cDENORMALISE_AXES(YminU,dimYU,coordonnee)
# define _lDENORMALISE_OYU(longueur) \
_lDENORMALISE_AXES(dimYU,longueur)
/* Normalisation d'une longueur sur l'axe OY ; l'unite represente [YminU,YmaxU]. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* N O R M A L I S A T I O N D E S A X E S : */
/* */
/*************************************************************************************************************************************/
# define _____cNORMALISE_OXU(coordonnee) \
_____cNORMALISE_AXES(XminU,dimXU,coordonnee)
# define _____lNORMALISE_OXU(longueur) \
_____lNORMALISE_AXES(dimXU,longueur)
/* Denormalisation d'une longueur sur l'axe OX ; l'unite represente [XminU,XmaxU]. */
# define _____cNORMALISE_OYU(coordonnee) \
_____cNORMALISE_AXES(YminU,dimYU,coordonnee)
# define _____lNORMALISE_OYU(longueur) \
_____lNORMALISE_AXES(dimYU,longueur)
/* Denormalisation d'une longueur sur l'axe OY ; l'unite represente [YminU,YmaxU]. */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S N E C E S S A I R E S : */
/* */
/*************************************************************************************************************************************/
# define RAPPORT_DE_ZOOM_STANDARD_DU_FRAME_BUFFER_ULTRANET \
UN \
/* Rapport de zoom standard (c'est-a-dire ne modifiant pas la taille de l'image). */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* S T R U C T U R E S N E C E S S A I R E S : */
/* */
/*************************************************************************************************************************************/
#Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER
#Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_ULTRANET_FRAME_BUFFER