Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Unified Diff: trunk/src/ui/gfx/android/java_bitmap.cc

Issue 23740010: Revert 223162 "Update the nine patch layer to use UI resources" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « trunk/src/ui/gfx/android/java_bitmap.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/ui/gfx/android/java_bitmap.cc
===================================================================
--- trunk/src/ui/gfx/android/java_bitmap.cc (revision 223178)
+++ trunk/src/ui/gfx/android/java_bitmap.cc (working copy)
@@ -61,20 +61,32 @@
return jbitmap;
}
-SkBitmap CreateSkBitmapFromJavaBitmap(JavaBitmap& jbitmap) {
- DCHECK_EQ(jbitmap.format(), ANDROID_BITMAP_FORMAT_RGBA_8888);
+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());
+}
- gfx::Size src_size = jbitmap.size();
+static SkBitmap ConvertToSkBitmap(ScopedJavaLocalRef<jobject> jbitmap) {
+ if (jbitmap.is_null())
+ return SkBitmap();
+ JavaBitmap src_lock(jbitmap.obj());
+ DCHECK_EQ(src_lock.format(), ANDROID_BITMAP_FORMAT_RGBA_8888);
+
+ gfx::Size src_size = src_lock.size();
+
SkBitmap skbitmap;
skbitmap.setConfig(SkBitmap::kARGB_8888_Config,
- src_size.width(),
- src_size.height(),
- jbitmap.stride());
+ src_size.width(), src_size.height(), src_lock.stride());
skbitmap.allocPixels();
SkAutoLockPixels dst_lock(skbitmap);
- void* src_pixels = jbitmap.pixels();
+ void* src_pixels = src_lock.pixels();
void* dst_pixels = skbitmap.getPixels();
memcpy(dst_pixels, src_pixels, skbitmap.getSize());
@@ -84,17 +96,14 @@
SkBitmap CreateSkBitmapFromResource(const char* name, gfx::Size size) {
DCHECK(!size.IsEmpty());
- 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());
+ SkBitmap bitmap =
+ ConvertToSkBitmap(CreateJavaBitmapFromResource(name, size));
+ if (bitmap.isNull())
+ return bitmap;
+ // RESIZE_BOX has sufficient downsampling quality with minimal runtime cost.
+ return skia::ImageOperations::Resize(bitmap,
+ skia::ImageOperations::RESIZE_BOX,
+ size.width(), size.height());
}
} // namespace gfx
« no previous file with comments | « trunk/src/ui/gfx/android/java_bitmap.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698