示例#1
0
void display_raster(int packet, int offset, int replay)
{
    
    /* only decode when not replaying from history */
    if(replay == FALSE)
        decode_raster((short *)(sd->icd_product), offset);
    
    
    output_raster();

}
示例#2
0
int main(int argc, char **argv)
{
    int fd, page, fd_tiff, ret;
    struct urf_file_header head, head_orig;
    struct urf_page_header page_header, page_header_orig;
    struct tiff_info tiff;

    if(argc < 3)
    {
        fprintf(stderr, "Usage: %s <input.urf> <output.tiff>\n", argv[0]);
        return 1;
    }

    if((fd = open(argv[1], O_RDONLY)) == -1) die("Unable to open unirast file");

    lseek(fd, 0, SEEK_SET);

    if(read(fd, &head_orig, sizeof(head)) == -1) die("Unable to read file header");

    //Transform
    memcpy(head.unirast, head_orig.unirast, sizeof(head.unirast));
    head.page_count = ntohl(head_orig.page_count);

    if(head.unirast[7])
        head.unirast[7] = 0;

    if(strncmp(head.unirast, "UNIRAST", 7) != 0) die("Bad File Header");

    iprintf("%s file, with %d page(s).\n", head.unirast, head.page_count);

    if(create_tiff_file(&tiff, argv[2], head.page_count) != 0) die("Unable to create TIFF file");

    for(page = 0 ; page < head.page_count ; ++page)
    {
        if(read(fd, &page_header_orig, sizeof(page_header_orig)) == -1) die("Unable to read page header");

        //Transform
        page_header.bpp = page_header_orig.bpp;
        page_header.colorspace = page_header_orig.colorspace;
        page_header.duplex = page_header_orig.duplex;
        page_header.quality = page_header_orig.quality;
        page_header.unknown0 = 0;
        page_header.unknown1 = 0;
        page_header.width = ntohl(page_header_orig.width);
        page_header.height = ntohl(page_header_orig.height);
        page_header.dot_per_inch = ntohl(page_header_orig.dot_per_inch);
        page_header.unknown2 = 0;
        page_header.unknown3 = 0;

        iprintf("Page %d :\n", page);
        iprintf("Bits Per Pixel : %d\n", page_header.bpp);
        iprintf("Colorspace : %d\n", page_header.colorspace);
        iprintf("Duplex Mode : %d\n", page_header.duplex);
        iprintf("Quality : %d\n", page_header.quality);
        iprintf("Size : %dx%d pixels\n", page_header.width, page_header.height);
        iprintf("Dots per Inches : %d\n", page_header.dot_per_inch);

        if(add_tiff_page(&tiff, page, page_header.width, page_header.height, page_header.bpp, page_header.dot_per_inch) != 0) die("Unable to create TIFF file");

        decode_raster(fd, page_header.width, page_header.height, page_header.bpp, &tiff);
    }

    close_tiff_file(&tiff);

    return 0;
}
示例#3
0
int main(int argc, char **argv)
{
    int fd, page;
    struct urf_file_header head, head_orig;
    struct urf_page_header page_header, page_header_orig;
    struct pdf_info pdf;

    FILE * input = NULL;

    if(argc < 6)
    {
        fprintf(stderr, "Usage: %s <job> <user> <job name> <copies> <option> [file]\n", argv[0]);
        return 1;
    }

    if(argc > 6)
    {
        input = fopen(argv[6], "rb");
        if(input == NULL) die("Unable to open unirast file");
    }
    else
        input = stdin;

    // Get fd from file
    fd = fileno(input);

    if(read(fd, &head_orig, sizeof(head)) == -1) die("Unable to read file header");

    //Transform
    memcpy(head.unirast, head_orig.unirast, sizeof(head.unirast));
    head.page_count = ntohl(head_orig.page_count);

    if(head.unirast[7])
        head.unirast[7] = 0;

    if(strncmp(head.unirast, "UNIRAST", 7) != 0) die("Bad File Header");

    iprintf("%s file, with %d page(s).\n", head.unirast, head.page_count);

    if(create_pdf_file(&pdf, head.page_count) != 0) die("Unable to create PDF file");

    for(page = 0 ; page < (int)head.page_count ; ++page)
    {
        if(read(fd, &page_header_orig, sizeof(page_header_orig)) == -1) die("Unable to read page header");

        //Transform
        page_header.bpp = page_header_orig.bpp;
        page_header.colorspace = page_header_orig.colorspace;
        page_header.duplex = page_header_orig.duplex;
        page_header.quality = page_header_orig.quality;
        page_header.unknown0 = 0;
        page_header.unknown1 = 0;
        page_header.width = ntohl(page_header_orig.width);
        page_header.height = ntohl(page_header_orig.height);
        page_header.dot_per_inch = ntohl(page_header_orig.dot_per_inch);
        page_header.unknown2 = 0;
        page_header.unknown3 = 0;

        iprintf("Page %d :\n", page);
        iprintf("Bits Per Pixel : %d\n", page_header.bpp);
        iprintf("Colorspace : %d\n", page_header.colorspace);
        iprintf("Duplex Mode : %d\n", page_header.duplex);
        iprintf("Quality : %d\n", page_header.quality);
        iprintf("Size : %dx%d pixels\n", page_header.width, page_header.height);
        iprintf("Dots per Inches : %d\n", page_header.dot_per_inch);

        if(page_header.colorspace != UNIRAST_COLOR_SPACE_SRGB_24BIT_1)
        {
            die("Invalid ColorSpace, only RGB 24BIT type 1 is supported");
        }
        
        if(page_header.bpp != UNIRAST_BPP_24BIT)
        {
            die("Invalid Bit Per Pixel value, only 24bit is supported");
        }

        if(add_pdf_page(&pdf, page, page_header.width, page_header.height, page_header.bpp, page_header.dot_per_inch) != 0) die("Unable to create PDF file");

        if(decode_raster(fd, page_header.width, page_header.height, page_header.bpp, &pdf) != 0)
            die("Failed to decode Page");
    }

    close_pdf_file(&pdf); // will output to stdout

    return 0;
}