home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / fermiVogle.tar.Z / fermiVogle.tar / devel / src / rect.c < prev    next >
C/C++ Source or Header  |  1996-02-07  |  1KB  |  70 lines

  1. #include "vogle.h"
  2.  
  3. /*
  4.  * rect
  5.  *
  6.  * draw a rectangle given two opposite corners
  7.  *
  8.  */
  9. void
  10. rect(float x1, float y1, float x2, float y2)
  11. {
  12.     int    sync, flag = 0;
  13.  
  14.     if (!vdevice.initialised)
  15.         verror("rect: vogle not initialised");
  16.  
  17.     if ((vdevice.attr->a.fill || vdevice.attr->a.hatch) && !vdevice.inpolygon) {
  18.         flag = 1;
  19.         makepoly();        /* want it filled */
  20.     }
  21.  
  22.     if ((sync = vdevice.sync))
  23.         vdevice.sync = 0;
  24.  
  25.     move2(x1, y1);
  26.     draw2(x2, y1);
  27.     draw2(x2, y2);
  28.     draw2(x1, y2);
  29.  
  30.     if (flag)
  31.         closepoly();
  32.     else
  33.         draw2(x1, y1);
  34.  
  35.     if (sync) {
  36.         vdevice.sync = 1;
  37.         (*vdevice.dev.Vsync)();
  38.     }
  39. }
  40.  
  41. /*
  42.  * srect
  43.  *
  44.  * draw a rectangle given two opposite corners in screen coords.
  45.  *
  46.  */
  47. void
  48. srect(float x1, float y1, float x2, float y2)
  49. {
  50.     int    sync;
  51.  
  52.     if (!vdevice.initialised)
  53.         verror("rect: vogle not initialised");
  54.  
  55.     if ((sync = vdevice.sync))
  56.         vdevice.sync = 0;
  57.  
  58.     smove2(x1, y1);
  59.     sdraw2(x2, y1);
  60.     sdraw2(x2, y2);
  61.     sdraw2(x1, y2);
  62.  
  63.     sdraw2(x1, y1);
  64.  
  65.     if (sync) {
  66.         vdevice.sync = 1;
  67.         (*vdevice.dev.Vsync)();
  68.     }
  69. }
  70.