RenderSurfaceChromium.h [plain text]
#ifndef RenderSurfaceChromium_h
#define RenderSurfaceChromium_h
#if USE(ACCELERATED_COMPOSITING)
#include "FloatRect.h"
#include "IntRect.h"
#include "ProgramBinding.h"
#include "ShaderChromium.h"
#include "TextureManager.h"
#include "TransformationMatrix.h"
#include <wtf/Noncopyable.h>
namespace WebCore {
class CCLayerImpl;
class LayerRendererChromium;
class LayerTexture;
class RenderSurfaceChromium {
WTF_MAKE_NONCOPYABLE(RenderSurfaceChromium);
friend class LayerRendererChromium;
public:
explicit RenderSurfaceChromium(CCLayerImpl*);
~RenderSurfaceChromium();
bool prepareContentsTexture();
void cleanupResources();
void draw(const IntRect& targetSurfaceRect);
String name() const;
void dumpSurface(TextStream&, int indent) const;
FloatPoint contentRectCenter() const { return FloatRect(m_contentRect).center(); }
IntRect contentRect() const { return m_contentRect; }
FloatRect drawableContentRect() const;
TransformationMatrix drawTransform() const { return m_drawTransform; }
typedef ProgramBinding<VertexShaderPosTex, FragmentShaderRGBATexAlpha> Program;
typedef ProgramBinding<VertexShaderPosTex, FragmentShaderRGBATexAlphaMask> MaskProgram;
private:
LayerRendererChromium* layerRenderer();
void drawSurface(CCLayerImpl* maskLayer, const TransformationMatrix& drawTransform);
CCLayerImpl* m_owningLayer;
CCLayerImpl* m_maskLayer;
IntRect m_contentRect;
bool m_skipsDraw;
OwnPtr<LayerTexture> m_contentsTexture;
float m_drawOpacity;
TransformationMatrix m_drawTransform;
TransformationMatrix m_replicaDrawTransform;
TransformationMatrix m_originTransform;
IntRect m_scissorRect;
Vector<RefPtr<CCLayerImpl> > m_layerList;
};
}
#endif // USE(ACCELERATED_COMPOSITING)
#endif