OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/android/resources/resource_manager_impl.h" | 5 #include "ui/android/resources/resource_manager_impl.h" |
6 | 6 |
7 #include <inttypes.h> | 7 #include <inttypes.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <utility> | 10 #include <utility> |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "ui/android/window_android.h" | 28 #include "ui/android/window_android.h" |
29 #include "ui/gfx/android/java_bitmap.h" | 29 #include "ui/gfx/android/java_bitmap.h" |
30 #include "ui/gfx/geometry/rect.h" | 30 #include "ui/gfx/geometry/rect.h" |
31 | 31 |
32 using base::android::JavaArrayOfIntArrayToIntVector; | 32 using base::android::JavaArrayOfIntArrayToIntVector; |
33 using base::android::JavaRef; | 33 using base::android::JavaRef; |
34 | 34 |
35 namespace ui { | 35 namespace ui { |
36 | 36 |
37 // static | 37 // static |
38 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject(jobject jobj) { | 38 ResourceManagerImpl* ResourceManagerImpl::FromJavaObject( |
| 39 const JavaRef<jobject>& jobj) { |
39 return reinterpret_cast<ResourceManagerImpl*>( | 40 return reinterpret_cast<ResourceManagerImpl*>( |
40 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(), | 41 Java_ResourceManager_getNativePtr(base::android::AttachCurrentThread(), |
41 jobj)); | 42 jobj)); |
42 } | 43 } |
43 | 44 |
44 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window) | 45 ResourceManagerImpl::ResourceManagerImpl(gfx::NativeWindow native_window) |
45 : ui_resource_manager_(nullptr) { | 46 : ui_resource_manager_(nullptr) { |
46 JNIEnv* env = base::android::AttachCurrentThread(); | 47 JNIEnv* env = base::android::AttachCurrentThread(); |
47 java_obj_.Reset( | 48 java_obj_.Reset( |
48 env, Java_ResourceManager_create(env, native_window->GetJavaObject(), | 49 env, Java_ResourceManager_create(env, native_window->GetJavaObject(), |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 "resource_id", res_id); | 197 "resource_id", res_id); |
197 | 198 |
198 std::unordered_map<int, std::unique_ptr<Resource>>::iterator item = | 199 std::unordered_map<int, std::unique_ptr<Resource>>::iterator item = |
199 resources_[res_type].find(res_id); | 200 resources_[res_type].find(res_id); |
200 if (item == resources_[res_type].end()) { | 201 if (item == resources_[res_type].end()) { |
201 resources_[res_type][res_id] = base::MakeUnique<Resource>(); | 202 resources_[res_type][res_id] = base::MakeUnique<Resource>(); |
202 } | 203 } |
203 | 204 |
204 Resource* resource = resources_[res_type][res_id].get(); | 205 Resource* resource = resources_[res_type][res_id].get(); |
205 | 206 |
206 gfx::JavaBitmap jbitmap(bitmap.obj()); | 207 gfx::JavaBitmap jbitmap(bitmap); |
207 resource->size = jbitmap.size(); | 208 resource->size = jbitmap.size(); |
208 resource->padding.SetRect(padding_left, padding_top, | 209 resource->padding.SetRect(padding_left, padding_top, |
209 padding_right - padding_left, | 210 padding_right - padding_left, |
210 padding_bottom - padding_top); | 211 padding_bottom - padding_top); |
211 resource->aperture.SetRect(aperture_left, aperture_top, | 212 resource->aperture.SetRect(aperture_left, aperture_top, |
212 aperture_right - aperture_left, | 213 aperture_right - aperture_left, |
213 aperture_bottom - aperture_top); | 214 aperture_bottom - aperture_top); |
214 | 215 |
215 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap); | 216 SkBitmap skbitmap = gfx::CreateSkBitmapFromJavaBitmap(jbitmap); |
216 skbitmap.setImmutable(); | 217 skbitmap.setImmutable(); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 jfloat scaled_sprite_height) { | 250 jfloat scaled_sprite_height) { |
250 // Construct source and destination rectangles for each frame from | 251 // Construct source and destination rectangles for each frame from |
251 // |frame_rects|. | 252 // |frame_rects|. |
252 std::vector<std::vector<int>> all_frame_rects_vector; | 253 std::vector<std::vector<int>> all_frame_rects_vector; |
253 JavaArrayOfIntArrayToIntVector(env, frame_rects.obj(), | 254 JavaArrayOfIntArrayToIntVector(env, frame_rects.obj(), |
254 &all_frame_rects_vector); | 255 &all_frame_rects_vector); |
255 CrushedSpriteResource::SrcDstRects src_dst_rects = | 256 CrushedSpriteResource::SrcDstRects src_dst_rects = |
256 ProcessCrushedSpriteFrameRects(all_frame_rects_vector); | 257 ProcessCrushedSpriteFrameRects(all_frame_rects_vector); |
257 | 258 |
258 SkBitmap skbitmap = | 259 SkBitmap skbitmap = |
259 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap.obj())); | 260 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap)); |
260 | 261 |
261 std::unique_ptr<CrushedSpriteResource> resource = | 262 std::unique_ptr<CrushedSpriteResource> resource = |
262 base::MakeUnique<CrushedSpriteResource>( | 263 base::MakeUnique<CrushedSpriteResource>( |
263 skbitmap, | 264 skbitmap, |
264 src_dst_rects, | 265 src_dst_rects, |
265 gfx::Size(unscaled_sprite_width, unscaled_sprite_height), | 266 gfx::Size(unscaled_sprite_width, unscaled_sprite_height), |
266 gfx::Size(scaled_sprite_width, scaled_sprite_height)); | 267 gfx::Size(scaled_sprite_width, scaled_sprite_height)); |
267 | 268 |
268 crushed_sprite_resources_[bitmap_res_id].swap(resource); | 269 crushed_sprite_resources_[bitmap_res_id].swap(resource); |
269 } | 270 } |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 const JavaRef<jobject>& jobj, | 341 const JavaRef<jobject>& jobj, |
341 jint bitmap_res_id, | 342 jint bitmap_res_id, |
342 const JavaRef<jobject>& bitmap) { | 343 const JavaRef<jobject>& bitmap) { |
343 std::unordered_map<int, std::unique_ptr<CrushedSpriteResource>>::iterator | 344 std::unordered_map<int, std::unique_ptr<CrushedSpriteResource>>::iterator |
344 item = crushed_sprite_resources_.find(bitmap_res_id); | 345 item = crushed_sprite_resources_.find(bitmap_res_id); |
345 if (item == crushed_sprite_resources_.end()) { | 346 if (item == crushed_sprite_resources_.end()) { |
346 // Cannot reload a resource that has not been previously loaded. | 347 // Cannot reload a resource that has not been previously loaded. |
347 return; | 348 return; |
348 } | 349 } |
349 SkBitmap skbitmap = | 350 SkBitmap skbitmap = |
350 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap.obj())); | 351 gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(bitmap)); |
351 item->second->SetBitmap(skbitmap); | 352 item->second->SetBitmap(skbitmap); |
352 } | 353 } |
353 | 354 |
354 // static | 355 // static |
355 bool ResourceManagerImpl::RegisterResourceManager(JNIEnv* env) { | 356 bool ResourceManagerImpl::RegisterResourceManager(JNIEnv* env) { |
356 return RegisterNativesImpl(env); | 357 return RegisterNativesImpl(env); |
357 } | 358 } |
358 | 359 |
359 void ResourceManagerImpl::PreloadResourceFromJava(AndroidResourceType res_type, | 360 void ResourceManagerImpl::PreloadResourceFromJava(AndroidResourceType res_type, |
360 int res_id) { | 361 int res_id) { |
(...skipping 18 matching lines...) Expand all Loading... |
379 TRACE_EVENT2("ui", | 380 TRACE_EVENT2("ui", |
380 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava", | 381 "ResourceManagerImpl::RequestCrushedSpriteResourceFromJava", |
381 "bitmap_res_id", bitmap_res_id, | 382 "bitmap_res_id", bitmap_res_id, |
382 "metadata_res_id", metadata_res_id); | 383 "metadata_res_id", metadata_res_id); |
383 Java_ResourceManager_crushedSpriteResourceRequested( | 384 Java_ResourceManager_crushedSpriteResourceRequested( |
384 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id, | 385 base::android::AttachCurrentThread(), java_obj_, bitmap_res_id, |
385 metadata_res_id, reloading); | 386 metadata_res_id, reloading); |
386 } | 387 } |
387 | 388 |
388 } // namespace ui | 389 } // namespace ui |
OLD | NEW |