home *** CD-ROM | disk | FTP | other *** search
/ Borland Programmer's Resource / Borland_Programmers_Resource_CD_1995.iso / code / stdg44 / cursors.c < prev    next >
C/C++ Source or Header  |  1995-05-18  |  7KB  |  248 lines

  1. #include "stdc.h"
  2. #include "stdg.h"
  3.  
  4. /* Click to show some cursors and demonstrate the timer mechanism */
  5.  
  6.  
  7. cursor confirmcursor={
  8.     { 0, 0},
  9.     {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  10.      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  11.      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  12.      0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
  13.     },
  14.     {0x00, 0x0E, 0x07, 0x1F, 0x03, 0x17, 0x73, 0x6F,
  15.      0xFB, 0xCE, 0xDB, 0x8C, 0xDB, 0xC0, 0xFB, 0x6C,
  16.      0x77, 0xFC, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03,
  17.      0x94, 0xA6, 0x63, 0x3C, 0x63, 0x18, 0x94, 0x90,
  18.     },
  19.     0
  20. };
  21.  
  22. cursor watch={
  23.     { -9, -8},
  24.     {0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0,
  25.      0x7F, 0xE0, 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xF8,
  26.      0xFF, 0xF8, 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xE0,
  27.      0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0,
  28.     },
  29.     {0x1F, 0x80, 0x1F, 0x80, 0x1F, 0x80, 0x1F, 0x80,
  30.      0x20, 0x40, 0x42, 0x20, 0x42, 0x20, 0x42, 0x30,
  31.      0x4E, 0x30, 0x40, 0x20, 0x40, 0x20, 0x20, 0x40,
  32.      0x1F, 0x80, 0x1F, 0x80, 0x1F, 0x80, 0x1F, 0x80,
  33.     },
  34.     0
  35. };
  36.  
  37. cursor insertbar={
  38.     { -7, -4},
  39.     {0x0C, 0x60, 0x0E, 0xE0, 0x03, 0x80, 0x03, 0x80,
  40.      0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80,
  41.      0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80,
  42.      0x03, 0x80, 0x03, 0x80, 0x0E, 0xE0, 0x0C, 0x60,
  43.     },
  44.     {0x0C, 0x60, 0x02, 0x80, 0x01, 0x00, 0x01, 0x00,
  45.      0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
  46.      0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
  47.      0x01, 0x00, 0x01, 0x00, 0x02, 0x80, 0x0C, 0x60,
  48.     },
  49.     0
  50. };
  51.  
  52. cursor hand={
  53.     { -7, 0},
  54.     {0x03, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0xC0,
  55.      0x07, 0xC0, 0x07, 0xC0, 0x77, 0xF8, 0xFF, 0xFE,
  56.      0x7F, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF,
  57.      0x0F, 0xFF, 0x0F, 0xFE, 0x07, 0xFE, 0x07, 0xFE,
  58.     },
  59.     {0x03, 0x80, 0x04, 0xC0, 0x04, 0xC0, 0x04, 0xC0,
  60.      0x04, 0xC0, 0x04, 0xC0, 0x74, 0xF8, 0x9C, 0xAE,
  61.      0x4C, 0xAB, 0x24, 0x0B, 0x24, 0x03, 0x10, 0x03,
  62.      0x08, 0x03, 0x08, 0x06, 0x04, 0x06, 0x04, 0x06,
  63.     },
  64.     0
  65. };
  66.  
  67. cursor checkpoint={
  68.     { -7, -8},
  69.     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,
  70.      0x00, 0x1C, 0x00, 0x3C, 0x0C, 0x78, 0x1E, 0xF0,
  71.      0x0F, 0xE0, 0x07, 0xC0, 0x03, 0x80, 0x01, 0x00,
  72.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  73.     },
  74.     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  75.      0x00, 0x08, 0x00, 0x18, 0x00, 0x30, 0x0C, 0x60,
  76.      0x06, 0xC0, 0x03, 0x80, 0x01, 0x00, 0x00, 0x00,
  77.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  78.     },
  79.     0
  80. };
  81.  
  82. cursor blank={
  83.     { 0, 0},
  84.     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  85.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  86.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  87.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  88.     },
  89.     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  90.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  91.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  92.      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  93.     },
  94.     0
  95. };
  96.  
  97. cursor pencil={
  98.     {-4, -15},
  99.     {0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x03, 0xF8,
  100.      0x03, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x0F, 0xE0,
  101.      0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0x80, 0x1F, 0x80,
  102.      0x1F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x18, 0x00,
  103.     },
  104.     {0x00, 0x60, 0x00, 0x90, 0x00, 0x90, 0x01, 0x70,
  105.      0x01, 0x20, 0x02, 0x20, 0x02, 0x40, 0x04, 0x40,
  106.      0x04, 0x80, 0x08, 0x80, 0x09, 0x00, 0x0F, 0x00,
  107.      0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x00, 0x00,
  108.     },
  109.     0
  110. };
  111.  
  112. cursor eraser={
  113.     {0, -13},
  114.     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE,
  115.      0x03, 0xFE, 0x07, 0xFF, 0x0F, 0xFF, 0x1F, 0xFE,
  116.      0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF0, 0xFF, 0xE0,
  117.      0xFF, 0xC0, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00,
  118.     },
  119.     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFE,
  120.      0x02, 0x06, 0x04, 0x0B, 0x08, 0x17, 0x10, 0x2E,
  121.      0x20, 0x5C, 0x40, 0xB8, 0xFF, 0x70, 0x81, 0xE0,
  122.      0x81, 0xC0, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00,
  123.     },
  124.     0
  125. };
  126.  
  127. cursor eraserbox={
  128.     {0, 0},
  129.     {0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE,
  130.      0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE,
  131.      0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE,
  132.      0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0x00, 0x00,
  133.     },
  134.     {0xFF, 0xFE, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02,
  135.      0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02,
  136.      0x80, 0x02, 0x80, 0x02, 0x80, 0x02, 0x80, 0x02,
  137.      0x80, 0x02, 0x80, 0x02, 0xFF, 0xFE, 0x00, 0x00,
  138.     },
  139.     0
  140. };
  141.  
  142. cursor paintbrush={
  143.     {-2, -15},
  144.     {0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0,
  145.      0x03, 0xE0, 0x03, 0xE0, 0x1F, 0xFC, 0x1F, 0xFC,
  146.      0x1F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFC,
  147.      0x1F, 0xFC, 0x1F, 0xFC, 0x3F, 0xFC, 0x7F, 0xF8,
  148.     },
  149.     {0x00, 0x00, 0x01, 0xC0, 0x01, 0x40, 0x01, 0xC0,
  150.      0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF8,
  151.      0x08, 0x08, 0x0F, 0xF8, 0x08, 0x08, 0x08, 0x08,
  152.      0x08, 0x08, 0x0A, 0xA8, 0x15, 0x58, 0x3F, 0xF0,
  153.     },
  154.     0
  155. };
  156.  
  157. cursor spraypaint={
  158.     {0, -2},
  159.     {0x1F, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFE,
  160.      0x3F, 0x8F, 0x7F, 0xF7, 0x7F, 0xF0, 0x7F, 0xF0,
  161.      0x7F, 0xF0, 0x7F, 0xF0, 0x7F, 0xF0, 0x7F, 0xF0,
  162.      0x7F, 0xF0, 0x7F, 0xF0, 0x7F, 0xF0, 0x7F, 0xF0,
  163.     },
  164.     {0x02, 0x00, 0x1F, 0x00, 0x7F, 0xF8, 0x1F, 0x0C,
  165.      0x07, 0x06, 0x07, 0x00, 0x3F, 0xE0, 0x20, 0x20,
  166.      0x3F, 0xE0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
  167.      0x20, 0x20, 0x20, 0x20, 0x3F, 0xE0, 0x00, 0x00,
  168.     },
  169.     0
  170. };
  171.  
  172. cursor macarrow={
  173.     {-1, -1},
  174.     {0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00,
  175.      0xFC, 0x00, 0xFE, 0x00, 0xFF, 0x00, 0xFF, 0x80,
  176.      0xFF, 0xC0, 0xFF, 0xE0, 0xFE, 0x00, 0xEF, 0x00,
  177.      0xCF, 0x00, 0x87, 0x80, 0x07, 0x80, 0x03, 0x80,
  178.     },
  179.     {0x00, 0x00, 0x40, 0x00, 0x60, 0x00, 0x70, 0x00,
  180.      0x78, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x7F, 0x00,
  181.      0x7F, 0x80, 0x7C, 0x00, 0x6C, 0x00, 0x46, 0x00,
  182.      0x06, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
  183.     },
  184.     0
  185. };
  186.  
  187.  
  188. cursor *cursorlist[] = {
  189.     &confirmcursor,
  190.     &watch, &insertbar,
  191.     &hand, &checkpoint,
  192.     &blank, &pencil,
  193.     &eraser, &eraserbox,
  194.     &paintbrush, &spraypaint,
  195.     &macarrow
  196. };
  197.  
  198. char *cursorname[] = {
  199.     "confirm cursor",
  200.     "watch cursor", "insertbar cursor",
  201.     "hand cursor", "checkpoint cursor",
  202.     "blank cursor", "pencil",
  203.     "eraser", "eraser box",
  204.     "paintbrush", "spraypaint",
  205.     "macarrow cursor"
  206. };
  207.  
  208. #define NCURS (sizeof(cursorlist)/sizeof(cursor *))
  209.  
  210. void redraw(window *w)
  211. {
  212.     fill_rect(w->b, w->b->r, BLUE);
  213.     gflush();
  214. }
  215.  
  216. int main(int argc, char **argv)
  217. {
  218.     int i;
  219.     mouse m;
  220.     ulong key;
  221.     window *w;
  222.  
  223.     ginit("Tester", NULL, NULL);
  224.  
  225.     w = new_window("Cursor & Timer Test", rect(0,0,0,0),
  226.                     Titlebar+Maximize+Resize);
  227.     set_winfns(w, NULL, NULL, &redraw);
  228.     show_window(w);
  229.  
  230.     do m=get_mouse(w); while (!(m.kind & MouseUp)); /* wait for click */
  231.  
  232.     start_timer(2000);  /* start 2 second timer */
  233.  
  234.     for (i=0; i<NCURS; i++) {
  235.         while(!can_timer())
  236.             continue;
  237.         get_timer();
  238.         draw_string(w->b, pt(18*(i+1),18*(i+1)), fixed_font,
  239.             cursorname[i], WHITE);
  240.         set_cursor(cursorlist[i]);
  241.         gflush();
  242.     }
  243.  
  244.     do m=get_mouse(w); while (!(m.kind & MouseUp)); /* wait for click */
  245.  
  246.     return 0;
  247. }
  248.