Description.cpp revision a8c386f1c36e916c1df18d41a22104d655a89817
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;
323f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mPremultipliedAlpha = true;
333f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mOpaque = true;
3449457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mTextureEnabled = false;
353f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
363f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    memset(mColor, 0, sizeof(mColor));
373f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
383f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
393f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopianDescription::~Description() {
403f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
413f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
423f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setPlaneAlpha(GLclampf planeAlpha) {
433f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    if (planeAlpha != mPlaneAlpha) {
443f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mUniformsDirty = true;
453f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mPlaneAlpha = planeAlpha;
463f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
473f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
483f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
493f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setPremultipliedAlpha(bool premultipliedAlpha) {
503f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    if (premultipliedAlpha != mPremultipliedAlpha) {
513f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mPremultipliedAlpha = premultipliedAlpha;
523f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
533f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
543f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
553f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setOpaque(bool opaque) {
563f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    if (opaque != mOpaque) {
573f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mOpaque = opaque;
583f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
593f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
603f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
6149457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopianvoid Description::setTexture(const Texture& texture) {
6249457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mTexture = texture;
6349457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mTextureEnabled = true;
6449457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mUniformsDirty = true;
653f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
663f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
673f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::disableTexture() {
6849457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mTextureEnabled = false;
693f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
703f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
713f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
723f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[0] = red;
733f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[1] = green;
743f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[2] = blue;
753f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[3] = alpha;
763f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mUniformsDirty = true;
773f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
783f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
79a8c386f1c36e916c1df18d41a22104d655a89817Mathias Agopianvoid Description::setProjectionMatrix(const mat4& mtx) {
80a8c386f1c36e916c1df18d41a22104d655a89817Mathias Agopian    mProjectionMatrix = mtx;
813f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mUniformsDirty = true;
823f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
833f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
843f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} /* namespace android */
85