mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-12-23 17:47:44 +02:00
eeshow/cro.c (cro_img): draw on image for external use
This commit is contained in:
parent
13828eff94
commit
bcec5c005f
44
eeshow/cro.c
44
eeshow/cro.c
@ -526,6 +526,50 @@ void cro_canvas_draw(struct cro_ctx *cc, cairo_t *cr, int xo, int yo,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ----- Image for external use (simplified API) --------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t *cro_img(struct cro_ctx *ctx, int xo, int yo, int w, int h,
|
||||||
|
float scale, cairo_t **res_cr, int *res_stride)
|
||||||
|
{
|
||||||
|
int stride;
|
||||||
|
uint32_t *data;
|
||||||
|
cairo_t *cr;
|
||||||
|
cairo_surface_t *s;
|
||||||
|
|
||||||
|
stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, w);
|
||||||
|
data = alloc_size(stride * h);
|
||||||
|
|
||||||
|
s = cairo_image_surface_create_for_data((unsigned char *) data,
|
||||||
|
CAIRO_FORMAT_RGB24, w, h, stride);
|
||||||
|
cr = cairo_create(s);
|
||||||
|
|
||||||
|
cairo_set_source_rgb(cr, 1, 1, 1);
|
||||||
|
cairo_paint(cr);
|
||||||
|
|
||||||
|
cairo_select_font_face(cr, "Helvetica", CAIRO_FONT_SLANT_NORMAL,
|
||||||
|
CAIRO_FONT_WEIGHT_BOLD);
|
||||||
|
cairo_set_line_width(cr, 2);
|
||||||
|
cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND);
|
||||||
|
|
||||||
|
ctx->cr = cr;
|
||||||
|
ctx->s = s;
|
||||||
|
ctx->xo = xo;
|
||||||
|
ctx->yo = yo;
|
||||||
|
ctx->scale = scale;
|
||||||
|
ctx->color_override = COLOR_NONE;
|
||||||
|
|
||||||
|
record_replay(&ctx->record);
|
||||||
|
|
||||||
|
if (res_cr)
|
||||||
|
*res_cr = cr;
|
||||||
|
if (res_stride)
|
||||||
|
*res_stride = stride;
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* ----- Operations -------------------------------------------------------- */
|
/* ----- Operations -------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
@ -43,4 +43,7 @@ void cro_canvas_prepare(cairo_t *cr);
|
|||||||
void cro_canvas_draw(struct cro_ctx *cc, cairo_t *cr,
|
void cro_canvas_draw(struct cro_ctx *cc, cairo_t *cr,
|
||||||
int x, int y, float scale);
|
int x, int y, float scale);
|
||||||
|
|
||||||
|
uint32_t *cro_img(struct cro_ctx *ctx, int x0, int yo, int w, int h,
|
||||||
|
float scale, cairo_t **res_cr, int *res_stride);
|
||||||
|
|
||||||
#endif /* !CRO_H */
|
#endif /* !CRO_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user