mirror of
https://github.com/brl/mutter.git
synced 2024-12-25 12:32:05 +00:00
Add cogl_framebuffer_read_pixels()
This adds a public convenience wrapper around cogl_framebuffer_read_pixels_into_bitmap which allocates a temporary CoglBitmap to read into the application's own buffer. This can only be used for the 99% common case where the rowstride is exactly the bpp*width and the source is the color buffer. Reviewed-by: Robert Bragg <robert@linux.intel.com>
This commit is contained in:
parent
35e083303e
commit
5cf2c5762f
@ -2179,6 +2179,33 @@ cogl_framebuffer_read_pixels_into_bitmap (CoglFramebuffer *framebuffer,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
cogl_framebuffer_read_pixels (CoglFramebuffer *framebuffer,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
CoglPixelFormat format,
|
||||||
|
guint8 *pixels)
|
||||||
|
{
|
||||||
|
int bpp = _cogl_pixel_format_get_bytes_per_pixel (format);
|
||||||
|
CoglBitmap *bitmap;
|
||||||
|
gboolean ret;
|
||||||
|
|
||||||
|
bitmap = cogl_bitmap_new_for_data (framebuffer->context,
|
||||||
|
width, height,
|
||||||
|
format,
|
||||||
|
bpp * width, /* rowstride */
|
||||||
|
pixels);
|
||||||
|
ret = cogl_framebuffer_read_pixels_into_bitmap (framebuffer,
|
||||||
|
x, y,
|
||||||
|
COGL_READ_PIXELS_COLOR_BUFFER,
|
||||||
|
bitmap);
|
||||||
|
cogl_object_unref (bitmap);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_cogl_blit_framebuffer (unsigned int src_x,
|
_cogl_blit_framebuffer (unsigned int src_x,
|
||||||
unsigned int src_y,
|
unsigned int src_y,
|
||||||
|
@ -1279,6 +1279,54 @@ cogl_framebuffer_read_pixels_into_bitmap (CoglFramebuffer *framebuffer,
|
|||||||
CoglReadPixelsFlags source,
|
CoglReadPixelsFlags source,
|
||||||
CoglBitmap *bitmap);
|
CoglBitmap *bitmap);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cogl_framebuffer_read_pixels:
|
||||||
|
* @framebuffer: A #CoglFramebuffer
|
||||||
|
* @x: The x position to read from
|
||||||
|
* @y: The y position to read from
|
||||||
|
* @width: The width of the region of rectangles to read
|
||||||
|
* @height: The height of the region of rectangles to read
|
||||||
|
* @format: The pixel format to store the data in
|
||||||
|
* @pixels: The address of the buffer to store the data in
|
||||||
|
*
|
||||||
|
* This is a convenience wrapper around
|
||||||
|
* cogl_framebuffer_read_pixels_into_bitmap() which allocates a
|
||||||
|
* temporary #CoglBitmap to read pixel data directly into the given
|
||||||
|
* buffer. The rowstride of the buffer is assumed to be the width of
|
||||||
|
* the region times the bytes per pixel of the format. The source for
|
||||||
|
* the data is always taken from the color buffer. If you want to use
|
||||||
|
* any other rowstride or source, please use the
|
||||||
|
* cogl_framebuffer_read_pixels_into_bitmap() function directly.
|
||||||
|
*
|
||||||
|
* The implementation of the function looks like this:
|
||||||
|
*
|
||||||
|
* |[
|
||||||
|
* bitmap = cogl_bitmap_new_for_data (context,
|
||||||
|
* width, height,
|
||||||
|
* format,
|
||||||
|
* /<!-- -->* rowstride *<!-- -->/
|
||||||
|
* bpp * width,
|
||||||
|
* pixels);
|
||||||
|
* cogl_framebuffer_read_pixels_into_bitmap (framebuffer,
|
||||||
|
* x, y,
|
||||||
|
* COGL_READ_PIXELS_COLOR_BUFFER,
|
||||||
|
* bitmap);
|
||||||
|
* cogl_object_unref (bitmap);
|
||||||
|
* ]|
|
||||||
|
*
|
||||||
|
* Return value: %TRUE if the read succeeded or %FALSE otherwise.
|
||||||
|
* Since: 1.10
|
||||||
|
* Stability: unstable
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
cogl_framebuffer_read_pixels (CoglFramebuffer *framebuffer,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int width,
|
||||||
|
int height,
|
||||||
|
CoglPixelFormat format,
|
||||||
|
guint8 *pixels);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* cogl_get_draw_framebuffer:
|
* cogl_get_draw_framebuffer:
|
||||||
*
|
*
|
||||||
|
@ -396,6 +396,7 @@ cogl_framebuffer_get_context
|
|||||||
cogl_framebuffer_clear
|
cogl_framebuffer_clear
|
||||||
cogl_framebuffer_clear4f
|
cogl_framebuffer_clear4f
|
||||||
cogl_framebuffer_read_pixels_into_bitmap
|
cogl_framebuffer_read_pixels_into_bitmap
|
||||||
|
cogl_framebuffer_read_pixels
|
||||||
|
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
cogl_framebuffer_draw_primitive
|
cogl_framebuffer_draw_primitive
|
||||||
|
Loading…
Reference in New Issue
Block a user