| 54 | | cairo_pattern_t *pattern = cairo_pattern_create_for_surface (src); |
|---|
| 55 | | cairo_t *cr = cairo_create (dst); |
|---|
| 56 | | cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); |
|---|
| 57 | | cairo_rectangle (cr, rect->x, rect->y, rect->width, rect->height); |
|---|
| 58 | | cairo_clip (cr); |
|---|
| 59 | | cairo_set_source (cr, pattern); |
|---|
| 60 | | cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); |
|---|
| 61 | | cairo_paint (cr); |
|---|
| 62 | | cairo_destroy (cr); |
|---|
| 63 | | cairo_pattern_destroy (pattern); |
|---|
| | 54 | int src_stride = cairo_image_surface_get_stride (src) / 4; |
|---|
| | 55 | int *dst_pixels = (int *) cairo_image_surface_get_data (dst); |
|---|
| | 56 | int *src_pixels = (int *) cairo_image_surface_get_data (src); |
|---|
| | 57 | int ybase = rect->y * src_stride + rect->x; |
|---|
| | 58 | for (int y = 0; y < rect->height; y++) |
|---|
| | 59 | { |
|---|
| | 60 | int idx = ybase; |
|---|
| | 61 | for (int x = 0; x < rect->width; x++) |
|---|
| | 62 | { |
|---|
| | 63 | dst_pixels[idx] = src_pixels[idx]; |
|---|
| | 64 | idx++; |
|---|
| | 65 | } |
|---|
| | 66 | ybase += src_stride; |
|---|
| | 67 | } |
|---|