mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-23 05:31:53 +02:00
sch2fig/cairo.c (cr_text): implement
This commit is contained in:
parent
6889fe8691
commit
d5756a2e0e
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "style.h"
|
#include "style.h"
|
||||||
|
#include "text.h"
|
||||||
#include "gfx.h"
|
#include "gfx.h"
|
||||||
#include "cairo.h"
|
#include "cairo.h"
|
||||||
|
|
||||||
@ -144,7 +145,35 @@ void cr_arc(void *ctx, int x, int y, int r, int sa, int ea,
|
|||||||
void cr_text(void *ctx, int x, int y, const char *s, unsigned size,
|
void cr_text(void *ctx, int x, int y, const char *s, unsigned size,
|
||||||
enum text_align align, int rot, unsigned color, unsigned layer)
|
enum text_align align, int rot, unsigned color, unsigned layer)
|
||||||
{
|
{
|
||||||
// struct cairo_ctx *cc = ctx;
|
struct cairo_ctx *cc = ctx;
|
||||||
|
cairo_text_extents_t ext;
|
||||||
|
cairo_matrix_t m;
|
||||||
|
|
||||||
|
cairo_set_font_size(cc->cr, cx(size) * 1.3);
|
||||||
|
cairo_text_extents(cc->cr, s, &ext);
|
||||||
|
|
||||||
|
set_color(cc->cr, color);
|
||||||
|
|
||||||
|
cairo_move_to(cc->cr, cx(x), cy(y));
|
||||||
|
|
||||||
|
cairo_get_matrix(cc->cr, &m);
|
||||||
|
cairo_rotate(cc->cr, -rot / 180.0 * M_PI);
|
||||||
|
|
||||||
|
switch (align) {
|
||||||
|
case text_min:
|
||||||
|
break;
|
||||||
|
case text_mid:
|
||||||
|
cairo_rel_move_to(cc->cr, -ext.width / 2.0, 0);
|
||||||
|
break;
|
||||||
|
case text_max:
|
||||||
|
cairo_rel_move_to(cc->cr, -ext.width, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
cairo_show_text(cc->cr, s);
|
||||||
|
cairo_set_matrix(cc->cr, &m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -158,9 +187,12 @@ void *cr_init(const char *template, int n_vars, const char **vars)
|
|||||||
cc = alloc_type(struct cairo_ctx);
|
cc = alloc_type(struct cairo_ctx);
|
||||||
cc->s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 2000, 1414);
|
cc->s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 2000, 1414);
|
||||||
cc->cr = cairo_create(cc->s);
|
cc->cr = cairo_create(cc->s);
|
||||||
|
|
||||||
set_color(cc->cr, COLOR_WHITE);
|
set_color(cc->cr, COLOR_WHITE);
|
||||||
cairo_paint(cc->cr);
|
cairo_paint(cc->cr);
|
||||||
|
|
||||||
|
cairo_select_font_face(cc->cr, "Helvetica", CAIRO_FONT_SLANT_NORMAL,
|
||||||
|
CAIRO_FONT_WEIGHT_BOLD);
|
||||||
cairo_set_line_width(cc->cr, 3);
|
cairo_set_line_width(cc->cr, 3);
|
||||||
|
|
||||||
return cc;
|
return cc;
|
||||||
|
Loading…
Reference in New Issue
Block a user