Advertisement
Guest User

Untitled

a guest
Feb 14th, 2017
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.13 KB | None | 0 0
  1.  
  2. void Board::drawString(PixelLocation loc, std::string input, const bool invert)
  3. {
  4.     const int LETTER_HEIGHT = 8;
  5.     const int RIGHT_SIDE_OFFSET = 7;
  6.     const int PIXEL_SPACING = 1;
  7.     const int LETTER_SPACING = 1;
  8.     const int LINE_SPACING = 1;
  9.  
  10.     /*
  11.         LetterMap:
  12.                 1 = drawPixel
  13.                 0 = don't drawPixel
  14.  
  15.         if invert == true
  16.                 1 = don't drawPixel
  17.                 0 = drawPixel
  18.     */
  19.  
  20.  
  21.  
  22.     const PixelLocation originalLoc = loc;
  23.     LetterMap letterCode;
  24.  
  25.  
  26.     if (invert) {
  27.         drawPixelRectangle({loc.x - 2*LETTER_SPACING, loc.y - LINE_SPACING}, GRID_WIDTH + LETTER_SPACING - RIGHT_SIDE_OFFSET, LETTER_HEIGHT + 2 * LINE_SPACING, PIXEL_SPACING);
  28.     }
  29.  
  30.     for (std::string::iterator it = input.begin(); it < input.end(); ++it) {
  31.  
  32.         PixelLocation current = loc;
  33.         switch (*it) {
  34.         case 'A':
  35.             letterCode.set(5, 8, "0111011011110111101111111110111101100000"); break;
  36.         case 'B':
  37.             letterCode.set(5, 8, "1111011011111101101111011110111111000000"); break;
  38.         case 'C':
  39.             letterCode.set(5, 8, "0111111000110001100011000110000111100000"); break;
  40.         case 'D':
  41.             letterCode.set(5, 8, "1111011011110111101111011110111111000000"); break;
  42.         case 'E':
  43.             letterCode.set(5, 8, "1111111000111101100011000110001111100000"); break;
  44.         case 'F':
  45.             letterCode.set(5, 8, "1111111000111101100011000110001100000000"); break;
  46.         case 'G':
  47.             letterCode.set(5, 8, "0111011000110001101111011110110111100000"); break;
  48.         case 'H':
  49.             letterCode.set(5, 8, "1101111011111111101111011110111101100000"); break;
  50.         case 'I':
  51.             letterCode.set(2, 8, "1111111111111100"); break;
  52.         case 'J':
  53.             letterCode.set(4, 8, "00110011001100110011001111100000"); break;
  54.         case 'K':
  55.             letterCode.set(6, 8, "110011110110111100111000111100110110110011000000"); break;
  56.         case 'L':
  57.             letterCode.set(4, 8, "11001100110011001100110011110000"); break;
  58.         case 'M':
  59.             letterCode.set(7, 8, "10000011100011111011111111111101011110001111000110000000"); break;
  60.         case 'N':
  61.             letterCode.set(6, 8, "100011110011111011111111110111110011110001000000"); break;
  62.         case 'O':
  63.             letterCode.set(6, 8, "011110110011110011110011110011110011011110000000"); break;
  64.         case 'P':
  65.             letterCode.set(5, 8, "1111011011110111101111110110001100000000"); break;
  66.         case 'Q':
  67.             letterCode.set(6, 8, "011110110011110011110011110011110111011110000011000000"); break;
  68.         case 'R':
  69.             letterCode.set(5, 8, "1111011011110111101111110110101101100000"); break;
  70.         case 'S':
  71.             letterCode.set(4, 8, "01111100110001100011001111100000"); break;
  72.         case 'T':
  73.             letterCode.set(6, 8, "111111001100001100001100001100001100001100000000"); break;
  74.         case 'U':
  75.             letterCode.set(5, 8, "1101111011110111101111011110110111000000"); break;
  76.         case 'V':
  77.             letterCode.set(6, 8, "110011110011110011011110011110001100001100000000"); break;
  78.         case 'W':
  79.             letterCode.set(7, 8, "11000111100011110101111111110111110011111001101100000000"); break;
  80.         case 'X':
  81.             letterCode.set(6, 8, "110011110011011110001100011110110011110011000000"); break;
  82.         case 'Y':
  83.             letterCode.set(6, 8, "110011110011011110001100001100001100001100000000"); break;
  84.         case 'Z':
  85.             letterCode.set(5, 8, "1111100011001110111011100110001111100000"); break;
  86.         case 'a':
  87.             letterCode.set(5, 8, "0000000000011100001101111110110111100000"); break;
  88.         case 'b':
  89.             letterCode.set(5, 8, "1100011000111101101111011110111111000000"); break;
  90.         case 'c':
  91.             letterCode.set(4, 8, "00000000011111001100110001110000"); break;
  92.         case 'd':
  93.             letterCode.set(5, 8, "0001100011011111101111011110110111100000"); break;
  94.         case 'e':
  95.             letterCode.set(5, 8, "0000000000011101101111111110000111100000"); break;
  96.         case 'f':
  97.             letterCode.set(3, 8, "011110111110110110110000"); break;
  98.         case 'g':
  99.             letterCode.set(5, 8, "000000000001111110111101101111000110111000000"); break;
  100.         case 'h':
  101.             letterCode.set(5, 8, "1100011000111101101111011110111101100000"); break;
  102.         case 'i':
  103.             letterCode.set(2, 8, "1100111111111100"); break;
  104.         case 'j':
  105.             letterCode.set(3, 8, "011000011011011011011110000"); break;
  106.         case 'k':
  107.             letterCode.set(5, 8, "1100011000110111111011100111101101100000"); break;
  108.         case 'l':
  109.             letterCode.set(2, 8, "1111111111111100"); break;
  110.         case 'm':
  111.             letterCode.set(8, 8, "0000000000000000111111101101101111011011110110111101101100000000"); break;
  112.         case 'n':
  113.             letterCode.set(5, 8, "0000000000111101101111011110111101100000"); break;
  114.         case 'o':
  115.             letterCode.set(5, 8, "0000000000011101101111011110110111000000"); break;
  116.         case 'p':
  117.             letterCode.set(5, 8, "0000000000111101101111011111101100011000"); break;
  118.         case 'q':
  119.             letterCode.set(5, 8, "0000000000011111101111011011110001100011"); break;
  120.         case 'r':
  121.             letterCode.set(4, 8, "00000000110111111100110011000000"); break;
  122.         case 's':
  123.             letterCode.set(4, 8, "00000000011111001111001111100000"); break;
  124.         case 't':
  125.             letterCode.set(3, 8, "110110111110110110011000"); break;
  126.         case 'u':
  127.             letterCode.set(5, 8, "0000000000110111101111011110110111100000"); break;
  128.         case 'v':
  129.             letterCode.set(5, 8, "0000000000110111101101110011100010000000"); break;
  130.         case 'w':
  131.             letterCode.set(7, 8, "00000000000000110001111010111101011011111001101100000000"); break;
  132.         case 'x':
  133.             letterCode.set(5, 8, "0000000000110111101101110110111101100000"); break;
  134.         case 'y':
  135.             letterCode.set(5, 8, "0000000000110111101111011011110001101110"); break;
  136.         case 'z':
  137.             letterCode.set(5, 8, "0000000000111110011001100110001111100000"); break;
  138.         case '0':
  139.             letterCode.set(5, 8, "0111011011110111101111011110110111000000"); break;
  140.         case '1':
  141.             letterCode.set(3, 8, "011111011011011011011000"); break;
  142.         case '2':
  143.             letterCode.set(5, 8, "1111000011000110111011000110001111100000"); break;
  144.         case '3':
  145.             letterCode.set(5, 8, "1111000011000110111000011000111111000000"); break;
  146.         case '4':
  147.             letterCode.set(5, 8, "0001100111010111001111111000110001100000"); break;
  148.         case '5':
  149.             letterCode.set(5, 8, "1111010000111100001100011000111111000000"); break;
  150.         case '6':
  151.             letterCode.set(5, 8, "0111011000111101101111011110110111000000"); break;
  152.         case '7':
  153.             letterCode.set(5, 8, "1111100011001100011001100011000110000000"); break;
  154.         case '8':
  155.             letterCode.set(5, 8, "0111011011110110111011011110110111000000"); break;
  156.         case '9':
  157.             letterCode.set(5, 8, "0111011011110111101101111000110111000000"); break;
  158.         case ' ':
  159.             loc.x = loc.x + 4;
  160.             goto dontDraw;
  161.         case '\n':
  162.             loc.y = current.y + LETTER_HEIGHT + 2*LINE_SPACING;
  163.             loc.x = originalLoc.x;
  164.             goto dontDraw;
  165.         case ':':
  166.             letterCode.set(2, 8, "0011110000001100"); break;
  167.         case '!':
  168.             letterCode.set(2, 8, "1111111111001100"); break;
  169.         }
  170.        
  171.         int i = 0;
  172.  
  173.  
  174.  
  175.         for (int y = 0; y < LETTER_HEIGHT; ++y) {
  176.             for (int x = 0; x < letterCode.width; ++x) {
  177.                 if (letterCode.map[i++]) {
  178.                     invert ? clearPixel(current, PIXEL_SPACING) : drawPixel(current, PIXEL_SPACING);
  179.                 }
  180.                 current.x++;
  181.             }
  182.             current.x = loc.x;
  183.             current.y++;
  184.         }
  185.        
  186.         loc.x += letterCode.width + LETTER_SPACING;
  187.  
  188.         dontDraw:;
  189.  
  190.         current.y = loc.y;
  191.    
  192.     }
  193.  
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement