public void SaveNokia5110File(string fileName, exportHformat expFmt, bool defConst, bool defStatic, bool defPROGMEM, String defName, String defType = "byte") { bool binary = (expFmt == exportHformat.BIN); // Nokia5110 chars are 5x7 ? 8? using (StreamWriter outputFile = new StreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.Write))) { outputFile.WriteLine("{0}{1}{2}{3} {4}[][{5}] = {{", defConst ? "const " : "", defStatic ? "static " : "", defPROGMEM ? "PROGMEM " : "", defType, defName, columns); // outputFile.WriteLine("const static byte customChar[][5] = {"); byte mask; foreach (List <byte> pattern in table) { int c = 0; if (binary) { outputFile.WriteLine("{"); } else { outputFile.Write("{"); } // column order - 5 columns left to right MSB at bottom byte[] col = new byte[5] { 0, 0, 0, 0, 0 }; // foreach (byte row in pattern) mask = 0x10; for (int j = 0; j < 5; j++) { for (int i = 0; i < 7; i++) { byte row = (i < 7) ? pattern[i] : (byte)0; col[j] >>= 1; if ((row & mask) != 0) { col[j] |= 0x40; } } mask >>= 1; } if (binary) { for (int j = 0; j < 5; j++) { outputFile.Write("0b"); mask = 0x80; // MSB set while (mask != 0) { outputFile.Write(((col[j] & mask) != 0) ? "1" : "0"); mask >>= 1; } if (j < (5 - 1)) { outputFile.WriteLine(","); } else { outputFile.WriteLine("},"); } } } else { for (int j = 0; j < 5; j++) { if (expFmt == exportHformat.HEX) { outputFile.Write("0x{0:X}", col[j]); } else { outputFile.Write("{0}", col[j]); } if (j < (5 - 1)) { outputFile.Write(","); } else { outputFile.WriteLine("},"); } } } //outputFile.WriteLine(","); c++; } outputFile.WriteLine("};"); outputFile.Close(); } }
public void SaveLCD2File(string fileName, exportHformat expFmt, bool defConst, bool defStatic, bool defPROGMEM, String defName, String defType = "byte") { // LCD user def. chars are 5x8 const int patHeight = 8; bool binary = (expFmt == exportHformat.BIN); using (StreamWriter outputFile = new StreamWriter(new FileStream(fileName, FileMode.Create, FileAccess.Write))) { outputFile.WriteLine("{0}{1}{2}{3} {4}[][{5}] = {{", defConst ? "const " : "", defStatic ? "static " : "", defPROGMEM ? "PROGMEM " : "", defType, defName, patHeight); // outputFile.WriteLine("const static PROGMEM byte customChar[][8] = {"); foreach (List <byte> pattern in table) { int r = 0; if (binary) { outputFile.WriteLine("{"); } else { outputFile.Write("{"); } // foreach (byte row in pattern) for (int i = 0; i < patHeight; i++) { byte mask = 0x10; byte row; if (i < height) { row = pattern[i]; } else { row = 0; } if (binary) { outputFile.Write("0b"); for (int j = 0; j < 5; j++) { outputFile.Write(((row & mask) != 0) ? "1" : "0"); mask >>= 1; } if (r < (patHeight - 1)) { outputFile.WriteLine(","); } else { outputFile.WriteLine("},"); } } else { if (expFmt == exportHformat.HEX) { outputFile.Write("0x{0:X}", row & 0x1f); } else { outputFile.Write("{0}", row & 0x1f); } if (r < (patHeight - 1)) { outputFile.Write(","); } else { outputFile.WriteLine("},"); } } r++; } } outputFile.WriteLine("};"); outputFile.Close(); } }