private Task <LoadImageResults> DropImage_Execute(DragEventArgs args, TargetImage target)
        {
            var task = new Task <LoadImageResults>(() =>
            {
                var results = new LoadImageResults()
                {
                    Loaded = false,
                    Target = target
                };
                if (args.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    string[] files = (string[])args.Data.GetData(DataFormats.FileDrop);
                    var file       = files[0];
                    try
                    {
                        using (var fs = File.OpenRead(file))
                        {
                            BitmapImage bmp = new BitmapImage();
                            bmp.BeginInit();
                            bmp.StreamSource = fs;
                            bmp.CacheOption  = BitmapCacheOption.OnLoad;
                            bmp.EndInit();
                            bmp.Freeze();

                            results.OriginalWidth  = bmp.PixelWidth;
                            results.OriginalHeight = bmp.PixelHeight;

                            var potBmp = bmp.CreateResizedNextPot();
                            potBmp.Freeze();

                            results.Loaded = true;
                            results.Image  = potBmp;
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }
                return(results);
            });

            task.Start();
            args.Handled = true;
            return(task);
        }
        private Task<LoadImageResults> DropImage_Execute(DragEventArgs args, TargetImage target)
        {
            var task = new Task<LoadImageResults>(() =>
            {
                var results = new LoadImageResults()
                {
                    Loaded = false,
                    Target = target
                };
                if (args.Data.GetDataPresent(DataFormats.FileDrop))
                {
                    string[] files = (string[]) args.Data.GetData(DataFormats.FileDrop);
                    var file = files[0];
                    try
                    {
                        using (var fs = File.OpenRead(file))
                        {
                            BitmapImage bmp = new BitmapImage();
                            bmp.BeginInit();
                            bmp.StreamSource = fs;
                            bmp.CacheOption = BitmapCacheOption.OnLoad;
                            bmp.EndInit();
                            bmp.Freeze();

                            results.Loaded = true;
                            results.Image = bmp;
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }
                return results;
            });
            task.Start();
            args.Handled = true;
            return task;
        }
Exemple #3
0
        private void LoadImage_PostExecute(LoadImageResults args)
        {
            var errInvalidSize = MainResources.Message_InvalidImageSize;
            var errValidSize   = MainResources.Message_InvalidImageSize_AllowedSizes;

            if (args.Loaded)
            {
                var bmp    = args.Image;
                var bmpW   = bmp.PixelWidth;
                var bmpH   = bmp.PixelHeight;
                var target = args.Target;

                var validSizes = _validImageSizes[target];
                try
                {
                    var targetSize = validSizes.First(pair => pair.X == bmpW && pair.Y == bmpH);
                    switch (target)
                    {
                    case TargetImage.Top:
                    {
                        ViewModel.Textures.Top.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.Bottom:
                    {
                        ViewModel.Textures.Bottom.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.FileLarge:
                    {
                        ViewModel.Textures.FileLarge.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.FileSmall:
                    {
                        ViewModel.Textures.FileSmall.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.FolderOpen:
                    {
                        ViewModel.Textures.FolderOpen.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.FolderClosed:
                    {
                        ViewModel.Textures.FolderClosed.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.TopAlt:
                    {
                        ViewModel.Textures.TopAlt.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.SmallIcon:
                    {
                        ViewModel.Info.SmallIcon.EncodeTexture(args.Image, targetSize.Format);
                        break;
                    }

                    case TargetImage.LargeIcon:
                    {
                        ViewModel.Info.LargeIcon.EncodeTexture(args.Image, targetSize.Format);
                        var sml = Extensions.CreateResizedImage(args.Image, 24, 24);
                        ViewModel.Info.SmallIcon.EncodeTexture((BitmapSource)sml, targetSize.Format);
                        break;
                    }

                    default:
                    {
                        throw new ArgumentOutOfRangeException();
                    }
                    }
                }
                catch (InvalidOperationException)
                {
                    var sb = new StringBuilder();
                    sb.AppendFormat("{2}: {0}x{1}\n", bmpW, bmpH, errInvalidSize);
                    sb.AppendFormat("{0}:\n", errValidSize);
                    foreach (var pair in validSizes)
                    {
                        sb.AppendFormat("\t- {0}x{1}\n", pair.X, pair.Y);
                    }

                    MessageBox.Show(sb.ToString(), Title, MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
            IsBusy = false;
        }
Exemple #4
0
        private Task <LoadImageResults> LoadImage_Execute(TargetImage targetImage)
        {
            var busyPickingFile  = MainResources.Busy_PickingFile;
            var busyOpeningImage = MainResources.Busy_OpeningImage;
            var task             = new Task <LoadImageResults>(() =>
            {
                BusyText = busyPickingFile;
                var opfl = new OpenFileDialog
                {
                    Filter      = "Image Files|*.jpg;*.jpeg;*.png;*.bmp",
                    Multiselect = false
                };
                var dlg = opfl.ShowDialog();
                LoadImageResults results = new LoadImageResults
                {
                    Loaded = false,
                    Target = targetImage
                };
                if (!dlg.HasValue || dlg.Value)
                {
                    BusyText = busyOpeningImage;
                    try
                    {
                        using (var fs = File.OpenRead(opfl.FileName))
                        {
                            BitmapImage bmp = new BitmapImage();
                            bmp.BeginInit();
                            bmp.StreamSource = fs;
                            bmp.CacheOption  = BitmapCacheOption.OnLoad;
                            bmp.EndInit();
                            bmp.Freeze();

                            BitmapSource bmpSrc;

                            switch (targetImage)
                            {
                            case TargetImage.Bottom:
                            case TargetImage.Top:
                            case TargetImage.FileLarge:
                            case TargetImage.FileSmall:
                            case TargetImage.FolderOpen:
                            case TargetImage.FolderClosed:
                            case TargetImage.TopAlt:
                                bmpSrc = bmp.CreateResizedNextPot();
                                bmpSrc.Freeze();
                                break;

                            case TargetImage.SmallIcon:
                            case TargetImage.LargeIcon:
                            default:
                                bmpSrc = bmp;
                                break;
                            }

                            results.Loaded = true;
                            results.Image  = bmpSrc;
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }
                return(results);
            });

            task.Start();
            return(task);
        }
        private void LoadImage_PostExecute(LoadImageResults args)
        {
            var errInvalidSize = MainResources.Error_InvalidImageSize;
            var errValidSize = MainResources.Error_InvalidImageSize_AllowedSizes;
            if (args.Loaded)
            {
                var bmp = args.Image;
                var bmpW = bmp.PixelWidth;
                var bmpH = bmp.PixelHeight;
                var target = args.Target;

                var validSizes = _validImageSizes[target];
                try
                {
                    var targetSize = validSizes.First(pair => pair.X == bmpW && pair.Y == bmpH);
                    switch (target)
                    {
                        case TargetImage.Top:
                            ViewModel.Textures.Top.EncodeTexture(args.Image, targetSize.Format);
                            break;
                        case TargetImage.Bottom:
                            ViewModel.Textures.Bottom.EncodeTexture(args.Image, targetSize.Format);
                            break;
                        case TargetImage.FileLarge:
                            ViewModel.Textures.FileLarge.EncodeTexture(args.Image, targetSize.Format);
                            break;
                        case TargetImage.FileSmall:
                            ViewModel.Textures.FileSmall.EncodeTexture(args.Image, targetSize.Format);
                            break;
                        case TargetImage.FolderOpen:
                            ViewModel.Textures.FolderOpen.EncodeTexture(args.Image, targetSize.Format);
                            break;
                        case TargetImage.FolderClosed:
                            ViewModel.Textures.FolderClosed.EncodeTexture(args.Image, targetSize.Format);
                            break;
                        case TargetImage.TopAlt:
                            ViewModel.Textures.TopAlt.EncodeTexture(args.Image, targetSize.Format);
                            break;
                        default:
                            throw new ArgumentOutOfRangeException();
                    }
                }
                catch (InvalidOperationException)
                {
                    var sb = new StringBuilder();
                    sb.AppendFormat("{2}: {0}x{1}\n", bmpW, bmpH, errInvalidSize);
                    sb.AppendFormat("{0}:\n", errValidSize);
                    foreach (var pair in validSizes)
                        sb.AppendFormat("\t- {0}x{1}\n", pair.X, pair.Y);

                    MessageBox.Show(sb.ToString(), Title, MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
            IsBusy = false;
        }
        private Task<LoadImageResults> LoadImage_Execute(TargetImage targetImage)
        {
            var busyPickingFile = MainResources.Busy_PickingFile;
            var busyOpeningImage = MainResources.Busy_OpeningImage;
            var task = new Task<LoadImageResults>(() =>
            {
                BusyText = busyPickingFile;
                var opfl = new OpenFileDialog
                {
                    Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp",
                    Multiselect = false
                };
                var dlg = opfl.ShowDialog();
                LoadImageResults results = new LoadImageResults
                {
                    Loaded = false,
                    Target = targetImage
                };
                if (!dlg.HasValue || dlg.Value)
                {
                    BusyText = busyOpeningImage;
                    try
                    {
                        using (var fs = File.OpenRead(opfl.FileName))
                        {
                            BitmapImage bmp = new BitmapImage();
                            bmp.BeginInit();
                            bmp.StreamSource = fs;
                            bmp.CacheOption = BitmapCacheOption.OnLoad;
                            bmp.EndInit();
                            bmp.Freeze();

                            results.Loaded = true;
                            results.Image = bmp;
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }
                return results;
            });
            task.Start();
            return task;
        }
        private Task<LoadImageResults> LoadImage_Execute(TargetImage targetImage)
        {
            var busyPickingFile = MainResources.Busy_PickingFile;
            var busyOpeningImage = MainResources.Busy_OpeningImage;
            var task = new Task<LoadImageResults>(() =>
            {
                BusyText = busyPickingFile;
                var opfl = new OpenFileDialog
                {
                    Filter = "Image Files|*.jpg;*.jpeg;*.png;*.bmp",
                    Multiselect = false
                };
                var dlg = opfl.ShowDialog();
                LoadImageResults results = new LoadImageResults
                {
                    Loaded = false,
                    Target = targetImage
                };
                if (!dlg.HasValue || dlg.Value)
                {
                    BusyText = busyOpeningImage;
                    try
                    {
                        using (var fs = File.OpenRead(opfl.FileName))
                        {
                            BitmapImage bmp = new BitmapImage();
                            bmp.BeginInit();
                            bmp.StreamSource = fs;
                            bmp.CacheOption = BitmapCacheOption.OnLoad;
                            bmp.EndInit();
                            bmp.Freeze();

                            BitmapSource bmpSrc;

                            switch (targetImage)
                            {
                                case TargetImage.Bottom:
                                case TargetImage.Top:
                                case TargetImage.FileLarge:
                                case TargetImage.FileSmall:
                                case TargetImage.FolderOpen:
                                case TargetImage.FolderClosed:
                                case TargetImage.TopAlt:
                                    bmpSrc = bmp.CreateResizedNextPot();
                                    bmpSrc.Freeze();
                                    break;
                                case TargetImage.SmallIcon:
                                case TargetImage.LargeIcon:
                                default:
                                    bmpSrc = bmp;
                                    break;
                            }

                            results.Loaded = true;
                            results.Image = bmpSrc;
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }
                return results;
            });
            task.Start();
            return task;
        }