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

  1. /* Copyright 1989 GROUPE BULL -- See licence conditions in file COPYRIGHT */
  2. #include <stdio.h>
  3. #include "couche.h"        /* myEvent */
  4. #include "style.h"        /* NORMAL */
  5.  
  6. extern          editresol;
  7. extern          nf_grille;
  8.  
  9. /* variables utilises pour gerer le stylesouris */
  10. static int      StylCour;    /* style courant dans la fenetre edition */
  11. static int      xAnCour, yAnCour, 
  12.                 xPrecPos, yPrecPos;    /* ancre et position
  13.                          * precedente dans le
  14.                      * repere de la fenetre */
  15.  
  16.  
  17. int attente(pev)
  18.      myEvent        *pev;    /* event de fenix */
  19.  
  20. {
  21.   int             dx, dy;
  22.   short           pas = (512 / editresol);
  23.  
  24.   w_getevent(pev);
  25.  
  26.   if ((pev->type == MoveMouse) && (pev->window == nf_grille)) {
  27.     dx = convert(pev->x) * pas + pas/2;
  28.     dy = convert(pev->y) * pas + pas/2;
  29.     if ((dx != xPrecPos) || (dy != yPrecPos)) {
  30.       Afficher_numview(convert(pev->x), convert(pev->y));
  31.       figure(StylCour) ;
  32.       xPrecPos = dx ;
  33.       yPrecPos = dy ;
  34.       figure(StylCour) ;
  35.     }
  36.    }
  37. }
  38.  
  39.  
  40. figure(style)
  41.      int style ;
  42. {
  43.   switch(style) {
  44.   case  LIGNE : 
  45.     w_line(nf_grille, xAnCour, yAnCour, xPrecPos, yPrecPos, OFF);
  46.     break ;
  47.   case RECT :
  48.     w_rect(nf_grille, xPrecPos, yPrecPos,
  49.        xPrecPos + xAnCour, yPrecPos + yAnCour, OFF);
  50.     break ;
  51.   case FIXRECT :
  52.     w_rect(nf_grille, xAnCour, yAnCour,
  53.        xPrecPos, yPrecPos, OFF);
  54.     break ;
  55.   case FIXCIRC :
  56.     w_ellips(nf_grille, xAnCour, yAnCour,
  57.        xPrecPos, yPrecPos, OFF);
  58.     break ;
  59.   }
  60. }
  61.  
  62.  
  63. /*--------------------------------------------------------------------*/
  64.  
  65. int
  66. stylesouris(style, xancre, yancre)
  67. /* style = NORMAL, ancre pour (LIGNE, FIXRECT, FIXCIRC) */
  68. /* style = RECT, ancre = taille (positif ou pas) */
  69. /* si on revient en style Normal, on efface la derniere trace */
  70. /* sinon, on met a jour les variables globales de trace */
  71. /* x et y ancre dans repere de la fenetre */
  72.     int             style;
  73.     int             xancre, yancre;
  74. {
  75.     short           pas = (512 / editresol);
  76.  
  77.     if (style == NORMAL) {
  78.       figure(StylCour) ;
  79.       xPrecPos = 0;
  80.       yPrecPos = 0;
  81.     } else {
  82.       if (style != RECT) {
  83.         xPrecPos = xAnCour = convert(xancre) * pas + pas/2;
  84.         yPrecPos = yAnCour = convert(yancre) * pas + pas/2;
  85.       } else {
  86.         xAnCour = xancre;
  87.         yAnCour = yancre;
  88.         xPrecPos = 1000;
  89.         yPrecPos = 1000;
  90.         /* pour que le premier effacement soit inoperant */
  91.       }
  92.     }
  93.     StylCour = style;
  94. }
  95.