| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "cc/resources/image_layer_updater.h" | 5 #include "cc/resources/image_layer_updater.h" |
| 6 #include "cc/resources/prioritized_resource.h" | 6 #include "cc/resources/prioritized_resource.h" |
| 7 #include "cc/resources/resource_update_queue.h" | 7 #include "cc/resources/resource_update_queue.h" |
| 8 | 8 |
| 9 namespace cc { | 9 namespace cc { |
| 10 | 10 |
| 11 ImageLayerUpdater::Resource::Resource(ImageLayerUpdater* updater, | 11 ImageLayerUpdater::Resource::Resource(ImageLayerUpdater* updater, |
| 12 scoped_ptr<PrioritizedResource> texture) | 12 scoped_ptr<PrioritizedResource> texture) |
| 13 : LayerUpdater::Resource(texture.Pass()), updater_(updater) {} | 13 : LayerUpdater::Resource(texture.Pass()), updater_(updater) {} |
| 14 | 14 |
| 15 ImageLayerUpdater::Resource::~Resource() {} | 15 ImageLayerUpdater::Resource::~Resource() {} |
| 16 | 16 |
| 17 void ImageLayerUpdater::Resource::Update(ResourceUpdateQueue* queue, | 17 void ImageLayerUpdater::Resource::Update(ResourceUpdateQueue* queue, |
| 18 gfx::Rect source_rect, | 18 const gfx::Rect& source_rect, |
| 19 gfx::Vector2d dest_offset, | 19 gfx::Vector2d dest_offset, |
| 20 bool partial_update) { | 20 bool partial_update) { |
| 21 updater_->UpdateTexture( | 21 updater_->UpdateTexture( |
| 22 queue, texture(), source_rect, dest_offset, partial_update); | 22 queue, texture(), source_rect, dest_offset, partial_update); |
| 23 } | 23 } |
| 24 | 24 |
| 25 // static | 25 // static |
| 26 scoped_refptr<ImageLayerUpdater> ImageLayerUpdater::Create() { | 26 scoped_refptr<ImageLayerUpdater> ImageLayerUpdater::Create() { |
| 27 return make_scoped_refptr(new ImageLayerUpdater()); | 27 return make_scoped_refptr(new ImageLayerUpdater()); |
| 28 } | 28 } |
| 29 | 29 |
| 30 scoped_ptr<LayerUpdater::Resource> ImageLayerUpdater::CreateResource( | 30 scoped_ptr<LayerUpdater::Resource> ImageLayerUpdater::CreateResource( |
| 31 PrioritizedResourceManager* manager) { | 31 PrioritizedResourceManager* manager) { |
| 32 return scoped_ptr<LayerUpdater::Resource>( | 32 return scoped_ptr<LayerUpdater::Resource>( |
| 33 new Resource(this, PrioritizedResource::Create(manager))); | 33 new Resource(this, PrioritizedResource::Create(manager))); |
| 34 } | 34 } |
| 35 | 35 |
| 36 void ImageLayerUpdater::UpdateTexture(ResourceUpdateQueue* queue, | 36 void ImageLayerUpdater::UpdateTexture(ResourceUpdateQueue* queue, |
| 37 PrioritizedResource* texture, | 37 PrioritizedResource* texture, |
| 38 gfx::Rect source_rect, | 38 const gfx::Rect& source_rect, |
| 39 gfx::Vector2d dest_offset, | 39 gfx::Vector2d dest_offset, |
| 40 bool partial_update) { | 40 bool partial_update) { |
| 41 // Source rect should never go outside the image pixels, even if this | 41 // Source rect should never go outside the image pixels, even if this |
| 42 // is requested because the texture extends outside the image. | 42 // is requested because the texture extends outside the image. |
| 43 gfx::Rect clipped_source_rect = source_rect; | 43 gfx::Rect clipped_source_rect = source_rect; |
| 44 gfx::Rect image_rect = gfx::Rect(0, 0, bitmap_.width(), bitmap_.height()); | 44 gfx::Rect image_rect = gfx::Rect(0, 0, bitmap_.width(), bitmap_.height()); |
| 45 clipped_source_rect.Intersect(image_rect); | 45 clipped_source_rect.Intersect(image_rect); |
| 46 | 46 |
| 47 gfx::Vector2d clipped_dest_offset = | 47 gfx::Vector2d clipped_dest_offset = |
| 48 dest_offset + | 48 dest_offset + |
| (...skipping 10 matching lines...) Expand all Loading... |
| 59 void ImageLayerUpdater::SetBitmap(const SkBitmap& bitmap) { | 59 void ImageLayerUpdater::SetBitmap(const SkBitmap& bitmap) { |
| 60 DCHECK(bitmap.pixelRef()); | 60 DCHECK(bitmap.pixelRef()); |
| 61 bitmap_ = bitmap; | 61 bitmap_ = bitmap; |
| 62 } | 62 } |
| 63 | 63 |
| 64 bool ImageLayerUpdater::UsingBitmap(const SkBitmap& bitmap) const { | 64 bool ImageLayerUpdater::UsingBitmap(const SkBitmap& bitmap) const { |
| 65 return bitmap.pixelRef() == bitmap_.pixelRef(); | 65 return bitmap.pixelRef() == bitmap_.pixelRef(); |
| 66 } | 66 } |
| 67 | 67 |
| 68 } // namespace cc | 68 } // namespace cc |
| OLD | NEW |