package com.xty.common.util

import android.graphics.Paint
import android.graphics.Typeface
import android.text.SpannableString
import android.text.Spanned
import android.text.style.AbsoluteSizeSpan
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.widget.TextView


object SpannableUtils {

    /**
     *  设置字体span
     *
     *  @param text 内容
     *  @param spanSize 字体大小
     *  @param fontColor 字体颜色
     *  @param styleSpan 字体样式
     *  @param index 下标位置， 一组必须要两个 第一个为startIndex 第二个为endIndex
     *
     */
    fun setStrSpan(
        text: String,
        spanSize: Int = -1,
        fontColor: Int = -1,
        styleSpan: Int = -1,
        vararg index: Int
    ): SpannableString {
        var span = SpannableString(text)

        for (i in index.indices step 2) {
            if (fontColor != -1){  //设置字体颜色
                span.setSpan(
                    ForegroundColorSpan(

                        fontColor
                    ), index[i], index[i + 1], Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
                )
            }
           if (spanSize != -1){
               //设置字体大小(绝对值,单位：像素),第二个参数boolean dip，如果为true，表示前面的字体大小单位为dip，否则为像素
               span.setSpan(
                   AbsoluteSizeSpan(spanSize, true),
                   index[i], index[i + 1], Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
               )
           }

            if (styleSpan != -1){
                //设置字体样式: NORMAL正常，BOLD粗体，ITALIC斜体，BOLD_ITALIC粗斜体
                span.setSpan(
                    StyleSpan(styleSpan),
                    index[i], index[i + 1], Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
                )
            }

        }

        return span
    }

    fun setSpan(time: Int,fontColor: Int = -1,): SpannableString {
        var statuSpan = SpannableString("${time}次")

        statuSpan.setSpan(
            ForegroundColorSpan(
                //设置字体颜色
                fontColor
            ), 0, statuSpan.length - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )
        //设置字体大小(绝对值,单位：像素),第二个参数boolean dip，如果为true，表示前面的字体大小单位为dip，否则为像素
        statuSpan.setSpan(
            AbsoluteSizeSpan(24, true),
            0, statuSpan.length - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )
        //设置字体样式: NORMAL正常，BOLD粗体，ITALIC斜体，BOLD_ITALIC粗斜体
        statuSpan.setSpan(
            StyleSpan(Typeface.BOLD),
            0, statuSpan.length - 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        );

        return statuSpan
    }

    fun setSpanMoney(num:Float): SpannableString{
        var statuSpan = SpannableString("¥ ${num}")

        //设置字体大小(绝对值,单位：像素),第二个参数boolean dip，如果为true，表示前面的字体大小单位为dip，否则为像素
        statuSpan.setSpan(
            AbsoluteSizeSpan(20, true),
            0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )
        //设置字体样式: NORMAL正常，BOLD粗体，ITALIC斜体，BOLD_ITALIC粗斜体
        statuSpan.setSpan(
            StyleSpan(Typeface.BOLD),
            0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )


        //设置字体大小(绝对值,单位：像素),第二个参数boolean dip，如果为true，表示前面的字体大小单位为dip，否则为像素
        statuSpan.setSpan(
            AbsoluteSizeSpan(30, true),
            1, statuSpan.length , Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )
        //设置字体样式: NORMAL正常，BOLD粗体，ITALIC斜体，BOLD_ITALIC粗斜体
        statuSpan.setSpan(
            StyleSpan(Typeface.BOLD),
            1, statuSpan.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )

        return statuSpan
    }

    fun setMoney(txtView: TextView, num:String){
        var statuSpan = SpannableString("¥ ${num}")
        txtView.text = statuSpan
        txtView.paint.flags = Paint.STRIKE_THRU_TEXT_FLAG
        txtView.paint.isAntiAlias = true
    }

    fun setMoney(startIndex:Int,endIndex:Int,fontColor: Int = -1,str:SpannableString): SpannableString {

        str.setSpan(
            ForegroundColorSpan(
                //设置字体颜色
                fontColor
            ), startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
        )
        //设置字体大小(绝对值,单位：像素),第二个参数boolean dip，如果为true，表示前面的字体大小单位为dip，否则为像素


        return str
    }


}