DrawGlInfo.h revision 8f3b8e32993d190a26c70c839a63d8ce4c3b16d9
108aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy/* 208aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * Copyright (C) 2011 The Android Open Source Project 308aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * 408aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 508aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * you may not use this file except in compliance with the License. 608aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * You may obtain a copy of the License at 708aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * 808aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 908aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * 1008aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * Unless required by applicable law or agreed to in writing, software 1108aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 1208aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * See the License for the specific language governing permissions and 1408aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * limitations under the License. 1508aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy */ 1608aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 1708aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy#ifndef ANDROID_HWUI_DRAW_GL_INFO_H 1808aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy#define ANDROID_HWUI_DRAW_GL_INFO_H 1908aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 2008aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guynamespace android { 2108aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guynamespace uirenderer { 2208aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 2308aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy/** 2408aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * Structure used by OpenGLRenderer::callDrawGLFunction() to pass and 2508aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy * receive data from OpenGL functors. 2608aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy */ 2708aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guystruct DrawGlInfo { 2808aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy // Input: current clip rect 2908aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy int clipLeft; 3008aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy int clipTop; 3108aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy int clipRight; 3208aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy int clipBottom; 3308aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 3408aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy // Input: is the render target an FBO 3508aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy bool isLayer; 3608aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 3708aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy // Input: current transform matrix, in OpenGL format 3808aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy float transform[16]; 3908aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 4008aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy // Output: dirty region to redraw 4108aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy float dirtyLeft; 4208aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy float dirtyTop; 4308aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy float dirtyRight; 4408aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy float dirtyBottom; 456554943a1dd6854c0f4976900956e556767b49e1Romain Guy 466554943a1dd6854c0f4976900956e556767b49e1Romain Guy /** 478f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy * Values used as the "what" parameter of the functor. 488f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy */ 498f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy enum Mode { 508f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy // Indicates that the functor is called to perform a draw 518f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy kModeDraw, 528f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy // Indicates the the functor is called only to perform 538f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy // processing and that no draw should be attempted 548f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy kModeProcess 558f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy }; 568f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy 578f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy /** 586554943a1dd6854c0f4976900956e556767b49e1Romain Guy * Values used by OpenGL functors to tell the framework 596554943a1dd6854c0f4976900956e556767b49e1Romain Guy * what to do next. 606554943a1dd6854c0f4976900956e556767b49e1Romain Guy */ 616554943a1dd6854c0f4976900956e556767b49e1Romain Guy enum Status { 626554943a1dd6854c0f4976900956e556767b49e1Romain Guy // The functor is done 638f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy kStatusDone = 0x0, 646554943a1dd6854c0f4976900956e556767b49e1Romain Guy // The functor is requesting a redraw (the clip rect 656554943a1dd6854c0f4976900956e556767b49e1Romain Guy // used by the redraw is specified by DrawGlInfo.) 666554943a1dd6854c0f4976900956e556767b49e1Romain Guy // The rest of the UI might redraw too. 678f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy kStatusDraw = 0x1, 686554943a1dd6854c0f4976900956e556767b49e1Romain Guy // The functor needs to be invoked again but will 696554943a1dd6854c0f4976900956e556767b49e1Romain Guy // not redraw. Only the functor is invoked again 706554943a1dd6854c0f4976900956e556767b49e1Romain Guy // (unless another functor requests a redraw.) 718f3b8e32993d190a26c70c839a63d8ce4c3b16d9Romain Guy kStatusInvoke = 0x2 726554943a1dd6854c0f4976900956e556767b49e1Romain Guy }; 7308aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy}; // struct DrawGlInfo 7408aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 7508aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy}; // namespace uirenderer 7608aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy}; // namespace android 7708aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy 7808aa2cbd5e62e7ca140f78f8bea0477a19880fd9Romain Guy#endif // ANDROID_HWUI_DRAW_GL_INFO_H 79