static void Color_RGBToHSV(JNIEnv* env, jobject, int red, int green, int blue, jfloatArray hsvArray) { SkScalar hsv[3]; SkRGBToHSV(red, green, blue, hsv); AutoJavaFloatArray autoHSV(env, hsvArray, 3); float* values = autoHSV.ptr(); for (int i = 0; i < 3; i++) { values[i] = SkScalarToFloat(hsv[i]); } }
void draw(SkCanvas* canvas) { canvas->drawBitmap(source, 0, 0); SkPaint bgPaint; bgPaint.setColor(0xafffffff); canvas->drawRect({20, 30, 110, 90}, bgPaint); SkScalar hsv[3]; SkColor c = source.getColor(226, 128); SkRGBToHSV(SkColorGetR(c), SkColorGetG(c), SkColorGetB(c), hsv); canvas->drawString(("h: " + std::to_string(hsv[0]).substr(0, 6)).c_str(), 27, 45, SkPaint()); canvas->drawString(("s: " + std::to_string(hsv[1]).substr(0, 6)).c_str(), 27, 65, SkPaint()); canvas->drawString(("v: " + std::to_string(hsv[2]).substr(0, 6)).c_str(), 27, 85, SkPaint()); canvas->drawLine(110, 90, 226, 128, SkPaint()); }