src/psio1.c
l_int32
convertToPSEmbed(const char  *filein,
                 const char  *fileout,
                 l_int32      level)
{
const char  nametif[] = "/tmp/junk_convert_ps_embed.tif";
const char  namejpg[] = "/tmp/junk_convert_ps_embed.jpg";
l_int32     d, format;
PIX        *pix, *pixs;

    PROCNAME("convertToPSEmbed");

    if (!filein)
        return ERROR_INT("filein not defined", procName, 1);
    if (!fileout)
        return ERROR_INT("fileout not defined", procName, 1);
    if (level != 1 && level != 2 && level != 3) {
        L_ERROR("invalid level specified; using level 2", procName);
        level = 2;
    }

    if (level == 1) {  /* no compression */
        pixWritePSEmbed(filein, fileout);
        return 0;
    }

        /* Find the format and write out directly if in jpeg or tiff g4 */
    findFileFormat(filein, &format);
    if (format == IFF_JFIF_JPEG) {
        convertJpegToPSEmbed(filein, fileout);
        return 0;
    }
    else if (format == IFF_TIFF_G4) {
        convertG4ToPSEmbed(filein, fileout);
        return 0;
    }
    else if (format == IFF_UNKNOWN) {
        L_ERROR_STRING("format of %s not known", procName, filein);
        return 1;
    }

        /* If level 3, flate encode. */
    if (level == 3) {
        convertFlateToPSEmbed(filein, fileout);
        return 0;
    }

        /* OK, it's level 2, so we must convert to jpeg or tiff g4 */
    if ((pixs = pixRead(filein)) == NULL)
        return ERROR_INT("image not read from file", procName, 1);
    d = pixGetDepth(pixs);
    if ((d == 2 || d == 4) && !pixGetColormap(pixs))
        pix = pixConvertTo8(pixs, 0);
    else if (d == 16)
        pix = pixConvert16To8(pixs, 1);
    else
        pix = pixRemoveColormap(pixs, REMOVE_CMAP_BASED_ON_SRC);

    d = pixGetDepth(pix);
    if (d == 1) {
        pixWrite(nametif, pix, IFF_TIFF_G4);
        convertG4ToPSEmbed(nametif, fileout);
    }
    else {
        pixWrite(namejpg, pix, IFF_JFIF_JPEG);
        convertJpegToPSEmbed(namejpg, fileout);
    }

    pixDestroy(&pix);
    pixDestroy(&pixs);
    return 0;
}
/*
 *  convertToPSEmbed()
 *
 *      Input:  filein (input image file -- any format)
 *              fileout (output ps file)
 *              level (compression: 1 (uncompressed), 2 or 3)
 *      Return: 0 if OK, 1 on error
 *
 *  Notes:
 *      (1) This is a wrapper function that generates a PS file with
 *          a bounding box, from any input image file.
 *      (2) Do the best job of compression given the specified level.
 *          @level=3 does flate compression on anything that is not
 *          tiffg4 (1 bpp) or jpeg (8 bpp or rgb).
 *      (3) If @level=2 and the file is not tiffg4 or jpeg, it will
 *          first be written to file as jpeg with quality = 75.
 *          This will remove the colormap and cause some degradation
 *          in the image.
 *      (4) The bounding box is required when a program such as TeX
 *          (through epsf) places and rescales the image.  It is
 *          sized for fitting the image to an 8.5 x 11.0 inch page.
 */
convertToPSEmbed()
Input:  filein (input image file -- any format)
fileout (output ps file)
level (compression: 1 (uncompressed), 2 or 3)
Return: 0 if OK, 1 on error

(1) This is a wrapper function that generates a PS file with
a bounding box, from any input image file.
(2) Do the best job of compression given the specified level.
@level=3 does flate compression on anything that is not
tiffg4 (1 bpp) or jpeg (8 bpp or rgb).
(3) If @level=2 and the file is not tiffg4 or jpeg, it will
first be written to file as jpeg with quality = 75.
This will remove the colormap and cause some degradation
in the image.
(4) The bounding box is required when a program such as TeX
(through epsf) places and rescales the image.  It is
sized for fitting the image to an 8.5 x 11.0 inch page.
convertToPSEmbed () Input : filein ( input image file -- any format ) fileout ( output ps file ) level ( compression : 1 ( uncompressed ) 2 or 3 ) Return : 0 if OK 1 on error ( 1 ) This is a wrapper function that generates a PS file with a bounding box from any input image file . ( 2 ) Do the best job of compression given the specified level . @level = 3 does flate compression on anything that is not tiffg4 ( 1 bpp ) or jpeg ( 8 bpp or rgb ) . ( 3 ) If @level = 2 and the file is not tiffg4 or jpeg it will first be written to file as jpeg with quality = 75 . This will remove the colormap and cause some degradation in the image . ( 4 ) The bounding box is required when a program such as TeX ( through epsf ) places and rescales the image . It is sized for fitting the image to an 8 . 5 x 11 . 0 inch page .
l_int32
convertToPSEmbed(const char  *filein,
                 const char  *fileout,
                 l_int32      level)
{
const char  nametif[] = "/tmp/junk_convert_ps_embed.tif";
const char  namejpg[] = "/tmp/junk_convert_ps_embed.jpg";
l_int32     d, format;
PIX        *pix, *pixs;
    PROCNAME("convertToPSEmbed");
    if (!filein)
        return ERROR_INT("filein not defined", procName, 1);
    if (!fileout)
        return ERROR_INT("fileout not defined", procName, 1);
    if (level != 1 && level != 2 && level != 3) {
        L_ERROR("invalid level specified; using level 2", procName);
        level = 2;
    }
    if (level == 1) {  
        pixWritePSEmbed(filein, fileout);
        return 0;
    }
    findFileFormat(filein, &format);
    if (format == IFF_JFIF_JPEG) {
        convertJpegToPSEmbed(filein, fileout);
        return 0;
    }
    else if (format == IFF_TIFF_G4) {
        convertG4ToPSEmbed(filein, fileout);
        return 0;
    }
    else if (format == IFF_UNKNOWN) {
        L_ERROR_STRING("format of %s not known", procName, filein);
        return 1;
    }
    if (level == 3) {
        convertFlateToPSEmbed(filein, fileout);
        return 0;
    }
    if ((pixs = pixRead(filein)) == NULL)
        return ERROR_INT("image not read from file", procName, 1);
    d = pixGetDepth(pixs);
    if ((d == 2 || d == 4) && !pixGetColormap(pixs))
        pix = pixConvertTo8(pixs, 0);
    else if (d == 16)
        pix = pixConvert16To8(pixs, 1);
    else
        pix = pixRemoveColormap(pixs, REMOVE_CMAP_BASED_ON_SRC);
    d = pixGetDepth(pix);
    if (d == 1) {
        pixWrite(nametif, pix, IFF_TIFF_G4);
        convertG4ToPSEmbed(nametif, fileout);
    }
    else {
        pixWrite(namejpg, pix, IFF_JFIF_JPEG);
        convertJpegToPSEmbed(namejpg, fileout);
    }
    pixDestroy(&pix);
    pixDestroy(&pixs);
    return 0;
}
l_int32 convertToPSEmbed ( const char * filein , const char * fileout , l_int32 level ) { const char nametif [ ] = " " ; const char namejpg [ ] = " " ; l_int32 d , format ; PIX * pix , * pixs ; PROCNAME ( " " ) ; if ( ! filein ) return ERROR_INT ( " " , procName , 1 ) ; if ( ! fileout ) return ERROR_INT ( " " , procName , 1 ) ; if ( level != 1 && level != 2 && level != 3 ) { L_ERROR ( " " , procName ) ; level = 2 ; } if ( level == 1 ) { pixWritePSEmbed ( filein , fileout ) ; return 0 ; } findFileFormat ( filein , & format ) ; if ( format == IFF_JFIF_JPEG ) { convertJpegToPSEmbed ( filein , fileout ) ; return 0 ; } else if ( format == IFF_TIFF_G4 ) { convertG4ToPSEmbed ( filein , fileout ) ; return 0 ; } else if ( format == IFF_UNKNOWN ) { L_ERROR_STRING ( " " , procName , filein ) ; return 1 ; } if ( level == 3 ) { convertFlateToPSEmbed ( filein , fileout ) ; return 0 ; } if ( ( pixs = pixRead ( filein ) ) == NULL ) return ERROR_INT ( " " , procName , 1 ) ; d = pixGetDepth ( pixs ) ; if ( ( d == 2 || d == 4 ) && ! pixGetColormap ( pixs ) ) pix = pixConvertTo8 ( pixs , 0 ) ; else if ( d == 16 ) pix = pixConvert16To8 ( pixs , 1 ) ; else pix = pixRemoveColormap ( pixs , REMOVE_CMAP_BASED_ON_SRC ) ; d = pixGetDepth ( pix ) ; if ( d == 1 ) { pixWrite ( nametif , pix , IFF_TIFF_G4 ) ; convertG4ToPSEmbed ( nametif , fileout ) ; } else { pixWrite ( namejpg , pix , IFF_JFIF_JPEG ) ; convertJpegToPSEmbed ( namejpg , fileout ) ; } pixDestroy ( & pix ) ; pixDestroy ( & pixs ) ; return 0 ; }
convertToPSEmbed()
      Input:  filein (input image file -- any format)
              fileout (output ps file)
              level (compression: 1 (uncompressed), 2 or 3)
      Return: 0 if OK, 1 on error
convertToPSEmbed () Input : filein ( input image file -- any format ) fileout ( output ps file ) level ( compression : 1 ( uncompressed ) 2 or 3 ) Return : 0 if OK 1 on error
/* no compression */ /* Find the format and write out directly if in jpeg or tiff g4 */ /* If level 3, flate encode. */ /* OK, it's level 2, so we must convert to jpeg or tiff g4 */