prn_device(prn_std_procs, "bmpmono", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, /* margins */ 1, bmp_print_page); /* 8-bit (SuperVGA-style) grayscale . */ /* (Uses a fixed palette of 256 gray levels.) */ static const gx_device_procs bmpgray_procs = prn_color_procs(gdev_prn_open, gdev_prn_output_page, gdev_prn_close, gx_default_gray_map_rgb_color, gx_default_gray_map_color_rgb); const gx_device_printer gs_bmpgray_device = { prn_device_body(gx_device_printer, bmpgray_procs, "bmpgray", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, /* margins */ 1, 8, 255, 0, 256, 0, bmp_print_page) }; /* 1-bit-per-plane separated CMYK color. */ #define bmp_cmyk_procs(p_map_color_rgb, p_map_cmyk_color)\ gdev_prn_open, NULL, NULL, gdev_prn_output_page, gdev_prn_close,\ NULL, p_map_color_rgb, NULL, NULL, NULL, NULL, NULL, NULL,\ gdev_prn_get_params, gdev_prn_put_params,\ p_map_cmyk_color, NULL, NULL, NULL, gx_page_device_get_page_device static const gx_device_procs bmpsep1_procs = { bmp_cmyk_procs(cmyk_1bit_map_color_rgb, cmyk_1bit_map_cmyk_color) };
const gx_device_printer gs_lj5mono_device = prn_device(ljet5_procs, "lj5mono", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, 1, ljet5_print_page); static const gx_device_procs lj5gray_procs = prn_color_procs(ljet5_open, gdev_prn_output_page, ljet5_close, gx_default_gray_map_rgb_color, gx_default_gray_map_color_rgb); const gx_device_printer gs_lj5gray_device = { prn_device_body(gx_device_printer, lj5gray_procs, "lj5gray", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, 1, 8, 255, 0, 256, 1, ljet5_print_page) }; /* Open the printer, writing the stream header. */ static int ljet5_open(gx_device * pdev) { int code = gdev_prn_open(pdev); if (code < 0) return code; code = gdev_prn_open_printer(pdev, true); if (code < 0) return code;
NULL, /* fill_linear_color_triangle */ NULL, /* update_spot_equivalent_colors */ NULL, /* ret_devn_params */ NULL, /* fillpage */ NULL, /* push_transparency_state */ NULL, /* pop_transparency_state */ NULL, /* put_image */ fpng_dev_spec_op, /* dev_spec_op */ NULL, /* copy plane */ gx_default_get_profile, /* get_profile */ gx_default_set_graphics_type_tag /* set_graphics_type_tag */ }; const gx_device_fpng gs_fpng_device = {prn_device_body(gx_device_fpng, fpng_procs, "fpng", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, /* margins */ 3, 24, 255, 255, 256, 256, fpng_print_page), }; /* ------ Private definitions ------ */ typedef struct fpng_buffer_s { int size; int compressed; unsigned char data[1]; } fpng_buffer_t; static int fpng_init_buffer(void *arg, gx_device *dev, gs_memory_t *mem, int w, int h, void **pbuffer) { /* Currently, we allocate a "worst case" buffer per band - this is
const gx_device_printer gs_pngmono_device = prn_device(prn_std_procs, "pngmono", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, /* margins */ 1, png_print_page); /* 4-bit planar (EGA/VGA-style) color. */ static const gx_device_procs png16_procs = prn_color_procs(gdev_prn_open, gdev_prn_output_page, gdev_prn_close, pc_4bit_map_rgb_color, pc_4bit_map_color_rgb); const gx_device_printer gs_png16_device = { prn_device_body(gx_device_printer, png16_procs, "png16", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, /* margins */ 3, 4, 1, 1, 2, 2, png_print_page) }; /* 8-bit (SuperVGA-style) color. */ /* (Uses a fixed palette of 3,3,2 bits.) */ static const gx_device_procs png256_procs = prn_color_procs(gdev_prn_open, gdev_prn_output_page, gdev_prn_close, pc_8bit_map_rgb_color, pc_8bit_map_color_rgb); const gx_device_printer gs_png256_device = { prn_device_body(gx_device_printer, png256_procs, "png256", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, /* margins */
if (code < 0) break; compressed_size = gdev_pcl_mode3compress(raster, data, prow, cdata); fprintf(prn_stream, "\033*b%dW", compressed_size); fwrite(cdata, sizeof(byte), compressed_size, prn_stream); } /* PCL will take care of blank lines at the end */ fputs("\033*rC\f", prn_stream); out: gs_free_object(mem, prow, "cljc_print_page(prow)"); gs_free_object(mem, cdata, "cljc_print_page(cdata)"); gs_free_object(mem, data, "cljc_print_page(data)"); return code; } /* CLJ device methods */ static gx_device_procs cljc_procs = prn_color_procs(gdev_prn_open, gdev_prn_output_page, gdev_prn_close, gx_default_rgb_map_rgb_color, gx_default_rgb_map_color_rgb); /* the CLJ device */ const gx_device_printer gs_cljet5c_device = { prn_device_body(gx_device_printer, cljc_procs, "cljet5c", 85, 110, X_DPI, Y_DPI, 0.167, 0.167, 0.167, 0.167, 3, 24, 255, 255, 256, 256, cljc_print_page) };
NULL, NULL, NULL, gx_page_device_get_page_device }; typedef struct gx_device_ds32_s { gx_device_common; gx_prn_device_common; gx_downscaler_params downscale; gsicc_link_t *icclink; } gx_device_ds32; const gx_device_ds32 gs_ds32_device = { prn_device_body(gx_device_ds32, ds32_procs, "ds32", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, 600, 600, /* 600 dpi by default */ 0, 0, 0, 0, /* Margins */ 4, /* num components */ 32, /* bits per sample */ 255, 255, 256, 256, ds32_print_page), GX_DOWNSCALER_PARAMS_DEFAULTS, 0 /* icclink for PostRenderProfile */ }; static int ds32_get_params_downscale_cmyk(gx_device * dev, gs_param_list * plist) { gx_device_ds32 *const dsdev = (gx_device_ds32 *)dev; int code = gdev_prn_get_params(dev, plist); int ecode = code;
static dev_proc_print_page(pcx2up_print_page); typedef struct gx_device_2up_s { gx_device_common; gx_prn_device_common; bool have_odd_page; gx_saved_page odd_page; } gx_device_2up; static const gx_device_procs pcx2up_procs = prn_color_procs(pcx2up_open, gdev_prn_output_page, gdev_prn_close, pc_8bit_map_rgb_color, pc_8bit_map_color_rgb); gx_device_2up gs_pcx2up_device = {prn_device_body(gx_device_2up, pcx2up_procs, "pcx2up", DEFAULT_WIDTH_10THS, DEFAULT_HEIGHT_10THS, X_DPI, Y_DPI, 0, 0, 0, 0, /* margins */ 3, 8, 5, 5, 6, 6, pcx2up_print_page) }; /* Open the device. We reimplement this to force banding with */ /* delayed rasterizing. */ static int pcx2up_open(gx_device * dev) { gx_device_printer *pdev = (gx_device_printer *) dev; int code; gdev_prn_space_params save_params; save_params = pdev->space_params; pdev->space_params.MaxBitmap = 0; /* force banding */