forked from mirrors/linphone-iphone
Continue chat stuff Fix viewWillAppear without viewDidLoad called with UICompositeController
133 lines
No EOL
3.7 KiB
Objective-C
Executable file
133 lines
No EOL
3.7 KiB
Objective-C
Executable file
//
|
|
// TUNinePatchCache.m
|
|
// NinePatch
|
|
//
|
|
// Copyright 2010 Tortuga 22, Inc. All rights reserved.
|
|
//
|
|
|
|
#import "TUNinePatchCache.h"
|
|
#import "TUCachingNinePatch.h"
|
|
#import "TUNinePatch.h"
|
|
|
|
@interface TUNinePatchCache ()
|
|
|
|
@property(nonatomic, retain, readwrite) NSMutableDictionary *ninePatchCache;
|
|
|
|
@end
|
|
|
|
|
|
@implementation TUNinePatchCache
|
|
|
|
#pragma mark Synthesized Properties
|
|
@synthesize ninePatchCache = _ninePatchCache;
|
|
|
|
#pragma mark Init + Dealloc
|
|
-(id)init {
|
|
if (self = [super init]) {
|
|
self.ninePatchCache = [NSMutableDictionary dictionary];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
#pragma mark -
|
|
+(id)shared {
|
|
static TUNinePatchCache *shared;
|
|
if (!shared) {
|
|
shared = [[self alloc] init];
|
|
}
|
|
return shared;
|
|
}
|
|
|
|
#pragma mark -
|
|
-(void)dealloc {
|
|
self.ninePatchCache = nil;
|
|
[super dealloc];
|
|
}
|
|
|
|
#pragma mark Getting Ninepatches Directly
|
|
// Getting Ninepatches Directly
|
|
-(id < TUNinePatch >)ninePatchNamed:(NSString *)ninePatchName {
|
|
TUCachingNinePatch *cachingNinePatch = [self cachingNinePatchNamed:ninePatchName];
|
|
NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch);
|
|
return (!cachingNinePatch)?(nil):([cachingNinePatch ninePatch]);
|
|
}
|
|
|
|
|
|
-(TUCachingNinePatch *)cachingNinePatchNamed:(NSString *)ninePatchName {
|
|
TUCachingNinePatch *cachingNinePatch = [self cachedCachingNinePatchNamed:ninePatchName];
|
|
NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch);
|
|
if (!cachingNinePatch) {
|
|
cachingNinePatch = [self constructCachingNinePatchNamed:ninePatchName];
|
|
NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch);
|
|
if (cachingNinePatch) {
|
|
[self cacheCachingNinePatch:cachingNinePatch
|
|
named:ninePatchName];
|
|
}
|
|
}
|
|
return cachingNinePatch;
|
|
}
|
|
|
|
-(void)cacheCachingNinePatch:(TUCachingNinePatch *)cachingNinePatch named:(NSString *)ninePatchName {
|
|
NPAssertPropertyNonNil(ninePatchCache);
|
|
if (cachingNinePatch && ninePatchName) {
|
|
[self.ninePatchCache setObject:cachingNinePatch
|
|
forKey:ninePatchName];
|
|
}
|
|
}
|
|
|
|
-(TUCachingNinePatch *)cachedCachingNinePatchNamed:(NSString *)ninePatchName {
|
|
return (!ninePatchName)?(nil):([self.ninePatchCache objectForKey:ninePatchName]);
|
|
}
|
|
|
|
-(TUCachingNinePatch *)constructCachingNinePatchNamed:(NSString *)ninePatchName {
|
|
return (!ninePatchName)?(nil):([TUCachingNinePatch ninePatchCacheWithNinePatchNamed:ninePatchName]);
|
|
}
|
|
|
|
#pragma mark Getting Images Directly
|
|
-(UIImage *)imageOfSize:(CGSize)size forNinePatchNamed:(NSString *)ninePatchName {
|
|
NPParameterAssertNotNilIsKindOfClass(ninePatchName,NSString);
|
|
UIImage *image = nil;
|
|
TUCachingNinePatch *cachingNinePatch = [self cachingNinePatchNamed:ninePatchName];
|
|
if (cachingNinePatch) {
|
|
image = [cachingNinePatch imageOfSize:size];
|
|
}
|
|
return image;
|
|
}
|
|
|
|
#pragma mark Getting Ninepatches - Convenience
|
|
+(TUCachingNinePatch *)cachingNinePatchNamed:(NSString *)ninePatchName {
|
|
return [[self shared] ninePatchNamed:ninePatchName];
|
|
}
|
|
|
|
+(id < TUNinePatch >)ninePatchNamed:(NSString *)ninePatchName {
|
|
TUCachingNinePatch *cachingNinePatch = [[self shared] cachingNinePatchNamed:ninePatchName];
|
|
NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch);
|
|
return (!cachingNinePatch)?(nil):([cachingNinePatch ninePatch]);
|
|
}
|
|
|
|
#pragma mark Getting Images - Convenience
|
|
+(UIImage *)imageOfSize:(CGSize)size forNinePatchNamed:(NSString *)ninePatchName {
|
|
return [[self shared] imageOfSize:size
|
|
forNinePatchNamed:ninePatchName];
|
|
}
|
|
|
|
#pragma mark Cache Management - Direct
|
|
-(void)flushCache {
|
|
[self.ninePatchCache removeAllObjects];
|
|
}
|
|
-(void)flushCacheForNinePatchNamed:(NSString *)name {
|
|
if (name) {
|
|
[self.ninePatchCache removeObjectForKey:name];
|
|
}
|
|
}
|
|
|
|
#pragma mark Cache Management - Convenience
|
|
+(void)flushCache {
|
|
[[self shared] flushCache];
|
|
}
|
|
|
|
+(void)flushCacheForNinePatchNamed:(NSString *)name {
|
|
[[self shared] flushCacheForNinePatchNamed:name];
|
|
}
|
|
|
|
@end |