diff options
Diffstat (limited to 'gs/contrib/japanese/gdevp201.c')
-rw-r--r-- | gs/contrib/japanese/gdevp201.c | 273 |
1 files changed, 0 insertions, 273 deletions
diff --git a/gs/contrib/japanese/gdevp201.c b/gs/contrib/japanese/gdevp201.c deleted file mode 100644 index 3b9c4ad3f..000000000 --- a/gs/contrib/japanese/gdevp201.c +++ /dev/null @@ -1,273 +0,0 @@ -/* Copyright (C) 1990, 1992 Aladdin Enterprises. All rights reserved. - Distributed by Free Software Foundation, Inc. - -This file is part of Ghostscript. - -Ghostscript is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY. No author or distributor accepts responsibility -to anyone for the consequences of using it or for whether it serves any -particular purpose or works at all, unless he says so in writing. Refer -to the Ghostscript General Public License for full details. - -Everyone is granted permission to copy, modify and redistribute -Ghostscript, but only under the conditions described in the Ghostscript -General Public License. A copy of this license is supposed to have been -given to you along with Ghostscript so you can know your rights and -responsibilities. It should be in a file named COPYING. Among other -things, the copyright notice and this notice must be preserved on all -copies. */ - -/* gdevp201.c */ -/* NEC PC-PR201 printer driver for Ghostscript */ -/* modified by m.mori for printers other than pr-201 */ -/* modified by OkI for hires-98 */ -/* modified by ASAYAMA Kazunori for Ghostscript version 2.6.1 */ -#include "gdevprn.h" - -/* There are NEC PC-PR printer paramaters. - MODEL DEVICE_NAME X_DPI,Y_DPI HEAD_PINS LF_PITCH - PC-PR201 "nec160" 160 24 18 - PC-PR1000 "nec240" 240 40 20 - PC-PR150 "nec320" 320 48 18 - PC-PR1000/4 "nec400" 400 60 18 -*/ - -#define WIDTH 80 /* width_10ths, 8" */ -#define HEIGHT 110 /* height_10ths, 11" */ - -enum{PR201, PR1000, PR150, PR1K4}; - -private dev_proc_print_page(pr201_print_page); - -/* The device descriptor */ -gx_device_printer gs_pr201_device = - prn_device(prn_std_procs, "pr201", - WIDTH, - HEIGHT, - 160, - 160, - 0,0,0,0, /* margins */ - 1, pr201_print_page); - -gx_device_printer gs_pr1000_device = - prn_device(prn_std_procs, "pr1000", - WIDTH, - HEIGHT, - 240, - 240, - 0,0,0,0, /* margins */ - 1, pr201_print_page); - -gx_device_printer gs_pr150_device = - prn_device(prn_std_procs, "pr150", - WIDTH, - HEIGHT, - 320, - 320, - 0,0,0,0, /* margins */ - 1, pr201_print_page); - -gx_device_printer gs_pr1000_4_device = - prn_device(prn_std_procs, "pr1000_4", - WIDTH, - HEIGHT, - 400, - 400, - 0,0,0,0, /* margins */ - 1, pr201_print_page); - - -/* Transpose a block of 8x8 bits */ -private int -pr201_transpose_8x8(byte *src, int src_step, byte *dst, int dst_step) -{ - byte mask, s, d0, d1, d2, d3, d4, d5, d6, d7; - int i; - - d0 = d1 = d2 = d3 = d4 = d5 = d6 = d7 = 0; - - for(i=0, mask=0x01; i<8; i++, mask <<= 1) { - s = *src; - if(s & 0x80) d0 |= mask; - if(s & 0x40) d1 |= mask; - if(s & 0x20) d2 |= mask; - if(s & 0x10) d3 |= mask; - if(s & 0x08) d4 |= mask; - if(s & 0x04) d5 |= mask; - if(s & 0x02) d6 |= mask; - if(s & 0x01) d7 |= mask; - src += src_step; - } - - *dst = d0; - *(dst += dst_step) = d1; - *(dst += dst_step) = d2; - *(dst += dst_step) = d3; - *(dst += dst_step) = d4; - *(dst += dst_step) = d5; - *(dst += dst_step) = d6; - *(dst += dst_step) = d7; - - return 0; -} - -private int -check_mode(const char* modename) -{ - if (!strcmp(modename, "pr201")) - return PR201; - else if (!strcmp(modename, "pr1000")) - return PR1000; - else if (!strcmp(modename, "pr150")) - return PR150; - else - return PR1K4; -} - -/* Send the page to the printer. */ -private int -pr201_print_page(gx_device_printer *pdev, FILE *prn_stream) -{ int line_size; - int height; - int bits_per_column; - int bytes_per_column; - int chunk_size; - byte *in, *out; - int lnum, skip; - int head_pins, lr_pitch, x_dpi; - - switch (check_mode(pdev->dname)){ - case PR201: - head_pins=24; lr_pitch=18; x_dpi=160; break; - case PR1000: - head_pins=40; lr_pitch=20; x_dpi=240; break; - case PR150: - head_pins=48; lr_pitch=18; x_dpi=320; break; - case PR1K4: - head_pins=60; lr_pitch=18; x_dpi=400; break; - } - - line_size = gdev_mem_bytes_per_scan_line((gx_device *)pdev); - height = pdev->height; - bits_per_column = head_pins; - bytes_per_column = bits_per_column / 8; - chunk_size = bits_per_column * line_size; - - in = (byte *) - gs_malloc(gs_lib_ctx_get_non_gc_memory_t(), bits_per_column, line_size, "pr201_print_page(in)"); - out = (byte *) - gs_malloc(gs_lib_ctx_get_non_gc_memory_t(), bits_per_column, line_size, "pr201_print_page(out)"); - if(in == 0 || out == 0) - return -1; - - /* Initialize printer */ - fputs("\033cl", pdev->file); /* Software Reset */ - fputs("\033P", pdev->file); /* Proportional Mode */ - if (check_mode(pdev->dname)==PR150){ - fprintf(pdev->file, "\034d%d.", x_dpi); /* 320 dpi mode. */ - } - fprintf(pdev->file, "\033T%d" , lr_pitch); - /* 18/120 inch per line */ - - /* Send Data to printer */ - lnum = 0; - skip = 0; - while(lnum < height) { - byte *inp, *outp, *out_beg, *out_end; - int x, y, num_lines, size, mod; - - /* Copy scan lines */ - if(gdev_prn_copy_scan_lines(pdev, lnum, in, chunk_size) < 0) - break; - - /* The number of lines to process */ - if((num_lines = height - lnum) > bits_per_column) - num_lines = bits_per_column; - - /* Test for all zero */ - size = line_size * num_lines; - if(in[0] == 0 && - !memcmp((char *)in, (char *)in + 1, size - 1)) { - lnum += bits_per_column; - skip ++; - continue; - } - - /* Fill zero */ - if(num_lines < bits_per_column) { - size = line_size * (bits_per_column - num_lines); - memset(in + line_size * num_lines, 0, size); - } - lnum += bits_per_column; - - /* Vertical tab to the appropriate position. */ - while(skip > 72) { - fprintf(pdev->file, "\037%c", 16 + 72); - skip -= 72; - } - if(skip > 0) { - fprintf(pdev->file, "\037%c", 16 + skip); - } - - /* Transpose in blocks of 8 scan lines. */ - for(y = 0; y < bytes_per_column; y ++) { - inp = in + line_size * 8 * y; - outp = out + y; - for(x = 0; x < line_size; x ++) { - pr201_transpose_8x8(inp, line_size, - outp, bytes_per_column); - inp ++; - outp += bits_per_column; - } - } - - /* Remove trailing 0s. */ - out_end = out + chunk_size - 1; - while(out_end >= out) { - if(*out_end) - break; - out_end --; - } - size = (out_end - out) + 1; - if((mod = size % bytes_per_column) != 0) - out_end += bytes_per_column - mod; - - /* Remove leading 0s. */ - out_beg = out; - while(out_beg <= out_end) { - if(*out_beg) - break; - out_beg ++; - } - out_beg -= (out_beg - out) % bytes_per_column; - - /* Dot addressing */ - fprintf(pdev->file, "\033F%04d", - (out_beg - out) / bytes_per_column); - - /* Dot graphics */ - size = out_end - out_beg + 1; - if (check_mode(pdev->dname)==PR201){ - fprintf(pdev->file,"\033J%04d", size / bytes_per_column); - }else{ - fprintf(pdev->file,"\034bP,48,%04d.", - size / bytes_per_column); - } - fwrite(out_beg, size, 1, pdev->file); - - /* Carriage Return */ - fputc('\r', pdev->file); - skip = 1; - } - - /* Form Feed */ - fputc('\f',pdev->file); - fflush(pdev->file); - - gs_free(gs_lib_ctx_get_non_gc_memory_t(), (char *)out, - bits_per_column, line_size, "pr201_print_page(out)"); - gs_free(gs_lib_ctx_get_non_gc_memory_t(), (char *)in, - bits_per_column, line_size, "pr201_print_page(in)"); - - return 0; -} |