コード例 #1
0
ファイル: CachedImage.xaml.cs プロジェクト: tocy777/Athame
        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
            }
        }
コード例 #2
0
ファイル: CacheImageSource.cs プロジェクト: viatour/Athame
        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);
        }
コード例 #3
0
ファイル: TrackTagger.cs プロジェクト: viatour/Athame
        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);
            }
        }
コード例 #4
0
ファイル: CachedImage.xaml.cs プロジェクト: skmezanul/Athame
        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}");
            }
        }