home *** CD-ROM | disk | FTP | other *** search
- /* blitwd.c */
-
-
- #include "obdefs.h"
- #include "gemdefs.h"
-
- extern int handle; /* virtual workstation handle */
-
-
- do_blit(wh, wdact, dir, pixel)
-
- int wh; /* blit window handle */
- GRECT *wdact; /* the window to blit */
- int dir; /* the direction to blit */
- int pixel; /* number of pixel to blit */
- {
-
- GRECT wdrct; /* the current window rectangle in rect list */
-
- wind_update(BEG_UPDATE); /* lock screen */
- vsf_interior(handle, 1);
- vsf_color(handle, 0);
- wind_get
- (wh, WF_FIRSTXYWH, &wdrct.g_x, &wdrct.g_y, &wdrct.g_w, &wdrct.g_h);
- while (wdrct.g_w && wdrct.g_h) { /* while it is not the last one */
- if (rc_intersect(wdact, &wdrct)) {/*check see if this one is damaged*/
- setclip(&wdrct);
- switch(dir) {
- case 0: blitup(wh, &wdrct, pixel); /* blit arrow up */
- break;
- case 1: blitdn(wh, &wdrct, pixel); /* blit arrow down */
- break;
- case 2: blitlf(wh, &wdrct, pixel); /* blit arrow left */
- break;
- case 3: blitrt(wh, &wdrct, pixel); /* blit arrow right */
- break;
- default: break;
- }
- }
- wind_get
- (wh, WF_NEXTXYWH, &wdrct.g_x, &wdrct.g_y, &wdrct.g_w, &wdrct.g_h);
- }
- wind_update(END_UPDATE); /* unlock screen */
- }
-
-
- /* blit the window to left by # of pixel*/
-
- blitlf(wh, box, pixel)
- int wh;
- GRECT *box;
- int pixel;
-
- {
- int pxyarray[8];
- int x[2];
-
- x[0] = 0;
- x[1] = 0;
-
- graf_mouse(M_OFF, 0L);
- pxyarray[0] = box->g_x;
- pxyarray[1] = box->g_y;
- pxyarray[2] = box->g_x+box->g_w-pixel;
- pxyarray[3] = box->g_y+box->g_h;
- pxyarray[4] = box->g_x+pixel;
- pxyarray[5] = box->g_y;
- pxyarray[6] = box->g_x+box->g_w;
- pxyarray[7] = box->g_y+box->g_h;
- vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
- ob_draw(wh, box->g_x, box->g_y, pixel, box->g_h);
- graf_mouse(M_ON, 0L);
- }
-
-
- /* blit the window to right by number of pixel */
-
- blitrt(wh, box, pixel)
- int wh;
- GRECT *box;
- int pixel;
-
- {
- int pxyarray[8];
- int x[2];
-
- x[0] = 0;
- x[1] = 0;
-
- graf_mouse(M_OFF, 0L);
- pxyarray[0] = box->g_x+pixel;
- pxyarray[1] = box->g_y;
- pxyarray[2] = box->g_x+box->g_w;
- pxyarray[3] = box->g_y+box->g_h;
- pxyarray[4] = box->g_x;
- pxyarray[5] = box->g_y;
- pxyarray[6] = pxyarray[2]-pixel;
- pxyarray[7] = box->g_y+box->g_h;
- vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
- ob_draw(wh, box->g_x+box->g_w-pixel, box->g_y, pixel, box->g_h);
- graf_mouse(M_ON, 0L);
- }
-
-
-
- /* blit up the window by number of pixel */
-
- blitup(wh, box, pixel)
- int wh;
- GRECT *box;
- int pixel;
-
- {
- int pxyarray[8];
- int x[2];
-
- x[0] = 0;
- x[1] = 0;
-
- graf_mouse(M_OFF, 0L);
- pxyarray[0] = box->g_x;
- pxyarray[1] = box->g_y;
- pxyarray[2] = box->g_x+box->g_w;
- pxyarray[3] = box->g_y+box->g_h-pixel;
- pxyarray[4] = box->g_x;
- pxyarray[5] = box->g_y+pixel;
- pxyarray[6] = box->g_x+box->g_w;
- pxyarray[7] = pxyarray[3]+pixel;
- vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
- ob_draw(wh, box->g_x, box->g_y, box->g_w, pixel);
- graf_mouse(M_ON, 0L);
- }
-
-
- /* blit down the window by number of pixel */
-
- blitdn(wh, box, pixel)
- int wh;
- GRECT *box;
- int pixel;
-
- {
- int pxyarray[8];
- int x[2];
-
- x[0] = 0;
- x[1] = 0;
-
- graf_mouse(M_OFF, 0L);
- pxyarray[0] = box->g_x;
- pxyarray[1] = box->g_y+pixel;
- pxyarray[2] = box->g_x+box->g_w;
- pxyarray[3] = box->g_y+box->g_h;
- pxyarray[4] = box->g_x;
- pxyarray[5] = box->g_y;
- pxyarray[6] = box->g_x+box->g_w;
- pxyarray[7] = pxyarray[3]-pixel;
- vro_cpyfm(handle, 3, pxyarray, &x[0], &x[0]);
- ob_draw(wh, box->g_x, box->g_y+box->g_h-pixel, box->g_w, pixel);
- graf_mouse(M_ON, 0L);
- }
-
- /* set clip to specified rectangle */
- setclip(p)
- GRECT *p;
-
- {
- int ptr[4];
-
- ptr[0] = p->g_x;
- ptr[1] = p->g_y;
- ptr[2] = p->g_x + p->g_w - 1;
- ptr[3] = p->g_y + p->g_h - 1;
- vs_clip(handle, 1, ptr);
- }
-
-