bitmap_skpicture_content_layer_updater.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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 11namespace 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. 16class 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, 27 RenderingStats* stats) OVERRIDE; 28 29 private: 30 SkBitmap bitmap_; 31 BitmapSkPictureContentLayerUpdater* updater_; 32 33 DISALLOW_COPY_AND_ASSIGN(Resource); 34 }; 35 36 static scoped_refptr<BitmapSkPictureContentLayerUpdater> Create( 37 scoped_ptr<LayerPainter> painter); 38 39 virtual scoped_ptr<LayerUpdater::Resource> CreateResource( 40 PrioritizedResourceManager* manager) OVERRIDE; 41 void PaintContentsRect(SkCanvas* canvas, 42 gfx::Rect source_rect, 43 RenderingStats* stats); 44 45 private: 46 explicit BitmapSkPictureContentLayerUpdater(scoped_ptr<LayerPainter> painter); 47 virtual ~BitmapSkPictureContentLayerUpdater(); 48 49 DISALLOW_COPY_AND_ASSIGN(BitmapSkPictureContentLayerUpdater); 50}; 51 52} // namespace cc 53 54#endif // CC_RESOURCES_BITMAP_SKPICTURE_CONTENT_LAYER_UPDATER_H_ 55