cogl-clip-state: Adapt to experimental cogl2 API.
The current clip state implementation couldn't be used in conjunction with the CoglPath experimental API. http://bugzilla.clutter-project.org/show_bug.cgi?id=2594 Signed-off-by: Neil Roberts <neil@linux.intel.com>
This commit is contained in:
parent
9cba5b83bd
commit
0b9aa1fa24
@ -77,11 +77,13 @@ cogl_public_h = \
|
|||||||
$(srcdir)/cogl-indices.h \
|
$(srcdir)/cogl-indices.h \
|
||||||
$(srcdir)/cogl-attribute.h \
|
$(srcdir)/cogl-attribute.h \
|
||||||
$(srcdir)/cogl-primitive.h \
|
$(srcdir)/cogl-primitive.h \
|
||||||
|
$(srcdir)/cogl-clip-state.h \
|
||||||
$(srcdir)/cogl.h \
|
$(srcdir)/cogl.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
cogl_experimental_h = \
|
cogl_experimental_h = \
|
||||||
$(srcdir)/cogl2-path.h \
|
$(srcdir)/cogl2-path.h \
|
||||||
|
$(srcdir)/cogl2-clip-state.h \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
||||||
# driver sources
|
# driver sources
|
||||||
@ -182,8 +184,11 @@ cogl_sources_c = \
|
|||||||
$(srcdir)/cogl-bitmap-pixbuf.c \
|
$(srcdir)/cogl-bitmap-pixbuf.c \
|
||||||
$(srcdir)/cogl-clip-stack.h \
|
$(srcdir)/cogl-clip-stack.h \
|
||||||
$(srcdir)/cogl-clip-stack.c \
|
$(srcdir)/cogl-clip-stack.c \
|
||||||
|
$(srcdir)/cogl-clip-state-private.h \
|
||||||
$(srcdir)/cogl-clip-state.h \
|
$(srcdir)/cogl-clip-state.h \
|
||||||
$(srcdir)/cogl-clip-state.c \
|
$(srcdir)/cogl-clip-state.c \
|
||||||
|
$(srcdir)/cogl2-clip-state.h \
|
||||||
|
$(srcdir)/cogl2-clip-state.c \
|
||||||
$(srcdir)/cogl-feature-private.h \
|
$(srcdir)/cogl-feature-private.h \
|
||||||
$(srcdir)/cogl-feature-private.c \
|
$(srcdir)/cogl-feature-private.c \
|
||||||
$(srcdir)/cogl-fixed.c \
|
$(srcdir)/cogl-fixed.c \
|
||||||
|
53
clutter/cogl/cogl/cogl-clip-state-private.h
Normal file
53
clutter/cogl/cogl/cogl-clip-state-private.h
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* Cogl
|
||||||
|
*
|
||||||
|
* An object oriented GL/GLES Abstraction/Utility Layer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007,2008,2009,2010 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __COGL_CLIP_STATE_PRIVATE_H
|
||||||
|
#define __COGL_CLIP_STATE_PRIVATE_H
|
||||||
|
|
||||||
|
#include "cogl-clip-stack.h"
|
||||||
|
|
||||||
|
typedef struct _CoglClipState CoglClipState;
|
||||||
|
|
||||||
|
struct _CoglClipState
|
||||||
|
{
|
||||||
|
/* Stack of CoglClipStacks */
|
||||||
|
GSList *stacks;
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
_cogl_clip_state_init (CoglClipState *state);
|
||||||
|
|
||||||
|
void
|
||||||
|
_cogl_clip_state_destroy (CoglClipState *state);
|
||||||
|
|
||||||
|
void
|
||||||
|
_cogl_clip_state_flush (CoglClipState *clip_state);
|
||||||
|
|
||||||
|
CoglClipStack *
|
||||||
|
_cogl_clip_state_get_stack (CoglClipState *clip_state);
|
||||||
|
|
||||||
|
void
|
||||||
|
_cogl_clip_state_set_stack (CoglClipState *clip_state,
|
||||||
|
CoglClipStack *clip_stack);
|
||||||
|
|
||||||
|
#endif /* __COGL_CLIP_STATE_PRIVATE_H */
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
#include "cogl.h"
|
#include "cogl.h"
|
||||||
#include "cogl-clip-stack.h"
|
#include "cogl-clip-stack.h"
|
||||||
#include "cogl-clip-state.h"
|
#include "cogl-clip-state-private.h"
|
||||||
#include "cogl-context.h"
|
#include "cogl-context.h"
|
||||||
#include "cogl-internal.h"
|
#include "cogl-internal.h"
|
||||||
#include "cogl-framebuffer-private.h"
|
#include "cogl-framebuffer-private.h"
|
||||||
@ -109,29 +109,17 @@ cogl_clip_push (float x_offset,
|
|||||||
void
|
void
|
||||||
cogl_clip_push_from_path_preserve (void)
|
cogl_clip_push_from_path_preserve (void)
|
||||||
{
|
{
|
||||||
CoglFramebuffer *framebuffer;
|
|
||||||
CoglClipState *clip_state;
|
|
||||||
CoglMatrix modelview_matrix;
|
|
||||||
|
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
cogl2_clip_push_from_path (ctx->current_path);
|
||||||
framebuffer = _cogl_get_draw_buffer ();
|
|
||||||
clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
|
|
||||||
|
|
||||||
cogl_get_modelview_matrix (&modelview_matrix);
|
|
||||||
|
|
||||||
clip_state->stacks->data =
|
|
||||||
_cogl_clip_stack_push_from_path (clip_state->stacks->data,
|
|
||||||
ctx->current_path,
|
|
||||||
&modelview_matrix);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef cogl_clip_push_from_path
|
||||||
void
|
void
|
||||||
cogl_clip_push_from_path (void)
|
cogl_clip_push_from_path (void)
|
||||||
{
|
{
|
||||||
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
_COGL_GET_CONTEXT (ctx, NO_RETVAL);
|
||||||
|
|
||||||
cogl_clip_push_from_path_preserve ();
|
cogl2_clip_push_from_path (ctx->current_path);
|
||||||
|
|
||||||
cogl_object_unref (ctx->current_path);
|
cogl_object_unref (ctx->current_path);
|
||||||
ctx->current_path = cogl2_path_new ();
|
ctx->current_path = cogl2_path_new ();
|
||||||
|
@ -21,33 +21,30 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if !defined(__COGL_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
|
||||||
|
#error "Only <cogl/cogl.h> can be included directly."
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __COGL_CLIP_STATE_H
|
#ifndef __COGL_CLIP_STATE_H
|
||||||
#define __COGL_CLIP_STATE_H
|
#define __COGL_CLIP_STATE_H
|
||||||
|
|
||||||
#include "cogl-clip-stack.h"
|
#include <cogl/cogl-types.h>
|
||||||
|
|
||||||
typedef struct _CoglClipState CoglClipState;
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
struct _CoglClipState
|
|
||||||
{
|
|
||||||
/* Stack of CoglClipStacks */
|
|
||||||
GSList *stacks;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cogl_clip_push_from_path:
|
||||||
|
*
|
||||||
|
* Sets a new clipping area using the current path. The current path
|
||||||
|
* is then cleared. The clipping area is intersected with the previous
|
||||||
|
* clipping area. To restore the previous clipping area, call
|
||||||
|
* cogl_clip_pop().
|
||||||
|
*
|
||||||
|
* Since: 1.0
|
||||||
|
*/
|
||||||
void
|
void
|
||||||
_cogl_clip_state_init (CoglClipState *state);
|
cogl_clip_push_from_path (void);
|
||||||
|
|
||||||
void
|
G_END_DECLS
|
||||||
_cogl_clip_state_destroy (CoglClipState *state);
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_clip_state_flush (CoglClipState *clip_state);
|
|
||||||
|
|
||||||
CoglClipStack *
|
|
||||||
_cogl_clip_state_get_stack (CoglClipState *clip_state);
|
|
||||||
|
|
||||||
void
|
|
||||||
_cogl_clip_state_set_stack (CoglClipState *clip_state,
|
|
||||||
CoglClipStack *clip_stack);
|
|
||||||
|
|
||||||
#endif /* __COGL_CLIP_STATE_H */
|
#endif /* __COGL_CLIP_STATE_H */
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
#include "cogl-handle.h"
|
#include "cogl-handle.h"
|
||||||
#include "cogl-matrix-stack.h"
|
#include "cogl-matrix-stack.h"
|
||||||
#include "cogl-clip-state.h"
|
#include "cogl-clip-state-private.h"
|
||||||
#include "cogl-journal-private.h"
|
#include "cogl-journal-private.h"
|
||||||
|
|
||||||
typedef enum _CoglFramebufferType {
|
typedef enum _CoglFramebufferType {
|
||||||
|
@ -53,8 +53,10 @@
|
|||||||
#include <cogl/cogl-primitives.h>
|
#include <cogl/cogl-primitives.h>
|
||||||
#ifdef COGL_ENABLE_EXPERIMENTAL_2_0_API
|
#ifdef COGL_ENABLE_EXPERIMENTAL_2_0_API
|
||||||
#include <cogl/cogl2-path.h>
|
#include <cogl/cogl2-path.h>
|
||||||
|
#include <cogl/cogl2-clip-state.h>
|
||||||
#else
|
#else
|
||||||
#include <cogl/cogl-path.h>
|
#include <cogl/cogl-path.h>
|
||||||
|
#include <cogl/cogl-clip-state.h>
|
||||||
#endif
|
#endif
|
||||||
#include <cogl/cogl-shader.h>
|
#include <cogl/cogl-shader.h>
|
||||||
#include <cogl/cogl-texture.h>
|
#include <cogl/cogl-texture.h>
|
||||||
@ -857,19 +859,6 @@ cogl_clip_push_rectangle (float x0,
|
|||||||
float x1,
|
float x1,
|
||||||
float y1);
|
float y1);
|
||||||
|
|
||||||
/**
|
|
||||||
* cogl_clip_push_from_path:
|
|
||||||
*
|
|
||||||
* Sets a new clipping area using the current path. The current path
|
|
||||||
* is then cleared. The clipping area is intersected with the previous
|
|
||||||
* clipping area. To restore the previous clipping area, call
|
|
||||||
* cogl_clip_pop().
|
|
||||||
*
|
|
||||||
* Since: 1.0
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
cogl_clip_push_from_path (void);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_clip_push_from_path_preserve:
|
* cogl_clip_push_from_path_preserve:
|
||||||
*
|
*
|
||||||
|
49
clutter/cogl/cogl/cogl2-clip-state.c
Normal file
49
clutter/cogl/cogl/cogl2-clip-state.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
/*
|
||||||
|
* Cogl
|
||||||
|
*
|
||||||
|
* An object oriented GL/GLES Abstraction/Utility Layer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007,2008,2009,2010 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "cogl.h"
|
||||||
|
#include "cogl-clip-state-private.h"
|
||||||
|
#include "cogl-framebuffer-private.h"
|
||||||
|
#include "cogl-journal-private.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
cogl2_clip_push_from_path (CoglPath *path)
|
||||||
|
{
|
||||||
|
CoglFramebuffer *framebuffer;
|
||||||
|
CoglClipState *clip_state;
|
||||||
|
CoglMatrix modelview_matrix;
|
||||||
|
|
||||||
|
framebuffer = _cogl_get_draw_buffer ();
|
||||||
|
clip_state = _cogl_framebuffer_get_clip_state (framebuffer);
|
||||||
|
|
||||||
|
cogl_get_modelview_matrix (&modelview_matrix);
|
||||||
|
|
||||||
|
clip_state->stacks->data =
|
||||||
|
_cogl_clip_stack_push_from_path (clip_state->stacks->data,
|
||||||
|
path,
|
||||||
|
&modelview_matrix);
|
||||||
|
}
|
52
clutter/cogl/cogl/cogl2-clip-state.h
Normal file
52
clutter/cogl/cogl/cogl2-clip-state.h
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/*
|
||||||
|
* Cogl
|
||||||
|
*
|
||||||
|
* An object oriented GL/GLES Abstraction/Utility Layer
|
||||||
|
*
|
||||||
|
* Copyright (C) 2007,2008,2009,2010 Intel Corporation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if !defined(__COGL_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
|
||||||
|
#error "Only <cogl/cogl.h> can be included directly."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef __COGL2_CLIP_STATE_H
|
||||||
|
#define __COGL2_CLIP_STATE_H
|
||||||
|
|
||||||
|
#include <cogl/cogl-types.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define cogl_clip_push_from_path cogl2_clip_push_from_path
|
||||||
|
/**
|
||||||
|
* cogl_clip_push_from_path:
|
||||||
|
* @path: The path to clip with.
|
||||||
|
*
|
||||||
|
* Sets a new clipping area using @path. The clipping area is intersected
|
||||||
|
* with the previous clipping area. To restore the previous clipping area,
|
||||||
|
* call cogl_clip_pop().
|
||||||
|
*
|
||||||
|
* Since: 1.8
|
||||||
|
* Stability: Unstable
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
cogl_clip_push_from_path (CoglPath *path);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __COGL2_CLIP_STATE_H */
|
Loading…
Reference in New Issue
Block a user