blob: cd1793a95b110fe73ef10c9a2030121f3e586770 [file] [log] [blame]
function WSolidElement(data, globalData, comp) {
this.gl = globalData.canvasContext;
this.layerSize = {
w: data.sw,
h: data.sh
}
this.initElement(data,globalData,comp);
var vsh = get_shader('image_layer_shader_vert');
var fsh = get_shader('image_layer_shader_frag');
var vertexShader = WebGLProgramFactory.createShader(this.gl, this.gl.VERTEX_SHADER, vsh);
var fragmentShader = WebGLProgramFactory.createShader(this.gl, this.gl.FRAGMENT_SHADER, fsh);
this.program = WebGLProgramFactory.createProgram(this.gl, vertexShader, fragmentShader);
var gl = this.gl;
this.positionAttributeLocation = gl.getAttribLocation(this.program, "a_position");
gl.enableVertexAttribArray(this.positionAttributeLocation);
gl.vertexAttribPointer(this.positionAttributeLocation, 2, gl.FLOAT, false, 0, 0);
this.mat4UniformLoc = gl.getUniformLocation(this.program, "uMatrix");
this.localmat4UniformLoc = gl.getUniformLocation(this.program, "localMatrix");
gl.useProgram(this.program);
var localMatrix = new Matrix();
localMatrix.scale(this.data.sw, this.data.sh);
gl.uniformMatrix4fv(this.localmat4UniformLoc, false, localMatrix.props);
/*gl.enableVertexAttribArray(this.positionAttributeLocation);
gl.vertexAttribPointer(this.positionAttributeLocation, 2, gl.FLOAT, false, 0, 0);*/
this.texture = textureFactory(gl);
var canvas = createTag('canvas');
canvas.width = this.data.sw;
canvas.height = this.data.sh;
var canvasContext = canvas.getContext('2d');
var grd=canvasContext.createLinearGradient(0,0,this.data.sw,this.data.sh);
grd.addColorStop(0,"red");
grd.addColorStop(1,"green");
canvasContext.fillStyle=grd;
//canvasContext.fillStyle = this.data.sc;
canvasContext.rect(0,0,this.data.sw, this.data.sh);
canvasContext.fill();
document.body.appendChild(canvas);
canvas.style.position = 'absolute';
canvas.style.zIndex = '1000';
canvas.style.top = '500px';
gl.bindTexture(gl.TEXTURE_2D, this.texture);
this._finalTexture = this.texture;
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas);
}
extendPrototype([BaseElement, TransformElement, WebGLBaseElement, HierarchyElement, FrameElement, RenderableElement], WSolidElement);
WSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;
WSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;
WSolidElement.prototype.renderInnerContent = function() {
var gl = this.gl;
gl.bindTexture(gl.TEXTURE_2D, this.texture);
this._finalTexture = this.texture;
this.renderEffects();
this.renderLayer();
//
};
WSolidElement.prototype.getSize = function() {
return this.layerSize;
}