Annotation of researchv10no/cmd/bcp/rastlib.c, revision 1.1.1.1

1.1       root        1: /* Copyright (c) 1989, 1990 AT&T --- All Rights Reserved.              */
                      2: /* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T.                */
                      3: /* The copyright notice does not imply actual or intended publication. */
                      4: /* AUTHORS:                                            */
                      5: /*     T. Thompson - ATT-BL HO - first version         */
                      6: /* Routines for generating PostScript from RLE. */
                      7: /* The routines at the bottom of this file, which */
                      8: /* do the actual conversion to postscript, were */
                      9: /* take from 'sun2ps'.  The original header */
                     10: /* giving credit to its authors is there. */
                     11: 
                     12: /* The 'binary' version of the output is collected in a */
                     13: /* temporary file, which is then fed back to the routines */
                     14: /* that generate postscript in a run-length-encoded form. */
                     15: /* Ideally it should just convert the original run-length */
                     16: /* encoding directly, but this is just a hack.  The REAL */
                     17: /* bottleneck is the PostScript printer, of course.  */
                     18: /* Printing an 800 by 800 pixel image takes 5 minutes. */
                     19: 
                     20: #include <stdio.h>
                     21: #include <math.h>
                     22: #include <string.h>
                     23: #include "CPU.h"
                     24: #include "boole.h"
                     25: #include "limits.h"     /* numeric extreme values */
                     26: #include "Units.h"
                     27: #include "Coord.h"
                     28: #include "pic.h"
                     29: #include <sys/types.h>
                     30: #include <suntool/sunview.h>
                     31: #include <pixrect/pixrect.h>
                     32: #include <pixrect/pr_io.h>
                     33: 
                     34: int Raswidth;
                     35: int Raslength;
                     36: extern char Revbyte[256];
                     37: extern char Revnib[16];
                     38: 
                     39: static FILE *fout;
                     40:  
                     41: void
                     42: RAST_start(h)
                     43: PIC_hdr *h;
                     44: {
                     45:        int n, v;
                     46:        struct rasterfile rh;
                     47: 
                     48:        /* build a table of reversed bytes */
                     49:        for ( n=0; n<256; n++ )
                     50:                Revbyte[n] = Revnib[(n>>4)&0xf] | Revnib[n&0xf]<<4;
                     51: 
                     52:        fout = h->fp;
                     53:        h->bpl = (h->bpl+7)/8;
                     54:        Raslength = h->bpl * h->bx.b.y;
                     55:        Raswidth = h->bx.b.x;
                     56: 
                     57:        rh.ras_magic = RAS_MAGIC;
                     58:        rh.ras_width = h->bx.b.x;
                     59:        rh.ras_height = h->bx.b.y;
                     60:        rh.ras_depth = 1;
                     61:        rh.ras_length = Raslength;
                     62:        rh.ras_type = RT_STANDARD;
                     63:        rh.ras_maptype = RMT_NONE;
                     64:        rh.ras_maplength = 0;
                     65:        pr_dump_header(fout,&rh,(colormap_t*)0);
                     66: }
                     67: 
                     68: void
                     69: RAST_end()
                     70: {
                     71: }
                     72: 
                     73: /* write a full line of picture data, returning status:  1 OK, 0 EOF,
                     74: -1 ERR */
                     75: int RAST_wline(h,line)
                     76:     PIC_hdr *h;
                     77:     unsigned char *line;
                     78: {   int stat;
                     79:        int n;
                     80: 
                     81:        for ( n=h->bpl; n>0; n-- ) {
                     82:                if ( putc(Revbyte[*line++],fout) == EOF )
                     83:                        break;
                     84:        }
                     85:        if ( n == 0 ) {
                     86:                 h->seek += h->bpl;
                     87:                 h->cy++;
                     88:                 return(1);
                     89:                 }
                     90:         else { /* ERR */
                     91:                 err("write to fd%d stat%d",fileno(h->fp),stat);
                     92:                 if((stat>=0)&&(stat<h->bpl)) return(0 /*EOF*/);
                     93:                 else return(-1);
                     94:                 };
                     95:         }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.