Beispiel #1
0
 public CharBox(string[] data, char one)
 {
     m_step = 1;
     if (data.Length == 1)
     {
         data = data[0].Replace("\r", "").Split('\n');
     }
     m_height = data.Length;
     box      = new CharRow[m_height];
     for (int i = 0; i < m_height; i++)
     {
         int width = data[0].Length;
         if (width % 8 > 0)
         {
             width += 8;
         }
         byte[] row  = new byte[width / 8];
         int    pos  = 0;
         byte   mask = 128;
         foreach (var r in data[i])
         {
             if (r == one)
             {
                 row[pos] |= mask;
             }
             mask >>= 1;
             if (mask == 0)
             {
                 mask = 128;
                 pos++;
             }
         }
         box[i] = new CharRow(row);
     }
 }
Beispiel #2
0
 // Empty
 public CharBox(byte x, byte y)
 {
     box = new CharRow[y];
     for (int i = 0; i < y; i++)
     {
         box[i] = new CharRow(x);
     }
 }
Beispiel #3
0
 // From byte array
 public CharBox(byte[][] data)
 {
     m_step   = 1;
     m_height = data.Length;
     box      = new CharRow[m_height];
     for (int i = 0; i < m_height; i++)
     {
         box[i] = new CharRow(data[i]);
     }
 }
Beispiel #4
0
        // From byte array
        public CharBox(byte[][] data)
        {
            int height = data.Length;

            box = new CharRow[height];
            for (int i = 0; i < height; i++)
            {
                box[i] = new CharRow(data[i]);
            }
        }
Beispiel #5
0
 // Empty
 public CharBox(byte x, byte y)
 {
     m_step   = 1;
     m_height = y;
     box      = new CharRow[y];
     for (int i = 0; i < y; i++)
     {
         box[i]       = new CharRow(x);
         box[i].Width = x;
     }
 }
Beispiel #6
0
        // From GFX
        public CharBox(byte[] data, Int32[] descr, int pos)
        {
            m_step = 1;
            int width = descr[(pos * 6) + 1];

            m_height = descr[(pos * 6) + 2];
            if (m_height + width == 0)
            {
                return;
            }
            pos = descr[(pos * 6) + 0];
            int startPos = pos;

            box = new CharRow[m_height];
            Byte mask = 128;

            for (int y = 0; y < m_height; y++)
            {
                box[y]       = new CharRow(width / 8 + Convert.ToByte((width & 7) > 0));
                box[y].Width = width;
                for (int x = 0; x < width; x++)
                {
                    if ((data[pos] & mask) != 0)
                    {
                        box[y].setBit(x);
                    }
                    if (mask > 1)
                    {
                        mask >>= 1;
                    }
                    else
                    {
                        mask = 128;
                        pos++;
                    }
                }
                box[y].NonZeros();
            }
            Byte[] check = getGFXmap();
            for (int i = 0; i < check.Length; i++)
            {
                if (check[i] != data[startPos + i])
                {
                    Console.WriteLine("Difference " + check[i] + data[startPos + i]);
                }
            }
        }
Beispiel #7
0
        // Rotate
        public CharBox(CharBox bR)
        {
            m_step   = 1;
            m_height = bR.box[0].Width;
            int width = bR.box.Length;

            box = new CharRow[m_height];
            for (int i = 0; i < m_height; i++)
            {
                int bWidth = (width / 8);
                if ((width & 7) > 0)
                {
                    bWidth++;
                }
                box[i] = new CharRow(bWidth);
                for (int j = 0; j < width; j++)
                {
                    if (bR.box[j].getBit(i))
                    {
                        box[i].setBit(j);
                    }
                }
            }
        }