| 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 |