Clipping

Clipping — Fuctions for manipulating a stack of clipping regions

Synopsis

                    CoglClipStackState;
void                cogl_clip_push                      (float x_offset,
                                                         float y_offset,
                                                         float width,
                                                         float height);
void                cogl_clip_push_from_path            (void);
void                cogl_clip_push_from_path_preserve   (void);
void                cogl_clip_push_window_rect          (float x_offset,
                                                         float y_offset,
                                                         float width,
                                                         float height);
void                cogl_clip_pop                       (void);
void                cogl_clip_stack_save                (void);
void                cogl_clip_stack_restore             (void);
void                cogl_clip_ensure                    (void);

Description

To support clipping your geometry to rectangles or paths Cogl exposes a stack based API whereby each clip region you push onto the stack is intersected with the previous region.

Details

CoglClipStackState

typedef struct {
  /* Stack of stacks */
  GSList *stacks;

  gboolean stack_dirty;
  gboolean stencil_used;
} CoglClipStackState;


cogl_clip_push ()

void                cogl_clip_push                      (float x_offset,
                                                         float y_offset,
                                                         float width,
                                                         float height);

Specifies a rectangular clipping area for all subsequent drawing operations. Any drawing commands that extend outside the rectangle will be clipped so that only the portion inside the rectangle will be displayed. The rectangle dimensions are transformed by the current model-view matrix.

The rectangle is intersected with the current clip region. To undo the effect of this function, call cogl_clip_pop().

x_offset :

left edge of the clip rectangle

y_offset :

top edge of the clip rectangle

width :

width of the clip rectangle

height :

height of the clip rectangle

cogl_clip_push_from_path ()

void                cogl_clip_push_from_path            (void);

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


cogl_clip_push_from_path_preserve ()

void                cogl_clip_push_from_path_preserve   (void);

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


cogl_clip_push_window_rect ()

void                cogl_clip_push_window_rect          (float x_offset,
                                                         float y_offset,
                                                         float width,
                                                         float height);

Specifies a rectangular clipping area for all subsequent drawing operations. Any drawing commands that extend outside the rectangle will be clipped so that only the portion inside the rectangle will be displayed. The rectangle dimensions are not transformed by the current model-view matrix.

The rectangle is intersected with the current clip region. To undo the effect of this function, call cogl_clip_pop().

x_offset :

left edge of the clip rectangle in window coordinates

y_offset :

top edge of the clip rectangle in window coordinates

width :

width of the clip rectangle

height :

height of the clip rectangle

cogl_clip_pop ()

void                cogl_clip_pop                       (void);

Reverts the clipping region to the state before the last call to cogl_clip_push().


cogl_clip_stack_save ()

void                cogl_clip_stack_save                (void);

Save the entire state of the clipping stack and then clear all clipping. The previous state can be returned to with cogl_clip_stack_restore(). Each call to cogl_clip_push() after this must be matched by a call to cogl_clip_pop() before calling cogl_clip_stack_restore().

Since 0.8.2


cogl_clip_stack_restore ()

void                cogl_clip_stack_restore             (void);

Restore the state of the clipping stack that was previously saved by cogl_clip_stack_save().

Since 0.8.2


cogl_clip_ensure ()

void                cogl_clip_ensure                    (void);

Ensures that the current clipping region has been set in GL. This will automatically be called before any Cogl primitives but it maybe be neccessary to call if you are using raw GL calls with clipping.

Since 1.0