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); } }
// Empty public CharBox(byte x, byte y) { box = new CharRow[y]; for (int i = 0; i < y; i++) { box[i] = new CharRow(x); } }
// 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]); } }
// 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]); } }
// 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; } }
// 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]); } } }
// 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); } } } }