/*************************************************************************************************************************************/ /* */ /* 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