tizen beta release
[framework/web/webkit-efl.git] / Source / WebCore / platform / graphics / chromium / cc / CCPluginLayerImpl.h
index 560e174..e09826a 100755 (executable)
@@ -26,6 +26,7 @@
 #ifndef CCPluginLayerImpl_h
 #define CCPluginLayerImpl_h
 
+#include "FloatRect.h"
 #include "ProgramBinding.h"
 #include "ShaderChromium.h"
 #include "cc/CCLayerImpl.h"
@@ -40,8 +41,10 @@ public:
     }
     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*);
 
@@ -49,14 +52,26 @@ public:
 
     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;
 };
 
 }