private void MapList_SelectedIndexChanged(object sender, EventArgs e) { if (MapList.SelectedItem != null) { lock (MapEditor.MapLock) { WZCanvas preview = MapEditor.file.Directory.GetIMG(GetSelectedMap()).GetCanvas("miniMap/canvas"); if (!select.Enabled) { select.Enabled = true; } if (preview != null) { Preview.Image = preview.GetBitmap(); } else { Preview.Image = null; } MapName.Text = GetFullMapName(int.Parse(((string)MapList.SelectedItem).Substring(0, 9)).ToString()); } } else { MapName.Text = ""; Preview.Image = null; } }
public void Save(string filename) { String tempName = Path.GetTempFileName(); BinaryWriter temp = new BinaryWriter(System.IO.File.OpenWrite(tempName)); Write(temp); temp.Close(); BinaryReader readTemp = new BinaryReader(System.IO.File.OpenRead(tempName)); byte[] bytes = new byte[readTemp.BaseStream.Length]; readTemp.Read(bytes, 0, bytes.Length); byte[] compressed = WZCanvas.StrongCompress(bytes); BinaryWriter file = new BinaryWriter(System.IO.File.Create(filename)); byte[] header = { 0x57, 0x7A, 0x50, 0x61, 0x74, 0x63, 0x68, 0x1A, 0x02, 0x00, 0x00, 0x00 }; file.Write(header); file.Write(Crc32.Compute(compressed)); file.Write(compressed); file.Close(); readTemp.Close(); System.IO.File.Delete(tempName); }
public void SetCanvas(WZCanvas set) { if (value == null) { value = set; } if (value.type == WZObject.WZObjectType.WZ_CANVAS) { value = set; } }
private static WZCanvas CanvasFromEntry(IMGEntry entry) { WZCanvas c = (WZCanvas)entry.value; WZCanvas obj = new WZCanvas(c.file, c.width, c.height, c.size, c.offset, c.format); obj.SetBitmap(c.GetBitmap()); for (int i = 0; i < entry.childs.Count; i++) { obj.objects.Add(ObjectFromEntry(entry.childs[i])); } return(obj); }
private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofdOpen = new OpenFileDialog(); ofdOpen.Filter = "Mark|*.png"; if (ofdOpen.ShowDialog() != DialogResult.Cancel) { string FileName = ofdOpen.FileName; string ImageName = Path.GetFileNameWithoutExtension(FileName); foreach (ImageViewer iv in Panel.Controls) { if (iv.Name == ImageName) { Error.Text = "Error: There is already a mark with this name."; return; } } Image i = Bitmap.FromFile(FileName); if (i.Width > 38 || i.Height > 38) { Error.Text = "Error: The size of the image must not be larger than 38x38"; return; } IMGEntry marks = MapEditor.file.Directory.GetIMG("MapHelper.img").GetChild("mark"); IMGEntry entry = new IMGEntry(); WZCanvas c = new WZCanvas(); c.SetBitmap((Bitmap)i); c.format = WZCanvas.ImageFormat.FORMAT_4444; entry.SetCanvas(c); entry.Name = ImageName; marks.Add(entry); marks.parent.ToSave = true; Error.Text = ""; ImageViewer imageViewer = new ImageViewer(); imageViewer.Dock = DockStyle.Bottom; imageViewer.Image = c.GetBitmap(); imageViewer.Width = c.GetBitmap().Width + 6; imageViewer.Height = c.GetBitmap().Height + 6; imageViewer.Name = entry.Name; imageViewer.MouseClick += new MouseEventHandler(ImageViewer_MouseClick); imageViewer.MouseDoubleClick += new MouseEventHandler(ImageViewer_MouseDoubleClick); imageViewer.IsThumbnail = false; Panel.Controls.Add(imageViewer); } }
public void SetCanvas(string name, WZCanvas set) { IMGEntry e = GetChild(name); if (e == null && name.IndexOf("/") == -1) { e = new IMGEntry(this); e.Name = name; e.value = set; Add(e); } else if (e != null) { e.SetCanvas(set); } }
public override void Draw(DevicePanel d) { if (MapEditor.Instance.EditMode.Checked && MapEditor.Instance.EditClock.Checked) { d.DrawRectangle(Object.GetInt("x") + Map.Instance.CenterX + 10, Object.GetInt("y") + Map.Instance.CenterY + 76, Object.GetInt("x") + Map.Instance.CenterX + Object.GetInt("width") - 8, Object.GetInt("y") + Map.Instance.CenterY + Object.GetInt("height") - 78, Selected ? Color.FromArgb(150, Color.Blue) : Color.FromArgb(150, 51, 17, 0)); } WZCanvas draw = Image.GetCanvas("am"); int x = Object.GetInt("x") + 16 + Map.Instance.CenterX, y = Object.GetInt("y") + 82 + Map.Instance.CenterY; d.DrawBitmap(draw.GetTexture(d._device), x, y, draw.width, draw.height, Selected, Transparency); x += draw.width + 17; draw = Image.GetCanvas("0"); d.DrawBitmap(draw.GetTexture(d._device), x, y, draw.width, draw.height, Selected, Transparency); x += draw.width + 2; d.DrawBitmap(draw.GetTexture(d._device), x, y, draw.width, draw.height, Selected, Transparency); x += draw.width + 2; draw = Image.GetCanvas("comma"); d.DrawBitmap(draw.GetTexture(d._device), x, y, draw.width, draw.height, Selected, Transparency); x += draw.width + 2; draw = Image.GetCanvas("0"); d.DrawBitmap(draw.GetTexture(d._device), x, y, draw.width, draw.height, Selected, Transparency); x += draw.width + 2; d.DrawBitmap(draw.GetTexture(d._device), x, y, draw.width, draw.height, Selected, Transparency); }
private static void CreateEntry(IMGEntry parent, WZCanvas obj) { parent.value = new WZCanvas(obj.file, obj.width, obj.height, obj.size, obj.offset, obj.format); CreateEntryChilds(parent, obj); }
WZObject ReadComplex(int end) { string type = ReadString(); switch (type) { case "Property": { WZProperty p = new WZProperty(); file.ReadShort(); // null int count = file.ReadValue(); for (int i = 0; i < count; i++) { p.objects.Add(ReadObject()); } if (end != 0 && end != file.file.BaseStream.Position) { throw new Exception("..."); } return(p); } case "Shape2D#Convex2D": { WZConvex c = new WZConvex(); int count = file.ReadValue(); for (int i = 0; i < count; i++) { c.objects.Add(ReadComplex()); } if (end != 0 && end != file.file.BaseStream.Position) { throw new Exception("..."); } return(c); } case "Shape2D#Vector2D": { int x = file.ReadValue(); int y = file.ReadValue(); if (end != 0 && end != file.file.BaseStream.Position) { throw new Exception("..."); } return(new WZVector(x, y)); } case "Canvas": { WZCanvas c = new WZCanvas(); c.file = file.file; file.ReadByte(); // null if (file.ReadByte() != 0) { file.ReadShort(); // null int count = file.ReadValue(); for (int i = 0; i < count; i++) { c.objects.Add(ReadObject()); } } c.width = file.ReadValue(); c.height = file.ReadValue(); int format = file.ReadValue(); c.format = (WZCanvas.ImageFormat)(file.ReadValue() + format); file.ReadInt(); // null c.size = file.ReadInt(); c.offset = (int)file.file.BaseStream.Position; file.file.BaseStream.Seek(c.size, SeekOrigin.Current); if (end != 0 && end != file.file.BaseStream.Position) { throw new Exception("..."); } return(c); } case "Sound_DX8": { // TODO file.file.BaseStream.Seek(end, SeekOrigin.Begin); if (end != 0 && end != file.file.BaseStream.Position) { throw new Exception("..."); } return(new WZSound()); } case "UOL": { file.ReadByte(); // null //if (end != 0 && end != file.file.BaseStream.Position) throw new Exception("..."); return(new WZUOL(ReadString())); } } throw new Exception("Invalid Object type: " + type); }