home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / xfedor.zip / XFree86 / src / xfedor / tr_edit.c < prev    next >
C/C++ Source or Header  |  1999-03-02  |  15KB  |  489 lines

  1. /* Copyright 1989 GROUPE BULL -- See licence conditions in file COPYRIGHT */
  2. #include <stdio.h>
  3. #include "couche.h"         /* myEvent */
  4. #include "sos.h"        /* EDIT,LINE .. */
  5. #include "edit.h"        /* MODBACK WMENU WEDIT WHITE GREY point */
  6.  
  7. extern nf_mono ;
  8. extern editresol ;        /* Afficher_resol */
  9. extern BackColor, CurColor ;
  10. extern nf_colormap ;
  11.  
  12. void Init_edit() ;
  13. void Autom_edit() ;
  14. void Afficher_resol() ;
  15. void Afficher_colors() ;
  16. void Afficher_sos();
  17. void Afficher_boutons();
  18. void Afficher_numview();
  19. static void Afficher_modcolor() ;
  20. static void Afficher_modecour() ;
  21.  
  22. int nf_edit ;   /* NUMERO DE LA FENETRE EDIT */      
  23.  
  24. int modcolor ;        /* MODBACK, MODINV ou MODCOLOR */
  25. int modepoint ;     /* NOCONSTRAINT, XCONSTRAINT, YCONSTRAINT */
  26. int modecour ;         /* point, line .. */
  27. int colortrame ;    /* WHITE or GREY  */
  28.  
  29.     /*---------- reste du LOCAL */
  30.  
  31. #define WFENED  (WMENU + WEDIT + WBASE)
  32.  
  33. #define HITEM 22
  34. #define WICON (WMENU/2)
  35. #define HBOUT 92
  36. #define HCOLOR 40
  37. #define WCOLOR (WMENU/3)
  38. #define WIC (WMENU/3)
  39. #define HICON 50
  40. #define HINT (6*HITEM + HBOUT)
  41. #define HINT0 (HINT+HCOLOR)
  42. #define HINT1 (HINT+HCOLOR+HICON)
  43. #define HINT2 (HINT+HCOLOR+2*HICON)
  44. #define HINT3 (HINT+HCOLOR+3*HICON)
  45. #define HINT4 (HINT+HCOLOR+4*HICON)
  46. #define HINT5 (HINT+HCOLOR+5*HICON)
  47. #define XEDIT 10 
  48. #define YEDIT 10 
  49.  
  50.  
  51. static int idmother ;
  52. static char *choixother[] = {"Scale","TileH","TileV","MirrorH",
  53.                 "MirrorV","ReflectH","ReflectV",
  54.                 "Xconstraint","Yconstraint","NumView",
  55.                     "NoWhite",0 } ;
  56. static int zhelp,zpas,zback,zmouse,zundo,zother,zclear,zbout,zcolor,
  57.        zline,zrect,zwrite,zcercle,ztransl,zrotate,
  58.        zbez,zfill,zmetric,zcutap,zresize, zbase ;
  59.             /* id des zones crees */     
  60.  
  61. static int numview ;        /* ON, OFF */
  62.  
  63.  
  64. #include "bitmaps/mouse"
  65.  
  66. #include "bitmaps/line"    
  67. #include "bitmaps/rect"    
  68. #include "bitmaps/cercle"    
  69. #include "bitmaps/write"    
  70. #include "bitmaps/resize"    
  71. #include "bitmaps/transl"    
  72. #include "bitmaps/rotate"    
  73. #include "bitmaps/bez"    
  74. #include "bitmaps/fill"    
  75. #include "bitmaps/metric"    
  76. #include "bitmaps/cutap"    
  77.  
  78.  
  79.  
  80. void Init_edit()
  81. {
  82.      nf_edit = w_ouvrir(nf_mono,XEDIT,YEDIT,WFENED,HEDIT,
  83.               "XFEDOR : Edit Window",
  84.               CURS2,
  85.               EnterZone|ButtonPressed|LeaveZone,WMON) ;
  86. /*     w_backing(nf_edit);*/
  87.  
  88.      zhelp = w_crzon(nf_edit,0,0,WICON,HITEM,CURS2);
  89.      zpas = w_crzon(nf_edit,WICON,0,WMENU,HITEM,CURS2);
  90.  
  91.      zback = w_crzon(nf_edit,0,HITEM,WMENU,2*HITEM,CURS2);
  92.      zmouse = w_crzon(nf_edit,0,2*HITEM,WMENU,3*HITEM,CURS2);
  93.      zundo = w_crzon(nf_edit,0,3*HITEM,WMENU,4*HITEM,CURS2);
  94.      zother = w_crzon(nf_edit,0,4*HITEM,WMENU,5*HITEM,CURS2);
  95.      zclear = w_crzon(nf_edit,0,5*HITEM,WMENU,6*HITEM,CURS2);
  96.  
  97.      zbout = w_crzon(nf_edit,0,6*HITEM,WMENU,HINT,CURS3);
  98.      zcolor = w_crzon(nf_edit,0,HINT,WMENU,HINT0,CURS2);
  99.  
  100.      zline = w_crzon(nf_edit,0,HINT0,WIC,HINT1,CURS1);
  101.      zrect = w_crzon(nf_edit,WIC,HINT0,2*WIC,HINT1,CURS1);
  102.      zcercle = w_crzon(nf_edit,2*WIC,HINT0,WMENU,HINT1,CURS1);
  103.  
  104.      zwrite = w_crzon(nf_edit,0,HINT1,WICON,HINT2,CURS1);
  105.      zresize = w_crzon(nf_edit,WICON,HINT1,WMENU,HINT2,CURS1);
  106.  
  107.      ztransl = w_crzon(nf_edit,0,HINT2,WICON,HINT3,CURS1);
  108.      zrotate = w_crzon(nf_edit,WICON,HINT2,WMENU,HINT3,CURS1);
  109.  
  110.      zbez = w_crzon(nf_edit,0,HINT3,WICON,HINT4,CURS1);
  111.      zfill = w_crzon(nf_edit,WICON,HINT3,WMENU,HINT4,CURS1);
  112.      
  113.      zmetric = w_crzon(nf_edit,0,HINT4,WICON,HINT5,CURS1);
  114.      zcutap = w_crzon(nf_edit,WICON,HINT4,WMENU,HINT5,CURS1);
  115.      
  116.      zbase = w_crzon(nf_edit,WFENED-WBASE,0,WFENED,HEDIT,CURS1); 
  117.  
  118. /* CREATION POPUP OTHER */
  119.     idmother = MenuCreat(choixother);
  120.  
  121. /* INITIALISATION DE EDIT */
  122.     colortrame = GREY ;
  123.     modcolor = MODINV ;
  124.     modecour = point ;
  125.  
  126.     modepoint = NOCONSTRAINT ;
  127.     numview = OFF ;
  128.  
  129.     w_montrer(nf_edit);
  130.  
  131. }
  132.  
  133. static Reaffich(fen)
  134. int fen ;
  135.     if (fen == nf_edit)  {
  136.  
  137.     /* ligne des menus */
  138.       w_line(nf_edit,0,HITEM,WMENU,HITEM,ON);
  139.       w_line(nf_edit,0,2*HITEM,WMENU,2*HITEM,ON);
  140.       w_line(nf_edit,0,3*HITEM,WMENU,3*HITEM,ON);
  141.       w_line(nf_edit,0,4*HITEM,WMENU,4*HITEM,ON);
  142.       w_line(nf_edit,0,5*HITEM,WMENU,5*HITEM,ON);
  143.       w_line(nf_edit,0,6*HITEM,WMENU,6*HITEM,ON);
  144.             /* horizontale des menus */
  145.       w_line(nf_edit,0,HINT,WMENU,HINT,ON);
  146.       w_line(nf_edit,0,HINT0,WMENU,HINT0,ON);
  147.             /* horizontales intermediaires */
  148.       w_line(nf_edit,WCOLOR,HINT,WCOLOR,HINT0,ON);
  149.       w_line(nf_edit,2*WCOLOR,HINT,2*WCOLOR,HINT0,ON);
  150.             /* verticales des colors */
  151.       w_line(nf_edit,WICON,0,WICON,HITEM,ON);
  152.             /* verticales zones help */
  153.  
  154.     /* labels */
  155.       w_centrer(nf_edit,"BACK",0,HITEM,WMENU,2*HITEM);
  156.       w_centrer(nf_edit,"MOUSE",0,2*HITEM,WMENU,3*HITEM);
  157.       w_centrer(nf_edit,"UNDO",0,3*HITEM,WMENU,4*HITEM);
  158.       w_centrer(nf_edit,"OTHER",0,4*HITEM,WMENU,5*HITEM);
  159.       w_centrer(nf_edit,"CLEAR",0,5*HITEM,WMENU,6*HITEM);
  160.       w_centrer(nf_edit,"SOS",0,0,WICON,HITEM);
  161.       
  162.     /* Afficher_boutons */
  163.       w_gris(nf_edit,1,6*HITEM+1,WMENU-1,HINT-1);
  164.       w_line(nf_edit,23,HINT-23,23,6*HITEM+32,ON);
  165.       w_line(nf_edit,WMENU-25,HINT-23,WMENU-25,6*HITEM+62,ON);
  166.  
  167.       w_line(nf_edit,23,HINT-23,WMENU/2-4,HINT-23,ON);
  168.       w_line(nf_edit,WMENU/2+1,HINT-23,WMENU-25,HINT-23,ON);
  169.       w_line(nf_edit,WMENU/2-4,HINT-23,WMENU/2-4,HINT-18,ON);
  170.       w_line(nf_edit,WMENU/2+1,HINT-23,WMENU/2+1,HINT-18,ON);
  171.       w_pixel(nf_edit,mouse_bits,WMENU/2-6,HINT-18,13,13);
  172.  
  173.     /* dessin d'icones */
  174.       w_pixel(nf_edit,line_bits,3,HINT0+2,31,46);
  175.       w_pixel(nf_edit,rect_bits,WIC+2,HINT0+2,31,46);
  176.       w_pixel(nf_edit,cercle_bits,2*WIC+2,HINT0+2,31,46);
  177.  
  178.       w_pixel(nf_edit,write_bits,3,HINT1+2,46,46);
  179.       w_pixel(nf_edit,resize_bits,WICON+2,HINT1+2,46,46);
  180.       w_pixel(nf_edit,transl_bits,3,HINT2+2,46,46);
  181.       w_pixel(nf_edit,rotate_bits,WICON+2,HINT2+2,46,46);
  182.       w_pixel(nf_edit,bez_bits,3,HINT3+2,46,46);
  183.       w_pixel(nf_edit,fill_bits,WICON+2,HINT3+2,46,46);
  184.       w_pixel(nf_edit,metric_bits,3,HINT4+2,46,46);
  185.       w_pixel(nf_edit,cutap_bits,WICON+2,HINT4+2,46,46);
  186.  
  187.  
  188.         Afficher_colors() ;
  189.         Afficher_resol(editresol) ;
  190.  
  191.     Afficher_boutons(NULL,NULL); /* reaffichage force' */
  192.     Afficher_modcolor(ON);
  193.     Afficher_modecour() ;
  194.  
  195.     }
  196. }
  197.  
  198. void Afficher_colors()      /* pas static pour tr_colormap */
  199. {
  200.     /* zone choix de couleurs */
  201.       w_color(nf_edit,7,HINT+9,WCOLOR-8,HINT0-10,BackColor);
  202.       w_rect(nf_edit,7,HINT+9,WCOLOR-8,HINT0-10,ON);
  203.  
  204.       w_color(nf_edit,WCOLOR+8,HINT+9,2*WCOLOR-8,HINT0-10,BackColor);
  205.       w_color(nf_edit,WCOLOR+WCOLOR/2,HINT+9,
  206.                     2*WCOLOR-8,HINT0-10,CurColor);
  207.       w_rect(nf_edit,WCOLOR+8,HINT+9,2*WCOLOR-8,HINT0-10,ON);
  208.  
  209.       w_color(nf_edit,2*WCOLOR+8,HINT+9,3*WCOLOR-7,HINT0-10,CurColor);
  210.       w_rect(nf_edit,2*WCOLOR+8,HINT+9,3*WCOLOR-7,HINT0-10,ON);
  211. }
  212.  
  213.  
  214. static void Afficher_modcolor(onoff)
  215.     int onoff ;
  216.     int xoffset ;
  217.  
  218.     if (modcolor == MODBACK) xoffset = 0 ; else
  219.     if (modcolor == MODINV) xoffset = WCOLOR+1 ; else
  220.           xoffset = 2*WCOLOR+1 ; 
  221.  
  222.     if (onoff == ON) {
  223.         w_fore(nf_edit,xoffset+3,HINT+3,xoffset+WCOLOR-4,HINT+7);
  224.         w_fore(nf_edit,xoffset+3,HINT+3,xoffset+6,HINT0-3);
  225.         w_fore(nf_edit,xoffset+3,HINT0-7,xoffset+WCOLOR-4,HINT0-3);
  226.         w_fore(nf_edit,xoffset+WCOLOR-6,HINT+3,xoffset+WCOLOR-3,HINT0-3);
  227.     } else {
  228.         w_cleararea(nf_edit,xoffset+3,HINT+3,xoffset+WCOLOR-4,HINT+7);
  229.         w_cleararea(nf_edit,xoffset+3,HINT+3,xoffset+6,HINT0-3);
  230.         w_cleararea(nf_edit,xoffset+3,HINT0-7,xoffset+WCOLOR-4,HINT0-3);
  231.         w_cleararea(nf_edit,xoffset+WCOLOR-6,HINT+3,xoffset+WCOLOR-3,HINT0-3);
  232.     }
  233. }
  234.  
  235. static void Afficher_modecour()
  236. {
  237.     switch(modecour) {
  238.        case line  : w_inv(nf_edit,4,HINT0+3,WIC,HINT1-4); break ;
  239.        case recta  : w_inv(nf_edit,WIC+3,HINT0+3,2*WIC-1,HINT1-4); break ;
  240.        case cercle  : w_inv(nf_edit,2*WIC+3,HINT0+3,WMENU-2,HINT1-4); break ;
  241.        case write  : w_inv(nf_edit,4,HINT1+3,WICON-2,HINT2-4); break ;
  242.        case resize  : w_inv(nf_edit,WICON+3,HINT1+3,WMENU-3,HINT2-4); break ;
  243.        case transl  : w_inv(nf_edit,4,HINT2+3,WICON-2,HINT3-4); break ;
  244.        case rotate  : w_inv(nf_edit,WICON+3,HINT2+3,WMENU-3,
  245.                     HINT3-4); break ;
  246.        case bez  : w_inv(nf_edit,4,HINT3+3,WICON-2,
  247.                        HINT4-4); break ;
  248.        case fil  : w_inv(nf_edit,WICON+3,HINT3+3,WMENU-3,
  249.                         HINT4-4); break ;
  250.        case metric  : w_inv(nf_edit,4,HINT4+3,WICON-2,
  251.                        HINT5-4); break ;
  252.        case cutap  : w_inv(nf_edit,WICON+3,HINT4+3,WMENU-3,
  253.                         HINT5-4); break ;
  254.        default : break ;
  255.         }
  256. }
  257.  
  258. void Afficher_resol(resolcour)
  259.     int resolcour ;
  260. {    char s[4] ;
  261.     sprintf(s,"%3d",resolcour);
  262.     w_centrer(nf_edit,s,WICON,0,WMENU,HITEM);
  263. }
  264.     
  265. static Changer_resol(click)
  266.    int click ;
  267.  
  268.  { int resol ;
  269.     
  270.    switch(click) {
  271.        case 1 :  if (editresol==16) return ;
  272.           resol = editresol >> 1;
  273.           if (Resol_possible(resol))
  274.            {
  275.             editresol = resol ;
  276.               Afficher_resol(editresol) ;
  277.               Afficher_all() ;    /* grille+baseline+car */
  278.            }
  279.               break ;
  280.        case 2 :   if (editresol==128) return ;
  281.           editresol = editresol << 1;
  282.           Afficher_resol(editresol) ;
  283.           Afficher_all() ;    /* grille+baseline+car */
  284.               break ;
  285.      } 
  286.  
  287.  
  288.  
  289. void Afficher_sos(s)
  290.     char * s ;
  291. {
  292.       w_centrer(nf_edit,s,0,0,WICON,HITEM);
  293. }
  294.  
  295. void Afficher_boutons(gauche,milieu)
  296.      char * gauche, * milieu;
  297. {    
  298.     static char oldgauche[20], oldmilieu[20];
  299.  
  300.  
  301.     if (gauche == NULL) {
  302.         w_cleararea(nf_edit,8,6*HITEM+20,70,6*HITEM+35);
  303.         w_ecrire(nf_edit,oldgauche,10,6*HITEM+30);
  304.         w_cleararea(nf_edit,WMENU-65,6*HITEM+47,WMENU-8,6*HITEM+62);
  305.         w_ecrire(nf_edit,oldmilieu,WMENU-62,6*HITEM+57);
  306.         return ;
  307.     }
  308.     if (strcmp(gauche,oldgauche)) {
  309.         w_cleararea(nf_edit,8,6*HITEM+20,70,6*HITEM+35);
  310.         w_ecrire(nf_edit,gauche,10,6*HITEM+30);
  311.         strcpy(oldgauche,gauche) ; 
  312.     }
  313.     if (strcmp(milieu,oldmilieu)) {
  314.         w_cleararea(nf_edit,WMENU-65,6*HITEM+47,WMENU-8,6*HITEM+62);
  315.         w_ecrire(nf_edit,milieu,WMENU-62,6*HITEM+57);
  316.         strcpy(oldmilieu,milieu) ;
  317.     }
  318. }
  319.  
  320. void Afficher_numview(x,y)
  321. /* x= -1 reinitialise le graphique et le flag prem */
  322.     int x,y;
  323. {    char s[5];
  324.     static int prem = 1 ;
  325.     
  326.     if (numview == OFF) return ;
  327.     if (x==-1) {
  328.         w_gris(nf_edit,1,6*HITEM+1,WMENU-1,6*HITEM+18);
  329.         prem = 1 ;
  330.         return ;
  331.     }
  332.     if (prem == 1) {
  333.         w_cleararea(nf_edit,2,6*HITEM+2,40,6*HITEM+17);
  334.         w_rect(nf_edit,2,6*HITEM+2,40,6*HITEM+17,ON);
  335.         w_cleararea(nf_edit,WMENU-40,6*HITEM+2,WMENU-2,6*HITEM+17);
  336.         w_rect(nf_edit,WMENU-40,6*HITEM+2,WMENU-2,6*HITEM+17,ON);
  337.         prem = 0 ;
  338.     }
  339.     sprintf(s,"x %3d",x);
  340.     w_ecrire(nf_edit,s,4,6*HITEM+14);
  341.     sprintf(s,"y %3d",y);
  342.     w_ecrire(nf_edit,s,WMENU-38,6*HITEM+14);
  343. }    
  344.  
  345.  
  346. static int Inverser_zone(zone)
  347.     int zone;
  348. {
  349.     if (zone==zback ) w_inv(nf_edit,3,HITEM+3,WMENU-3,2*HITEM-3);else
  350.     if (zone==zmouse ) w_inv(nf_edit,3,2*HITEM+3,WMENU-3,
  351.                     3*HITEM-3);else
  352.     if (zone==zundo ) w_inv(nf_edit,3,3*HITEM+3,WMENU-3,
  353.                     4*HITEM-3);else
  354.     if (zone==zother ) w_inv(nf_edit,3,4*HITEM+3,WMENU-3,
  355.                     5*HITEM-3);else
  356.     if (zone==zclear ) w_inv(nf_edit,3,5*HITEM+3,WMENU-3,
  357.                     6*HITEM-3);
  358. }
  359.  
  360. static int Traiter_clic(evt)
  361.     myEvent * evt ;
  362. {
  363.    int numx,denx,numy,deny ;
  364.  
  365.    if (evt->zone==zhelp) 
  366.         switch(modecour) {
  367.            case point : Helping( EDIT ); break ;
  368.            case line  : Helping( LINE ); break ;
  369.            case recta  : Helping( RECT ); break ;
  370.            case cercle  : Helping( CIRCLE ); break ;
  371.            case resize  : Helping( RESIZE ); break ;
  372.            case write  : Helping( WRITE ); break ;
  373.            case transl  : Helping( TRANSL ); break ;
  374.            case bez  : Helping( BEZIERS ); break ;
  375.            case rotate  : Helping( ROTATE ); break ;
  376.            case fil  : Helping( FILL ); break ;
  377.            case metric : Helping( METRIC ); break ;
  378.            case cutap : Helping( CUTAP ); break ;
  379.            default : Helping( EDIT ); break ;
  380.                } else
  381.     if (evt->zone==zclear) Clear(evt->click) ; else
  382.     if (evt->zone==zbase) {
  383.         if (evt->click == 1) Changer_baseline(evt->y) ; else
  384.             Changer_guideline(evt->y) ;
  385.         } else
  386.     if (evt->zone==zundo) Undo() ; else
  387.     if (evt->zone==zback) Back() ; else
  388.     if (evt->zone==zmouse) Mouse() ; else
  389.     if (evt->zone==zbout) {
  390.         if (evt->click == 1) {
  391.                 Afficher_modecour() ;
  392.                 modecour = point ;
  393.                 modepoint = NOCONSTRAINT ;
  394.         }
  395.         else {
  396.             colortrame = (colortrame==WHITE)?GREY:WHITE ;
  397.             Afficher_all() ;
  398.         }
  399.         } else
  400.     if (evt->zone==zpas) Changer_resol(evt->click) ; else
  401.     if (evt->zone==zother) 
  402.         switch (MenuPop(idmother,choixother)) {
  403.         case 0 :     
  404.           if (w_nosaveunder()) Reaffich(nf_edit) ;  /* HACK */
  405.           gd_askscale(&numx,&denx,&numy,&deny) ;
  406.           Magnify(numx,denx,numy,deny);
  407.           break ;
  408.            case 1 : Tileh() ; break ;
  409.            case 2 : Tilev() ; break ;
  410.            case 3 : Mirrorh() ; break ;
  411.            case 4 : Mirrorv() ; break ;
  412.            case 5 : Reflecth() ; break ;
  413.            case 6 : Reflectv() ; break ;
  414.            case 7 : modepoint = XCONSTRAINT ; break ;
  415.            case 8 : modepoint = YCONSTRAINT ; break ;
  416.            case 9 : numview = (numview==OFF)?ON:OFF ; break ;
  417.            case 10: NoWhite() ; break ;
  418.           default : break ;
  419.            } else
  420.     if (evt->zone==zcolor) {
  421.         if (evt->click == 1) {
  422.           Afficher_modcolor(OFF) ;
  423.           if (evt->x < WCOLOR) modcolor = MODBACK ; else
  424.             if (evt->x < 2*WCOLOR) modcolor = MODINV; else
  425.               modcolor = MODCOLOR ;
  426.           Afficher_modcolor(ON);
  427.         } else {
  428.           w_montrer(nf_colormap) ;
  429.         }
  430.     } else {    /* zone = line .. fill */
  431.         Afficher_modecour() ;
  432.         if (evt->zone == zline) modecour = line ; else
  433.         if (evt->zone == zrect) modecour = recta ; else
  434.         if (evt->zone == zcercle) modecour = cercle  ; else
  435.         if (evt->zone == zresize) modecour = resize  ; else
  436.         if (evt->zone == zwrite) modecour = write  ; else
  437.         if (evt->zone == ztransl) modecour = transl ; else
  438.         if (evt->zone == zbez) modecour = bez ; else
  439.         if (evt->zone == zrotate) modecour = rotate ; else
  440.         if (evt->zone == zfill) modecour = fil ; else
  441.         if (evt->zone == zmetric) modecour = metric ; else
  442.         if (evt->zone == zcutap) modecour = cutap ;
  443.         Afficher_modecour() ;
  444.     }    
  445. }
  446.  
  447. void Autom_edit(pev)
  448.     myEvent * pev ;
  449. {
  450.     static zonecour = 0 ;
  451.  
  452.      switch (pev->type){
  453.     case Exposure :
  454.         Reaffich(pev->window) ;
  455.         if (zonecour) Inverser_zone(zonecour);
  456.         break ;
  457.     case EnterZone   : 
  458.       if (pev->zone==zhelp) Afficher_boutons("Help","Help") ;else
  459.       if (pev->zone==zpas)  Afficher_boutons("<--","-->") ;else
  460.       if (pev->zone==zbout) Afficher_boutons("abort","gridcolor") ;else
  461.           if (pev->zone==zbase) Afficher_boutons("baseline","guideline");else 
  462.           if (pev->zone==zcolor) Afficher_boutons("Select","colormap") ;else
  463.        if (pev->zone==zclear) {
  464.         Afficher_boutons("car","back") ;
  465.         Inverser_zone(pev->zone);
  466.         zonecour = pev->zone ;
  467.       } else {
  468.         Afficher_boutons("Select","Select") ;
  469.         Inverser_zone(pev->zone);
  470.         zonecour = pev->zone ;
  471.       }
  472.       break;
  473.     case ButtonPressed :  
  474.         Traiter_clic(pev);
  475.                break ;
  476.         case LeaveZone : 
  477.         Inverser_zone(pev->zone);
  478.         zonecour = 0 ;
  479.             break ;
  480.     case CloseWindow : break ;                
  481.       }        /* fin automate du menu */
  482. }
  483.  
  484.  
  485.  
  486.