blob: fd9bb5fccd170383de814df2c0b61b11d2777a55 [file] [log] [blame]
// 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<LayerPainterChromium>);
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