package com.common.commonlib.image.loader

import android.content.Context
import android.widget.ImageView
import com.common.commonlib.image.config.GlideBaseConfig
import com.common.commonlib.image.config.GlideHolderConfig

/**
 * 图片加载器接口
 *
 * @author wangym
 * @since 2021/7/28
 */
interface ILoader {

    /**
     * 初始化
     * @param context 上下文
     * @param memoryCategory 缓存类型
     */
    fun init(context: Context, memoryCategory: GlideBaseConfig.MemoryType)

    /**
     * 加载图片
     * @param context 上下文
     * @param url 图片链接
     * @param view 图片控件
     */
    fun load(context: Context, url: String?, view: ImageView)

    /**
     * 加载圆角图片
     * @param context 上下文
     * @param url 图片链接
     * @param view 图片控件
     * @param radius 圆角半径
     */
    fun loadRound(context: Context, url: String?, view: ImageView, radius: Float)

    /**
     * 加载图片
     * @param context 上下文
     * @param url 图片链接
     * @param view 图片控件
     * @param loadingMode 加载模式
     */
    fun loadWithMode(
        context: Context,
        url: String?,
        view: ImageView,
        loadingMode: GlideBaseConfig.LoadMode
    )

    /**
     * 加载图片
     * @param context 上下文
     * @param url 图片链接
     * @param view 图片控件
     * @param placeGlideHolder 占位图
     */
    fun loadWithPlaceHolder(
        context: Context,
        url: String,
        view: ImageView,
        placeGlideHolder: GlideHolderConfig
    )

    /**
     * 清理内存缓存
     * @param context 上下文
     */
    fun clearMemoryCache(context: Context)

    /**
     * 清理磁盘缓存
     * @param context 上下文
     */
    fun clearDiskCache(context: Context)

    /**
     * 清理缓存
     * @param context 上下文
     */
    fun clearAllCache(context: Context)
}