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; }
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; }
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; }