home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Linux / Divers / xgalaga-2_0_tar.gz / xgalaga-2_0_tar / xgalaga-2.0 / libsprite / line.c < prev    next >
C/C++ Source or Header  |  1998-04-12  |  2KB  |  78 lines

  1. #include "allincludes.h"
  2.  
  3. static XSegment _lcache[NCOLORS][MAXCACHE];
  4. static int _lcache_index[NCOLORS];
  5.  
  6.  void
  7. FlushLineCache(win, color)
  8.     Window  win;
  9.     int     color;
  10. {
  11.     XDrawSegments(W_Display, win, colortable[color].contexts[0],
  12.           _lcache[color], _lcache_index[color]);
  13.     _lcache_index[color] = 0;
  14. }
  15.  
  16. /* for local window only */
  17. void
  18. W_CacheLine(window, X0, Y0, X1, Y1, color)
  19.     W_Window window;
  20.     int     X0, Y0, X1, Y1, color;
  21. {
  22.     Window  win = W_Void2Window(window)->drawable;
  23.     register XSegment *s;
  24.  
  25.     if (_lcache_index[color] == MAXCACHE)
  26.     FlushLineCache(win, color);
  27.  
  28.     s = &_lcache[color][_lcache_index[color]++];
  29.     s->x1 = (short) X0;
  30.     s->y1 = (short) Y0;
  31.     s->x2 = (short) X1;
  32.     s->y2 = (short) Y1;
  33. }
  34.  
  35. void
  36. W_FlushLineCaches(window)
  37.     W_Window window;
  38. {
  39.     Window  win = W_Void2Window(window)->drawable;
  40.     register i;
  41.     for (i = 0; i < NCOLORS; i++) {
  42.     if (_lcache_index[i])
  43.         FlushLineCache(win, i);
  44.     }
  45. }
  46.  
  47.  
  48. void
  49. W_MakeLine(window, X0, Y0, X1, Y1, color)
  50.     W_Window window;
  51.     int     X0, Y0, X1, Y1;
  52.     W_Color color;
  53. {
  54.     Window  win;
  55.  
  56. #ifdef DEBUG
  57.     printf("Line on %d\n", window);
  58. #endif
  59.     win = W_Void2Window(window)->drawable;
  60.     XDrawLine(W_Display, win, colortable[color].contexts[0], X0, Y0, X1, Y1);
  61. }
  62.  
  63. void
  64. W_MakeTractLine(window, X0, Y0, X1, Y1, color)
  65.     W_Window window;
  66.     int     X0, Y0, X1, Y1;
  67.     W_Color color;
  68. {
  69.     Window  win;
  70.  
  71. #ifdef DEBUG
  72.     printf("Line on %d\n", window);
  73. #endif
  74.     win = W_Void2Window(window)->drawable;
  75.     XDrawLine(W_Display, win, colortable[color].contexts[3], X0, Y0, X1, Y1);
  76. }
  77.  
  78.