12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- #import <UIKit/UIKit.h>
- #import <React/RCTBridge.h>
- #import <React/RCTResizeMode.h>
- typedef void (^RCTImageLoaderProgressBlock)(int64_t progress, int64_t total);
- typedef void (^RCTImageLoaderPartialLoadBlock)(UIImage *image);
- typedef void (^RCTImageLoaderCompletionBlock)(NSError *error, UIImage *image);
- typedef dispatch_block_t RCTImageLoaderCancellationBlock;
- /**
- * Provides the interface needed to register an image loader. Image data
- * loaders are also bridge modules, so should be registered using
- * RCT_EXPORT_MODULE().
- */
- @protocol RCTImageURLLoader <RCTBridgeModule>
- /**
- * Indicates whether this data loader is capable of processing the specified
- * request URL. Typically the handler would examine the scheme/protocol of the
- * URL to determine this.
- */
- - (BOOL)canLoadImageURL:(NSURL *)requestURL;
- /**
- * Send a network request to load the request URL. The method should call the
- * progressHandler (if applicable) and the completionHandler when the request
- * has finished. The method should also return a cancellation block, if
- * applicable.
- */
- - (nullable RCTImageLoaderCancellationBlock)loadImageForURL:(NSURL *)imageURL
- size:(CGSize)size
- scale:(CGFloat)scale
- resizeMode:(RCTResizeMode)resizeMode
- progressHandler:(RCTImageLoaderProgressBlock)progressHandler
- partialLoadHandler:(RCTImageLoaderPartialLoadBlock)partialLoadHandler
- completionHandler:(RCTImageLoaderCompletionBlock)completionHandler;
- @optional
- /**
- * If more than one RCTImageURLLoader responds YES to `-canLoadImageURL:`
- * then `loaderPriority` is used to determine which one to use. The loader
- * with the highest priority will be selected. Default priority is zero. If
- * two or more valid loaders have the same priority, the selection order is
- * undefined.
- */
- - (float)loaderPriority;
- /**
- * If the loader must be called on the serial url cache queue, and whether the completion
- * block should be dispatched off the main thread. If this is NO, the loader will be
- * called from the main queue. Defaults to YES.
- *
- * Use with care: disabling scheduling will reduce RCTImageLoader's ability to throttle
- * network requests.
- */
- - (BOOL)requiresScheduling;
- /**
- * If images loaded by the loader should be cached in the decoded image cache.
- * Defaults to YES.
- */
- - (BOOL)shouldCacheLoadedImages;
- @end
|