diff options
author | Dianne Hackborn <hackbod@google.com> | 2009-09-23 14:09:34 -0700 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2009-09-29 11:50:16 -0700 |
commit | 1d0086d999d56346b90538eb9b141a3744a1e79f (patch) | |
tree | 21dd94a262bde16f97ae3159213e5e02252c0989 | |
parent | b91024c19c7c3182d926a199ad257b14513bb359 (diff) | |
download | base-1d0086d999d56346b90538eb9b141a3744a1e79f.tar.gz |
Fix issue #2125720 Weather Forecast Widget - graphics do not scale
I forgot to add the new density field to the Bitmaps' parcelable data.
-rw-r--r-- | core/jni/android/graphics/Bitmap.cpp | 9 | ||||
-rw-r--r-- | core/jni/android/graphics/Graphics.cpp | 6 | ||||
-rw-r--r-- | core/jni/android/graphics/GraphicsJNI.h | 2 | ||||
-rw-r--r-- | core/jni/android_emoji_EmojiFactory.cpp | 4 | ||||
-rw-r--r-- | graphics/java/android/graphics/Bitmap.java | 9 | ||||
-rw-r--r-- | tools/layoutlib/bridge/src/android/graphics/Bitmap.java | 4 |
6 files changed, 21 insertions, 13 deletions
diff --git a/core/jni/android/graphics/Bitmap.cpp b/core/jni/android/graphics/Bitmap.cpp index 3fb07a74a6f6..fe6264263866 100644 --- a/core/jni/android/graphics/Bitmap.cpp +++ b/core/jni/android/graphics/Bitmap.cpp @@ -332,6 +332,7 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { 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 &&
@@ -369,12 +370,13 @@ static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) { memcpy(bitmap->getPixels(), p->readInplace(size), size);
bitmap->unlockPixels();
- return GraphicsJNI::createBitmap(env, bitmap, isMutable, NULL);
+ return GraphicsJNI::createBitmap(env, bitmap, isMutable, NULL, density);
}
static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject,
const SkBitmap* bitmap,
- jboolean isMutable, jobject parcel) {
+ jboolean isMutable, jint density,
+ jobject parcel) {
if (parcel == NULL) {
SkDebugf("------- writeToParcel null parcel\n");
return false;
@@ -387,6 +389,7 @@ static jboolean Bitmap_writeToParcel(JNIEnv* env, jobject, p->writeInt32(bitmap->width());
p->writeInt32(bitmap->height());
p->writeInt32(bitmap->rowBytes());
+ p->writeInt32(density);
if (bitmap->getConfig() == SkBitmap::kIndex8_Config) {
SkColorTable* ctable = bitmap->getColorTable();
@@ -546,7 +549,7 @@ static JNINativeMethod gBitmapMethods[] = { { "nativeCreateFromParcel",
"(Landroid/os/Parcel;)Landroid/graphics/Bitmap;",
(void*)Bitmap_createFromParcel },
- { "nativeWriteToParcel", "(IZLandroid/os/Parcel;)Z",
+ { "nativeWriteToParcel", "(IZILandroid/os/Parcel;)Z",
(void*)Bitmap_writeToParcel },
{ "nativeExtractAlpha", "(II[I)Landroid/graphics/Bitmap;",
(void*)Bitmap_extractAlpha },
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp index ca1cb7d65201..2e0caed82a37 100644 --- a/core/jni/android/graphics/Graphics.cpp +++ b/core/jni/android/graphics/Graphics.cpp @@ -351,7 +351,7 @@ SkRegion* GraphicsJNI::getNativeRegion(JNIEnv* env, jobject region) /////////////////////////////////////////////////////////////////////////////////////////// jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, bool isMutable, - jbyteArray ninepatch) + jbyteArray ninepatch, int density) { SkASSERT(bitmap != NULL); SkASSERT(NULL != bitmap->pixelRef()); @@ -359,7 +359,7 @@ jobject GraphicsJNI::createBitmap(JNIEnv* env, SkBitmap* bitmap, bool isMutable, jobject obj = env->AllocObject(gBitmap_class); if (obj) { env->CallVoidMethod(obj, gBitmap_constructorMethodID, - (jint)bitmap, isMutable, ninepatch); + (jint)bitmap, isMutable, ninepatch, density); if (hasException(env)) { obj = NULL; } @@ -541,7 +541,7 @@ int register_android_graphics_Graphics(JNIEnv* env) gBitmap_class = make_globalref(env, "android/graphics/Bitmap"); gBitmap_nativeInstanceID = getFieldIDCheck(env, gBitmap_class, "mNativeBitmap", "I"); gBitmap_constructorMethodID = env->GetMethodID(gBitmap_class, "<init>", - "(IZ[B)V"); + "(IZ[BI)V"); gBitmapConfig_class = make_globalref(env, "android/graphics/Bitmap$Config"); gBitmapConfig_nativeInstanceID = getFieldIDCheck(env, gBitmapConfig_class, diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h index f8b60a805e1b..7adadbc22a0e 100644 --- a/core/jni/android/graphics/GraphicsJNI.h +++ b/core/jni/android/graphics/GraphicsJNI.h @@ -50,7 +50,7 @@ public: then the bitmap must be an owner of its natively allocated pixels (via allocPixels). */ static jobject createBitmap(JNIEnv* env, SkBitmap* bitmap, bool isMutable, - jbyteArray ninePatch); + jbyteArray ninePatch, int density = -1); static jobject createRegion(JNIEnv* env, SkRegion* region); diff --git a/core/jni/android_emoji_EmojiFactory.cpp b/core/jni/android_emoji_EmojiFactory.cpp index 7d6e24fa2567..cc9e2bf895a0 100644 --- a/core/jni/android_emoji_EmojiFactory.cpp +++ b/core/jni/android_emoji_EmojiFactory.cpp @@ -184,7 +184,7 @@ static jobject android_emoji_EmojiFactory_getBitmapFromAndroidPua( jobject obj = env->AllocObject(gBitmap_class); if (obj) { env->CallVoidMethod(obj, gBitmap_constructorMethodID, - reinterpret_cast<jint>(bitmap), false, NULL); + reinterpret_cast<jint>(bitmap), false, NULL, -1); if (env->ExceptionCheck() != 0) { LOGE("*** Uncaught exception returned from Java call!\n"); env->ExceptionDescribe(); @@ -294,7 +294,7 @@ static jfieldID getFieldIDCheck(JNIEnv* env, jclass clazz, int register_android_emoji_EmojiFactory(JNIEnv* env) { gBitmap_class = make_globalref(env, "android/graphics/Bitmap"); gBitmap_constructorMethodID = env->GetMethodID(gBitmap_class, "<init>", - "(IZ[B)V"); + "(IZ[BI)V"); gEmojiFactory_class = make_globalref(env, "android/emoji/EmojiFactory"); gEmojiFactory_constructorMethodID = env->GetMethodID( gEmojiFactory_class, "<init>", "(ILjava/lang/String;)V"); diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java index eef1096fb6c4..216dea007e6b 100644 --- a/graphics/java/android/graphics/Bitmap.java +++ b/graphics/java/android/graphics/Bitmap.java @@ -77,7 +77,8 @@ public final class Bitmap implements Parcelable { This can be called from JNI code. */ - private Bitmap(int nativeBitmap, boolean isMutable, byte[] ninePatchChunk) { + private Bitmap(int nativeBitmap, boolean isMutable, byte[] ninePatchChunk, + int density) { if (nativeBitmap == 0) { throw new RuntimeException("internal error: native bitmap is 0"); } @@ -86,6 +87,9 @@ public final class Bitmap implements Parcelable { mNativeBitmap = nativeBitmap; mIsMutable = isMutable; mNinePatchChunk = ninePatchChunk; + if (density >= 0) { + mDensity = density; + } } /** @@ -892,7 +896,7 @@ public final class Bitmap implements Parcelable { */ public void writeToParcel(Parcel p, int flags) { checkRecycled("Can't parcel a recycled bitmap"); - if (!nativeWriteToParcel(mNativeBitmap, mIsMutable, p)) { + if (!nativeWriteToParcel(mNativeBitmap, mIsMutable, mDensity, p)) { throw new RuntimeException("native writeToParcel failed"); } } @@ -1006,6 +1010,7 @@ public final class Bitmap implements Parcelable { // returns true on success private static native boolean nativeWriteToParcel(int nativeBitmap, boolean isMutable, + int density, Parcel p); // returns a new bitmap built from the native bitmap's alpha, and the paint private static native Bitmap nativeExtractAlpha(int nativeBitmap, diff --git a/tools/layoutlib/bridge/src/android/graphics/Bitmap.java b/tools/layoutlib/bridge/src/android/graphics/Bitmap.java index 7dde63446e08..ff1b295fc06d 100644 --- a/tools/layoutlib/bridge/src/android/graphics/Bitmap.java +++ b/tools/layoutlib/bridge/src/android/graphics/Bitmap.java @@ -28,13 +28,13 @@ public final class Bitmap extends _Original_Bitmap { private BufferedImage mImage; public Bitmap(File input) throws IOException { - super(1, true, null); + super(1, true, null, -1); mImage = ImageIO.read(input); } Bitmap(BufferedImage image) { - super(1, true, null); + super(1, true, null, -1); mImage = image; } |