diff options
author | Mathias Agopian <mathias@google.com> | 2009-08-07 20:55:14 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-08-07 20:55:14 -0700 |
commit | f1e5b0d4e5d0d2a78c234cd0cbd3005a74a79429 (patch) | |
tree | 596c50f9d0690da9d446003c21738582d26762f5 /core/jni/android_view_Surface.cpp | |
parent | 1d40f50de5a207351d5fe3f0eada2c8bf74dcd82 (diff) | |
download | frameworks_base-f1e5b0d4e5d0d2a78c234cd0cbd3005a74a79429.zip frameworks_base-f1e5b0d4e5d0d2a78c234cd0cbd3005a74a79429.tar.gz frameworks_base-f1e5b0d4e5d0d2a78c234cd0cbd3005a74a79429.tar.bz2 |
add support for RGBX_8888
Diffstat (limited to 'core/jni/android_view_Surface.cpp')
-rw-r--r-- | core/jni/android_view_Surface.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp index bd3c805..02677f4 100644 --- a/core/jni/android_view_Surface.cpp +++ b/core/jni/android_view_Surface.cpp @@ -242,11 +242,12 @@ static jboolean Surface_isValid(JNIEnv* env, jobject clazz) static inline SkBitmap::Config convertPixelFormat(PixelFormat format) { - /* note: if PIXEL_FORMAT_XRGB_8888 means that all alpha bytes are 0xFF, then + /* note: if PIXEL_FORMAT_RGBX_8888 means that all alpha bytes are 0xFF, then we can map to SkBitmap::kARGB_8888_Config, and optionally call bitmap.setIsOpaque(true) on the resulting SkBitmap (as an accelerator) */ switch (format) { + case PIXEL_FORMAT_RGBX_8888: return SkBitmap::kARGB_8888_Config; case PIXEL_FORMAT_RGBA_8888: return SkBitmap::kARGB_8888_Config; case PIXEL_FORMAT_RGBA_4444: return SkBitmap::kARGB_4444_Config; case PIXEL_FORMAT_RGB_565: return SkBitmap::kRGB_565_Config; @@ -294,6 +295,9 @@ static jobject Surface_lockCanvas(JNIEnv* env, jobject clazz, jobject dirtyRect) SkBitmap bitmap; ssize_t bpr = info.s * bytesPerPixel(info.format); bitmap.setConfig(convertPixelFormat(info.format), info.w, info.h, bpr); + if (info.format == PIXEL_FORMAT_RGBX_8888) { + bitmap.setIsOpaque(true); + } if (info.w > 0 && info.h > 0) { bitmap.setPixels(info.bits); } else { |