Commit d71564a1 authored by Felix Paul Kühne's avatar Felix Paul Kühne
Browse files

thumbnail cache: add a way to fetch stuff at random sizes and if the caller...

thumbnail cache: add a way to fetch stuff at random sizes and if the caller believes that it should replace the cache copy, it can ask the cache to do so
parent fbd27f9e
......@@ -2,7 +2,7 @@
* VLCThumbnailsCache.h
* VLC for iOS
*****************************************************************************
* Copyright (c) 2013-2014 VideoLAN. All rights reserved.
* Copyright (c) 2013-2015 VideoLAN. All rights reserved.
* $Id$
*
* Authors: Gleb Pinigin <gpinigin # gmail.com>
......@@ -18,4 +18,6 @@
+ (UIImage *)thumbnailForMediaItemWithTitle:(NSString *)title Artist:(NSString*)artist andAlbumName:(NSString*)albumname;
+ (UIImage *)thumbnailForManagedObject:(NSManagedObject *)object toFitRect:(CGRect)rect shouldReplaceCache:(BOOL)replaceCache;
@end
......@@ -16,6 +16,7 @@
#import "VLCThumbnailsCache.h"
#import <CommonCrypto/CommonDigest.h>
#import "UIImage+Blur.h"
#import "UIImage+Scaling.h"
#import <WatchKit/WatchKit.h>
@interface VLCThumbnailsCache() {
......@@ -142,6 +143,28 @@
return thumbnail;
}
+ (UIImage *)thumbnailForManagedObject:(NSManagedObject *)object toFitRect:(CGRect)rect shouldReplaceCache:(BOOL)replaceCache
{
UIImage *rawThumbnail = [self thumbnailForManagedObject:object];
CGSize rawSize = rawThumbnail.size;
/* scaling is potentially expensive, so we should avoid re-doing it for the same size over and over again */
if (rawSize.width <= rect.size.width && rawSize.height <= rect.size.height)
return rawThumbnail;
UIImage *scaledImage = [UIImage scaleImage:rawThumbnail toFitRect:rect];
if (replaceCache)
[[VLCThumbnailsCache sharedThumbnailCache] _setThumbnail:scaledImage forObjectId:object.objectID];
return scaledImage;
}
- (void)_setThumbnail:(UIImage *)image forObjectId:(NSManagedObjectID *)objID
{
[_thumbnailCache setObject:image forKey:objID];
}
- (UIImage *)thumbnailForMediaFile:(MLFile *)mediaFile
{
if (mediaFile == nil || mediaFile.objectID == nil)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment