コード例 #1
0
ファイル: ddsIO.cs プロジェクト: polytronicgr/DDSViewer
 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);
 }
コード例 #2
0
 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.");
     }
 }
コード例 #3
0
ファイル: Form1.cs プロジェクト: polytronicgr/DDSViewer
 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]);
     }
 }
コード例 #4
0
ファイル: Form1.cs プロジェクト: polytronicgr/DDSViewer
 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]);
     }
 }
コード例 #5
0
ファイル: Form1.cs プロジェクト: polytronicgr/DDSViewer
 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]);
     }
 }
コード例 #6
0
        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));
                }
            }
        }
コード例 #7
0
        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();
            }
        }