summaryrefslogtreecommitdiff
path: root/base/gxdownscale.h
diff options
context:
space:
mode:
authorRobin Watts <Robin.Watts@artifex.com>2020-06-03 16:54:41 +0100
committerRobin Watts <Robin.Watts@artifex.com>2020-06-03 19:41:24 +0100
commitfeee7e6afd34ff3c1fa0c30ec024be25f1a61c1e (patch)
treeee63d781437b46fb0301e0dbb6fb04054730eb18 /base/gxdownscale.h
parent7322ef87546c55b29056c1d96d8bdbb7f3ba53ef (diff)
downloadghostpdl-feee7e6afd34ff3c1fa0c30ec024be25f1a61c1e.tar.gz
Rework downscaler initialisation.
Pass the downscaler parameters into the downscaler init routines, rather than explicit values. This reduces the size of the API, and means that future additions to the structure will automatically be passed through.
Diffstat (limited to 'base/gxdownscale.h')
-rw-r--r--base/gxdownscale.h228
1 files changed, 55 insertions, 173 deletions
diff --git a/base/gxdownscale.h b/base/gxdownscale.h
index bad085f9b..352c77dbd 100644
--- a/base/gxdownscale.h
+++ b/base/gxdownscale.h
@@ -109,6 +109,19 @@ struct gx_downscaler_s {
byte *inbuf_alloc;
};
+/* The following structure is used to hold the configuration
+ * parameters for the downscaler.
+ */
+typedef struct gx_downscaler_params_s
+{
+ int downscale_factor;
+ int min_feature_size;
+ int trap_w;
+ int trap_h;
+ int trap_order[GS_CLIENT_COLOR_MAX_COMPONENTS];
+ int ets;
+} gx_downscaler_params;
+
/* To use the downscaler:
*
* + define a gx_downscaler_t on the stack.
@@ -131,179 +144,59 @@ struct gx_downscaler_s {
* src_bpp == 16 && dst_bpp == 16
* are supported.
*/
-int gx_downscaler_init(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width);
-
-int gx_downscaler_init_ets(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- int ets);
-
-int gx_downscaler_init_trapped(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- int trap_w,
- int trap_h,
- const int *comp_order);
-
-int gx_downscaler_init_trapped_ets(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- int trap_w,
- int trap_h,
- const int *comp_order,
- int ets);
-
-int gx_downscaler_init_cm(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- gx_downscale_cm_fn *apply_cm,
- void *apply_cm_arg,
- int post_cm_num_comps);
-
-int gx_downscaler_init_cm_ets(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- gx_downscale_cm_fn *apply_cm,
- void *apply_cm_arg,
- int post_cm_num_comps,
- int ets);
-
-int gx_downscaler_init_trapped_cm(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- int trap_w,
- int trap_h,
- const int *comp_order,
- gx_downscale_cm_fn *apply_cm,
- void *apply_cm_arg,
- int post_cm_num_comps);
-
-int gx_downscaler_init_trapped_cm_ets(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- int trap_w,
- int trap_h,
- const int *comp_order,
- gx_downscale_cm_fn *apply_cm,
- void *apply_cm_arg,
- int post_cm_num_comps,
- int ets);
-
-int gx_downscaler_init_trapped_cm_halftone(gx_downscaler_t *ds,
- gx_device *dev,
- int src_bpc,
- int dst_bpc,
- int num_comps,
- int factor,
- int mfs,
- int (*adjust_width_proc)(int, int),
- int adjust_width,
- int trap_w,
- int trap_h,
- const int *comp_order,
- gx_downscale_cm_fn *apply_cm,
- void *apply_cm_arg,
- int post_cm_num_comps,
- gx_downscaler_ht_t *ht);
+int gx_downscaler_init(gx_downscaler_t *ds,
+ gx_device *dev,
+ int src_bpc,
+ int dst_bpc,
+ int num_comps,
+ const gx_downscaler_params *params,
+ int (*adjust_width_proc)(int, int),
+ int adjust_width);
+
+int gx_downscaler_init_cm(gx_downscaler_t *ds,
+ gx_device *dev,
+ int src_bpc,
+ int dst_bpc,
+ int num_comps,
+ const gx_downscaler_params *params,
+ int (*adjust_width_proc)(int, int),
+ int adjust_width,
+ gx_downscale_cm_fn *apply_cm,
+ void *apply_cm_arg,
+ int post_cm_num_comps);
+
+int gx_downscaler_init_cm_halftone(gx_downscaler_t *ds,
+ gx_device *dev,
+ int src_bpc,
+ int dst_bpc,
+ int num_comps,
+ const gx_downscaler_params *params,
+ int (*adjust_width_proc)(int, int),
+ int adjust_width,
+ gx_downscale_cm_fn *apply_cm,
+ void *apply_cm_arg,
+ int post_cm_num_comps,
+ gx_downscaler_ht_t *ht);
int gx_downscaler_init_planar(gx_downscaler_t *ds,
gx_device *dev,
- gs_get_bits_params_t *params,
- int num_comps,
- int factor,
- int mfs,
int src_bpc,
- int dst_bpc);
-
-int gx_downscaler_init_planar_trapped(gx_downscaler_t *ds,
- gx_device *dev,
- gs_get_bits_params_t *params,
- int num_comps,
- int factor,
- int mfs,
- int src_bpc,
- int dst_bpc,
- int trap_w,
- int trap_h,
- const int *comp_order);
+ int dst_bpc,
+ int num_comps,
+ const gx_downscaler_params *params,
+ const gs_get_bits_params_t *gb_params);
int gx_downscaler_init_planar_cm(gx_downscaler_t *ds,
gx_device *dev,
- gs_get_bits_params_t *params,
- int num_comps,
- int factor,
- int mfs,
int src_bpc,
int dst_bpc,
+ int num_comps,
+ const gx_downscaler_params *params,
+ const gs_get_bits_params_t *gb_params,
gx_downscale_cm_fn *apply_cm,
void *apply_cm_arg,
int post_cm_num_comps);
-int gx_downscaler_init_planar_trapped_cm(gx_downscaler_t *ds,
- gx_device *dev,
- gs_get_bits_params_t *params,
- int num_comps,
- int factor,
- int mfs,
- int src_bpc,
- int dst_bpc,
- int trap_w,
- int trap_h,
- const int *comp_order,
- gx_downscale_cm_fn *apply_cm,
- void *apply_cm_arg,
- int post_cm_num_comps);
-
int gx_downscaler_getbits(gx_downscaler_t *ds,
byte *out_data,
int row);
@@ -316,6 +209,8 @@ int gx_downscaler_get_bits_rectangle(gx_downscaler_t *ds,
* fin several times) */
void gx_downscaler_fin(gx_downscaler_t *ds);
+void gx_downscaler_decode_factor(int factor, int *up, int *down);
+
int
gx_downscaler_scale(int width, int factor);
@@ -331,19 +226,6 @@ int gx_downscaler_process_page(gx_device *dev,
gx_process_page_options_t *options,
int factor);
-/* The following structure is used to hold the configuration
- * parameters for the downscaler.
- */
-typedef struct gx_downscaler_params_s
-{
- int downscale_factor;
- int min_feature_size;
- int trap_w;
- int trap_h;
- int trap_order[GS_CLIENT_COLOR_MAX_COMPONENTS];
- int ets;
-} gx_downscaler_params;
-
#define GX_DOWNSCALER_PARAMS_DEFAULTS \
{ 1, 0, 0, 0, { 3, 1, 0, 2 } }