Package arc.graphics.g2d
Class ScissorStack
java.lang.Object
arc.graphics.g2d.ScissorStack
A stack of
Rect
objects to be used for clipping via GL20.glScissor(int, int, int, int)
. When a new
Rectangle is pushed onto the stack, it will be merged with the current top of stack. The minimum area of overlap is then set as
the real top of the stack.-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
calculateScissors
(Camera camera, float viewportX, float viewportY, float viewportWidth, float viewportHeight, Mat batchTransform, Rect area, Rect scissor) static void
calculateScissors
(Camera camera, Mat batchTransform, Rect area, Rect scissor) Calculates a scissor rectangle using 0,0,Core.graphics.getWidth(),Core.graphics.getHeight() as the viewport.static Rect
static Rect
peek()
static Rect
pop()
Pops the current scissor rectangle from the stack and sets the new scissor area to the new top of stack rectangle.static boolean
Pushes a new scissorRect
onto the stack, merging it with the current top of the stack.static boolean
-
Constructor Details
-
ScissorStack
public ScissorStack()
-
-
Method Details
-
push
Pushes a new scissorRect
onto the stack, merging it with the current top of the stack. The minimal area of overlap between the top of stack rectangle and the provided rectangle is pushed onto the stack. This will invokeGL20.glScissor(int, int, int, int)
with the final top of stack rectangle. In case no scissor is yet on the stack this will also enableGL20.GL_SCISSOR_TEST
automatically.Any drawing should be flushed before pushing scissors.
- Returns:
- true if the scissors were pushed. false if the scissor area was zero, in this case the scissors were not pushed and no drawing should occur.
-
pop
Pops the current scissor rectangle from the stack and sets the new scissor area to the new top of stack rectangle. In case no more rectangles are on the stack,GL20.GL_SCISSOR_TEST
is disabled.Any drawing should be flushed before popping scissors.
-
pushWorld
-
peek
-
calculateScissors
Calculates a scissor rectangle using 0,0,Core.graphics.getWidth(),Core.graphics.getHeight() as the viewport. -
calculateScissors
public static void calculateScissors(Camera camera, float viewportX, float viewportY, float viewportWidth, float viewportHeight, Mat batchTransform, Rect area, Rect scissor) Calculates a scissor rectangle in OpenGL ES window coordinates from aCamera
, a transformationMat
and an axis alignedRect
. The rectangle will get transformed by the camera and transform matrices and is then projected to screen coordinates. Note that only axis aligned rectangles will work with this method. If either the Camera or the Matrix4 have rotational components, the output of this method will not be suitable forGL20.glScissor(int, int, int, int)
. -
getViewport
- Returns:
- the current viewport in OpenGL ES window coordinates based on the currently applied scissor
-