提交 37d109b1 authored 作者: Steve Underwood's avatar Steve Underwood

Some tweaks to the image translate code

上级 97faaab4
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
#include <math.h> #include <math.h>
#endif #endif
#include "floating_fudge.h" #include "floating_fudge.h"
#include <jpeglib.h>
#include <tiffio.h> #include <tiffio.h>
#include <assert.h> #include <assert.h>
...@@ -648,13 +649,21 @@ SPAN_DECLARE(int) image_translate_get_output_length(image_translate_state_t *s) ...@@ -648,13 +649,21 @@ SPAN_DECLARE(int) image_translate_get_output_length(image_translate_state_t *s)
} }
/*- End of function --------------------------------------------------------*/ /*- End of function --------------------------------------------------------*/
SPAN_DECLARE(int) image_translate_set_row_read_handler(image_translate_state_t *s, t4_row_read_handler_t row_read_handler, void *row_read_user_data)
{
s->row_read_handler = row_read_handler;
s->row_read_user_data = row_read_user_data;
return 0;
}
/*- End of function --------------------------------------------------------*/
SPAN_DECLARE(image_translate_state_t *) image_translate_init(image_translate_state_t *s, SPAN_DECLARE(image_translate_state_t *) image_translate_init(image_translate_state_t *s,
int input_format,
int input_width,
int input_length,
int output_format, int output_format,
int output_width, int output_width,
int output_length, int output_length,
int input_format,
int input_width,
int input_length,
t4_row_read_handler_t row_read_handler, t4_row_read_handler_t row_read_handler,
void *row_read_user_data) void *row_read_user_data)
{ {
......
...@@ -66,29 +66,37 @@ SPAN_DECLARE(int) image_translate_get_output_width(image_translate_state_t *s); ...@@ -66,29 +66,37 @@ SPAN_DECLARE(int) image_translate_get_output_width(image_translate_state_t *s);
\return The length of the output image, in pixel. */ \return The length of the output image, in pixel. */
SPAN_DECLARE(int) image_translate_get_output_length(image_translate_state_t *s); SPAN_DECLARE(int) image_translate_get_output_length(image_translate_state_t *s);
/*! \brief Set the row read callback routine for an image translation context.
\param s The image translation context.
\param row_read_handler A callback routine used to pull rows of pixels from the source image
into the translation process.
\param row_read_user_data An opaque pointer passed to read_row_handler
\return 0 for success, else -1. */
SPAN_DECLARE(int) image_translate_set_row_read_handler(image_translate_state_t *s, t4_row_read_handler_t row_read_handler, void *row_read_user_data);
/*! \brief Initialise an image translation context for rescaling and squashing a gray scale /*! \brief Initialise an image translation context for rescaling and squashing a gray scale
or colour image to a bi-level FAX type image. or colour image to a bi-level FAX type image.
\param s The image translation context. \param s The image translation context.
\param input_format x \param output_format The type of output image
\param input_width The width of the source image, in pixels.
\param input_length The length of the source image, in pixels.
\param output_format x
\param output_width The width of the output image, in pixels. If this is set <= 0 the image \param output_width The width of the output image, in pixels. If this is set <= 0 the image
will not be resized. will not be resized.
\param output_length The length of the output image, in pixels. If this is set to <= 0 the \param output_length The length of the output image, in pixels. If this is set to <= 0 the
output length will be derived automatically from the width, to maintain the geometry output length will be derived automatically from the width, to maintain the geometry
of the original image. of the original image.
\param input_format The type of source image
\param input_width The width of the source image, in pixels.
\param input_length The length of the source image, in pixels.
\param row_read_handler A callback routine used to pull rows of pixels from the source image \param row_read_handler A callback routine used to pull rows of pixels from the source image
into the translation process. into the translation process.
\param row_read_user_data An opaque point passed to read_row_handler \param row_read_user_data An opaque pointer passed to read_row_handler
\return A pointer to the context, or NULL if there was a problem. */ \return A pointer to the context, or NULL if there was a problem. */
SPAN_DECLARE(image_translate_state_t *) image_translate_init(image_translate_state_t *s, SPAN_DECLARE(image_translate_state_t *) image_translate_init(image_translate_state_t *s,
int input_format,
int input_width,
int input_length,
int output_format, int output_format,
int output_width, int output_width,
int output_length, int output_length,
int input_format,
int input_width,
int input_length,
t4_row_read_handler_t row_read_handler, t4_row_read_handler_t row_read_handler,
void *row_read_user_data); void *row_read_user_data);
......
...@@ -34,6 +34,7 @@ extern "C" ...@@ -34,6 +34,7 @@ extern "C"
#endif #endif
void set_illuminant_from_code(logging_state_t *logging, lab_params_t *s, const uint8_t code[4]); void set_illuminant_from_code(logging_state_t *logging, lab_params_t *s, const uint8_t code[4]);
void set_gamut_from_code(logging_state_t *logging, lab_params_t *s, const uint8_t code[12]); void set_gamut_from_code(logging_state_t *logging, lab_params_t *s, const uint8_t code[12]);
#if defined(__cplusplus) #if defined(__cplusplus)
......
...@@ -834,7 +834,7 @@ static int read_tiff_image(t4_tx_state_t *s) ...@@ -834,7 +834,7 @@ static int read_tiff_image(t4_tx_state_t *s)
{ {
/* We need to dither this image down to pure black and white, possibly resizing it /* We need to dither this image down to pure black and white, possibly resizing it
along the way. */ along the way. */
if ((translator = image_translate_init(NULL, s->tiff.image_type, s->image_width, s->image_length, T4_IMAGE_TYPE_BILEVEL, 1728, -1, row_read, s)) == NULL) if ((translator = image_translate_init(NULL, T4_IMAGE_TYPE_BILEVEL, 1728, -1, s->tiff.image_type, s->image_width, s->image_length, row_read, s)) == NULL)
return -1; return -1;
s->image_width = image_translate_get_output_width(translator); s->image_width = image_translate_get_output_width(translator);
s->image_length = image_translate_get_output_length(translator); s->image_length = image_translate_get_output_length(translator);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论