private static void Init() { if (m_init) { return; } m_init = true; string path = GetCustomFaceCfgPath(); using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) { int length = (int)fs.Length; int byteCount = 0; while (byteCount < length) { CustomFaceItem item = new CustomFaceItem(); byte[] bytes = new byte[4]; fs.Read(bytes, 0, 4); int magic = Helper.GetInt(bytes); if (magic != MagicNumber) { return; } fs.Read(bytes, 0, 4); int strlen = Helper.GetInt(bytes); byte[] fileBytes = new byte[strlen]; fs.Read(fileBytes, 0, fileBytes.Length); item.Filename = Helper.GetString(fileBytes); fs.Read(bytes, 0, 4); int imglen = Helper.GetInt(bytes); byte[] imgBytes = new byte[imglen]; fs.Read(imgBytes, 0, imgBytes.Length); item.Icon = new Bitmap(new MemoryStream(imgBytes)); item.ID = m_items.Count; if (!m_item_names.ContainsKey(item.Filename)) { m_item_names.Add(item.Filename, item.Filename); m_items.Add(item); } } } }
public static void AddCustomFace(string imageFilePath) { Init(); string name = Path.GetFileName(imageFilePath); if (m_item_names.ContainsKey(name)) { return; } m_item_names.Add(name, name); Bitmap icon = GenerateIconImageBytes(imageFilePath); MemoryStream ms = new MemoryStream(); icon.Save(ms, ImageFormat.Png); using (FileStream fs = new FileStream(GetCustomFaceCfgPath(), FileMode.Append, FileAccess.Write)) { byte[] bytes = null; byte[] length = null; bytes = Helper.GetBytes(MagicNumber); fs.Write(bytes, 0, 4); bytes = Helper.GetBytes(name); length = Helper.GetBytes(bytes.Length); fs.Write(length, 0, 4); fs.Write(bytes, 0, bytes.Length); bytes = ms.ToArray(); length = Helper.GetBytes(bytes.Length); fs.Write(length, 0, 4); fs.Write(bytes, 0, bytes.Length); fs.Flush(); } CustomFaceItem item = new CustomFaceItem(); item.Filename = name; item.Icon = icon; item.ID = m_items.Count; m_items.Add(item); }
public static void AddCustomFace(string imageFilePath) { Init(); string name = Path.GetFileName(imageFilePath); if (m_item_names.ContainsKey(name)) return; m_item_names.Add(name, name); Bitmap icon = GenerateIconImageBytes(imageFilePath); MemoryStream ms = new MemoryStream(); icon.Save(ms, ImageFormat.Png); using (FileStream fs = new FileStream(GetCustomFaceCfgPath(), FileMode.Append, FileAccess.Write)) { byte[] bytes = null; byte[] length = null; bytes = Helper.GetBytes(MagicNumber); fs.Write(bytes, 0, 4); bytes = Helper.GetBytes(name); length = Helper.GetBytes(bytes.Length); fs.Write(length, 0, 4); fs.Write(bytes, 0, bytes.Length); bytes = ms.ToArray(); length = Helper.GetBytes(bytes.Length); fs.Write(length, 0, 4); fs.Write(bytes, 0, bytes.Length); fs.Flush(); } CustomFaceItem item = new CustomFaceItem(); item.Filename = name; item.Icon = icon; item.ID = m_items.Count; m_items.Add(item); }
private static void Init() { if (m_init) return; m_init = true; string path = GetCustomFaceCfgPath(); using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) { int length = (int)fs.Length; int byteCount = 0; while (byteCount < length) { CustomFaceItem item = new CustomFaceItem(); byte[] bytes = new byte[4]; fs.Read(bytes, 0, 4); int magic = Helper.GetInt(bytes); if (magic != MagicNumber) return; fs.Read(bytes, 0, 4); int strlen = Helper.GetInt(bytes); byte[] fileBytes = new byte[strlen]; fs.Read(fileBytes, 0, fileBytes.Length); item.Filename = Helper.GetString(fileBytes); fs.Read(bytes, 0, 4); int imglen = Helper.GetInt(bytes); byte[] imgBytes = new byte[imglen]; fs.Read(imgBytes, 0, imgBytes.Length); item.Icon = new Bitmap(new MemoryStream(imgBytes)); item.ID = m_items.Count; if (!m_item_names.ContainsKey(item.Filename)) { m_item_names.Add(item.Filename, item.Filename); m_items.Add(item); } } } }
private void CustomFaceForm_Click(object sender, EventArgs e) { MouseEventArgs me = (MouseEventArgs)e; int bx = ((me.X - StartX)) / CustomFaceManager.IconSize; int by = ((me.Y - StartY)) / CustomFaceManager.IconSize; int index = by * LineItemCount + bx; if (bx < LineItemCount && by < LineCount && index < LineCount * LineItemCount) { index += m_pageIndex * LineItemCount * LineCount; m_item = CustomFaceManager.GetItem(index); if (SelectItem != null) SelectItem(this, e); if (me.Button == MouseButtons.Left) Close(); } }