mirror of
https://github.com/simon987/antiword.git
synced 2025-04-10 13:06:41 +00:00
72 lines
1.7 KiB
C
72 lines
1.7 KiB
C
/*
|
|
* 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 */
|