2010-04-14 18:41:08 +00:00
|
|
|
/*
|
|
|
|
* Cogl
|
|
|
|
*
|
2014-02-22 01:28:54 +00:00
|
|
|
* A Low Level GPU Graphics and Utilities API
|
2010-04-14 18:41:08 +00:00
|
|
|
*
|
|
|
|
* Copyright (C) 2007,2008,2009,2010 Intel Corporation.
|
|
|
|
*
|
2014-02-22 01:28:54 +00:00
|
|
|
* Permission is hereby granted, free of charge, to any person
|
|
|
|
* obtaining a copy of this software and associated documentation
|
|
|
|
* files (the "Software"), to deal in the Software without
|
|
|
|
* restriction, including without limitation the rights to use, copy,
|
|
|
|
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
|
|
* of the Software, and to permit persons to whom the Software is
|
|
|
|
* furnished to do so, subject to the following conditions:
|
2010-04-14 18:41:08 +00:00
|
|
|
*
|
2014-02-22 01:28:54 +00:00
|
|
|
* The above copyright notice and this permission notice shall be
|
|
|
|
* included in all copies or substantial portions of the Software.
|
2010-04-14 18:41:08 +00:00
|
|
|
*
|
2014-02-22 01:28:54 +00:00
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
|
|
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
|
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
* SOFTWARE.
|
2010-04-14 18:41:08 +00:00
|
|
|
*
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
|
|
#include "config.h"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
#include <math.h>
|
|
|
|
|
|
|
|
#include <glib.h>
|
|
|
|
|
2013-12-04 16:12:25 +00:00
|
|
|
#include "cogl-clip-state.h"
|
2010-04-14 18:41:08 +00:00
|
|
|
#include "cogl-clip-stack.h"
|
2010-11-04 22:25:52 +00:00
|
|
|
#include "cogl-context-private.h"
|
2010-04-14 18:41:08 +00:00
|
|
|
#include "cogl-framebuffer-private.h"
|
|
|
|
#include "cogl-journal-private.h"
|
|
|
|
#include "cogl-util.h"
|
2010-04-22 12:48:49 +00:00
|
|
|
#include "cogl-matrix-private.h"
|
2012-03-06 18:21:28 +00:00
|
|
|
#include "cogl1-context.h"
|
2012-02-18 01:19:17 +00:00
|
|
|
|
2010-04-14 18:41:08 +00:00
|
|
|
void
|
|
|
|
cogl_clip_push_window_rectangle (int x_offset,
|
|
|
|
int y_offset,
|
|
|
|
int width,
|
|
|
|
int height)
|
|
|
|
{
|
2011-11-18 12:25:38 +00:00
|
|
|
cogl_framebuffer_push_scissor_clip (cogl_get_draw_framebuffer (),
|
|
|
|
x_offset, y_offset, width, height);
|
2010-04-14 18:41:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* XXX: This is deprecated API */
|
|
|
|
void
|
|
|
|
cogl_clip_push_window_rect (float x_offset,
|
|
|
|
float y_offset,
|
|
|
|
float width,
|
|
|
|
float height)
|
|
|
|
{
|
|
|
|
cogl_clip_push_window_rectangle (x_offset, y_offset, width, height);
|
|
|
|
}
|
|
|
|
|
|
|
|
void
|
|
|
|
cogl_clip_push_rectangle (float x_1,
|
|
|
|
float y_1,
|
|
|
|
float x_2,
|
|
|
|
float y_2)
|
|
|
|
{
|
2011-11-18 12:25:38 +00:00
|
|
|
cogl_framebuffer_push_rectangle_clip (cogl_get_draw_framebuffer (),
|
|
|
|
x_1, y_1, x_2, y_2);
|
2010-04-14 18:41:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* XXX: Deprecated API */
|
|
|
|
void
|
|
|
|
cogl_clip_push (float x_offset,
|
|
|
|
float y_offset,
|
|
|
|
float width,
|
|
|
|
float height)
|
|
|
|
{
|
|
|
|
cogl_clip_push_rectangle (x_offset,
|
|
|
|
y_offset,
|
|
|
|
x_offset + width,
|
|
|
|
y_offset + height);
|
|
|
|
}
|
|
|
|
|
2011-10-03 13:39:05 +00:00
|
|
|
void
|
|
|
|
cogl_clip_push_primitive (CoglPrimitive *primitive,
|
|
|
|
float bounds_x1,
|
|
|
|
float bounds_y1,
|
|
|
|
float bounds_x2,
|
|
|
|
float bounds_y2)
|
|
|
|
{
|
2011-11-18 12:25:38 +00:00
|
|
|
cogl_framebuffer_push_primitive_clip (cogl_get_draw_framebuffer (),
|
|
|
|
primitive,
|
|
|
|
bounds_x1,
|
|
|
|
bounds_y1,
|
|
|
|
bounds_x2,
|
|
|
|
bounds_y2);
|
2011-10-03 13:39:05 +00:00
|
|
|
}
|
|
|
|
|
2011-11-18 12:25:38 +00:00
|
|
|
void
|
|
|
|
cogl_clip_pop (void)
|
2010-04-14 18:41:08 +00:00
|
|
|
{
|
2011-11-18 12:25:38 +00:00
|
|
|
cogl_framebuffer_pop_clip (cogl_get_draw_framebuffer ());
|
2010-04-14 18:41:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2011-11-18 12:25:38 +00:00
|
|
|
cogl_clip_stack_save (void)
|
2010-04-14 18:41:08 +00:00
|
|
|
{
|
2013-12-04 16:12:25 +00:00
|
|
|
/* This function was just used to temporarily switch the clip stack
|
|
|
|
* when using an offscreen buffer. This is no longer needed because
|
|
|
|
* each framebuffer maintains its own clip stack. The function is
|
|
|
|
* documented to do nothing since version 1.2 */
|
2010-04-14 18:41:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void
|
2011-11-18 12:25:38 +00:00
|
|
|
cogl_clip_stack_restore (void)
|
2010-04-14 18:41:08 +00:00
|
|
|
{
|
2013-12-04 16:12:25 +00:00
|
|
|
/* Do nothing. See cogl_clip_stack_save() */
|
2010-04-14 18:41:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* XXX: This should never have been made public API! */
|
|
|
|
void
|
|
|
|
cogl_clip_ensure (void)
|
|
|
|
{
|
2011-11-03 13:04:26 +00:00
|
|
|
/* Do nothing.
|
|
|
|
*
|
|
|
|
* This API shouldn't be used by anyone and the documented semantics
|
|
|
|
* are basically vague enough that we can get away with doing
|
|
|
|
* nothing here.
|
|
|
|
*/
|
2010-04-14 18:41:08 +00:00
|
|
|
}
|