override fun rotateHue()

in RenderScriptMigrationSample/app/src/main/java/com/android/example/rsmigration/RenderEffectImageProcessor.kt [43:71]


    override fun rotateHue(radian: Float, outputIndex: Int): Bitmap {
        params?.let {
            val colorMatrix = if (radian == 0f) {
                ColorMatrix()
            } else {
                val cos = cos(radian.toDouble())
                val sin = sin(radian.toDouble())
                ColorMatrix(floatArrayOf(
                    (.299 + .701 * cos + .168 * sin).toFloat(), //0
                    (.587 - .587 * cos + .330 * sin).toFloat(), //1
                    (.114 - .114 * cos - .497 * sin).toFloat(), //2
                    0f, 0f,                                     //3,4
                    (.299 - .299 * cos - .328 * sin).toFloat(), //5
                    (.587 + .413 * cos + .035 * sin).toFloat(), //6
                    (.114 - .114 * cos + .292 * sin).toFloat(), //7
                    0f, 0f,                                     //8,9
                    (.299 - .300 * cos + 1.25 * sin).toFloat(), //10
                    (.587 - .588 * cos - 1.05 * sin).toFloat(), //11
                    (.114 + .886 * cos - .203 * sin).toFloat(), //12
                    0f, 0f, 0f, 0f, 0f,                         //13,14,15,16,17
                    1f, 0f                                      //18,19
                ))
            }
            val colorFilterEffect =
                RenderEffect.createColorFilterEffect(ColorMatrixColorFilter(colorMatrix))
            return applyEffect(it, colorFilterEffect, outputIndex)
        }
        throw RuntimeException("Not configured!")
    }