package com.ray650128.gstreamer_demo_app

import android.content.res.Resources

/**
 * Float Pixel to DP 擴充函數
 * 將 Float 型別的像素值換算成 DP
 * @author Raymond Yang
 */
val Float.dp: Float
    get() = android.util.TypedValue.applyDimension(
        android.util.TypedValue.COMPLEX_UNIT_DIP, this, Resources.getSystem().displayMetrics)

/**
 * Double Pixel to DP 擴充函數
 * 將 Double 型別的像素值換算成 DP
 * @author Raymond Yang
 */
val Double.dp: Float
    get() = android.util.TypedValue.applyDimension(
        android.util.TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), Resources.getSystem().displayMetrics)

/**
 * Int Pixel to DP 擴充函數
 * 將 Int 型別的像素值換算成 DP
 * @author Raymond Yang
 */
val Int.dp: Int
    get() = android.util.TypedValue.applyDimension(
        android.util.TypedValue.COMPLEX_UNIT_DIP, this.toFloat(), Resources.getSystem().displayMetrics).toInt()

/**
 * Float Pixel to SP 擴充函數
 * 將 Float 型別的像素值換算成 SP
 * @author Raymond Yang
 */
val Float.sp: Float
    get() = android.util.TypedValue.applyDimension(
        android.util.TypedValue.COMPLEX_UNIT_SP, this, Resources.getSystem().displayMetrics)

/**
 * Double Pixel to SP 擴充函數
 * 將 Double 型別的像素值換算成 SP
 * @author Raymond Yang
 */
val Double.sp: Float
    get() = android.util.TypedValue.applyDimension(
        android.util.TypedValue.COMPLEX_UNIT_SP, this.toFloat(), Resources.getSystem().displayMetrics)

/**
 * Int Pixel to SP 擴充函數
 * 將 Int 型別的像素值換算成 SP
 * @author Raymond Yang
 */
val Int.sp: Int
    get() = android.util.TypedValue.applyDimension(
        android.util.TypedValue.COMPLEX_UNIT_SP, this.toFloat(), Resources.getSystem().displayMetrics).toInt()