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
91ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian
923f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} /* namespace android */
93