167
167
pa.data = 0; /* mark as not filled */\
170
private int cdj_param_check_bytes(gs_param_list *, gs_param_name, const byte *, uint, bool);
171
private int cdj_param_check_float(gs_param_list *, gs_param_name, floatp, bool);
170
static int cdj_param_check_bytes(gs_param_list *, gs_param_name, const byte *, uint, bool);
171
static int cdj_param_check_float(gs_param_list *, gs_param_name, floatp, bool);
172
172
#define cdj_param_check_string(plist, pname, str, is_defined)\
173
173
cdj_param_check_bytes(plist, pname, (const byte *)(str), strlen(str),\
247
247
#define HEAD_ROWS_COLOUR 16
249
249
/* Colour mapping procedures */
250
private dev_proc_map_cmyk_color (gdev_cmyk_map_cmyk_color);
251
private dev_proc_map_rgb_color (gdev_cmyk_map_rgb_color);
250
static dev_proc_map_cmyk_color (gdev_cmyk_map_cmyk_color);
251
static dev_proc_map_rgb_color (gdev_cmyk_map_rgb_color);
253
private dev_proc_map_rgb_color (gdev_pcl_map_rgb_color);
254
private dev_proc_map_color_rgb (gdev_pcl_map_color_rgb);
255
private dev_proc_decode_color (gdev_cmyk_map_color_cmyk);
253
static dev_proc_map_rgb_color (gdev_pcl_map_rgb_color);
254
static dev_proc_map_color_rgb (gdev_pcl_map_color_rgb);
255
static dev_proc_decode_color (gdev_cmyk_map_color_cmyk);
257
257
/* Print-page, parameters and miscellaneous procedures */
258
private dev_proc_open_device(dj500c_open);
259
private dev_proc_open_device(dj550c_open);
260
private dev_proc_open_device(dj505j_open);
261
private dev_proc_open_device(dnj650c_open);
262
private dev_proc_open_device(lj4dith_open);
263
private dev_proc_open_device(pj_open);
264
private dev_proc_open_device(pjxl_open);
265
private dev_proc_open_device(pjxl300_open);
266
private dev_proc_open_device(escp_open);
267
private dev_proc_open_device(bjc_open);
269
private dev_proc_print_page(declj250_print_page);
270
private dev_proc_print_page(dj500c_print_page);
271
private dev_proc_print_page(dj550c_print_page);
272
private dev_proc_print_page(dj505j_print_page);
273
private dev_proc_print_page(picty180_print_page);
274
private dev_proc_print_page(dnj650c_print_page);
275
private dev_proc_print_page(lj4dith_print_page);
276
private dev_proc_print_page(lj4dithp_print_page);
277
private dev_proc_print_page(pj_print_page);
278
private dev_proc_print_page(pjxl_print_page);
279
private dev_proc_print_page(pjxl300_print_page);
280
private dev_proc_print_page(escp_print_page);
281
private dev_proc_print_page(bjc_print_page);
283
private dev_proc_get_params(cdj_get_params);
284
private dev_proc_get_params(pjxl_get_params);
285
private dev_proc_get_params(bjc_get_params);
258
static dev_proc_open_device(dj500c_open);
259
static dev_proc_open_device(dj550c_open);
260
static dev_proc_open_device(dj505j_open);
261
static dev_proc_open_device(dnj650c_open);
262
static dev_proc_open_device(lj4dith_open);
263
static dev_proc_open_device(pj_open);
264
static dev_proc_open_device(pjxl_open);
265
static dev_proc_open_device(pjxl300_open);
266
static dev_proc_open_device(escp_open);
267
static dev_proc_open_device(bjc_open);
269
static dev_proc_print_page(declj250_print_page);
270
static dev_proc_print_page(dj500c_print_page);
271
static dev_proc_print_page(dj550c_print_page);
272
static dev_proc_print_page(dj505j_print_page);
273
static dev_proc_print_page(picty180_print_page);
274
static dev_proc_print_page(dnj650c_print_page);
275
static dev_proc_print_page(lj4dith_print_page);
276
static dev_proc_print_page(lj4dithp_print_page);
277
static dev_proc_print_page(pj_print_page);
278
static dev_proc_print_page(pjxl_print_page);
279
static dev_proc_print_page(pjxl300_print_page);
280
static dev_proc_print_page(escp_print_page);
281
static dev_proc_print_page(bjc_print_page);
283
static dev_proc_get_params(cdj_get_params);
284
static dev_proc_get_params(pjxl_get_params);
285
static dev_proc_get_params(bjc_get_params);
286
286
#define ep_get_params cdj_get_params
288
private dev_proc_put_params(cdj_put_params);
289
private dev_proc_put_params(pj_put_params);
290
private dev_proc_put_params(pjxl_put_params);
291
private dev_proc_put_params(bjc_put_params);
288
static dev_proc_put_params(cdj_put_params);
289
static dev_proc_put_params(pj_put_params);
290
static dev_proc_put_params(pjxl_put_params);
291
static dev_proc_put_params(bjc_put_params);
292
292
#define ep_put_params cdj_put_params
294
294
/* The device descriptors */
527
527
gdev_cmyk_map_color_cmyk /* decode_color */\
530
private gx_device_procs cdj500_procs =
530
static gx_device_procs cdj500_procs =
531
531
hp_colour_procs(dj500c_open, cdj_get_params, cdj_put_params);
533
private gx_device_procs cdj550_procs =
533
static gx_device_procs cdj550_procs =
534
534
hp_colour_procs(dj550c_open, cdj_get_params, cdj_put_params);
536
536
#ifdef USE_CDJ550_CMYK
537
private gx_device_procs cdj550cmyk_procs =
537
static gx_device_procs cdj550cmyk_procs =
538
538
cmyk_colour_procs(dj550c_open, cdj_get_params, cdj_put_params);
541
private gx_device_procs dj505j_procs =
541
static gx_device_procs dj505j_procs =
542
542
hp_colour_procs(dj505j_open, cdj_get_params, cdj_put_params);
544
private gx_device_procs dnj650c_procs =
544
static gx_device_procs dnj650c_procs =
545
545
hp_colour_procs(dnj650c_open, cdj_get_params, cdj_put_params);
547
private gx_device_procs lj4dith_procs =
547
static gx_device_procs lj4dith_procs =
548
548
hp_colour_procs(lj4dith_open, cdj_get_params, cdj_put_params);
550
private gx_device_procs pj_procs =
550
static gx_device_procs pj_procs =
551
551
hp_colour_procs(pj_open, gdev_prn_get_params, pj_put_params);
553
private gx_device_procs pjxl_procs =
553
static gx_device_procs pjxl_procs =
554
554
hp_colour_procs(pjxl_open, pjxl_get_params, pjxl_put_params);
556
private gx_device_procs pjxl300_procs =
556
static gx_device_procs pjxl300_procs =
557
557
hp_colour_procs(pjxl300_open, pjxl_get_params, pjxl_put_params);
559
private gx_device_procs bjc_procs =
559
static gx_device_procs bjc_procs =
560
560
cmyk_colour_procs(bjc_open, bjc_get_params, bjc_put_params);
562
private gx_device_procs escp_procs =
562
static gx_device_procs escp_procs =
563
563
hp_colour_procs(escp_open, ep_get_params, ep_put_params);
565
565
gx_device_cdj far_data gs_cdjmono_device =
674
674
BJC800_DEFAULT_PRINTCOLORS);
676
676
/* Forward references */
677
private int gdev_pcl_mode1compress(const byte *, const byte *, byte *);
678
private int hp_colour_open(gx_device *, int);
679
private int hp_colour_print_page(gx_device_printer *, FILE *, int);
680
private int cdj_put_param_int(gs_param_list *, gs_param_name, int *, int, int, int);
681
private uint gdev_prn_rasterwidth(const gx_device_printer *, int);
682
private int cdj_put_param_bpp(gx_device *, gs_param_list *, int, int, int);
683
private int cdj_set_bpp(gx_device *, int, int);
684
private void cdj_expand_line(word *, int, short, int, int);
685
private int bjc_fscmyk(byte**, byte*[4][4], int**, int, int);
677
static int gdev_pcl_mode1compress(const byte *, const byte *, byte *);
678
static int hp_colour_open(gx_device *, int);
679
static int hp_colour_print_page(gx_device_printer *, FILE *, int);
680
static int cdj_put_param_int(gs_param_list *, gs_param_name, int *, int, int, int);
681
static uint gdev_prn_rasterwidth(const gx_device_printer *, int);
682
static int cdj_put_param_bpp(gx_device *, gs_param_list *, int, int, int);
683
static int cdj_set_bpp(gx_device *, int, int);
684
static void cdj_expand_line(word *, int, short, int, int);
685
static int bjc_fscmyk(byte**, byte*[4][4], int**, int, int);
687
687
/* String parameters manipulation */
692
692
} stringParamDescription;
694
private const byte* paramValueToString(const stringParamDescription*, int);
695
private int paramStringValue(const stringParamDescription*,
694
static const byte* paramValueToString(const stringParamDescription*, int);
695
static int paramStringValue(const stringParamDescription*,
696
696
const byte*, int, int*);
698
private int put_param_string(gs_param_list*, const byte*,
698
static int put_param_string(gs_param_list*, const byte*,
699
699
gs_param_string*, const stringParamDescription*, int *, int);
700
private int get_param_string(gs_param_list*, const byte*,
700
static int get_param_string(gs_param_list*, const byte*,
701
701
gs_param_string*, const stringParamDescription*, int, bool, int);
703
703
/* Open the printer and set up the margins. */
705
705
dj500c_open(gx_device *pdev)
706
706
{ return hp_colour_open(pdev, DJ500C);
710
710
dj550c_open(gx_device *pdev)
711
711
{ return hp_colour_open(pdev, DJ550C);
715
715
dj505j_open(gx_device *pdev)
716
716
{ return hp_colour_open(pdev, DJ505J);
720
720
dnj650c_open(gx_device *pdev)
721
721
{ return hp_colour_open(pdev, DNJ650C);
725
725
lj4dith_open(gx_device *pdev)
726
726
{ return hp_colour_open(pdev, LJ4DITH);
730
730
pjxl300_open(gx_device *pdev)
731
731
{ return hp_colour_open(pdev, PJXL300);
735
735
pj_open(gx_device *pdev)
736
736
{ return hp_colour_open(pdev, PJ180);
740
740
pjxl_open(gx_device *pdev)
741
741
{ return hp_colour_open(pdev, PJXL180);
745
745
escp_open(gx_device *pdev)
746
746
{ return hp_colour_open(pdev, ESC_P);
750
750
bjc_open(gx_device *pdev)
751
751
{ return hp_colour_open(pdev, bjc->ptype);
755
755
hp_colour_open(gx_device *pdev, int ptype)
756
756
{ /* Change the margins if necessary. */
757
757
static const float dj_a4[4] = { DESKJET_MARGINS_A4 };
970
970
return cdj_put_param_bpp(pdev, plist, bpp, bpp, 0);
973
private stringParamDescription bjc_processColorsStrings[] = {
973
static stringParamDescription bjc_processColorsStrings[] = {
974
974
{ "DeviceGray", 1 },
975
975
{ "DeviceRGB", 3 },
976
976
{ "DeviceCMYK", 4 },
980
private stringParamDescription bjc_mediaTypeStrings[] = {
980
static stringParamDescription bjc_mediaTypeStrings[] = {
981
981
{ "PlainPaper", BJC_MEDIA_PLAINPAPER },
982
982
{ "CoatedPaper", BJC_MEDIA_COATEDPAPER },
983
983
{ "TransparencyFilm", BJC_MEDIA_TRANSPARENCYFILM },
1288
1288
/* The DeskJet505J can compress */
1290
1290
dj505j_print_page(gx_device_printer * pdev, FILE * prn_stream)
1292
1292
return hp_colour_print_page(pdev, prn_stream, DJ505J);
1295
1295
/* The DesignJet650C can compress (mode 1) */
1297
1297
dnj650c_print_page(gx_device_printer * pdev, FILE * prn_stream)
1299
1299
return hp_colour_print_page(pdev, prn_stream, DNJ650C);
1303
1303
lj4dith_print_page(gx_device_printer * pdev, FILE * prn_stream)
1305
1305
return hp_colour_print_page(pdev, prn_stream, LJ4DITH);
1309
1309
lj4dithp_print_page(gx_device_printer * pdev, FILE * prn_stream)
1310
1310
{ int ret_code;
1311
1311
/* Ensure we're operating in PCL mode */
1331
1331
/* The PaintJet XL can compress (modes 2 & 3) */
1333
1333
pjxl_print_page(gx_device_printer * pdev, FILE * prn_stream)
1335
1335
return hp_colour_print_page(pdev, prn_stream, PJXL180);
1338
1338
/* The PaintJet can compress (mode 1) */
1340
1340
pj_print_page(gx_device_printer * pdev, FILE * prn_stream)
1342
1342
return hp_colour_print_page(pdev, prn_stream, PJ180);
1345
1345
/* The LJ250 can compress (mode 1) */
1347
1347
declj250_print_page(gx_device_printer * pdev, FILE * prn_stream)
1348
1348
{ int ret_code;
1349
1349
fputs("\033%8", prn_stream); /* Enter PCL emulation mode */
1874
1874
* For the ESC/P mode, resolution is fixed as 360dpi and we must transform
1875
1875
* image data to serialized data.
1877
private word *ep_storage;
1878
private uint ep_storage_size_words;
1879
private byte *ep_raster_buf[4][BJC_HEAD_ROWS], *ep_print_buf;
1880
private int ep_num_comps, ep_plane_size, img_rows=BJC_HEAD_ROWS;
1877
static word *ep_storage;
1878
static uint ep_storage_size_words;
1879
static byte *ep_raster_buf[4][BJC_HEAD_ROWS], *ep_print_buf;
1880
static int ep_num_comps, ep_plane_size, img_rows=BJC_HEAD_ROWS;
1883
1883
#define row_bytes (img_rows / 8)