static void Bitmap_getPixels(JNIEnv* env, jobject, jlong bitmapHandle, jintArray pixelArray, jint offset, jint stride, jint x, jint y, jint width, jint height) { const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle); SkAutoLockPixels alp(*bitmap); ToColorProc proc = ChooseToColorProc(*bitmap); if (NULL == proc) { return; } const void* src = bitmap->getAddr(x, y); if (NULL == src) { return; } SkColorTable* ctable = bitmap->getColorTable(); jint* dst = env->GetIntArrayElements(pixelArray, NULL); SkColor* d = (SkColor*)dst + offset; while (--height >= 0) { proc(d, src, width, ctable); d += stride; src = (void*)((const char*)src + bitmap->rowBytes()); } env->ReleaseIntArrayElements(pixelArray, dst, 0); }
static int Bitmap_getPixel(JNIEnv* env, jobject, const SkBitmap* bitmap, int x, int y) { SkAutoLockPixels alp(*bitmap); ToColorProc proc = ChooseToColorProc(*bitmap); if (NULL == proc) { return 0; } const void* src = bitmap->getAddr(x, y); if (NULL == src) { return 0; } SkColor dst[1]; proc(dst, src, 1, bitmap->getColorTable()); return dst[0]; }
static jint Bitmap_getPixel(JNIEnv* env, jobject, jlong bitmapHandle, jint x, jint y) { const SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle); SkAutoLockPixels alp(*bitmap); ToColorProc proc = ChooseToColorProc(*bitmap); if (NULL == proc) { return 0; } const void* src = bitmap->getAddr(x, y); if (NULL == src) { return 0; } SkColor dst[1]; proc(dst, src, 1, bitmap->getColorTable()); return static_cast<jint>(dst[0]); }