home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / ATR2ANSI.C < prev    next >
C/C++ Source or Header  |  1997-07-05  |  1KB  |  52 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /*
  4. **  Form a command string for ANSI.SYS to set a given video attribute
  5. **
  6. **  Public domain demo by Bob Stout
  7. */
  8.  
  9. #include <string.h>
  10.  
  11. #include "scrnmacs.h"
  12.  
  13. static void add_str(char *, char *);
  14.  
  15. /*
  16. **  Example:
  17. **   Video attribute of yellow text on blue background = BG_(BLUE_)+YELLOW_
  18. */
  19.  
  20. char *make_ansi(int vatr)
  21. {
  22.         static char string[40];
  23.  
  24.         static char *fore[8] = {"30","34","32","36","31","35","33","37"};
  25.         static char *back[8] = {"40","44","42","46","41","45","43","47"};
  26.  
  27.         strcpy(string, "\033[");
  28.         if (vatr == 0x07)
  29.                 strcat(string, "0");
  30.         else
  31.         {
  32.                 if (vatr & 0x80)
  33.                         add_str(string, "5");
  34.                 if (vatr & 0x08)
  35.                         add_str(string, "1");
  36.                 add_str(string, fore[vatr & 0x07]);
  37.                 add_str(string, back[(vatr & 0x70) >> 4]);
  38.         }
  39.         strcat(string, "m");
  40.         return string;
  41. }
  42.  
  43. static void add_str(char *string1, char *string2)
  44. {
  45.         char last_char;
  46.  
  47.         last_char = string1[strlen(string1) - 1];
  48.         if (last_char != '[')
  49.                 strcat(string1, ";");
  50.         strcat(string1, string2);
  51. }
  52.