home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / qc_prog / chap15 / allvga.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-04-07  |  4.1 KB  |  126 lines

  1. /* allvga.c -- shows _MRES256COLOR 256K colors         */
  2. /* If you load graphics.qlb, no program list is needed.*/
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <graph.h>
  7. #include <conio.h>
  8. #define FULLBRIGHT 64
  9. #define ESC '\033'
  10. char label[2][7] = {"ACTIVE", "      "};
  11.  
  12. main(argc, argv)
  13. int argc;
  14. char *argv[];
  15. {
  16.     struct videoconfig vc;
  17.     int mode = _MRES256COLOR;
  18.     int xmax, ymax;
  19.     static long colors[2] = {_BLUE, _RED};
  20.     char left[11];
  21.     char right[11];
  22.     int lpos, rpos;
  23.     char ch;
  24.     unsigned long blue = _BLUE >> 16;
  25.     unsigned long green = 0L;
  26.     unsigned long red = 0L;
  27.     long color;
  28.     short palnum = 0;
  29.  
  30.     if (argc > 1)
  31.         mode = atoi(argv[1]);
  32.     if (_setvideomode(mode) == 0)
  33.         {
  34.         fprintf(stderr,"%d mode not supported\n", mode);
  35.         exit(1);
  36.         }
  37.     _getvideoconfig(&vc);
  38.     _setlogorg(vc.numxpixels/2, vc.numypixels/2);
  39.  
  40.     xmax = vc.numxpixels / 2 - 1;
  41.     ymax = vc.numypixels / 2 - 1;
  42.     lpos = vc.numxpixels / 32 - 5;
  43.     rpos = lpos + vc.numxpixels/16;
  44.     _remappalette(2, _RED);
  45.     _setcolor(1);
  46.     _rectangle(_GFILLINTERIOR, -xmax, -ymax, 0, ymax);
  47.     _setcolor(2);
  48.     _rectangle(_GFILLINTERIOR, 1, -ymax, xmax, ymax);
  49.     sprintf(left," %6lxH ", colors[0]);
  50.     sprintf(right," %6lxH ", colors[1]);
  51.     _settextcolor(6);
  52.     _settextposition(1, 1);
  53.     _outtext("Press Tab to toggle panels, Esc to quit.");
  54.     _settextposition(2, 1);
  55.     _outtext("B increases blue level, b decreases it. ");
  56.     _settextposition(3, 1);
  57.     _outtext("G and g control green, R and r red.     ");
  58.     _settextposition(24, lpos);
  59.     _outtext(left);
  60.     _settextposition(24, rpos);
  61.     _outtext(right);
  62.     _settextposition(5, 7);
  63.     _outtext(label[0]);
  64.     _settextposition(5, 27);
  65.     _outtext(label[1]);
  66.     while ((ch = getch()) != ESC)
  67.         {
  68.         switch (ch)
  69.             {
  70.             case '\t': _settextposition(5, 27);
  71.                        _outtext(label[palnum]);
  72.                        palnum ^= 1;
  73.                        blue = (colors[palnum] << 16) & 0x3F;
  74.                        green = (colors[palnum] << 8) & 0x3F;
  75.                        red = colors[palnum] & 0x3F;
  76.                        _settextposition(5, 7);
  77.                        _outtext(label[palnum]);
  78.                        break;
  79.             case 'B':  blue = (blue + 1) % FULLBRIGHT;
  80.                        colors[palnum] = blue << 16 |
  81.                                green << 8 | red;
  82.                        _remappalette(palnum + 1, colors[palnum]);
  83.  
  84.                        break;
  85.             case 'b':  blue = (blue - 1) % FULLBRIGHT;
  86.                        colors[palnum] = blue << 16 |
  87.                                green << 8 | red;
  88.                        _remappalette(palnum + 1, colors[palnum]);
  89.  
  90.                        break;
  91.             case 'G':  green = (green + 1) % FULLBRIGHT;
  92.                        colors[palnum] = blue << 16 |
  93.                                green << 8 | red;
  94.                        _remappalette(palnum + 1, colors[palnum]);
  95.  
  96.                        break;
  97.             case 'g':  green = (green - 1) % FULLBRIGHT;
  98.                        colors[palnum] = blue << 16 |
  99.                                green << 8 | red;
  100.                        _remappalette(palnum + 1, colors[palnum]);
  101.  
  102.                        break;
  103.             case 'R':  red = (red + 1) % FULLBRIGHT;
  104.                        colors[palnum] = blue << 16 |
  105.                                green << 8 | red;
  106.                        _remappalette(palnum + 1, colors[palnum]);
  107.  
  108.                        break;
  109.             case 'r':  red = (red - 1) % FULLBRIGHT;
  110.                        colors[palnum] = blue << 16 |
  111.                                green << 8 | red;
  112.                        _remappalette(palnum + 1, colors[palnum]);
  113.  
  114.                        break;
  115.  
  116.             }
  117.         sprintf(left," %6lxH ", colors[0]);
  118.         sprintf(right," %6lxH ", colors[1]);
  119.         _settextposition(24, lpos);
  120.         _outtext(left);
  121.         _settextposition(24, rpos);
  122.         _outtext(right);
  123.         }
  124.     _setvideomode(_DEFAULTMODE);
  125. }
  126.