diff options
Diffstat (limited to 'cc/bitmap_skpicture_canvas_layer_texture_updater.h')
-rw-r--r-- | cc/bitmap_skpicture_canvas_layer_texture_updater.h | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/cc/bitmap_skpicture_canvas_layer_texture_updater.h b/cc/bitmap_skpicture_canvas_layer_texture_updater.h index 638cbb2..140f9be 100644 --- a/cc/bitmap_skpicture_canvas_layer_texture_updater.h +++ b/cc/bitmap_skpicture_canvas_layer_texture_updater.h @@ -1,3 +1,45 @@ -// Copyright 2012 The Chromium Authors. All rights reserved. +// Copyright 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. + + +#ifndef BitmapSkPictureCanvasLayerTextureUpdater_h +#define BitmapSkPictureCanvasLayerTextureUpdater_h + +#if USE(ACCELERATED_COMPOSITING) +#include "SkBitmap.h" +#include "SkPictureCanvasLayerTextureUpdater.h" + +namespace cc { + +// This class records the contentRect into an SkPicture, then software rasterizes +// the SkPicture into bitmaps for each tile. This implements CCSettings::perTilePainting. +class BitmapSkPictureCanvasLayerTextureUpdater : public SkPictureCanvasLayerTextureUpdater { +public: + class Texture : public CanvasLayerTextureUpdater::Texture { + public: + Texture(BitmapSkPictureCanvasLayerTextureUpdater*, scoped_ptr<CCPrioritizedTexture>); + + virtual void prepareRect(const IntRect& sourceRect, CCRenderingStats&) OVERRIDE; + virtual void updateRect(CCResourceProvider*, const IntRect& sourceRect, const IntSize& destOffset) OVERRIDE; + + private: + BitmapSkPictureCanvasLayerTextureUpdater* textureUpdater() { return m_textureUpdater; } + + SkBitmap m_bitmap; + BitmapSkPictureCanvasLayerTextureUpdater* m_textureUpdater; + }; + + static PassRefPtr<BitmapSkPictureCanvasLayerTextureUpdater> create(PassOwnPtr<LayerPainterChromium>); + virtual ~BitmapSkPictureCanvasLayerTextureUpdater(); + + virtual PassOwnPtr<LayerTextureUpdater::Texture> createTexture(CCPrioritizedTextureManager*) OVERRIDE; + virtual SampledTexelFormat sampledTexelFormat(GC3Denum textureFormat) OVERRIDE; + void paintContentsRect(SkCanvas*, const IntRect& sourceRect, CCRenderingStats&); + +private: + explicit BitmapSkPictureCanvasLayerTextureUpdater(PassOwnPtr<LayerPainterChromium>); +}; +} // namespace cc +#endif // USE(ACCELERATED_COMPOSITING) +#endif // BitmapSkPictureCanvasLayerTextureUpdater_h |