mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Add vertical alignment setting to text output
Add new valign enum to text_render_options_t and update all callers to plot_text Signed-off-by: Dirk Hohndel <dirk@hohndel.org> [ Fixed spelling, updated to newer base - Linus ] Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
11641095ae
commit
06399d7d2f
1 changed files with 23 additions and 6 deletions
29
profile.c
29
profile.c
|
@ -58,7 +58,8 @@ static int round_depth_up(depth_t depth)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
double r,g,b;
|
double r,g,b;
|
||||||
enum {CENTER,LEFT} allign;
|
enum {CENTER,LEFT} halign;
|
||||||
|
enum {MIDDLE,TOP,BOTTOM} valign;
|
||||||
} text_render_options_t;
|
} text_render_options_t;
|
||||||
|
|
||||||
static void plot_text(struct graphics_context *gc, text_render_options_t *tro,
|
static void plot_text(struct graphics_context *gc, text_render_options_t *tro,
|
||||||
|
@ -76,9 +77,25 @@ static void plot_text(struct graphics_context *gc, text_render_options_t *tro,
|
||||||
|
|
||||||
cairo_text_extents(cr, buffer, &extents);
|
cairo_text_extents(cr, buffer, &extents);
|
||||||
dx = 0;
|
dx = 0;
|
||||||
if (tro->allign == CENTER)
|
switch (tro->halign) {
|
||||||
|
case CENTER:
|
||||||
dx = -(extents.width/2 + extents.x_bearing);
|
dx = -(extents.width/2 + extents.x_bearing);
|
||||||
dy = extents.height * 1.2;
|
break;
|
||||||
|
case LEFT:
|
||||||
|
dx = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (tro->valign) {
|
||||||
|
case TOP:
|
||||||
|
dy = extents.height * 1.2;
|
||||||
|
break;
|
||||||
|
case BOTTOM:
|
||||||
|
dy = -extents.height * 0.8;
|
||||||
|
break;
|
||||||
|
case MIDDLE:
|
||||||
|
dy = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
move_to(gc, x, y);
|
move_to(gc, x, y);
|
||||||
cairo_rel_move_to(cr, dx, dy);
|
cairo_rel_move_to(cr, dx, dy);
|
||||||
|
@ -143,7 +160,7 @@ static struct sample *next_minmax(struct sample *sample, struct sample *end, int
|
||||||
|
|
||||||
static void render_depth_sample(struct graphics_context *gc, struct sample *sample)
|
static void render_depth_sample(struct graphics_context *gc, struct sample *sample)
|
||||||
{
|
{
|
||||||
text_render_options_t tro = {1.0, 0.2, 0.2, CENTER};
|
text_render_options_t tro = {1.0, 0.2, 0.2, CENTER, TOP};
|
||||||
int sec = sample->time.seconds;
|
int sec = sample->time.seconds;
|
||||||
depth_t depth = sample->depth;
|
depth_t depth = sample->depth;
|
||||||
const char *fmt;
|
const char *fmt;
|
||||||
|
@ -363,7 +380,7 @@ static double calculate_airuse(struct dive *dive)
|
||||||
|
|
||||||
static void plot_info(struct dive *dive, struct graphics_context *gc)
|
static void plot_info(struct dive *dive, struct graphics_context *gc)
|
||||||
{
|
{
|
||||||
text_render_options_t tro = {0.2, 1.0, 0.2, LEFT};
|
text_render_options_t tro = {0.2, 1.0, 0.2, LEFT, TOP};
|
||||||
const double liters_per_cuft = 28.317;
|
const double liters_per_cuft = 28.317;
|
||||||
const char *unit;
|
const char *unit;
|
||||||
double airuse;
|
double airuse;
|
||||||
|
@ -418,7 +435,7 @@ static void plot_cylinder_pressure_text(struct dive *dive, struct graphics_conte
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
text_render_options_t tro = {0.2, 1.0, 0.2, LEFT};
|
text_render_options_t tro = {0.2, 1.0, 0.2, LEFT, TOP};
|
||||||
plot_text(gc, &tro, 0, startp.mbar, "%d %s", start, unit);
|
plot_text(gc, &tro, 0, startp.mbar, "%d %s", start, unit);
|
||||||
plot_text(gc, &tro, dive->duration.seconds, endp.mbar,
|
plot_text(gc, &tro, dive->duration.seconds, endp.mbar,
|
||||||
"%d %s", end, unit);
|
"%d %s", end, unit);
|
||||||
|
|
Loading…
Add table
Reference in a new issue