/*
 * This file is part of the SDWebImage package.
 * (c) Olivier Poitrey <rs@dailymotion.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

#import "PAG_SDWebImageCompat.h"

#if SD_UIKIT || SD_MAC

/**
 A protocol to custom the indicator during the image loading.
 All of these methods are called from main queue.
 */
@protocol SDWebImageIndicator <NSObject>

@required
/**
 The view associate to the indicator.

 @return The indicator view
 */
@property (nonatomic, strong, readonly, nonnull) UIView *indicatorView;

/**
 Start the animating for indicator.
 */
- (void)startAnimatingIndicator;

/**
 Stop the animating for indicator.
 */
- (void)stopAnimatingIndicator;

@optional
/**
 Update the loading progress (0-1.0) for indicator. Optional
 
 @param progress The progress, value between 0 and 1.0
 */
- (void)updateIndicatorProgress:(double)progress;

@end

#pragma mark - Activity Indicator

/**
 Activity indicator class.
 for UIKit(macOS), it use a `UIActivityIndicatorView`.
 for AppKit(macOS), it use a `NSProgressIndicator` with the spinning style.
 */
//@interface PAG_SDWebImageActivityIndicator : NSObject <SDWebImageIndicator>
//
//#if SD_UIKIT
//@property (nonatomic, strong, readonly, nonnull) UIActivityIndicatorView *indicatorView;
//#else
//@property (nonatomic, strong, readonly, nonnull) NSProgressIndicator *indicatorView;
//#endif
//
//@end
//
///**
// Convenience way to use activity indicator.
// */
//@interface PAG_SDWebImageActivityIndicator (Conveniences)
//
///// These indicator use the fixed color without dark mode support
///// gray-style activity indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageActivityIndicator *grayIndicator;
///// large gray-style activity indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageActivityIndicator *grayLargeIndicator;
///// white-style activity indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageActivityIndicator *whiteIndicator;
///// large white-style activity indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageActivityIndicator *whiteLargeIndicator;
///// These indicator use the system style, supports dark mode if available (iOS 13+/macOS 10.14+)
///// large activity indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageActivityIndicator *largeIndicator;
///// medium activity indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageActivityIndicator *mediumIndicator;
//
//@end

#pragma mark - Progress Indicator

/**
 Progress indicator class.
 for UIKit(macOS), it use a `UIProgressView`.
 for AppKit(macOS), it use a `NSProgressIndicator` with the bar style.
 */
//@interface PAG_SDWebImageProgressIndicator : NSObject <SDWebImageIndicator>
//
//#if SD_UIKIT
//@property (nonatomic, strong, readonly, nonnull) UIProgressView *indicatorView;
//#else
//@property (nonatomic, strong, readonly, nonnull) NSProgressIndicator *indicatorView;
//#endif
//
//@end

/**
 Convenience way to create progress indicator. Remember to specify the indicator width or use layout constraint if need.
// */
//@interface PAG_SDWebImageProgressIndicator (Conveniences)
//
///// default-style progress indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageProgressIndicator *defaultIndicator;
///// bar-style progress indicator
//@property (nonatomic, class, nonnull, readonly) PAG_SDWebImageProgressIndicator *barIndicator API_UNAVAILABLE(macos, tvos);
//
//@end

#endif
