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




Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.