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 |