165fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik/* 265fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * Copyright (C) 2015 The Android Open Source Project 365fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * 465fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * Licensed under the Apache License, Version 2.0 (the "License"); 565fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * you may not use this file except in compliance with the License. 665fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * You may obtain a copy of the License at 765fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * 865fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * http://www.apache.org/licenses/LICENSE-2.0 965fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * 1065fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * Unless required by applicable law or agreed to in writing, software 1165fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * distributed under the License is distributed on an "AS IS" BASIS, 1265fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1365fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * See the License for the specific language governing permissions and 1465fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik * limitations under the License. 1565fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik */ 1665fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik#ifndef RENDERSTATE_SCISSOR_H 1765fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik#define RENDERSTATE_SCISSOR_H 1865fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik 1965fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik#include <GLES2/gl2.h> 2065fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik#include <GLES2/gl2ext.h> 2165fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik 2265fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craiknamespace android { 2365fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craiknamespace uirenderer { 2465fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik 25e4db79de127cfe961195f52907af8451026eaa20Chris Craikclass Rect; 26e4db79de127cfe961195f52907af8451026eaa20Chris Craik 2765fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craikclass Scissor { 2865fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik friend class RenderState; 2965fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craikpublic: 3065fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik bool setEnabled(bool enabled); 3165fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik bool set(GLint x, GLint y, GLint width, GLint height); 32e4db79de127cfe961195f52907af8451026eaa20Chris Craik void set(int viewportHeight, const Rect& clip); 3365fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik void reset(); 3465fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik bool isEnabled() { return mEnabled; } 35117bdbcfa3e8306dad21e7e01fa71b00cdfa7265Chris Craik void dump(); 3665fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craikprivate: 3796a5c4c7bab6718524de7253da8309143ab48befChris Craik Scissor(); 3865fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik void invalidate(); 3965fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik bool mEnabled; 4065fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik GLint mScissorX; 4165fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik GLint mScissorY; 4265fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik GLint mScissorWidth; 4365fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik GLint mScissorHeight; 4465fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik}; 4565fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik 4665fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik} /* namespace uirenderer */ 4765fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik} /* namespace android */ 4865fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik 4965fe5eeb19e2e15c8b1ee91e8a2dcf0c25e48ca6Chris Craik#endif // RENDERSTATE_SCISSOR_H 50