Description.cpp revision 49457ac092071a8f964f7f69156093657ccdc3d0
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    const GLfloat m[16] = {1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1 };
373f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    memset(mColor, 0, sizeof(mColor));
383f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    memcpy(mProjectionMatrix, m, sizeof(mProjectionMatrix));
393f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
403f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
413f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopianDescription::~Description() {
423f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
433f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
443f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setPlaneAlpha(GLclampf planeAlpha) {
453f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    if (planeAlpha != mPlaneAlpha) {
463f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mUniformsDirty = true;
473f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mPlaneAlpha = planeAlpha;
483f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
493f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
503f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
513f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setPremultipliedAlpha(bool premultipliedAlpha) {
523f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    if (premultipliedAlpha != mPremultipliedAlpha) {
533f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mPremultipliedAlpha = premultipliedAlpha;
543f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
553f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
563f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
573f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setOpaque(bool opaque) {
583f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    if (opaque != mOpaque) {
593f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mOpaque = opaque;
603f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
613f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
623f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
6349457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopianvoid Description::setTexture(const Texture& texture) {
6449457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mTexture = texture;
6549457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mTextureEnabled = true;
6649457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mUniformsDirty = true;
673f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
683f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
693f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::disableTexture() {
7049457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    mTextureEnabled = false;
713f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
723f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
733f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) {
743f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[0] = red;
753f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[1] = green;
763f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[2] = blue;
773f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mColor[3] = alpha;
783f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mUniformsDirty = true;
793f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
803f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
813f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianvoid Description::setProjectionMatrix(GLfloat const* mtx) {
823f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    memcpy(mProjectionMatrix, mtx, sizeof(mProjectionMatrix));
833f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    mUniformsDirty = true;
843f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
853f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
863f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian} /* namespace android */
87