Beispiel #1
0
cairo_int_status_t
_cairo_gl_composite_emit_triangle_as_tristrip (cairo_gl_context_t	*ctx,
					       cairo_gl_composite_t	*setup,
					       const cairo_point_t	 triangle[3])
{
    _cairo_gl_composite_prepare_buffer (ctx, 3);

    _cairo_gl_composite_emit_tristrip_vertex (ctx, &triangle[0]);
    _cairo_gl_composite_emit_tristrip_vertex (ctx, &triangle[1]);
    _cairo_gl_composite_emit_tristrip_vertex (ctx, &triangle[2]);
    return _cairo_gl_composite_append_vertex_indices (ctx, 3);
}
cairo_int_status_t
_cairo_gl_composite_emit_triangle_as_tristrip (cairo_gl_context_t	*ctx,
					       cairo_gl_composite_t	*setup,
					       const cairo_point_t	 triangle[3])
{
    _cairo_gl_composite_prepare_buffer (ctx, 3,
					CAIRO_GL_PRIMITIVE_TYPE_TRISTRIPS);

    _cairo_gl_composite_emit_point (ctx, &triangle[0], 0);
    _cairo_gl_composite_emit_point (ctx, &triangle[1], 0);
    _cairo_gl_composite_emit_point (ctx, &triangle[2], 0);
    return _cairo_gl_composite_append_vertex_indices (ctx, 3);
}
Beispiel #3
0
cairo_int_status_t
_cairo_gl_composite_emit_point_as_single_line (cairo_gl_context_t  *ctx,
					       const cairo_point_t point[2])
{
    int num_indices = 2;
    if (ctx->draw_mode != CAIRO_GL_LINES)
	_cairo_gl_composite_flush (ctx);

    ctx->draw_mode = CAIRO_GL_LINES;

    _cairo_gl_composite_prepare_buffer (ctx, 2,
					CAIRO_GL_PRIMITIVE_TYPE_TRISTRIPS);

    _cairo_gl_composite_emit_point (ctx, &point[0], 0);
    _cairo_gl_composite_emit_point (ctx, &point[1], 0);
    return _cairo_gl_composite_append_vertex_indices (ctx, num_indices, FALSE);
}
Beispiel #4
0
cairo_int_status_t
_cairo_gl_composite_emit_quad_as_tristrip (cairo_gl_context_t	*ctx,
					   cairo_gl_composite_t	*setup,
					   const cairo_point_t	quad[4])
{
    _cairo_gl_composite_prepare_buffer (ctx, 4);

    _cairo_gl_composite_emit_tristrip_vertex (ctx, &quad[0]);
    _cairo_gl_composite_emit_tristrip_vertex (ctx, &quad[1]);

    /* Cairo stores quad vertices in counter-clockwise order, but we need to
       emit them from top to bottom in the triangle strip, so we need to reverse
       the order of the last two vertices. */
    _cairo_gl_composite_emit_tristrip_vertex (ctx, &quad[3]);
    _cairo_gl_composite_emit_tristrip_vertex (ctx, &quad[2]);

    return _cairo_gl_composite_append_vertex_indices (ctx, 4);
}
Beispiel #5
0
cairo_int_status_t
_cairo_gl_composite_emit_triangle_as_tristrip (cairo_gl_context_t	*ctx,
					       cairo_gl_composite_t	*setup,
					       const cairo_point_t	 triangle[3])
{
    if (ctx->draw_mode != CAIRO_GL_VERTEX) {
	_cairo_gl_composite_flush (ctx);
	ctx->draw_mode = CAIRO_GL_VERTEX;
    }

    _cairo_gl_composite_prepare_buffer (ctx, 3,
					CAIRO_GL_PRIMITIVE_TYPE_TRISTRIPS);

    _cairo_gl_composite_emit_point (ctx, &triangle[0], 0);
    _cairo_gl_composite_emit_point (ctx, &triangle[1], 0);
    _cairo_gl_composite_emit_point (ctx, &triangle[2], 0);
    return _cairo_gl_composite_append_vertex_indices (ctx, 3, TRUE);
}
Beispiel #6
0
cairo_int_status_t
_cairo_gl_composite_emit_quad_as_tristrip (cairo_gl_context_t	*ctx,
					   cairo_gl_composite_t	*setup,
					   const cairo_point_t	quad[4])
{
    if (ctx->draw_mode != CAIRO_GL_VERTEX) {
	_cairo_gl_composite_flush (ctx);
	ctx->draw_mode = CAIRO_GL_VERTEX;
    }

    _cairo_gl_composite_prepare_buffer (ctx, 4,
					CAIRO_GL_PRIMITIVE_TYPE_TRISTRIPS);

    _cairo_gl_composite_emit_point (ctx, &quad[0], 0);
    _cairo_gl_composite_emit_point (ctx, &quad[1], 0);

    /* Cairo stores quad vertices in counter-clockwise order, but we need to
       emit them from top to bottom in the triangle strip, so we need to reverse
       the order of the last two vertices. */
    _cairo_gl_composite_emit_point (ctx, &quad[3], 0);
    _cairo_gl_composite_emit_point (ctx, &quad[2], 0);

    return _cairo_gl_composite_append_vertex_indices (ctx, 4, TRUE);
}