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

  1. /* wmputsa.c (emx+gcc) -- Copyright (c) 1987-1993 by Eberhard Mattes */
  2.  
  3. #include <sys/winmgr.h>
  4. #include "winmgr2.h"
  5.  
  6. void wm_putsa (wm_handle wh, const char *p, 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-wh->x;
  14.       if (len < max)
  15.         cnt = len;
  16.       else
  17.         cnt = max;
  18.       if (cnt > 0)
  19.         {
  20.           px = wh->x + wh->ax;
  21.           py = wh->y + wh->ay;
  22.           i = px + py * wh->bwidth;
  23.           mem = &wh->data[2*i];
  24.           _wm_putsa2 (mem, p, cnt);                     /* Copy to memory */
  25.           if (wh->display)            /* Copy from memory to video buffer */
  26.             {
  27.               mx = wh->x+wh->x0;
  28.               my = wh->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.                   wh->x = 0;
  41.                   ++wh->y;
  42.                   if (wh->y >= wh->height)
  43.                     {
  44.                       --wh->y;
  45.                       wm_scroll (wh, 1);
  46.                     }
  47.                 }
  48.               else
  49.                 {
  50.                   wh->x = wh->width-1;
  51.                   break;
  52.                 }
  53.             }
  54.           else
  55.             wh->x += cnt;
  56.         }
  57.       len -= cnt;
  58.       p += 2*cnt;
  59.     }
  60. }
  61.