summaryrefslogtreecommitdiff
path: root/chromium/ui/gfx/android/java_bitmap.cc
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2013-12-11 21:33:03 +0100
committerAndras Becsi <andras.becsi@digia.com>2013-12-13 12:34:07 +0100
commitf2a33ff9cbc6d19943f1c7fbddd1f23d23975577 (patch)
tree0586a32aa390ade8557dfd6b4897f43a07449578 /chromium/ui/gfx/android/java_bitmap.cc
parent5362912cdb5eea702b68ebe23702468d17c3017a (diff)
downloadqtwebengine-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.cc45
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