2015-03-23 22:07:33 +00:00
|
|
|
/**
|
|
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD-style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
*/
|
2015-03-11 02:11:28 +00:00
|
|
|
|
2015-07-14 11:06:17 +00:00
|
|
|
#import <UIKit/UIKit.h>
|
2015-03-11 02:11:28 +00:00
|
|
|
|
2015-07-27 15:48:31 +00:00
|
|
|
#import "RCTBridge.h"
|
|
|
|
|
2015-03-11 02:11:28 +00:00
|
|
|
@class ALAssetsLibrary;
|
|
|
|
|
2015-07-27 20:46:59 +00:00
|
|
|
typedef void (^RCTImageLoaderProgressBlock)(int64_t progress, int64_t total);
|
2015-07-27 15:48:31 +00:00
|
|
|
typedef void (^RCTImageLoaderCompletionBlock)(NSError *error, id image /* UIImage or CAAnimation */);
|
2015-07-15 20:17:13 +00:00
|
|
|
typedef void (^RCTImageLoaderCancellationBlock)(void);
|
|
|
|
|
2015-07-27 15:48:31 +00:00
|
|
|
@interface RCTImageLoader : NSObject <RCTBridgeModule>
|
2015-05-11 20:08:39 +00:00
|
|
|
|
|
|
|
/**
|
2015-07-27 15:48:31 +00:00
|
|
|
* Loads the specified image at the highest available resolution.
|
|
|
|
* Can be called from any thread, will always call callback on main thread.
|
2015-05-11 20:08:39 +00:00
|
|
|
*/
|
2015-07-27 15:48:31 +00:00
|
|
|
- (RCTImageLoaderCancellationBlock)loadImageWithTag:(NSString *)imageTag
|
2015-07-15 20:17:13 +00:00
|
|
|
callback:(RCTImageLoaderCompletionBlock)callback;
|
2015-03-11 02:11:28 +00:00
|
|
|
|
2015-07-14 11:06:17 +00:00
|
|
|
/**
|
|
|
|
* As above, but includes target size, scale and resizeMode, which are used to
|
|
|
|
* select the optimal dimensions for the loaded image.
|
|
|
|
*/
|
2015-07-27 15:48:31 +00:00
|
|
|
- (RCTImageLoaderCancellationBlock)loadImageWithTag:(NSString *)imageTag
|
2015-07-15 20:17:13 +00:00
|
|
|
size:(CGSize)size
|
|
|
|
scale:(CGFloat)scale
|
|
|
|
resizeMode:(UIViewContentMode)resizeMode
|
2015-07-27 20:46:59 +00:00
|
|
|
progressBlock:(RCTImageLoaderProgressBlock)progressBlock
|
|
|
|
completionBlock:(RCTImageLoaderCompletionBlock)completionBlock;
|
2015-07-14 11:06:17 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Is the specified image tag an asset library image?
|
|
|
|
*/
|
|
|
|
+ (BOOL)isAssetLibraryImage:(NSString *)imageTag;
|
|
|
|
|
2015-07-15 20:17:13 +00:00
|
|
|
/**
|
|
|
|
* Is the specified image tag a remote image?
|
|
|
|
*/
|
|
|
|
+ (BOOL)isRemoteImage:(NSString *)imageTag;
|
|
|
|
|
2015-03-11 02:11:28 +00:00
|
|
|
@end
|
2015-07-27 15:48:31 +00:00
|
|
|
|
|
|
|
@interface RCTBridge (RCTImageLoader)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The shared image loader instance
|
|
|
|
*/
|
|
|
|
@property (nonatomic, readonly) RCTImageLoader *imageLoader;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The shared asset library instance.
|
|
|
|
*/
|
|
|
|
@property (nonatomic, readonly) ALAssetsLibrary *assetsLibrary;
|
|
|
|
|
|
|
|
@end
|