diff options
| author | Přemysl Eric Janouch <p@janouch.name> | 2021-10-28 06:14:21 +0200 | 
|---|---|---|
| committer | Přemysl Eric Janouch <p@janouch.name> | 2021-10-28 06:14:21 +0200 | 
| commit | 2bc9fe4f1dca8f5cfe82408961b81b8d9b03e1f1 (patch) | |
| tree | 251f1474da9646ce8a97023551fd4aba654da2e3 | |
| parent | bd12c0502ab9a411cffc3a6ccc5ff8f97e9117b1 (diff) | |
| download | logdiag-2bc9fe4f1dca8f5cfe82408961b81b8d9b03e1f1.tar.gz logdiag-2bc9fe4f1dca8f5cfe82408961b81b8d9b03e1f1.tar.xz logdiag-2bc9fe4f1dca8f5cfe82408961b81b8d9b03e1f1.zip  | |
Fix scaling to fit paper
| -rw-r--r-- | src/ld-window-main.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/src/ld-window-main.c b/src/ld-window-main.c index 6616168..9108f0f 100644 --- a/src/ld-window-main.c +++ b/src/ld-window-main.c @@ -1052,7 +1052,7 @@ on_action_print_draw_page (GtkPrintOperation *operation,  	LdDiagramView *view;  	gdouble area_width_mm, area_height_mm;  	gdouble diagram_width_mm, diagram_height_mm; -	gdouble diagram_to_export_units, scale; +	gdouble diagram_to_export_units, scale, width_fit, height_fit;  	LdRectangle bounds;  	cr = gtk_print_context_get_cairo_context (context); @@ -1067,11 +1067,13 @@ on_action_print_draw_page (GtkPrintOperation *operation,  	diagram_width_mm = bounds.width * scale;  	diagram_height_mm = bounds.height * scale; -	/* Scale to fit the paper. */ -	if (area_width_mm < diagram_width_mm) -		scale *= area_width_mm / diagram_width_mm; -	if (area_height_mm < diagram_height_mm) -		scale *= area_height_mm / diagram_height_mm; +	/* Scale to fit the paper, taking care to not divide by zero. */ +	width_fit = (area_width_mm < diagram_width_mm) +		? area_width_mm / diagram_width_mm : 1; +	height_fit = (area_height_mm < diagram_height_mm) +		? area_height_mm / diagram_height_mm : 1; + +	scale *= MIN (width_fit, height_fit);  	cairo_scale (cr, scale, scale);  	cairo_translate (cr, -bounds.x, -bounds.y);  | 
