#ifndef CCPluginLayerImpl_h
#define CCPluginLayerImpl_h
+#include "FloatRect.h"
#include "ProgramBinding.h"
#include "ShaderChromium.h"
#include "cc/CCLayerImpl.h"
}
virtual ~CCPluginLayerImpl();
- typedef ProgramBinding<VertexShaderPosTex, FragmentShaderRGBATexAlpha> Program;
- typedef ProgramBinding<VertexShaderPosTex, FragmentShaderRGBATexFlipAlpha> ProgramFlip;
+ typedef ProgramBinding<VertexShaderPosTexStretch, FragmentShaderRGBATexAlpha> Program;
+ typedef ProgramBinding<VertexShaderPosTexStretch, FragmentShaderRGBATexFlipAlpha> ProgramFlip;
+ typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexRectAlpha> TexRectProgram;
+ typedef ProgramBinding<VertexShaderPosTexTransform, FragmentShaderRGBATexRectFlipAlpha> TexRectProgramFlip;
virtual void draw(LayerRendererChromium*);
void setTextureId(unsigned id) { m_textureId = id; }
void setFlipped(bool flipped) { m_flipped = flipped; }
+ void setUVRect(const FloatRect& rect) { m_uvRect = rect; }
+ void setIOSurfaceProperties(int width, int height, uint32_t ioSurfaceId);
private:
explicit CCPluginLayerImpl(int);
virtual const char* layerTypeAsString() const { return "PluginLayer"; }
+ void cleanupResources();
+
unsigned m_textureId;
bool m_flipped;
+ FloatRect m_uvRect;
+ uint32_t m_ioSurfaceId;
+ int m_ioSurfaceWidth;
+ int m_ioSurfaceHeight;
+
+ // Internals for the IOSurface rendering path.
+ bool m_ioSurfaceChanged;
+ unsigned m_ioSurfaceTextureId;
};
}