mirror of
https://github.com/brl/mutter.git
synced 2025-06-14 01:09:30 +00:00
matrix-stack: make CoglMatrixStack public
We have found several times now when writing code using Cogl that it would really help if Cogl's matrix stack api was public as a utility api. In Rig for example we want to avoid redundant arithmetic when deriving the matrices of entities used to render and we aren't able to simply use the framebuffer's matrix stack to achieve this. Also when implementing cairo-cogl we found that it would be really useful if we could have a matrix stack utility api. (cherry picked from commit d17a01fd935d88fab96fe6cc0b906c84026c0067)
This commit is contained in:
@ -116,8 +116,8 @@ _cogl_framebuffer_init (CoglFramebuffer *framebuffer,
|
||||
framebuffer->viewport_age_for_scissor_workaround = -1;
|
||||
framebuffer->dither_enabled = TRUE;
|
||||
|
||||
framebuffer->modelview_stack = _cogl_matrix_stack_new ();
|
||||
framebuffer->projection_stack = _cogl_matrix_stack_new ();
|
||||
framebuffer->modelview_stack = cogl_matrix_stack_new (ctx);
|
||||
framebuffer->projection_stack = cogl_matrix_stack_new (ctx);
|
||||
|
||||
framebuffer->dirty_bitmasks = TRUE;
|
||||
|
||||
@ -1894,7 +1894,7 @@ cogl_framebuffer_push_matrix (CoglFramebuffer *framebuffer)
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_push (modelview_stack);
|
||||
cogl_matrix_stack_push (modelview_stack);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -1906,7 +1906,7 @@ cogl_framebuffer_pop_matrix (CoglFramebuffer *framebuffer)
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_pop (modelview_stack);
|
||||
cogl_matrix_stack_pop (modelview_stack);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -1918,7 +1918,7 @@ cogl_framebuffer_identity_matrix (CoglFramebuffer *framebuffer)
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_load_identity (modelview_stack);
|
||||
cogl_matrix_stack_load_identity (modelview_stack);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -1933,7 +1933,7 @@ cogl_framebuffer_scale (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_scale (modelview_stack, x, y, z);
|
||||
cogl_matrix_stack_scale (modelview_stack, x, y, z);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -1948,7 +1948,7 @@ cogl_framebuffer_translate (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_translate (modelview_stack, x, y, z);
|
||||
cogl_matrix_stack_translate (modelview_stack, x, y, z);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -1964,7 +1964,7 @@ cogl_framebuffer_rotate (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_rotate (modelview_stack, angle, x, y, z);
|
||||
cogl_matrix_stack_rotate (modelview_stack, angle, x, y, z);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -1977,7 +1977,7 @@ cogl_framebuffer_rotate_quaternion (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_rotate_quaternion (modelview_stack, quaternion);
|
||||
cogl_matrix_stack_rotate_quaternion (modelview_stack, quaternion);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -1990,7 +1990,7 @@ cogl_framebuffer_rotate_euler (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_rotate_euler (modelview_stack, euler);
|
||||
cogl_matrix_stack_rotate_euler (modelview_stack, euler);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -2003,7 +2003,7 @@ cogl_framebuffer_transform (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_multiply (modelview_stack, matrix);
|
||||
cogl_matrix_stack_multiply (modelview_stack, matrix);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -2048,15 +2048,15 @@ cogl_framebuffer_frustum (CoglFramebuffer *framebuffer,
|
||||
* so we need to flush all journaled primitives first... */
|
||||
_cogl_framebuffer_flush_journal (framebuffer);
|
||||
|
||||
_cogl_matrix_stack_load_identity (projection_stack);
|
||||
cogl_matrix_stack_load_identity (projection_stack);
|
||||
|
||||
_cogl_matrix_stack_frustum (projection_stack,
|
||||
left,
|
||||
right,
|
||||
bottom,
|
||||
top,
|
||||
z_near,
|
||||
z_far);
|
||||
cogl_matrix_stack_frustum (projection_stack,
|
||||
left,
|
||||
right,
|
||||
bottom,
|
||||
top,
|
||||
z_near,
|
||||
z_far);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -2082,7 +2082,7 @@ cogl_framebuffer_orthographic (CoglFramebuffer *framebuffer,
|
||||
|
||||
cogl_matrix_init_identity (&ortho);
|
||||
cogl_matrix_orthographic (&ortho, x_1, y_1, x_2, y_2, near, far);
|
||||
_cogl_matrix_stack_set (projection_stack, &ortho);
|
||||
cogl_matrix_stack_set (projection_stack, &ortho);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -2094,7 +2094,7 @@ _cogl_framebuffer_push_projection (CoglFramebuffer *framebuffer)
|
||||
{
|
||||
CoglMatrixStack *projection_stack =
|
||||
_cogl_framebuffer_get_projection_stack (framebuffer);
|
||||
_cogl_matrix_stack_push (projection_stack);
|
||||
cogl_matrix_stack_push (projection_stack);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -2106,7 +2106,7 @@ _cogl_framebuffer_pop_projection (CoglFramebuffer *framebuffer)
|
||||
{
|
||||
CoglMatrixStack *projection_stack =
|
||||
_cogl_framebuffer_get_projection_stack (framebuffer);
|
||||
_cogl_matrix_stack_pop (projection_stack);
|
||||
cogl_matrix_stack_pop (projection_stack);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -2119,7 +2119,7 @@ cogl_framebuffer_get_modelview_matrix (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixEntry *modelview_entry =
|
||||
_cogl_framebuffer_get_modelview_entry (framebuffer);
|
||||
_cogl_matrix_entry_get (modelview_entry, matrix);
|
||||
cogl_matrix_entry_get (modelview_entry, matrix);
|
||||
_COGL_MATRIX_DEBUG_PRINT (matrix);
|
||||
}
|
||||
|
||||
@ -2129,7 +2129,7 @@ cogl_framebuffer_set_modelview_matrix (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixStack *modelview_stack =
|
||||
_cogl_framebuffer_get_modelview_stack (framebuffer);
|
||||
_cogl_matrix_stack_set (modelview_stack, matrix);
|
||||
cogl_matrix_stack_set (modelview_stack, matrix);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
@ -2144,7 +2144,7 @@ cogl_framebuffer_get_projection_matrix (CoglFramebuffer *framebuffer,
|
||||
{
|
||||
CoglMatrixEntry *projection_entry =
|
||||
_cogl_framebuffer_get_projection_entry (framebuffer);
|
||||
_cogl_matrix_entry_get (projection_entry, matrix);
|
||||
cogl_matrix_entry_get (projection_entry, matrix);
|
||||
_COGL_MATRIX_DEBUG_PRINT (matrix);
|
||||
}
|
||||
|
||||
@ -2159,7 +2159,7 @@ cogl_framebuffer_set_projection_matrix (CoglFramebuffer *framebuffer,
|
||||
* so we need to flush all journaled primitives first... */
|
||||
_cogl_framebuffer_flush_journal (framebuffer);
|
||||
|
||||
_cogl_matrix_stack_set (projection_stack, matrix);
|
||||
cogl_matrix_stack_set (projection_stack, matrix);
|
||||
|
||||
if (framebuffer->context->current_draw_buffer == framebuffer)
|
||||
framebuffer->context->current_draw_buffer_changes |=
|
||||
|
Reference in New Issue
Block a user