| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/gfx/android/java_bitmap.h" | 5 #include "ui/gfx/android/java_bitmap.h" |
| 6 | 6 |
| 7 #include <android/bitmap.h> | 7 #include <android/bitmap.h> |
| 8 | 8 |
| 9 #include "base/android/jni_string.h" | 9 #include "base/android/jni_string.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 SkAutoLockPixels src_lock(*skbitmap); | 79 SkAutoLockPixels src_lock(*skbitmap); |
| 80 JavaBitmap dst_lock(jbitmap.obj()); | 80 JavaBitmap dst_lock(jbitmap.obj()); |
| 81 void* src_pixels = skbitmap->getPixels(); | 81 void* src_pixels = skbitmap->getPixels(); |
| 82 void* dst_pixels = dst_lock.pixels(); | 82 void* dst_pixels = dst_lock.pixels(); |
| 83 memcpy(dst_pixels, src_pixels, skbitmap->getSize()); | 83 memcpy(dst_pixels, src_pixels, skbitmap->getSize()); |
| 84 | 84 |
| 85 return jbitmap; | 85 return jbitmap; |
| 86 } | 86 } |
| 87 | 87 |
| 88 SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) { | 88 SkBitmap CreateSkBitmapFromJavaBitmap(const JavaBitmap& jbitmap) { |
| 89 // TODO(jdduke): Convert to DCHECK's when sufficient data has been capture for | 89 DCHECK(!jbitmap.size().IsEmpty()); |
| 90 // crbug.com/341406. | 90 DCHECK_GT(jbitmap.stride(), 0U); |
| 91 CHECK_EQ(jbitmap.format(), ANDROID_BITMAP_FORMAT_RGBA_8888); | 91 DCHECK(jbitmap.pixels()); |
| 92 CHECK(!jbitmap.size().IsEmpty()); | |
| 93 CHECK_GT(jbitmap.stride(), 0U); | |
| 94 CHECK(jbitmap.pixels()); | |
| 95 | 92 |
| 96 gfx::Size src_size = jbitmap.size(); | 93 gfx::Size src_size = jbitmap.size(); |
| 97 | 94 |
| 98 SkBitmap skbitmap; | 95 SkBitmap skbitmap; |
| 99 skbitmap.allocPixels(SkImageInfo::MakeN32Premul(src_size.width(), | 96 switch (jbitmap.format()) { |
| 100 src_size.height()), | 97 case ANDROID_BITMAP_FORMAT_RGBA_8888: |
| 101 jbitmap.stride()); | 98 skbitmap.allocPixels(SkImageInfo::MakeN32Premul(src_size.width(), |
| 99 src_size.height()), |
| 100 jbitmap.stride()); |
| 101 break; |
| 102 case ANDROID_BITMAP_FORMAT_A_8: |
| 103 skbitmap.allocPixels(SkImageInfo::MakeA8(src_size.width(), |
| 104 src_size.height()), |
| 105 jbitmap.stride()); |
| 106 break; |
| 107 default: |
| 108 CHECK(false) << "Invalid Java bitmap format: " << jbitmap.format(); |
| 109 break; |
| 110 } |
| 102 const void* src_pixels = jbitmap.pixels(); | 111 const void* src_pixels = jbitmap.pixels(); |
| 103 void* dst_pixels = skbitmap.getPixels(); | 112 void* dst_pixels = skbitmap.getPixels(); |
| 104 memcpy(dst_pixels, src_pixels, skbitmap.getSize()); | 113 memcpy(dst_pixels, src_pixels, skbitmap.getSize()); |
| 105 | 114 |
| 106 return skbitmap; | 115 return skbitmap; |
| 107 } | 116 } |
| 108 | 117 |
| 109 SkColorType ConvertToSkiaColorType(jobject bitmap_config) { | 118 SkColorType ConvertToSkiaColorType(jobject bitmap_config) { |
| 110 int jbitmap_config = Java_BitmapHelper_getBitmapFormatForConfig( | 119 int jbitmap_config = Java_BitmapHelper_getBitmapFormatForConfig( |
| 111 AttachCurrentThread(), bitmap_config); | 120 AttachCurrentThread(), bitmap_config); |
| 112 switch (jbitmap_config) { | 121 switch (jbitmap_config) { |
| 113 case BITMAP_FORMAT_ALPHA_8: | 122 case BITMAP_FORMAT_ALPHA_8: |
| 114 return kAlpha_8_SkColorType; | 123 return kAlpha_8_SkColorType; |
| 115 case BITMAP_FORMAT_ARGB_4444: | 124 case BITMAP_FORMAT_ARGB_4444: |
| 116 return kARGB_4444_SkColorType; | 125 return kARGB_4444_SkColorType; |
| 117 case BITMAP_FORMAT_ARGB_8888: | 126 case BITMAP_FORMAT_ARGB_8888: |
| 118 return kN32_SkColorType; | 127 return kN32_SkColorType; |
| 119 case BITMAP_FORMAT_RGB_565: | 128 case BITMAP_FORMAT_RGB_565: |
| 120 return kRGB_565_SkColorType; | 129 return kRGB_565_SkColorType; |
| 121 case BITMAP_FORMAT_NO_CONFIG: | 130 case BITMAP_FORMAT_NO_CONFIG: |
| 122 default: | 131 default: |
| 123 return kUnknown_SkColorType; | 132 return kUnknown_SkColorType; |
| 124 } | 133 } |
| 125 } | 134 } |
| 126 | 135 |
| 127 } // namespace gfx | 136 } // namespace gfx |
| OLD | NEW |