Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing;

namespace OSD
{
    class mcm
    {

        public static Bitmap[] readMCM(string file)
        {
            Bitmap[] imagearray = new Bitmap[256];

            if (!File.Exists(file))
            {
                System.Windows.Forms.MessageBox.Show("Font file does not exist : " + file);
                return imagearray;
            }

            for (int a = 0; a < imagearray.Length; a++)
            {
                imagearray[a] = new Bitmap(12, 18);
            }

            StreamReader sr = new StreamReader(file);

            string device = sr.ReadLine();

            // 00 black   10 white   x1 = trans/grey

            int x = 0, y = 0;

            int image = 0;

            while (!sr.EndOfStream)
            {
                string line = "";
                y = 0;
                while (y < 18)
                {
                    x = 0;
                    while (x < 12)
                    {
                        if (x == 0 || x == 4 || x == 8)
                        {
                            //Console.WriteLine("line");
                            line = sr.ReadLine();
                            if (line == null)
                                return imagearray;
                        }

                        string i1 = line.Substring((x % 4) * 2, 2);

                        //Console.WriteLine(image + " " + line + " " + i1 + " " + x + " " + y);

                        if (i1 == "01" || i1 == "11")
                        {
                            imagearray[image].SetPixel(x, y, Color.Transparent);
                        }
                        else if (i1 == "00")
                        {
                            imagearray[image].SetPixel(x, y, Color.Black);
                        }
                        else if (i1 == "10")
                        {
                            imagearray[image].SetPixel(x, y, Color.White);
                        }

                        x++;
                    }
                    y++;
                }

                // left
                int left = 256 - 216;
                while ((left / 4) > 0)
                {
                    sr.ReadLine(); // 1
                    left -= 4;
                }

                image++;
            }

            return imagearray;
        }
    }
}