Beispiel #1
0
        public void CommitChanges(Texture currentSkin, bool save)
        {
            using (var grabber = new ColorGrabber(currentSkin, Width, Height))
            {
                grabber.Load();

                if (currentSkin != GLImage)
                {
                    grabber.Texture = GLImage;
                    grabber.Save();
                }

                if (save)
                {
                    var newBitmap = new Bitmap(Width, Height);

                    using (var fp = new FastPixel(newBitmap, true))
                    {
                        for (int y = 0; y < Height; ++y)
                        {
                            for (int x = 0; x < Width; ++x)
                            {
                                ColorPixel c = grabber[x, y];
                                fp.SetPixel(x, y, Color.FromArgb(c.Alpha, c.Red, c.Green, c.Blue));
                            }
                        }
                    }

                    newBitmap.Save(File.FullName);
                    newBitmap.Dispose();

                    var md = new Dictionary <string, string>();
                    md.Add("Model", Model.Path);
                    PNGMetadata.WriteMetadata(File.FullName, md);

                    SetImages(true);

                    Dirty = false;
                }
            }
        }
Beispiel #2
0
        public void Resize(int width, int height, ResizeType type = ResizeType.Scale)
        {
            using (var newBitmap = new Bitmap(width, height))
            {
                using (Graphics g = Graphics.FromImage(newBitmap))
                {
                    g.SmoothingMode     = SmoothingMode.None;
                    g.InterpolationMode = InterpolationMode.NearestNeighbor;
                    g.PixelOffsetMode   = PixelOffsetMode.HighQuality;
                    g.Clear(Color.FromArgb(0, 0, 0, 0));

                    using (Image temp = System.Drawing.Image.FromFile(File.FullName))
                    {
                        if (type == ResizeType.Scale)
                        {
                            g.DrawImage(temp, 0, 0, newBitmap.Width, newBitmap.Height);
                        }
                        else
                        {
                            g.DrawImage(temp, 0, 0, temp.Width, temp.Height);
                        }
                    }
                }

                newBitmap.Save(File.FullName);

                var md = new Dictionary <string, string>();
                md.Add("Model", Model.Name);
                PNGMetadata.WriteMetadata(File.FullName, md);
            }

            SetImages();

            Undo.Clear();
            Editor.MainForm.CheckUndo();
        }
Beispiel #3
0
        public bool SetImages(bool updateGL = true)
        {
            Bitmap image = null;

            try
            {
                using (FileStream file = File.Open(FileMode.Open, FileAccess.Read, FileShare.Read))
                    image = new Bitmap(file);

                Size = image.Size;

                if (Head != null)
                {
                    Head.Dispose();

                    if (updateGL)
                    {
                        Unload();
                        Create();
                    }
                }

                float scale     = Size.Width / 64.0f;
                var   headSize  = (int)(8.0f * scale);
                var   helmetLoc = (int)(40.0f * scale);

                Head = new Bitmap(headSize, headSize);
                using (Graphics g = Graphics.FromImage(Head))
                {
                    g.DrawImage(image, new Rectangle(0, 0, headSize, headSize), new Rectangle(headSize, headSize, headSize, headSize),
                                GraphicsUnit.Pixel);
                    g.DrawImage(image, new Rectangle(0, 0, headSize, headSize), new Rectangle(helmetLoc, headSize, headSize, headSize),
                                GraphicsUnit.Pixel);
                }

                if (Model == null)
                {
                    Dictionary <string, string> metadata = PNGMetadata.ReadMetadata(File.FullName);

                    if (metadata.ContainsKey("Model"))
                    {
                        Model = ModelLoader.GetModelForPath(metadata["Model"]);

                        if (Model == null)
                        {
                            if (image.Height == 64)
                            {
                                Model = ModelLoader.GetModelForPath("Players/Steve");
                            }
                            else
                            {
                                Model = ModelLoader.GetModelForPath("Players/Steve (Minimal)");
                            }
                        }
                    }
                    else
                    {
                        if (image.Height == 64)
                        {
                            Model = ModelLoader.GetModelForPath("Players/Steve");
                        }
                        else
                        {
                            Model = ModelLoader.GetModelForPath("Players/Steve (Minimal)");
                        }
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show(String.Format(Editor.GetLanguageString("E_SKINERROR"), File.FullName));
                return(false);
            }
            finally
            {
                if (image != null)
                {
                    image.Dispose();
                }
            }

            return(true);
        }