private static async void MediaIdPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) { var _this = (CachedImage)dependencyObject; var _value = (string)dependencyPropertyChangedEventArgs.NewValue; if (PictureCache.HasPicture(_value)) { var entry = PictureCache.GetPicture(_value); if (_this.RenderSize.Width > ThumbnailSize || _this.RenderSize.Height > ThumbnailSize) { await entry.GetFullSizeAsync(); _this.Source = entry.XamlFullSizeBitmap; } else { await entry.GetThumbnailAsync(); _this.Source = entry.XamlThumbnailBitmap; } } else { // TODO: write to log when I figure this shit out } }
private async void GetCachedBitmapAsync() { isWaiting = true; WaitCompleted?.Invoke(this, EventArgs.Empty); var s = mediaId.ToString(); if (PictureCache.HasPicture(s)) { var entry = PictureCache.GetPicture(s); if (Thumbnail && entry.OriginalPicture.IsThumbnailAvailable) { await entry.GetThumbnailAsync(); Image = entry.XamlThumbnailBitmap; } else { await entry.GetFullSizeAsync(); Image = entry.XamlFullSizeBitmap; } } else { Image = new BitmapImage(ResourceUriHelper.BuildUri("DefaultArtwork.png")); Log.Warning(nameof(CacheImageSource), $"No picture cache entry for {s}"); } isWaiting = false; WaitCompleted?.Invoke(this, EventArgs.Empty); }
public static void Write(EnqueuedTrack completedTrack, AlbumArtworkSaveFormat saveFormat, string path) { // Get album artwork from cache PictureCacheEntry albumArtwork = null; if (PictureCache.HasPicture(completedTrack.Smid.ToString())) { albumArtwork = PictureCache.GetPicture(completedTrack.Smid.ToString()); } // Write track tags var track = completedTrack.OriginalTrack; using (var file = File.Create(new File.LocalFileAbstraction(path), completedTrack.TrackFile.FileType.MimeType, ReadStyle.Average)) { file.Tag.Title = track.Title; file.Tag.Performers = new[] { track.Artist.Name }; if (track.Album.Artist != null) { file.Tag.AlbumArtists = new[] { track.Album.Artist.Name }; } file.Tag.Genres = new[] { track.Genre }; file.Tag.Album = track.Album.Title; file.Tag.Track = (uint)track.TrackNumber; file.Tag.TrackCount = (uint)(track.Album.GetNumberOfTracksOnDisc(track.DiscNumber) ?? 0); file.Tag.Disc = (uint)track.DiscNumber; file.Tag.DiscCount = (uint)(track.Album.GetTotalDiscs() ?? 0); file.Tag.Year = (uint)track.Year; file.Tag.Copyright = CopyrightText; file.Tag.Comment = CopyrightText; if (albumArtwork != null) { file.Tag.Pictures = new IPicture[] { new TagLib.Picture(new ByteVector(albumArtwork.FullSize)) }; } file.Save(); } // Write album artwork to file if requested string parentDirectory; if (saveFormat != AlbumArtworkSaveFormat.DontSave && (parentDirectory = Path.GetDirectoryName(path)) != null) { WriteArtworkFile(parentDirectory, saveFormat, track, albumArtwork); } }
private static async void MediaIdPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) { var _this = (CachedImage)dependencyObject; var _value = (string)dependencyPropertyChangedEventArgs.NewValue; if (PictureCache.HasPicture(_value)) { var entry = PictureCache.GetPicture(_value); if (_this.RenderSize.Width > ThumbnailSize || _this.RenderSize.Height > ThumbnailSize) { await entry.GetFullSizeAsync(); _this.MainImage.Source = entry.XamlFullSizeBitmap; } else { if (entry.OriginalPicture.IsThumbnailAvailable) { await entry.GetThumbnailAsync(); _this.MainImage.Source = entry.XamlThumbnailBitmap; } else { await entry.GetFullSizeAsync(); _this.MainImage.Source = entry.XamlFullSizeBitmap; } } } else { _this.MainImage.Source = new BitmapImage(ResourceUriHelper.BuildUri("DefaultArtwork.png")); Log.Warning(nameof(CachedImage), $"No picture cache entry for {_value}"); } }