X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=print.c;h=bdebcfe15634fcf0bdda5fbe51e211ab42130495;hb=77a903a6bb26d60e1736f7d5c118b598916b37f2;hp=8d3bc6150cc6514d1d6d8f5d40f37dcfeeb89c56;hpb=184eecf7c0dbcbdecba097411828afaac30773aa;p=ext%2Fsubsurface.git diff --git a/print.c b/print.c index 8d3bc61..bdebcfe 100644 --- a/print.c +++ b/print.c @@ -26,10 +26,12 @@ static void set_font(PangoLayout *layout, PangoFontDescription *font, double siz */ static void show_dive_text(struct dive *dive, cairo_t *cr, double w, double h, PangoFontDescription *font) { - int len, width, height, maxwidth, maxheight; + double depth; + const char *unit; + int len, decimals, width, height, maxwidth, maxheight; PangoLayout *layout; struct tm *tm; - char buffer[1024], divenr[20]; + char buffer[80], divenr[20], *people; maxwidth = w * PANGO_SCALE; maxheight = h * PANGO_SCALE * 0.9; @@ -42,7 +44,6 @@ static void show_dive_text(struct dive *dive, cairo_t *cr, double w, double h, P if (dive->number) snprintf(divenr, sizeof(divenr), "Dive #%d - ", dive->number); - tm = gmtime(&dive->when); len = snprintf(buffer, sizeof(buffer), "%s%s, %s %d, %d %d:%02d", @@ -59,19 +60,21 @@ static void show_dive_text(struct dive *dive, cairo_t *cr, double w, double h, P cairo_move_to(cr, 0, 0); pango_cairo_show_layout(cr, layout); - /* - * This is still problematic: a long dive location will clash - * with the depth/duration information. Need to mask that or - * create a box or something. - */ + people = dive->buddy; + if (!people || !*people) { + people = dive->divemaster; + if (!people) + people = ""; + } + + depth = get_depth_units(dive->maxdepth.mm, &decimals, &unit); snprintf(buffer, sizeof(buffer), - "Max depth: %d ft\n" - "Duration: %d:%02d\n" + "Max depth: %.*f %s\n" + "Duration: %d min\n" "%s", - to_feet(dive->maxdepth), - dive->duration.seconds / 60, - dive->duration.seconds % 60, - dive->buddy ? :""); + decimals, depth, unit, + (dive->duration.seconds+59) / 60, + people); set_font(layout, font, FONT_SMALL, PANGO_ALIGN_RIGHT); pango_layout_set_text(layout, buffer, -1); @@ -104,8 +107,8 @@ static void show_dive_text(struct dive *dive, cairo_t *cr, double w, double h, P * Show the dive notes */ if (dive->notes) { - /* Move down by the size of the location (1.5) */ - height = height * 3 / 2; + /* Move down by the size of the location (x2) */ + height = height * 2; cairo_translate(cr, 0, height / (double) PANGO_SCALE); maxheight -= height; @@ -124,12 +127,13 @@ static void show_dive_text(struct dive *dive, cairo_t *cr, double w, double h, P static void show_dive_profile(struct dive *dive, cairo_t *cr, double w, double h) { + cairo_rectangle_int_t drawing_area = { w/20.0, h/20.0, w, h}; struct graphics_context gc = { .printer = 1, .cr = cr }; cairo_save(cr); - plot(&gc, w, h, dive); + plot(&gc, &drawing_area, dive); cairo_restore(cr); }