home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / EMXLIB8F.ZIP / EMX / LIB / VIDEO / WMPUTAAT.C < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-02  |  1.3 KB  |  54 lines

  1. /* wmputaat.c (emx+gcc) -- Copyright (c) 1987-1993 by Eberhard Mattes */
  2.  
  3. #include <sys/winmgr.h>
  4. #include "winmgr2.h"
  5.  
  6. void wm_puta_at (wm_handle wh, int x, int y, int a, int len)
  7. {
  8.   int max, cnt, i, px, py, mx, my;
  9.   char *mem;
  10.  
  11.   while (len > 0)
  12.     {
  13.       max = wh->width - x;
  14.       if (len < max)
  15.         cnt = len;
  16.       else
  17.         cnt = max;
  18.       if (cnt > 0)
  19.         {
  20.           px = x + wh->ax;
  21.           py = y + wh->ay;
  22.           i = px + py * wh->bwidth;
  23.           mem = &wh->data[2*i];
  24.           _wm_puta2 (mem, a, cnt);                      /* Copy to memory */
  25.           if (wh->display)            /* Copy from memory to video buffer */
  26.             {
  27.               mx = x+wh->x0;
  28.               my = y+wh->y0;
  29.               if (wh->visible)
  30.                 _wm_move2 (mem, my, mx, mx+cnt-1, 1);
  31.               else
  32.                 _wm_line2 (&wh->mask[i], mem, my, mx, mx+cnt-1);
  33.             }
  34.           else
  35.             wh->update_req = TRUE;
  36.           if (cnt == max)
  37.             {
  38.               if (wh->wrap)
  39.                 {
  40.                   x = 0;
  41.                   ++y;
  42.                   if (y >= wh->height)
  43.                     break;
  44.                 }
  45.               else
  46.                 break;
  47.             }
  48.           else
  49.             x += cnt;
  50.         }
  51.       len -= cnt;
  52.     }
  53. }
  54.