13f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian/* 23f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * Copyright 2013 The Android Open Source Project 33f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * 43f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 53f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * you may not use this file except in compliance with the License. 63f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * You may obtain a copy of the License at 73f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * 83f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 93f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * 103f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * Unless required by applicable law or agreed to in writing, software 113f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 123f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * See the License for the specific language governing permissions and 143f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian * limitations under the License. 153f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian */ 163f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 173f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian#include <stdint.h> 183f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian#include <string.h> 193f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 203f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian#include <utils/TypeHelpers.h> 213f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 223f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian#include <GLES2/gl2.h> 233f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian#include <GLES2/gl2ext.h> 243f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 253f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian#include "Description.h" 263f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 273f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopiannamespace android { 283f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 293f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopianDescription::Description() : 303f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mUniformsDirty(true) { 313f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mPlaneAlpha = 1.0f; 32ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian mPremultipliedAlpha = false; 333f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mOpaque = true; 3449457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian mTextureEnabled = false; 35ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian mColorMatrixEnabled = false; 363f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 373f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian memset(mColor, 0, sizeof(mColor)); 383f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 393f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 403f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopianDescription::~Description() { 413f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 423f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 433f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setPlaneAlpha(GLclampf planeAlpha) { 443f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian if (planeAlpha != mPlaneAlpha) { 453f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mUniformsDirty = true; 463f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mPlaneAlpha = planeAlpha; 473f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian } 483f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 493f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 503f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setPremultipliedAlpha(bool premultipliedAlpha) { 513f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian if (premultipliedAlpha != mPremultipliedAlpha) { 523f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mPremultipliedAlpha = premultipliedAlpha; 533f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian } 543f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 553f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 563f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setOpaque(bool opaque) { 573f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian if (opaque != mOpaque) { 583f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mOpaque = opaque; 593f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian } 603f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 613f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 6249457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopianvoid Description::setTexture(const Texture& texture) { 6349457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian mTexture = texture; 6449457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian mTextureEnabled = true; 6549457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian mUniformsDirty = true; 663f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 673f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 683f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::disableTexture() { 6949457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian mTextureEnabled = false; 703f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 713f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 723f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) { 733f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mColor[0] = red; 743f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mColor[1] = green; 753f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mColor[2] = blue; 763f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mColor[3] = alpha; 773f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mUniformsDirty = true; 783f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 793f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 80a8c386f1c36e916c1df18d41a22104d655a89817Mathias Agopianvoid Description::setProjectionMatrix(const mat4& mtx) { 81a8c386f1c36e916c1df18d41a22104d655a89817Mathias Agopian mProjectionMatrix = mtx; 823f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian mUniformsDirty = true; 833f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} 843f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian 85ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopianvoid Description::setColorMatrix(const mat4& mtx) { 86ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian const mat4 identity; 87ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian mColorMatrix = mtx; 88ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian mColorMatrixEnabled = (mtx != identity); 89ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian} 90ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian 91f008799d3753e52c10849824ff8146985ea66284Dan Stozaconst mat4& Description::getColorMatrix() const { 92f008799d3753e52c10849824ff8146985ea66284Dan Stoza return mColorMatrix; 93f008799d3753e52c10849824ff8146985ea66284Dan Stoza} 94f008799d3753e52c10849824ff8146985ea66284Dan Stoza 95ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian 963f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} /* namespace android */ 97