diff options
author | David Reveman <davidr@novell.com> | 2005-01-25 12:21:32 +0000 |
---|---|---|
committer | David Reveman <davidr@novell.com> | 2005-01-25 12:21:32 +0000 |
commit | b35c7a3ee5df3cac5d5060df6f251947f168e8ec (patch) | |
tree | 050195ec4b955767c9eac6a3d65a39697a7c2d6e /src/cairo_glitz_surface.c | |
parent | 71f65cbad209bce433f8aca4809a99216856e53d (diff) |
Track changes to glitz
Diffstat (limited to 'src/cairo_glitz_surface.c')
-rw-r--r-- | src/cairo_glitz_surface.c | 67 |
1 files changed, 30 insertions, 37 deletions
diff --git a/src/cairo_glitz_surface.c b/src/cairo_glitz_surface.c index 69fc82f2..ede5e96f 100644 --- a/src/cairo_glitz_surface.c +++ b/src/cairo_glitz_surface.c @@ -333,7 +333,7 @@ _glitz_surface_create_solid (glitz_surface_t *other, if (format == NULL) return NULL; - surface = glitz_surface_create (drawable, format, 1, 1); + surface = glitz_surface_create (drawable, format, 1, 1, 0, NULL); if (surface == NULL) return NULL; @@ -355,7 +355,6 @@ _glitz_ensure_target (glitz_surface_t *surface) glitz_drawable_format_t templ; glitz_format_t *format; glitz_drawable_t *pbuffer; - glitz_pbuffer_attributes_t attributes; unsigned long mask; int i; @@ -397,21 +396,13 @@ _glitz_ensure_target (glitz_surface_t *surface) if (!dformat) return CAIRO_INT_STATUS_UNSUPPORTED; - attributes.width = glitz_surface_get_width (surface); - attributes.height = glitz_surface_get_height (surface); - mask = GLITZ_PBUFFER_WIDTH_MASK | GLITZ_PBUFFER_HEIGHT_MASK; - - pbuffer = glitz_create_pbuffer_drawable (drawable, dformat, - &attributes, mask); + pbuffer = + glitz_create_pbuffer_drawable (drawable, dformat, + glitz_surface_get_width (surface), + glitz_surface_get_height (surface)); if (!pbuffer) return CAIRO_INT_STATUS_UNSUPPORTED; - if (glitz_drawable_get_width (pbuffer) < attributes.width || - glitz_drawable_get_height (pbuffer) < attributes.height) { - glitz_drawable_destroy (pbuffer); - return CAIRO_INT_STATUS_UNSUPPORTED; - } - glitz_surface_attach (surface, pbuffer, GLITZ_DRAWABLE_BUFFER_FRONT_COLOR, 0, 0); @@ -457,7 +448,7 @@ _cairo_glitz_surface_create_similar (void *abstract_src, if (gformat == NULL) return NULL; - surface = glitz_surface_create (drawable, gformat, width, height); + surface = glitz_surface_create (drawable, gformat, width, height, 0, NULL); if (surface == NULL) return NULL; @@ -510,7 +501,8 @@ _glitz_composite (glitz_operator_t op, int width, int height, glitz_buffer_t *geometry, - glitz_geometry_format_t *format) + glitz_geometry_format_t *format, + int count) { if (_glitz_ensure_target (dst)) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -518,9 +510,10 @@ _glitz_composite (glitz_operator_t op, if (glitz_surface_get_status (dst)) return CAIRO_STATUS_NO_TARGET_SURFACE; - glitz_set_geometry (dst, - 0, 0, - format, geometry); + if (geometry) { + glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_VERTEX, format, geometry); + glitz_set_array (dst, 0, 2, count, 0, 0); + } glitz_composite (op, src, @@ -531,7 +524,7 @@ _glitz_composite (glitz_operator_t op, dst_x, dst_y, width, height); - glitz_set_geometry (dst, 0, 0, NULL, NULL); + glitz_set_geometry (dst, GLITZ_GEOMETRY_TYPE_NONE, NULL, NULL); if (glitz_surface_get_status (dst) == GLITZ_STATUS_NOT_SUPPORTED) return CAIRO_INT_STATUS_UNSUPPORTED; @@ -589,7 +582,7 @@ _cairo_glitz_surface_composite (cairo_operator_t op, mask_x, mask_y, dst_x, dst_y, width, height, - NULL, NULL); + NULL, NULL, 0); if (src_clone) cairo_surface_destroy (&src_clone->base); @@ -624,16 +617,16 @@ _cairo_glitz_surface_fill_rectangles (void *abstract_dst, glitz_buffer_t *buffer; glitz_geometry_format_t gf; cairo_int_status_t status; - int width, height; + int width, height, count; void *data; - gf.mode = GLITZ_GEOMETRY_MODE_DIRECT; - gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_SHARP; - gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS; - gf.type = GLITZ_DATA_TYPE_FLOAT; - gf.first = 0; - gf.count = n_rects * 4; + gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS; + gf.vertex.type = GLITZ_DATA_TYPE_FLOAT; + gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t); + gf.vertex.attributes = 0; + count = n_rects * 4; + data = malloc (n_rects * 8 * sizeof (glitz_float_t)); if (!data) return CAIRO_STATUS_NO_MEMORY; @@ -678,7 +671,7 @@ _cairo_glitz_surface_fill_rectangles (void *abstract_dst, 0, 0, 0, 0, width, height, - buffer, &gf); + buffer, &gf, count); glitz_surface_destroy (solid); glitz_buffer_destroy (buffer); @@ -715,7 +708,7 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op, glitz_buffer_t *buffer; glitz_geometry_format_t gf; cairo_int_status_t status; - int x_dst, y_dst, x_rel, y_rel, width, height; + int x_dst, y_dst, x_rel, y_rel, width, height, count; void *data; if (op == CAIRO_OPERATOR_SATURATE) @@ -724,12 +717,12 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op, if (generic_src->backend != dst->base.backend) return CAIRO_INT_STATUS_UNSUPPORTED; - gf.mode = GLITZ_GEOMETRY_MODE_DIRECT; - gf.edge_hint = GLITZ_GEOMETRY_EDGE_HINT_GOOD_SMOOTH; - gf.primitive = GLITZ_GEOMETRY_PRIMITIVE_QUADS; - gf.type = GLITZ_DATA_TYPE_FLOAT; - gf.first = 0; - gf.count = n_traps * 4; + gf.vertex.primitive = GLITZ_PRIMITIVE_QUADS; + gf.vertex.type = GLITZ_DATA_TYPE_FLOAT; + gf.vertex.bytes_per_vertex = 2 * sizeof (glitz_float_t); + gf.vertex.attributes = 0; + + count = n_traps * 4; data = malloc (n_traps * 8 * sizeof (glitz_float_t)); if (!data) @@ -795,7 +788,7 @@ _cairo_glitz_surface_composite_trapezoids (cairo_operator_t op, 0, 0, x_dst, y_dst, width, height, - buffer, &gf); + buffer, &gf, count); if (mask) glitz_surface_destroy (mask); |