Loading cmds/screencap/screencap.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -52,13 +52,13 @@ static void usage(const char* pname) ); } static SkBitmap::Config flinger2skia(PixelFormat f) static SkColorType flinger2skia(PixelFormat f) { switch (f) { case PIXEL_FORMAT_RGB_565: return SkBitmap::kRGB_565_Config; return kRGB_565_SkColorType; default: return SkBitmap::kARGB_8888_Config; return kN32_SkColorType; } } Loading Loading @@ -174,9 +174,10 @@ int main(int argc, char** argv) if (base) { if (png) { const SkImageInfo info = SkImageInfo::Make(w, h, flinger2skia(f), kPremul_SkAlphaType); SkBitmap b; b.setConfig(flinger2skia(f), w, h, s*bytesPerPixel(f)); b.setPixels((void*)base); b.installPixels(info, const_cast<void*>(base), s*bytesPerPixel(f)); SkDynamicMemoryWStream stream; SkImageEncoder::EncodeStream(&stream, b, SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality); Loading core/jni/android/graphics/Bitmap.cpp +28 −26 Original line number Diff line number Diff line Loading @@ -258,16 +258,16 @@ static void ToColor_SI8_Opaque(SkColor dst[], const void* src, int width, // can return NULL static ToColorProc ChooseToColorProc(const SkBitmap& src, bool isPremultiplied) { switch (src.config()) { case SkBitmap::kARGB_8888_Config: switch (src.colorType()) { case kN32_SkColorType: if (src.isOpaque()) return ToColor_S32_Opaque; return isPremultiplied ? ToColor_S32_Alpha : ToColor_S32_Raw; case SkBitmap::kARGB_4444_Config: case kARGB_4444_SkColorType: if (src.isOpaque()) return ToColor_S4444_Opaque; return isPremultiplied ? ToColor_S4444_Alpha : ToColor_S4444_Raw; case SkBitmap::kRGB_565_Config: case kRGB_565_SkColorType: return ToColor_S565; case SkBitmap::kIndex8_Config: case kIndex_8_SkColorType: if (src.getColorTable() == NULL) { return NULL; } Loading @@ -291,7 +291,7 @@ static int getPremulBitmapCreateFlags(bool isMutable) { static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, jint offset, jint stride, jint width, jint height, jint configHandle, jboolean isMutable) { SkBitmap::Config config = static_cast<SkBitmap::Config>(configHandle); SkColorType colorType = SkBitmapConfigToColorType(static_cast<SkBitmap::Config>(configHandle)); if (NULL != jColors) { size_t n = env->GetArrayLength(jColors); if (n < SkAbs32(stride) * (size_t)height) { Loading @@ -301,12 +301,12 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, } // ARGB_4444 is a deprecated format, convert automatically to 8888 if (config == SkBitmap::kARGB_4444_Config) { config = SkBitmap::kARGB_8888_Config; if (colorType == kARGB_4444_SkColorType) { colorType = kN32_SkColorType; } SkBitmap bitmap; bitmap.setConfig(config, width, height); bitmap.setInfo(SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType)); jbyteArray buff = GraphicsJNI::allocateJavaPixelRef(env, &bitmap, NULL); if (NULL == buff) { Loading Loading @@ -516,27 +516,28 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { android::Parcel* p = android::parcelForJavaObject(env, parcel); const bool isMutable = p->readInt32() != 0; const SkBitmap::Config config = (SkBitmap::Config)p->readInt32(); const SkColorType colorType = (SkColorType)p->readInt32(); const SkAlphaType alphaType = (SkAlphaType)p->readInt32(); const int width = p->readInt32(); const int height = p->readInt32(); const int rowBytes = p->readInt32(); const int density = p->readInt32(); if (SkBitmap::kARGB_8888_Config != config && SkBitmap::kRGB_565_Config != config && SkBitmap::kARGB_4444_Config != config && SkBitmap::kIndex8_Config != config && SkBitmap::kA8_Config != config) { SkDebugf("Bitmap_createFromParcel unknown config: %d\n", config); if (kN32_SkColorType != colorType && kRGB_565_SkColorType != colorType && kARGB_4444_SkColorType != colorType && kIndex_8_SkColorType != colorType && kAlpha_8_SkColorType != colorType) { SkDebugf("Bitmap_createFromParcel unknown colortype: %d\n", colorType); return NULL; } SkBitmap* bitmap = new SkBitmap; bitmap->setConfig(config, width, height, rowBytes); bitmap->setInfo(SkImageInfo::Make(width, height, colorType, alphaType), rowBytes); SkColorTable* ctable = NULL; if (config == SkBitmap::kIndex8_Config) { if (colorType == kIndex_8_SkColorType) { int count = p->readInt32(); if (count > 0) { size_t size = count * sizeof(SkPMColor); Loading Loading @@ -587,13 +588,14 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, android::Parcel* p = android::parcelForJavaObject(env, parcel); p->writeInt32(isMutable); p->writeInt32(bitmap->config()); p->writeInt32(bitmap->colorType()); p->writeInt32(bitmap->alphaType()); p->writeInt32(bitmap->width()); p->writeInt32(bitmap->height()); p->writeInt32(bitmap->rowBytes()); p->writeInt32(density); if (bitmap->config() == SkBitmap::kIndex8_Config) { if (bitmap->colorType() == kIndex_8_SkColorType) { SkColorTable* ctable = bitmap->getColorTable(); if (ctable != NULL) { int count = ctable->count(); Loading core/jni/android/graphics/BitmapFactory.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding // FIXME: If the alphaType is kUnpremul and the image has alpha, the // colors may not be correct, since Skia does not yet support drawing // to/from unpremultiplied bitmaps. outputBitmap->setConfig(SkImageInfo::Make(scaledWidth, scaledHeight, outputBitmap->setInfo(SkImageInfo::Make(scaledWidth, scaledHeight, colorType, decodingBitmap.alphaType())); if (!outputBitmap->allocPixels(outputAllocator, NULL)) { return nullObjectReturn("allocation failed for scaled bitmap"); Loading core/jni/android/graphics/Canvas.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -703,10 +703,11 @@ public: jboolean hasAlpha, jlong paintHandle) { SkCanvas* canvas = getNativeCanvas(canvasHandle); SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle); SkImageInfo info = SkImageInfo::Make(width, height, hasAlpha ? kN32_SkColorType : kRGB_565_SkColorType, kPremul_SkAlphaType); SkBitmap bitmap; bitmap.setConfig(hasAlpha ? SkBitmap::kARGB_8888_Config : SkBitmap::kRGB_565_Config, width, height); if (!bitmap.allocPixels()) { if (!bitmap.allocPixels(info)) { return; } Loading core/jni/android_view_GLES20Canvas.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -388,11 +388,11 @@ static void android_view_GLES20Canvas_drawBitmapMatrix(JNIEnv* env, jobject claz static void android_view_GLES20Canvas_drawBitmapData(JNIEnv* env, jobject clazz, jlong rendererPtr, jintArray colors, jint offset, jint stride, jfloat left, jfloat top, jint width, jint height, jboolean hasAlpha, jlong paintPtr) { const SkImageInfo info = SkImageInfo::Make(width, height, hasAlpha ? kN32_SkColorType : kRGB_565_SkColorType, kPremul_SkAlphaType); SkBitmap* bitmap = new SkBitmap; bitmap->setConfig(hasAlpha ? SkBitmap::kARGB_8888_Config : SkBitmap::kRGB_565_Config, width, height); if (!bitmap->allocPixels()) { if (!bitmap->allocPixels(info)) { delete bitmap; return; } Loading Loading
cmds/screencap/screencap.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -52,13 +52,13 @@ static void usage(const char* pname) ); } static SkBitmap::Config flinger2skia(PixelFormat f) static SkColorType flinger2skia(PixelFormat f) { switch (f) { case PIXEL_FORMAT_RGB_565: return SkBitmap::kRGB_565_Config; return kRGB_565_SkColorType; default: return SkBitmap::kARGB_8888_Config; return kN32_SkColorType; } } Loading Loading @@ -174,9 +174,10 @@ int main(int argc, char** argv) if (base) { if (png) { const SkImageInfo info = SkImageInfo::Make(w, h, flinger2skia(f), kPremul_SkAlphaType); SkBitmap b; b.setConfig(flinger2skia(f), w, h, s*bytesPerPixel(f)); b.setPixels((void*)base); b.installPixels(info, const_cast<void*>(base), s*bytesPerPixel(f)); SkDynamicMemoryWStream stream; SkImageEncoder::EncodeStream(&stream, b, SkImageEncoder::kPNG_Type, SkImageEncoder::kDefaultQuality); Loading
core/jni/android/graphics/Bitmap.cpp +28 −26 Original line number Diff line number Diff line Loading @@ -258,16 +258,16 @@ static void ToColor_SI8_Opaque(SkColor dst[], const void* src, int width, // can return NULL static ToColorProc ChooseToColorProc(const SkBitmap& src, bool isPremultiplied) { switch (src.config()) { case SkBitmap::kARGB_8888_Config: switch (src.colorType()) { case kN32_SkColorType: if (src.isOpaque()) return ToColor_S32_Opaque; return isPremultiplied ? ToColor_S32_Alpha : ToColor_S32_Raw; case SkBitmap::kARGB_4444_Config: case kARGB_4444_SkColorType: if (src.isOpaque()) return ToColor_S4444_Opaque; return isPremultiplied ? ToColor_S4444_Alpha : ToColor_S4444_Raw; case SkBitmap::kRGB_565_Config: case kRGB_565_SkColorType: return ToColor_S565; case SkBitmap::kIndex8_Config: case kIndex_8_SkColorType: if (src.getColorTable() == NULL) { return NULL; } Loading @@ -291,7 +291,7 @@ static int getPremulBitmapCreateFlags(bool isMutable) { static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, jint offset, jint stride, jint width, jint height, jint configHandle, jboolean isMutable) { SkBitmap::Config config = static_cast<SkBitmap::Config>(configHandle); SkColorType colorType = SkBitmapConfigToColorType(static_cast<SkBitmap::Config>(configHandle)); if (NULL != jColors) { size_t n = env->GetArrayLength(jColors); if (n < SkAbs32(stride) * (size_t)height) { Loading @@ -301,12 +301,12 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, } // ARGB_4444 is a deprecated format, convert automatically to 8888 if (config == SkBitmap::kARGB_4444_Config) { config = SkBitmap::kARGB_8888_Config; if (colorType == kARGB_4444_SkColorType) { colorType = kN32_SkColorType; } SkBitmap bitmap; bitmap.setConfig(config, width, height); bitmap.setInfo(SkImageInfo::Make(width, height, colorType, kPremul_SkAlphaType)); jbyteArray buff = GraphicsJNI::allocateJavaPixelRef(env, &bitmap, NULL); if (NULL == buff) { Loading Loading @@ -516,27 +516,28 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { android::Parcel* p = android::parcelForJavaObject(env, parcel); const bool isMutable = p->readInt32() != 0; const SkBitmap::Config config = (SkBitmap::Config)p->readInt32(); const SkColorType colorType = (SkColorType)p->readInt32(); const SkAlphaType alphaType = (SkAlphaType)p->readInt32(); const int width = p->readInt32(); const int height = p->readInt32(); const int rowBytes = p->readInt32(); const int density = p->readInt32(); if (SkBitmap::kARGB_8888_Config != config && SkBitmap::kRGB_565_Config != config && SkBitmap::kARGB_4444_Config != config && SkBitmap::kIndex8_Config != config && SkBitmap::kA8_Config != config) { SkDebugf("Bitmap_createFromParcel unknown config: %d\n", config); if (kN32_SkColorType != colorType && kRGB_565_SkColorType != colorType && kARGB_4444_SkColorType != colorType && kIndex_8_SkColorType != colorType && kAlpha_8_SkColorType != colorType) { SkDebugf("Bitmap_createFromParcel unknown colortype: %d\n", colorType); return NULL; } SkBitmap* bitmap = new SkBitmap; bitmap->setConfig(config, width, height, rowBytes); bitmap->setInfo(SkImageInfo::Make(width, height, colorType, alphaType), rowBytes); SkColorTable* ctable = NULL; if (config == SkBitmap::kIndex8_Config) { if (colorType == kIndex_8_SkColorType) { int count = p->readInt32(); if (count > 0) { size_t size = count * sizeof(SkPMColor); Loading Loading @@ -587,13 +588,14 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, android::Parcel* p = android::parcelForJavaObject(env, parcel); p->writeInt32(isMutable); p->writeInt32(bitmap->config()); p->writeInt32(bitmap->colorType()); p->writeInt32(bitmap->alphaType()); p->writeInt32(bitmap->width()); p->writeInt32(bitmap->height()); p->writeInt32(bitmap->rowBytes()); p->writeInt32(density); if (bitmap->config() == SkBitmap::kIndex8_Config) { if (bitmap->colorType() == kIndex_8_SkColorType) { SkColorTable* ctable = bitmap->getColorTable(); if (ctable != NULL) { int count = ctable->count(); Loading
core/jni/android/graphics/BitmapFactory.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -386,7 +386,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding // FIXME: If the alphaType is kUnpremul and the image has alpha, the // colors may not be correct, since Skia does not yet support drawing // to/from unpremultiplied bitmaps. outputBitmap->setConfig(SkImageInfo::Make(scaledWidth, scaledHeight, outputBitmap->setInfo(SkImageInfo::Make(scaledWidth, scaledHeight, colorType, decodingBitmap.alphaType())); if (!outputBitmap->allocPixels(outputAllocator, NULL)) { return nullObjectReturn("allocation failed for scaled bitmap"); Loading
core/jni/android/graphics/Canvas.cpp +4 −3 Original line number Diff line number Diff line Loading @@ -703,10 +703,11 @@ public: jboolean hasAlpha, jlong paintHandle) { SkCanvas* canvas = getNativeCanvas(canvasHandle); SkPaint* paint = reinterpret_cast<SkPaint*>(paintHandle); SkImageInfo info = SkImageInfo::Make(width, height, hasAlpha ? kN32_SkColorType : kRGB_565_SkColorType, kPremul_SkAlphaType); SkBitmap bitmap; bitmap.setConfig(hasAlpha ? SkBitmap::kARGB_8888_Config : SkBitmap::kRGB_565_Config, width, height); if (!bitmap.allocPixels()) { if (!bitmap.allocPixels(info)) { return; } Loading
core/jni/android_view_GLES20Canvas.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -388,11 +388,11 @@ static void android_view_GLES20Canvas_drawBitmapMatrix(JNIEnv* env, jobject claz static void android_view_GLES20Canvas_drawBitmapData(JNIEnv* env, jobject clazz, jlong rendererPtr, jintArray colors, jint offset, jint stride, jfloat left, jfloat top, jint width, jint height, jboolean hasAlpha, jlong paintPtr) { const SkImageInfo info = SkImageInfo::Make(width, height, hasAlpha ? kN32_SkColorType : kRGB_565_SkColorType, kPremul_SkAlphaType); SkBitmap* bitmap = new SkBitmap; bitmap->setConfig(hasAlpha ? SkBitmap::kARGB_8888_Config : SkBitmap::kRGB_565_Config, width, height); if (!bitmap->allocPixels()) { if (!bitmap->allocPixels(info)) { delete bitmap; return; } Loading