home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / SOURCES / ATARI_SRC.ZIP / atari source / HDX_BACK / SHOWFILE / BLITWD.C < prev    next >
Encoding:
C/C++ Source or Header  |  2001-02-09  |  3.7 KB  |  177 lines

  1. /* blitwd.c */
  2.  
  3.  
  4. #include "obdefs.h"
  5. #include "gemdefs.h"
  6.  
  7. extern int handle;         /* virtual workstation handle */
  8.  
  9.  
  10. do_blit(wh, wdact, dir, pixel)    
  11.  
  12. int wh;            /* blit window handle */
  13. GRECT *wdact;    /* the window to blit */
  14. int dir;        /* the direction to blit */
  15. int pixel;        /* number of pixel to blit */
  16. {  
  17.  
  18.     GRECT wdrct;    /* the current window rectangle in rect list */ 
  19.  
  20.     wind_update(BEG_UPDATE);    /* lock screen */
  21.     vsf_interior(handle, 1);    
  22.     vsf_color(handle, 0);
  23.     wind_get
  24.         (wh, WF_FIRSTXYWH, &wdrct.g_x, &wdrct.g_y, &wdrct.g_w, &wdrct.g_h);
  25.     while (wdrct.g_w && wdrct.g_h)    {    /* while it is not the last one */
  26.         if (rc_intersect(wdact, &wdrct)) {/*check see if this one is damaged*/ 
  27.             setclip(&wdrct);
  28.             switch(dir)    {
  29.                 case 0:    blitup(wh, &wdrct, pixel);    /* blit arrow up */
  30.                         break;
  31.                 case 1:    blitdn(wh, &wdrct, pixel);    /* blit arrow down */
  32.                         break;
  33.                 case 2:    blitlf(wh, &wdrct, pixel);    /* blit arrow left */
  34.                         break;
  35.                 case 3:    blitrt(wh, &wdrct, pixel);    /* blit arrow right */
  36.                         break;
  37.                 default: break;
  38.             }
  39.         }
  40.         wind_get
  41.           (wh, WF_NEXTXYWH, &wdrct.g_x, &wdrct.g_y, &wdrct.g_w, &wdrct.g_h);
  42.     }
  43.     wind_update(END_UPDATE);    /* unlock screen */
  44. }
  45.  
  46.  
  47. /* blit the window to left by # of pixel*/
  48.  
  49. blitlf(wh, box, pixel)
  50. int wh;
  51. GRECT *box;
  52. int pixel;
  53.  
  54. {
  55.     int pxyarray[8];
  56.     int x[2]; 
  57.  
  58.     x[0] = 0;
  59.     x[1] = 0;
  60.  
  61.     graf_mouse(M_OFF, 0L);
  62.     pxyarray[0] = box->g_x;
  63.     pxyarray[1] = box->g_y;
  64.     pxyarray[2] = box->g_x+box->g_w-pixel;
  65.     pxyarray[3] = box->g_y+box->g_h;
  66.     pxyarray[4] = box->g_x+pixel;
  67.     pxyarray[5] = box->g_y;
  68.     pxyarray[6] = box->g_x+box->g_w;
  69.     pxyarray[7] = box->g_y+box->g_h;
  70.     vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
  71.     ob_draw(wh, box->g_x, box->g_y, pixel, box->g_h);
  72.     graf_mouse(M_ON, 0L);
  73. }
  74.  
  75.  
  76. /* blit the window to right by number of pixel */
  77.  
  78. blitrt(wh, box, pixel)
  79. int wh;
  80. GRECT *box;
  81. int pixel;
  82.  
  83. {
  84.     int pxyarray[8];
  85.     int x[2]; 
  86.  
  87.     x[0] = 0;
  88.     x[1] = 0;
  89.  
  90.     graf_mouse(M_OFF, 0L);
  91.     pxyarray[0] = box->g_x+pixel;
  92.     pxyarray[1] = box->g_y;
  93.     pxyarray[2] = box->g_x+box->g_w;
  94.     pxyarray[3] = box->g_y+box->g_h;
  95.     pxyarray[4] = box->g_x;
  96.     pxyarray[5] = box->g_y;
  97.     pxyarray[6] = pxyarray[2]-pixel;
  98.     pxyarray[7] = box->g_y+box->g_h;
  99.     vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
  100.     ob_draw(wh, box->g_x+box->g_w-pixel, box->g_y, pixel, box->g_h);
  101.     graf_mouse(M_ON, 0L);
  102. }
  103.  
  104.  
  105.  
  106. /* blit up the window by number of pixel */
  107.  
  108. blitup(wh, box, pixel)
  109. int wh;
  110. GRECT *box;
  111. int pixel;
  112.  
  113. {
  114.     int pxyarray[8];
  115.     int x[2];
  116.  
  117.     x[0] = 0;
  118.     x[1] = 0;
  119.  
  120.     graf_mouse(M_OFF, 0L);
  121.     pxyarray[0] = box->g_x;
  122.     pxyarray[1] = box->g_y;
  123.     pxyarray[2] = box->g_x+box->g_w;
  124.     pxyarray[3] = box->g_y+box->g_h-pixel;
  125.     pxyarray[4] = box->g_x;
  126.     pxyarray[5] = box->g_y+pixel;
  127.     pxyarray[6] = box->g_x+box->g_w;
  128.     pxyarray[7] = pxyarray[3]+pixel;
  129.     vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
  130.     ob_draw(wh, box->g_x, box->g_y, box->g_w, pixel);
  131.     graf_mouse(M_ON, 0L);
  132. }
  133.  
  134.  
  135. /* blit down the window by number of pixel */
  136.  
  137. blitdn(wh, box, pixel)
  138. int wh;
  139. GRECT *box;
  140. int pixel;
  141.  
  142. {
  143.     int pxyarray[8];
  144.     int x[2];
  145.  
  146.     x[0] = 0;
  147.     x[1] = 0;
  148.  
  149.     graf_mouse(M_OFF, 0L);
  150.     pxyarray[0] = box->g_x;
  151.     pxyarray[1] = box->g_y+pixel;
  152.     pxyarray[2] = box->g_x+box->g_w;
  153.     pxyarray[3] = box->g_y+box->g_h;
  154.     pxyarray[4] = box->g_x;
  155.     pxyarray[5] = box->g_y;
  156.     pxyarray[6] = box->g_x+box->g_w;
  157.     pxyarray[7] = pxyarray[3]-pixel;
  158.     vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
  159.     ob_draw(wh, box->g_x, box->g_y+box->g_h-pixel, box->g_w, pixel);
  160.     graf_mouse(M_ON, 0L);
  161. }
  162.  
  163. /* set clip to specified rectangle */
  164. setclip(p)    
  165. GRECT *p;
  166.  
  167. {
  168.     int ptr[4];
  169.  
  170.     ptr[0] = p->g_x;
  171.     ptr[1] = p->g_y;
  172.     ptr[2] = p->g_x + p->g_w - 1;
  173.     ptr[3] = p->g_y + p->g_h - 1;
  174.     vs_clip(handle, 1, ptr);
  175. }
  176.  
  177.