diff options
author | Andras Becsi <andras.becsi@digia.com> | 2013-12-11 21:33:03 +0100 |
---|---|---|
committer | Andras Becsi <andras.becsi@digia.com> | 2013-12-13 12:34:07 +0100 |
commit | f2a33ff9cbc6d19943f1c7fbddd1f23d23975577 (patch) | |
tree | 0586a32aa390ade8557dfd6b4897f43a07449578 /chromium/ui/gfx/android/java_bitmap.cc | |
parent | 5362912cdb5eea702b68ebe23702468d17c3017a (diff) | |
download | qtwebengine-chromium-f2a33ff9cbc6d19943f1c7fbddd1f23d23975577.tar.gz |
Update Chromium to branch 1650 (31.0.1650.63)
Change-Id: I57d8c832eaec1eb2364e0a8e7352a6dd354db99f
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'chromium/ui/gfx/android/java_bitmap.cc')
-rw-r--r-- | chromium/ui/gfx/android/java_bitmap.cc | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/chromium/ui/gfx/android/java_bitmap.cc b/chromium/ui/gfx/android/java_bitmap.cc index e292b385aa1..6c2eaa845a2 100644 --- a/chromium/ui/gfx/android/java_bitmap.cc +++ b/chromium/ui/gfx/android/java_bitmap.cc @@ -6,6 +6,7 @@ #include <android/bitmap.h> +#include "base/android/jni_string.h" #include "base/logging.h" #include "jni/BitmapHelper_jni.h" #include "skia/ext/image_operations.h" @@ -61,32 +62,20 @@ ScopedJavaLocalRef<jobject> ConvertToJavaBitmap(const SkBitmap* skbitmap) { return jbitmap; } -static ScopedJavaLocalRef<jobject> CreateJavaBitmapFromResource( - const char* name, gfx::Size requested_size) { - JNIEnv* env = AttachCurrentThread(); - ScopedJavaLocalRef<jstring> jname(env, env->NewStringUTF(name)); - return ui::Java_BitmapHelper_decodeDrawableResource(env, - jname.obj(), - requested_size.width(), - requested_size.height()); -} - -static SkBitmap ConvertToSkBitmap(ScopedJavaLocalRef<jobject> jbitmap) { - if (jbitmap.is_null()) - return SkBitmap(); +SkBitmap CreateSkBitmapFromJavaBitmap(JavaBitmap& jbitmap) { + DCHECK_EQ(jbitmap.format(), ANDROID_BITMAP_FORMAT_RGBA_8888); - JavaBitmap src_lock(jbitmap.obj()); - DCHECK_EQ(src_lock.format(), ANDROID_BITMAP_FORMAT_RGBA_8888); - - gfx::Size src_size = src_lock.size(); + gfx::Size src_size = jbitmap.size(); SkBitmap skbitmap; skbitmap.setConfig(SkBitmap::kARGB_8888_Config, - src_size.width(), src_size.height(), src_lock.stride()); + src_size.width(), + src_size.height(), + jbitmap.stride()); skbitmap.allocPixels(); SkAutoLockPixels dst_lock(skbitmap); - void* src_pixels = src_lock.pixels(); + void* src_pixels = jbitmap.pixels(); void* dst_pixels = skbitmap.getPixels(); memcpy(dst_pixels, src_pixels, skbitmap.getSize()); @@ -96,13 +85,17 @@ static SkBitmap ConvertToSkBitmap(ScopedJavaLocalRef<jobject> jbitmap) { SkBitmap CreateSkBitmapFromResource(const char* name, gfx::Size size) { DCHECK(!size.IsEmpty()); - SkBitmap bitmap = - ConvertToSkBitmap(CreateJavaBitmapFromResource(name, size)); - if (bitmap.isNull()) - return bitmap; - return skia::ImageOperations::Resize(bitmap, - skia::ImageOperations::RESIZE_GOOD, - size.width(), size.height()); + JNIEnv* env = AttachCurrentThread(); + ScopedJavaLocalRef<jstring> jname(env, env->NewStringUTF(name)); + ScopedJavaLocalRef<jobject> jobj(ui::Java_BitmapHelper_decodeDrawableResource( + env, jname.obj(), size.width(), size.height())); + if (jobj.is_null()) + return SkBitmap(); + + JavaBitmap jbitmap(jobj.obj()); + SkBitmap bitmap = CreateSkBitmapFromJavaBitmap(jbitmap); + return skia::ImageOperations::Resize( + bitmap, skia::ImageOperations::RESIZE_BOX, size.width(), size.height()); } } // namespace gfx |