1edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project/* 2edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 4edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * you may not use this file except in compliance with the License. 6edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * You may obtain a copy of the License at 7edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 8edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * 10edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * See the License for the specific language governing permissions and 14edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project * limitations under the License. 15edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project */ 16edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 17edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <stdlib.h> 18edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <stdint.h> 19edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <sys/types.h> 20edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 21edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/Errors.h> 22edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include <utils/Log.h> 23edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 243330b203039dea366d4981db1408a460134b2d2cMathias Agopian#include <ui/GraphicBuffer.h> 253330b203039dea366d4981db1408a460134b2d2cMathias Agopian 26edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include "LayerDim.h" 27edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include "SurfaceFlinger.h" 28edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project#include "DisplayHardware/DisplayHardware.h" 29edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 30edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectnamespace android { 31edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// --------------------------------------------------------------------------- 32edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 33edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectLayerDim::LayerDim(SurfaceFlinger* flinger, DisplayID display, 3496f0819f81293076e652792794a961543e6750d7Mathias Agopian const sp<Client>& client) 3596f0819f81293076e652792794a961543e6750d7Mathias Agopian : LayerBaseClient(flinger, display, client) 36edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 37edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 38edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 39edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source ProjectLayerDim::~LayerDim() 40edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 41edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 42edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 43edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Projectvoid LayerDim::onDraw(const Region& clip) const 44edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project{ 45edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project const State& s(drawingState()); 46f74e8e0602100e048c13ea262f0c19c3b8738b6fMathias Agopian if (s.alpha>0) { 47edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project const DisplayHardware& hw(graphicPlane(0).displayHardware()); 481f7bec634f19c123410a5155c8d282e177c01930Mathias Agopian const GLfloat alpha = s.alpha/255.0f; 49076b1cc3a9b90aa5b381a1ed268ca0b548444c9bMathias Agopian const uint32_t fbHeight = hw.getHeight(); 50c492e67810814bf86301abffe1d31598b775cf45Mathias Agopian glDisable(GL_TEXTURE_EXTERNAL_OES); 51c492e67810814bf86301abffe1d31598b775cf45Mathias Agopian glDisable(GL_TEXTURE_2D); 520d1561275e80073807ac04728951782d943f8882Mathias Agopian 530d1561275e80073807ac04728951782d943f8882Mathias Agopian if (s.alpha == 0xFF) { 540d1561275e80073807ac04728951782d943f8882Mathias Agopian glDisable(GL_BLEND); 550d1561275e80073807ac04728951782d943f8882Mathias Agopian } else { 560d1561275e80073807ac04728951782d943f8882Mathias Agopian glEnable(GL_BLEND); 570d1561275e80073807ac04728951782d943f8882Mathias Agopian glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 580d1561275e80073807ac04728951782d943f8882Mathias Agopian } 590d1561275e80073807ac04728951782d943f8882Mathias Agopian 601f7bec634f19c123410a5155c8d282e177c01930Mathias Agopian glColor4f(0, 0, 0, alpha); 611f7bec634f19c123410a5155c8d282e177c01930Mathias Agopian 62bce26daaaf4ea245ccb09d75a378d294e518d945Mathias Agopian glVertexPointer(2, GL_FLOAT, 0, mVertices); 63f74e8e0602100e048c13ea262f0c19c3b8738b6fMathias Agopian glDrawArrays(GL_TRIANGLE_FAN, 0, 4); 64945ebbfd3dc07c7168602a1603eeb76ea7425376Mathias Agopian 65c492e67810814bf86301abffe1d31598b775cf45Mathias Agopian glDisable(GL_BLEND); 66c492e67810814bf86301abffe1d31598b775cf45Mathias Agopian glDisableClientState(GL_TEXTURE_COORD_ARRAY); 67edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project } 68edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project} 69edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 70edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project// --------------------------------------------------------------------------- 71edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project 72edbf3b6af777b721cd2a1ef461947e51e88241e1The Android Open Source Project}; // namespace android 73