Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 * imgtrans.c
 * Copyright (C) 2000-2002 A.J. van Os; Released under GPL
 *
 * Description:
 * Generic functions to translate Word images
 */

#include <stdio.h>
#include "antiword.h"


/*
 * bTranslateImage - translate the image
 *
 * This function reads the type of the given image and and gets it translated.
 *
 * return TRUE when sucessful, otherwise FALSE
 */
BOOL
bTranslateImage(diagram_type *pDiag, FILE *pFile, BOOL bMinimalInformation,
        ULONG ulFileOffsetImage, const imagedata_type *pImg)
{
        options_type    tOptions;

        DBG_MSG("bTranslateImage");

        fail(pDiag == NULL);
        fail(pFile == NULL);
        fail(ulFileOffsetImage == FC_INVALID);
        fail(pImg == NULL);
        fail(pImg->iHorSizeScaled <= 0);
        fail(pImg->iVerSizeScaled <= 0);

        vGetOptions(&tOptions);
        fail(tOptions.eImageLevel == level_no_images);

        if (bMinimalInformation) {
                return bAddDummyImage(pDiag, pImg);
        }

        switch (pImg->eImageType) {
        case imagetype_is_dib:
                return bTranslateDIB(pDiag, pFile,
                                ulFileOffsetImage + pImg->tPosition,
                                pImg);
        case imagetype_is_jpeg:
                return bTranslateJPEG(pDiag, pFile,
                                ulFileOffsetImage + pImg->tPosition,
                                pImg->tLength - pImg->tPosition,
                                pImg);
        case imagetype_is_png:
                if (tOptions.eImageLevel == level_ps_2) {
                        return bAddDummyImage(pDiag, pImg);
                }
                return bTranslatePNG(pDiag, pFile,
                                ulFileOffsetImage + pImg->tPosition,
                                pImg->tLength - pImg->tPosition,
                                pImg);
        case imagetype_is_emf:
        case imagetype_is_wmf:
        case imagetype_is_pict:
        case imagetype_is_external:
                /* FIXME */
                return bAddDummyImage(pDiag, pImg);
        case imagetype_is_unknown:
        default:
                DBG_DEC(pImg->eImageType);
                return bAddDummyImage(pDiag, pImg);
        }
} /* end of bTranslateImage */