diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/book.c | 13 | ||||
-rw-r--r-- | src/page-view.c | 12 | ||||
-rw-r--r-- | src/page.c | 10 | ||||
-rw-r--r-- | src/scanner.c | 4 |
4 files changed, 23 insertions, 16 deletions
@@ -454,7 +454,7 @@ book_save_pdf (Book *book, GFile *file, GError **error) Page *page; GdkPixbuf *image; guchar *pixels, *data, *compressed_data; - gchar *command; + gchar *command, width_buffer[G_ASCII_DTOSTR_BUF_SIZE], height_buffer[G_ASCII_DTOSTR_BUF_SIZE]; const gchar *color_space, *filter = NULL; float page_width, page_height; @@ -620,7 +620,9 @@ book_save_pdf (Book *book, GFile *file, GError **error) pdf_printf (writer, "/Type /Page\n"); pdf_printf (writer, "/Parent %d 0 R\n", pages_number); pdf_printf (writer, "/Resources << /XObject << /Im%d %d 0 R >> >>\n", i, number+1); - pdf_printf (writer, "/MediaBox [ 0 0 %.2f %.2f ]\n", page_width, page_height); + pdf_printf (writer, "/MediaBox [ 0 0 %s %s ]\n", + g_ascii_formatd (width_buffer, sizeof (width_buffer), "%.2f", page_width), + g_ascii_formatd (height_buffer, sizeof (height_buffer), "%.2f", page_height)); pdf_printf (writer, "/Contents %d 0 R\n", number+2); pdf_printf (writer, ">>\n"); pdf_printf (writer, "endobj\n"); @@ -649,9 +651,12 @@ book_save_pdf (Book *book, GFile *file, GError **error) /* Page contents */ command = g_strdup_printf ("q\n" - "%f 0 0 %f 0 0 cm\n" + "%s 0 0 %s 0 0 cm\n" "/Im%d Do\n" - "Q", page_width, page_height, i); + "Q", + g_ascii_formatd (width_buffer, sizeof (width_buffer), "%f", page_width), + g_ascii_formatd (height_buffer, sizeof (height_buffer), "%f", page_height), + i); pdf_printf (writer, "\n"); number = pdf_start_object (writer); pdf_printf (writer, "%d 0 obj\n", number); diff --git a/src/page-view.c b/src/page-view.c index 40823f6..eae49e6 100644 --- a/src/page-view.c +++ b/src/page-view.c @@ -166,18 +166,18 @@ get_pixel (Page *page, gint x, gint y, guchar *pixel) case TOP_TO_BOTTOM: break; case BOTTOM_TO_TOP: - x = page_get_scan_width (page) - x; - y = page_get_scan_height (page) - y; + x = page_get_scan_width (page) - x - 1; + y = page_get_scan_height (page) - y - 1; break; case LEFT_TO_RIGHT: t = x; - x = page_get_scan_width (page) - y; + x = page_get_scan_width (page) - y - 1; y = t; break; case RIGHT_TO_LEFT: t = x; x = y; - y = page_get_scan_height (page) - t; + y = page_get_scan_height (page) - t - 1; break; } @@ -370,7 +370,7 @@ set_pixel (Page *page, blue += p[2] * (T - t); } - if (b != B) { + if (b != B) { get_pixel (page, x, B, p); red += p[0] * (b - B); green += p[1] * (b - B); @@ -387,7 +387,7 @@ set_pixel (Page *page, blue += p[2] * (L - l); } - if (r != R) { + if (r != R) { get_pixel (page, R, y, p); red += p[0] * (r - R); green += p[1] * (r - R); @@ -651,18 +651,18 @@ get_pixel (Page *page, gint x, gint y, guchar *pixel) case TOP_TO_BOTTOM: break; case BOTTOM_TO_TOP: - x = page_get_scan_width (page) - x; - y = page_get_scan_height (page) - y; + x = page_get_scan_width (page) - x - 1; + y = page_get_scan_height (page) - y - 1; break; case LEFT_TO_RIGHT: t = x; - x = page_get_scan_width (page) - y; + x = page_get_scan_width (page) - y - 1; y = t; break; case RIGHT_TO_LEFT: t = x; x = y; - y = page_get_scan_height (page) - t; + y = page_get_scan_height (page) - t - 1; break; } @@ -721,7 +721,7 @@ page_get_image (Page *page, gboolean apply_crop) l = page->priv->crop_x; r = l + page->priv->crop_width; t = page->priv->crop_y; - b = l + page->priv->crop_height; + b = t + page->priv->crop_height; if (l < 0) l = 0; diff --git a/src/scanner.c b/src/scanner.c index f4eb08f..ff8a994 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -1081,6 +1081,7 @@ do_get_option (Scanner *scanner) "Gray", "Grayscale", SANE_I18N ("Grayscale"), + "True Gray", /* Seen in the proprietary brother3 driver */ NULL }; const char *lineart_scan_modes[] = @@ -1096,8 +1097,9 @@ do_get_option (Scanner *scanner) "Thresholded", SANE_VALUE_SCAN_MODE_GRAY, "Gray", - "Grayscale", + "Grayscale", SANE_I18N ("Grayscale"), + "True Gray", /* Seen in the proprietary brother3 driver */ NULL }; |