public EditMediaPopup(StorageMedia media, ImageCropperMask mask = ImageCropperMask.Rectangle) { InitializeComponent(); Canvas.Strokes = media.EditState.Strokes; Cropper.SetMask(mask); Cropper.SetProportions(mask == ImageCropperMask.Ellipse ? BitmapProportions.Square : media.EditState.Proportions); if (mask == ImageCropperMask.Ellipse) { Proportions.IsChecked = true; Proportions.IsEnabled = false; } _file = media.File; _media = media; Loaded += async(s, args) => { if (mask == ImageCropperMask.Ellipse) { await Cropper.SetSourceAsync(media.File, proportions : BitmapProportions.Square); } else { await Cropper.SetSourceAsync(media.File, media.EditState.Rotation, media.EditState.Flip, media.EditState.Proportions, media.EditState.Rectangle); } }; Unloaded += (s, args) => { Media.Source = null; }; if (mask == ImageCropperMask.Ellipse && string.Equals(media.File.FileType, ".mp4", StringComparison.OrdinalIgnoreCase)) { FindName(nameof(TrimToolbar)); TrimToolbar.Visibility = Visibility.Visible; BasicToolbar.Visibility = Visibility.Collapsed; InitializeVideo(media.File); } }
public EditMediaPopup(StorageFile file, BitmapProportions proportions = BitmapProportions.Custom, ImageCropperMask mask = ImageCropperMask.Rectangle) { InitializeComponent(); Cropper.SetMask(mask); Cropper.SetProportions(proportions); if (proportions != BitmapProportions.Custom) { Proportions.IsChecked = true; Proportions.IsEnabled = false; } _file = file; Loaded += async(s, args) => { await Cropper.SetSourceAsync(file, proportions : proportions); }; }
public EditMediaPopup(StorageMedia media) { InitializeComponent(); Canvas.Strokes = media.EditState.Strokes; Cropper.SetMask(ImageCropperMask.Rectangle); Cropper.SetProportions(media.EditState.Proportions); if (media.EditState.Proportions != BitmapProportions.Custom) { Proportions.IsChecked = true; Proportions.IsEnabled = true; } _file = media.File; _media = media; Loaded += async(s, args) => { await Cropper.SetSourceAsync(media.File, media.EditState.Rotation, media.EditState.Flip, media.EditState.Proportions, media.EditState.Rectangle); }; }
public EditMediaPopup(StorageMedia media, ImageCropperMask mask = ImageCropperMask.Rectangle, bool ttl = false) { InitializeComponent(); Canvas.Strokes = media.EditState.Strokes; Cropper.SetMask(mask); if (mask == ImageCropperMask.Ellipse) { _hasMessageContext = false; media.EditState.Proportions = BitmapProportions.Square; } Cropper.SetProportions(media.EditState.Proportions); _file = media.File; _media = media; _originalMediaEditState = CopyBitmapEditState(media.EditState); Loaded += async(s, args) => { await Cropper.SetSourceAsync(media.File, media.EditState.Rotation, media.EditState.Flip, media.EditState.Proportions, media.EditState.Rectangle); if (!_hasMessageContext) //TODO: Fix mask bug, remove hack (#2017 references mask position) { await Cropper.SetSourceAsync(_media.File, _media.EditState.Rotation, _media.EditState.Flip, _media.EditState.Proportions, _media.EditState.Rectangle); Cropper.SetProportions(_media.EditState.Proportions); } Cropper.IsCropEnabled = !_hasMessageContext && _media.IsVideo; }; Unloaded += (s, args) => { Media.Source = null; }; #region Init UI if (mask == ImageCropperMask.Ellipse && string.Equals(media.File.FileType, ".mp4", StringComparison.OrdinalIgnoreCase)) { FindName(nameof(TrimToolbar)); TrimToolbar.Visibility = Visibility.Visible; BasicToolbar.Visibility = Visibility.Collapsed; SeparatorLeft.Visibility = Visibility.Collapsed; SeparatorRight.Visibility = Visibility.Collapsed; InitializeVideo(media.File); } if (_media is StorageVideo video) { _originalVideoCompression = video.Compression; _originalVideoIsMuted = video.IsMuted; Mute.IsChecked = video.IsMuted; Mute.Visibility = Visibility.Visible; Compress.IsChecked = video.Compression != video.MaxCompression; Compress.Visibility = video.CanCompress ? Visibility.Visible : Visibility.Collapsed; if (video.CanCompress) { Compress.Glyph = new CompressionToGlyphConverter().Convert(video.Compression, typeof(string), null, video.MaxCompression.ToString()).ToString(); Compress.CheckedGlyph = Compress.Glyph; Compress.IsChecked = video.Compression != video.MaxCompression; } } else { Mute.Visibility = Visibility.Collapsed; Compress.Visibility = Visibility.Collapsed; } Crop.Visibility = _media is StoragePhoto ? Visibility.Visible : Visibility.Collapsed; Draw.Visibility = Crop.Visibility; Ttl.Visibility = ttl ? Visibility.Visible : Visibility.Collapsed; Ttl.IsChecked = _media.Ttl > 0; if (_media.EditState is BitmapEditState editSate) { Crop.IsChecked = editSate.Proportions != BitmapProportions.Custom || editSate.Flip != BitmapFlip.None || editSate.Rotation != BitmapRotation.None || (!editSate.Rectangle.IsEmpty && (editSate.Rectangle.X > 0 || editSate.Rectangle.Y > 0 || Math.Abs(editSate.Rectangle.Width - 1) > 0.1f || Math.Abs(editSate.Rectangle.Height - 1) > 0.1f)); Draw.IsChecked = editSate.Strokes != null && editSate.Strokes.Count > 0; } else { Crop.IsChecked = false; Draw.IsChecked = false; } if (_hasMessageContext) { if (!string.IsNullOrWhiteSpace(media.Caption?.Text)) { CaptionInput.SetText(media.Caption); } } else { CaptionInput.Visibility = Visibility.Collapsed; } #endregion }
public MainPage() { this.InitializeComponent(); Cropper.SetMask(ImageCropperMask.Rectangle); Loaded += MainPage_Loaded; }