public BackdropModel(DatImage image)
        {
            if (image == null)
            {
                throw new ArgumentNullException(nameof(image));
            }

            this.Width = image.Width;
            this.Image = image;
        }
        private void SaveGroupDat_Click(object sender, RoutedEventArgs e)
        {
            if (this.GroupsList.SelectedIndex == -1)
            {
                return;
            }

            var dialog = new SaveFileDialog();

            dialog.AddExtension = true;
            dialog.DefaultExt   = ".dat";
            dialog.Filter       = "DAT files (*.dat)|*.dat";

            string fileName;

            if (dialog.ShowDialog(this) == true)
            {
                fileName = dialog.FileName;
            }
            else
            {
                return;
            }

            var groups = this.GroupsList.SelectedItems;

            this.RunBusyAction(disp =>
            {
                var dat = new DatFile();

                foreach (DatGroup group in groups)
                {
                    var datGroup = new DatGroup(group.GroupId);
                    dat.Groups.Add(datGroup);

                    foreach (DatImage image in group.Images)
                    {
                        DatImage datImage = DatImage.FromMemory(
                            image.GroupId,
                            image.ImageId,
                            image.Format,
                            image.Width,
                            image.Height,
                            image.ColorsCount,
                            image.GetRawData());

                        datGroup.Images.Add(datImage);
                    }
                }

                dat.Save(fileName);
            });
        }
        private void AddImage_Click(object sender, RoutedEventArgs e)
        {
            var group = this.GroupsList.SelectedItem as DatGroup;

            if (group == null)
            {
                return;
            }

            var dialog = new OpenFileDialog();

            dialog.CheckFileExists = true;
            dialog.DefaultExt      = ".png";
            dialog.Filter          = "Images (*.png, *.bmp, *.jpg)|*.png;*.bmp;*.jpg|PNG files (*.png)|*.png|BMP files (*.bmp)|*.bmp|JPG files (*.jpg)|*.jpg";

            string fileName;

            if (dialog.ShowDialog(this) == true)
            {
                fileName = dialog.FileName;
            }
            else
            {
                return;
            }

            int imageId = group.Images.Count == 0 ? 0 : group.Images.Max(t => t.ImageId) + 1;

            this.RunBusyAction(disp =>
            {
                try
                {
                    var image = DatImage.FromFile(group.GroupId, (short)imageId, fileName);
                    image.ConvertToFormat24();

                    group.Images.Add(image);

                    disp(() => this.DatFile = this.DatFile);
                    disp(() => this.ImagesList.SelectedIndex = this.ImagesList.Items.Count - 1);
                }
                catch (Exception ex)
                {
                    disp(() => MessageBox.Show(this, ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Error));
                }
            });
        }
        private void NewImage_Click(object sender, RoutedEventArgs e)
        {
            var group = this.GroupsList.SelectedItem as DatGroup;

            if (group == null)
            {
                return;
            }

            int imageId = group.Images.Count == 0 ? 0 : group.Images.Max(t => t.ImageId) + 1;

            this.RunBusyAction(disp =>
            {
                var image = new DatImage(group.GroupId, (short)imageId);
                group.Images.Add(image);

                disp(() => this.DatFile = this.DatFile);
                disp(() => this.ImagesList.SelectedIndex = this.ImagesList.Items.Count - 1);
            });
        }
Beispiel #5
0
        public static unsafe bool GetDATImageMetadata(int GroupId, int ImageId, short *Width, short *Height, byte *Format)
        {
            if (m_DATFile == null)
            {
                Trace.WriteLine("[DBG] [C#] Load a DAT file first");
                *Width = 0; *Height = 0; *Format = 0;
                return(false);
            }

            IList <DatGroup> groups = m_DATFile.Groups;

            foreach (var group in groups)
            {
                if (group.GroupId == GroupId)
                {
                    IList <DatImage> images = group.Images;
                    foreach (var image in images)
                    {
                        if (image.ImageId == ImageId)
                        {
                            // Release the previous cached image
                            m_DATImage = null;
                            // Cache the current image
                            m_DATImage = image;
                            // Populate the output values
                            *Width  = image.Width;
                            *Height = image.Height;
                            *Format = (byte)image.Format;
                            if (m_Verbose)
                            {
                                Trace.WriteLine("[DBG] [C#] Found " + GroupId + "-" + ImageId + ", " +
                                                "MetaData: (" + image.Width + ", " + image.Height + "), Type: " + image.Format);
                            }
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
        private void SaveImage_Click(object sender, RoutedEventArgs e)
        {
            var images = this.ImagesList.SelectedItems;

            if (images.Count == 0)
            {
                return;
            }

            DatImage image  = images[0] as DatImage;
            var      dialog = new SaveFileDialog();

            dialog.AddExtension = true;
            dialog.DefaultExt   = ".png";
            dialog.Filter       = "Images (*.png, *.bmp)|*.png;*.bmp|PNG files (*.png)|*.png|BMP files (*.bmp)|*.bmp";
            dialog.FileName     = image.GroupId + "-" + image.ImageId;

            string fileName, directory, extension;

            if (dialog.ShowDialog(this) == true)
            {
                fileName  = dialog.FileName;
                directory = fileName.Substring(0, fileName.LastIndexOf('\\'));
                extension = fileName.Substring(fileName.LastIndexOf('.'));
            }
            else
            {
                return;
            }

            this.RunBusyAction(disp =>
            {
                foreach (DatImage img in images)
                {
                    img.Save(directory + '\\' + img.GroupId + "-" + img.ImageId + extension);
                }
            });
        }
Beispiel #7
0
        public static bool LoadDATFile([MarshalAs(UnmanagedType.LPStr)] string sDatFileName)
        {
            // First, let's check if this DAT file is already loaded:
            if (m_DATFile != null && m_DATFile.FileName.ToLower().Equals(sDatFileName.ToLower()))
            {
                if (m_Verbose)
                {
                    Trace.WriteLine("[DBG] [C#] DAT File " + sDatFileName + " already loaded");
                }
                return(true);
            }

            if (m_Verbose)
            {
                Trace.WriteLine("[DBG] [C#] Loading File: " + sDatFileName);
            }
            try
            {
                m_DATImage = null; // Release any previous instances
                m_DATFile  = null; // Release any previous instances
                m_DATFile  = DatFile.FromFile(sDatFileName);
                if (m_DATFile == null)
                {
                    if (m_Verbose)
                    {
                        Trace.WriteLine("[DBG] [C#] Failed when loading: " + sDatFileName);
                    }
                    return(false);
                }
            }
            catch (Exception e)
            {
                Trace.WriteLine("[DBG] [C#] Exception " + e + " when opening " + sDatFileName);
                m_DATFile = null;
            }
            return(true);
        }