1 // Copyright 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CC_RESOURCES_BITMAP_SKPICTURE_CONTENT_LAYER_UPDATER_H_ 6 #define CC_RESOURCES_BITMAP_SKPICTURE_CONTENT_LAYER_UPDATER_H_ 7 8 #include "cc/resources/skpicture_content_layer_updater.h" 9 #include "third_party/skia/include/core/SkBitmap.h" 10 11 namespace cc { 12 13 // This class records the content_rect into an SkPicture, then software 14 // rasterizes the SkPicture into bitmaps for each tile. This implements 15 // LayerTreeSettingSettings::per_tile_painting_enabled. 16 class BitmapSkPictureContentLayerUpdater : public SkPictureContentLayerUpdater { 17 public: 18 class Resource : public ContentLayerUpdater::Resource { 19 public: 20 Resource(BitmapSkPictureContentLayerUpdater* updater, 21 scoped_ptr<PrioritizedResource> texture); 22 23 virtual void Update(ResourceUpdateQueue* queue, 24 gfx::Rect source_rect, 25 gfx::Vector2d dest_offset, 26 bool partial_update) OVERRIDE; 27 28 private: 29 SkBitmap bitmap_; 30 BitmapSkPictureContentLayerUpdater* updater_; 31 32 DISALLOW_COPY_AND_ASSIGN(Resource); 33 }; 34 35 static scoped_refptr<BitmapSkPictureContentLayerUpdater> Create( 36 scoped_ptr<LayerPainter> painter, 37 RenderingStatsInstrumentation* stats_instrumentation, 38 int layer_id); 39 40 virtual scoped_ptr<LayerUpdater::Resource> CreateResource( 41 PrioritizedResourceManager* manager) OVERRIDE; 42 void PaintContentsRect(SkCanvas* canvas, 43 gfx::Rect source_rect); 44 45 private: 46 BitmapSkPictureContentLayerUpdater( 47 scoped_ptr<LayerPainter> painter, 48 RenderingStatsInstrumentation* stats_instrumentation, 49 int layer_id); 50 virtual ~BitmapSkPictureContentLayerUpdater(); 51 52 DISALLOW_COPY_AND_ASSIGN(BitmapSkPictureContentLayerUpdater); 53 }; 54 55 } // namespace cc 56 57 #endif // CC_RESOURCES_BITMAP_SKPICTURE_CONTENT_LAYER_UPDATER_H_ 58