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();
            }
        }