// 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 SkPictureCanvasLayerTextureUpdater_h #define SkPictureCanvasLayerTextureUpdater_h #if USE(ACCELERATED_COMPOSITING) #include "CanvasLayerTextureUpdater.h" #include "SkPicture.h" class SkCanvas; namespace cc { class LayerPainterChromium; // This class records the contentRect into an SkPicture. Subclasses, provide // different implementations of tile updating based on this recorded picture. // The BitmapSkPictureCanvasLayerTextureUpdater and // FrameBufferSkPictureCanvasLayerTextureUpdater are two examples of such // implementations. class SkPictureCanvasLayerTextureUpdater : public CanvasLayerTextureUpdater { public: virtual ~SkPictureCanvasLayerTextureUpdater(); virtual void setOpaque(bool) OVERRIDE; protected: explicit SkPictureCanvasLayerTextureUpdater(PassOwnPtr); virtual void prepareToUpdate(const IntRect& contentRect, const IntSize& tileSize, float contentsWidthScale, float contentsHeightScale, IntRect& resultingOpaqueRect, CCRenderingStats&) OVERRIDE; void drawPicture(SkCanvas*); bool layerIsOpaque() const { return m_layerIsOpaque; } private: // Recording canvas. SkPicture m_picture; // True when it is known that all output pixels will be opaque. bool m_layerIsOpaque; }; } // namespace cc #endif // USE(ACCELERATED_COMPOSITING) #endif // SkPictureCanvasLayerTextureUpdater_h