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