/*************************************************************************************************************************************/ /* */ /* 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 R L E B I T - M A P C O U L E U R D P X 5 0 0 0 : */ /* */ /* */ /* Definition : */ /* */ /* Ce fichier contient toutes les */ /* definitions pour les fonctions */ /* de base d'edition alpha-numerique et */ /* graphique des images raster, quelle que */ /* soit la definition. Mais attention */ /* ce fichier est une copie amelioree, */ /* des fichiers "/usr/include/gds.h" */ /* et "/usr/include/tk.h" d'origine */ /* 'BULL'... */ /* */ /* */ /* Author of '$xiidd/fonction$DEF' : */ /* */ /* Jean-Francois Colonna (LACTAMME, 19880000000000). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_DPX5000_SPIX_CC # ifndef X_WINDOW_CPP # define __VERSION__COMPILER_LE_GRAPHIQUE_SPIX \ /* Sur un ordinateur DPX5000 sous SPIX compiler la bibliotheque graphique du bit-map, */ \ /* lorsque la norme 'X-Windows' n'est pas presente... */ # Aifndef X_WINDOW_CPP # Eifndef X_WINDOW_CPP #Aifdef SYSTEME_DPX5000_SPIX_CC #Eifdef SYSTEME_DPX5000_SPIX_CC #ifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_DPX5000_GRAPHIQUE_spxa_1 \ /* La fonction 'spxa' d'affichage de matrices de pixels a un probleme : lorsque */ \ /* l'on souhaite visualiser une sous-image de l'image, quelles que soient les valeurs */ \ /* definissant le coin bas-gauche de la sous-image dans l'image (avec les axes */ \ /* inverses), la sous-image est prelevee dans le coin bas-gauche de l'image entiere... */ # TestADef BUG_SYSTEME_DPX5000_GRAPHIQUE_spxa_2 \ /* La fonction 'spxa' d'affichage de matrices de pixels a un autre probleme : lorsque */ \ /* l'on souhaite visualiser une sous-image de l'image, il reste en general, en haut */ \ /* une bande de la sous-image anterieure, qui n'est mise a jour qu'a la sous-image */ \ /* suivante... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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 C5XR(abscisse) \ COOR(abscisse,Xmin5) \ /* Passage d'un 'X' a une longueur, */ # define C5YR(ordonnee) \ COOR(ordonnee,Ymin5) \ /* Passage d'un 'Y' a une longueur. */ # define C5XA(longueur) \ COOA(longueur,Xmin5) \ /* Passage d'une longueur a un 'X', */ # define C5YA(longueur) \ COOA(longueur,Ymin5) \ /* 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 " 5 1 2 x 5 1 2 : */ /* */ /*************************************************************************************************************************************/ # if ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_01)) \ ) # define logXY5 \ logXY # define logX5 \ logXY5 \ /* Logarithme de la dimension horizontale, */ # define logY5 \ logXY5 \ /* Logarithme de la dimension verticale. */ # define Xmin5 \ COORDONNEE_MINIMALE \ /* Abscisse minimale, */ # define Xmax5 \ COORDONNEE_MAXIMALE(logX5) \ /* Abscisse maximale. */ # define dimX5 \ DIMENSION(Xmin5,Xmax5) \ /* Dimension de l'axe horizontal. */ # define PasX5 \ PAS_COORDONNEE \ /* Pas horizontal. */ # define dimX52 \ MOIT(dimX5) \ /* Definition de la longueur de la moitie de l'axe horizontal. */ # define Xmin52 \ ADD2(Xmin5,dimX52) \ /* Definition de l'abscisse minimale de [Xmax5/2,Xmax5]. */ # define Xmax52 \ PRED(Xmin52) \ /* Definition de l'abscisse maximale de [Xmin5,Xmax5/2]. */ # define Xcentre5 \ Xmin52 \ /* Centre "approximatif" de [Xmin5,Xmax5]. */ # define Ymin5 \ COORDONNEE_MINIMALE \ /* Ordonnee minimale, */ # define Ymax5 \ COORDONNEE_MAXIMALE(logY5) \ /* Ordonnee maximale. */ # define dimY5 \ DIMENSION(Ymin5,Ymax5) \ /* Dimension de l'axe vertical. */ # define PasY5 \ PAS_COORDONNEE \ /* Pas vertical. */ # define dimY52 \ MOIT(dimY5) \ /* Definition de la longueur de la moitie de l'axe vertical. */ # define Ymin52 \ ADD2(Ymin5,dimY52) \ /* Definition de l'ordonnee minimale de [Ymax5/2,Ymax5]. */ # define Ymax52 \ PRED(Ymin52) \ /* Definition de l'ordonnee maximale de [Ymin5,Ymax5/2]. */ # define Ycentre5 \ Ymin52 \ /* Centre "approximatif" de [Ymin5,Ymax5]. */ # 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)) \ || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03)) \ ) # define Xmin5 \ Xmin \ /* Abscisse minimale, */ # define Xmax5 \ Xmax \ /* Abscisse maximale. */ # define dimX5 \ dimX \ /* Dimension de l'axe horizontal. */ # define PasX5 \ PasX \ /* Pas horizontal. */ # define dimX52 \ dimX2 \ /* Definition de la longueur de la moitie de l'axe horizontal. */ # define Xmin52 \ Xmin2 \ /* Definition de l'abscisse minimale de [Xmax/2,Xmax]. */ # define Xmax52 \ Xmax2 \ /* Definition de l'abscisse maximale de [Xmin,Xmax/2]. */ # define Xcentre5 \ Xcentre \ /* Centre "approximatif" de [Xmin,Xmax]. */ # define Ymin5 \ Ymin \ /* Ordonnee minimale, */ # define Ymax5 \ Ymax \ /* Ordonnee maximale. */ # define dimY5 \ dimY \ /* Dimension de l'axe vertical. */ # define PasY5 \ PasY \ /* Pas vertical. */ # define dimY52 \ dimY2 \ /* Definition de la longueur de la moitie de l'axe vertical. */ # define Ymin52 \ Ymin2 \ /* Definition de l'ordonnee minimale de [Ymax/2,Ymax]. */ # define Ymax52 \ Ymax2 \ /* Definition de l'ordonnee maximale de [Ymin,Ymax/2]. */ # define Ycentre5 \ Ycentre \ /* Centre "approximatif" de [Ymin,Ymax]. */ # Aif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) \ || (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_03)) \ ) # Eif ( (defined(GESTION_DU_FORMAT_DES_IMAGES_VERSION_02)) \ || (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_OX5(coordonnee) \ _cDENORMALISE_AXES(Xmin5,dimX5,coordonnee) # define _lDENORMALISE_OX5(longueur) \ _lDENORMALISE_AXES(dimX5,longueur) /* Normalisation d'une longueur sur l'axe OX ; l'unite represente [Xmin5,Xmax5]. */ # define _cDENORMALISE_OY5(coordonnee) \ _cDENORMALISE_AXES(Ymin5,dimY5,coordonnee) # define _lDENORMALISE_OY5(longueur) \ _lDENORMALISE_AXES(dimY5,longueur) /* Normalisation d'une longueur sur l'axe OY ; l'unite represente [Ymin5,Ymax5]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* N O R M A L I S A T I O N D E S A X E S : */ /* */ /*************************************************************************************************************************************/ # define _____cNORMALISE_OX5(coordonnee) \ _____cNORMALISE_AXES(Xmin5,dimX5,coordonnee) # define _____lNORMALISE_OX5(longueur) \ _____lNORMALISE_AXES(dimX5,longueur) /* Denormalisation d'une longueur sur l'axe OX ; l'unite represente [Xmin5,Xmax5]. */ # define _____cNORMALISE_OY5(coordonnee) \ _____cNORMALISE_AXES(Ymin5,dimY5,coordonnee) # define _____lNORMALISE_OY5(longueur) \ _____lNORMALISE_AXES(dimY5,longueur) /* Denormalisation d'une longueur sur l'axe OY ; l'unite represente [Ymin5,Ymax5]. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D E F I N I T I O N S N E C E S S A I R E S : */ /* */ /*************************************************************************************************************************************/ Denumer10(INIS(_B_fonction_de_frame_input,23) ,_B_fonction_de_time_out ,_B_fonction_de_menu ,_B_fonction_de_scroll_vertical ,_B_fonction_de_scroll_horizontal ,_B_fonction_de_redimensionnement ,_B_fonction_de_deplacement ,_B_fonction_d_iconisation ,_B_fonction_de_bordure ,B_DERNIERE_FONCTION ,fonctions_d_ouverture_des_fenetres ); # define B_fonction_de_frame_input \ ENUM(_B_fonction_de_frame_input) # define B_fonction_de_time_out \ ENUM(_B_fonction_de_time_out) # define B_fonction_de_menu \ ENUM(_B_fonction_de_menu) # define B_fonction_de_scroll_vertical \ ENUM(_B_fonction_de_scroll_vertical) # define B_fonction_de_scroll_horizontal \ ENUM(_B_fonction_de_scroll_horizontal) # define B_fonction_de_redimensionnement \ ENUM(_B_fonction_de_redimensionnement) # define B_fonction_de_deplacement \ ENUM(_B_fonction_de_deplacement) # define B_fonction_d_iconisation \ ENUM(_B_fonction_d_iconisation) # define B_fonction_de_bordure \ ENUM(_B_fonction_de_bordure) /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* S T R U C T U R E S N E C E S S A I R E S : */ /* */ /*************************************************************************************************************************************/ Dunion_02(_S_point ,DEFV(Int,DTb1(S_vecteur,BI_DIMENSIONNEL)) /* Vecteur des coordonnees. */ ,Dstruct02(NOM_VIDE ,DEFV(vrai_Int_de_base,S_coordonnee_X) ,DEFV(vrai_Int_de_base,S_coordonnee_Y) /* Coordonnees 'X' et 'Y'. */ ,S_coordonnees ) ,NOM_VIDE ); /* Nota : cette structure s'appelle 'S_POINT' dans '/usr/include/gds.h'. */ TypedefP(S_point,UNIO(_S_point)) Dstruct08(_S_matrice_de_pixels ,DEFV(S_point,point_de_reference) /* Definition du point de reference de la matrice de pixels. */ ,DEFV(vrai_Int_de_base,nombre_de_points_le_long_de_OX) ,DEFV(vrai_Int_de_base,nombre_de_points_le_long_de_OY) /* Definition des dimensions de la matrice de pixels. */ ,DEFV(vrai_Int_de_base,valeur_minimale_de_X) ,DEFV(vrai_Int_de_base,valeur_maximale_de_X) /* Definition des extrema de la coordonnee 'X'. */ ,DEFV(vrai_Int_de_base,valeur_minimale_de_Y) ,DEFV(vrai_Int_de_base,valeur_maximale_de_Y) /* Definition des extrema de la coordonnee 'Y'. */ ,DEFV(image,POINTERp(matrice_de_pixels)) /* Matrice de pixels proprement dite... */ ,NOM_VIDE ); /* Nota : cette structure s'appelle 'S_PXARRAY' dans '/usr/include/gds.h'. */ TypedefP(S_matrice_de_pixels,STRU(_S_matrice_de_pixels)) Dstruct10(_K_definition_d_une_fenetre ,DEFV(vrai_Int_de_base,identificateur_de_la_fenetre) /* Definition de l'identification de la fenetre. */ ,DEFV(vrai_Int_de_base,mystere_l) ,DEFV(vrai_Int_de_base,mystere_h) /* Valeurs mysterieuses... */ ,DEFV(vrai_Int_de_base,largeur_de_la_fenetre) ,DEFV(vrai_Int_de_base,hauteur_de_la_fenetre) /* Dimensions de la fenetre. */ ,DEFV(vrai_Int_de_base,ancrage_le_long_de_OX) ,DEFV(vrai_Int_de_base,ancrage_le_long_de_OY) /* Definition du point d'ancrage (ou de reference) de la fenetre. */ ,DEFV(vrai_Int_de_base,liste_des_outils) /* Definition des outils utilises. */ ,DEFV(vrai_Int_de_base,mystere_offy) /* Valeur mysterieuse... */ ,DEFV(CHAR,POINTERc(nom_de_la_fenetre)) /* Nom a donner a la fenetre. */ ,NOM_VIDE ); /* Nota : cette structure s'appelle 'K_WK' dans '/usr/include/tk.h'. */ TypedefP(K_definition_d_une_fenetre,STRU(_K_definition_d_une_fenetre)) #Aifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX #Eifdef __VERSION__COMPILER_LE_GRAPHIQUE_SPIX