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