#ifndef ShaderChromium_h
#define ShaderChromium_h
#if USE(ACCELERATED_COMPOSITING)
#include "PlatformString.h"
#if USE(SKIA)
#include "SkColorPriv.h"
#endif
namespace WebCore {
class GraphicsContext3D;
class VertexShaderPosTex {
public:
VertexShaderPosTex();
bool init(GraphicsContext3D*, unsigned program);
String getShaderString() const;
int matrixLocation() const { return m_matrixLocation; }
private:
int m_matrixLocation;
};
class VertexShaderPosTexYUVStretch {
public:
VertexShaderPosTexYUVStretch();
bool init(GraphicsContext3D*, unsigned program);
String getShaderString() const;
int matrixLocation() const { return m_matrixLocation; }
int yWidthScaleFactorLocation() const { return m_yWidthScaleFactorLocation; }
int uvWidthScaleFactorLocation() const { return m_uvWidthScaleFactorLocation; }
private:
int m_matrixLocation;
int m_yWidthScaleFactorLocation;
int m_uvWidthScaleFactorLocation;
};
class VertexShaderPos {
public:
VertexShaderPos();
bool init(GraphicsContext3D*, unsigned program);
String getShaderString() const;
int matrixLocation() const { return m_matrixLocation; }
private:
int m_matrixLocation;
};
class VertexShaderPosTexTransform {
public:
VertexShaderPosTexTransform();
bool init(GraphicsContext3D*, unsigned program);
String getShaderString() const;
int matrixLocation() const { return m_matrixLocation; }
int texTransformLocation() const { return m_texTransformLocation; }
private:
int m_matrixLocation;
int m_texTransformLocation;
};
class FragmentTexAlphaBinding {
public:
FragmentTexAlphaBinding();
bool init(GraphicsContext3D*, unsigned program);
int alphaLocation() const { return m_alphaLocation; }
int samplerLocation() const { return m_samplerLocation; }
private:
int m_samplerLocation;
int m_alphaLocation;
};
class FragmentShaderRGBATexFlipAlpha : public FragmentTexAlphaBinding {
public:
String getShaderString() const;
};
class FragmentShaderRGBATexAlpha : public FragmentTexAlphaBinding {
public:
String getShaderString() const;
};
class FragmentShaderBGRATexAlpha : public FragmentTexAlphaBinding {
public:
String getShaderString() const;
};
class FragmentShaderRGBATexAlphaMask {
public:
FragmentShaderRGBATexAlphaMask();
String getShaderString() const;
bool init(GraphicsContext3D*, unsigned program);
int alphaLocation() const { return m_alphaLocation; }
int samplerLocation() const { return m_samplerLocation; }
int maskSamplerLocation() const { return m_maskSamplerLocation; }
private:
int m_samplerLocation;
int m_maskSamplerLocation;
int m_alphaLocation;
};
#if USE(SKIA) && SK_B32_SHIFT
typedef FragmentShaderRGBATexAlpha FragmentShaderTexAlpha;
#else
typedef FragmentShaderBGRATexAlpha FragmentShaderTexAlpha;
#endif
class FragmentShaderYUVVideo {
public:
FragmentShaderYUVVideo();
String getShaderString() const;
bool init(GraphicsContext3D*, unsigned program);
int yTextureLocation() const { return m_yTextureLocation; }
int uTextureLocation() const { return m_uTextureLocation; }
int vTextureLocation() const { return m_vTextureLocation; }
int alphaLocation() const { return m_alphaLocation; }
int ccMatrixLocation() const { return m_ccMatrixLocation; }
int yuvAdjLocation() const { return m_yuvAdjLocation; }
private:
int m_yTextureLocation;
int m_uTextureLocation;
int m_vTextureLocation;
int m_alphaLocation;
int m_ccMatrixLocation;
int m_yuvAdjLocation;
};
class FragmentShaderColor {
public:
FragmentShaderColor();
String getShaderString() const;
bool init(GraphicsContext3D*, unsigned program);
int colorLocation() const { return m_colorLocation; }
private:
int m_colorLocation;
};
}
#endif // USE(ACCELERATED_COMPOSITING)
#endif