public static S16.Drawing.DDSImage loadFile(string path) { S16.Drawing.DDSImage img = null; try { using (FileStream fs = File.OpenRead(path)) { try { img = new S16.Drawing.DDSImage(fs); } catch (S16.Drawing.InvalidFileHeaderException e) { util.error("Invalid File Header.\n" + e.Message); } catch (S16.Drawing.NotADDSImageException e) { util.error("Not a valid .dds file.\n" + e.Message); } catch (S16.Drawing.UnknownFileFormatException e) { util.error("Unknown file format.\n" + e.Message); } catch (Exception e) { util.error("Unknown exception.\n" + e.Message + '\n' + e.StackTrace); } } } catch (Exception e) { util.error("Error reading file.\n" + e.Message + '\n' + e.StackTrace); } return(img); }
private void btnConvert_Click(object sender, EventArgs e) { if (srcDir != "" && dstDir != "" && cmbExt.SelectedIndex != -1) { string[] files = getFiles(srcDir, dstDir, "*.dds", (int)nRecursionDepth.Value); string ext = cmbExt.GetItemText(cmbExt.SelectedItem); mainProgressBar.Maximum = files.Length; mainProgressBar.Visible = true; foreach (string f in files) { string op = Path.GetDirectoryName(f); string p = dstDir + op.Substring(srcDir.Length, op.Length - srcDir.Length); string newFileName = p + Path.DirectorySeparatorChar + Path.GetFileNameWithoutExtension(f) + ext; try { Directory.CreateDirectory(p); S16.Drawing.DDSImage img = ddsIO.loadFile(f); ddsIO.saveFile(img.BitmapImage, newFileName); } catch (Exception ex) { util.error("Error converting file: " + f + '\n' + ex.Message + '\n' + ex.StackTrace); } //MessageBox.Show(dstDir + p.Substring(srcDir.Length, p.Length - srcDir.Length)); // Directory.CreateDirectory(dstDir + p.Substring(srcDir.Length,p.Length-srcDir.Length)); mainProgressBar.PerformStep(); } util.info("Done converting!"); this.Close(); } else { util.info("Must fill in all forms."); } }
private void previousToolStripMenuItem_Click(object sender, EventArgs e) { if (files != null && curFileIndex > 0) { --curFileIndex; beginLoad(files[curFileIndex]); curImage = ddsIO.loadFile(files[curFileIndex]); pictureBoxMain.Image = curImage.BitmapImage; endLoad(files[curFileIndex]); } }
private void nextToolStripMenuItem_Click(object sender, EventArgs e) { if (files != null && curFileIndex < files.Length - 1) { ++curFileIndex; beginLoad(files[curFileIndex]); curImage = ddsIO.loadFile(files[curFileIndex]); pictureBoxMain.Image = curImage.BitmapImage; endLoad(files[curFileIndex]); } }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { if (mainOpenFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { files = System.IO.Directory.GetFiles(Path.GetDirectoryName(mainOpenFileDialog.FileName), "*.dds"); curFileIndex = Array.IndexOf(files, mainOpenFileDialog.FileName); beginLoad(files[curFileIndex]); curImage = ddsIO.loadFile(files[curFileIndex]); pictureBoxMain.Image = curImage.BitmapImage; endLoad(files[curFileIndex]); } }
public TileSet(XmlNode tilesetNode) { XmlNode imageNode = tilesetNode.ChildNodes[0]; file = MakerEngineForm.gameDirectory + imageNode.Attributes["source"].InnerText; S16.Drawing.DDSImage ddsImage = new S16.Drawing.DDSImage(File.ReadAllBytes(file)); image = ddsImage.BitmapImage; name = tilesetNode.Attributes["name"].InnerText; gid = Int32.Parse(tilesetNode.Attributes["firstgid"].InnerText); tilewidth = Int32.Parse(tilesetNode.Attributes["tilewidth"].InnerText); tileheight = Int32.Parse(tilesetNode.Attributes["tileheight"].InnerText); tilesetWidth = Int32.Parse(imageNode.Attributes["width"].InnerText); tilesetHeight = Int32.Parse(imageNode.Attributes["height"].InnerText); if (imageNode.Attributes["spacing"] != null) { spacing = Int32.Parse(imageNode.Attributes["spacing"].InnerText); } while ((imageNode = imageNode.NextSibling) != null) { if (animations == null) { animations = new List <Animation>(); } foreach (XmlNode aniNode in imageNode.ChildNodes) { animations.Add(new Animation(aniNode)); } } }
private void buildMapImages() { int width = mapWidth * tileWidth; int height = mapHeight * tileHeight; String outputFileName; //String dir = layerImageDir; if (!Directory.Exists(layerImageDir)) { Directory.CreateDirectory(layerImageDir); } foreach (Layer layer in layers) { Image img = new Bitmap(width, height, PixelFormat.Format32bppPArgb); Graphics g = Graphics.FromImage(img); if (layer.GetType() == typeof(TileLayer)) { for (int j = 0; j < mapHeight; ++j) { for (int i = 0; i < mapWidth; ++i) { int key = ((TileLayer)layer).data[j][i]; if (key != 0) { if (!imageDict.ContainsKey(key)) { imageDict[key] = new S16.Drawing.DDSImage(File.ReadAllBytes(missingNOImg)).BitmapImage; } g.DrawImage(imageDict[key], new Point(i * tileWidth, j * tileHeight)); } } } } else if (layer.GetType() == typeof(ObjectLayer)) { foreach (ObjectLayer.GameObject gameObj in ((ObjectLayer)layer).gameObjects) { if (gameObj.display) { if (gameObj.gid == -1) { g.DrawRectangle(Pens.Firebrick, gameObj.getRect()); } else { g.DrawImage(imageDict[gameObj.gid], new Point(gameObj.x, gameObj.y /*- gameObj.height*/)); } } /* Should be fixed? * // these sprites aren't displaying in proper position. * // Offsetting the y pos helps but still not exact. */ } } outputFileName = layerImageDir + name + "_" + layer.getName() + " Layer.png"; using (MemoryStream memory = new MemoryStream()) { using (FileStream fs = new FileStream(outputFileName, FileMode.Create, FileAccess.ReadWrite)) { img.Save(memory, ImageFormat.Png); byte[] bytes = memory.ToArray(); fs.Write(bytes, 0, bytes.Length); } } layer.image = Image.FromFile(outputFileName); g.Dispose(); img.Dispose(); } }