Imported from antiword-0.37.tar.gz.
[antiword.git] / imgtrans.c
blob1b284c4e3996601fa86141554db2fd7479bc6814
1 /*
2 * imgtrans.c
3 * Copyright (C) 2000-2002 A.J. van Os; Released under GPL
5 * Description:
6 * Generic functions to translate Word images
7 */
9 #include <stdio.h>
10 #include "antiword.h"
14 * bTranslateImage - translate the image
16 * This function reads the type of the given image and and gets it translated.
18 * return TRUE when sucessful, otherwise FALSE
20 BOOL
21 bTranslateImage(diagram_type *pDiag, FILE *pFile, BOOL bMinimalInformation,
22 ULONG ulFileOffsetImage, const imagedata_type *pImg)
24 options_type tOptions;
26 DBG_MSG("bTranslateImage");
28 fail(pDiag == NULL);
29 fail(pFile == NULL);
30 fail(ulFileOffsetImage == FC_INVALID);
31 fail(pImg == NULL);
32 fail(pImg->iHorSizeScaled <= 0);
33 fail(pImg->iVerSizeScaled <= 0);
35 vGetOptions(&tOptions);
36 fail(tOptions.eImageLevel == level_no_images);
38 if (bMinimalInformation) {
39 return bAddDummyImage(pDiag, pImg);
42 switch (pImg->eImageType) {
43 case imagetype_is_dib:
44 return bTranslateDIB(pDiag, pFile,
45 ulFileOffsetImage + pImg->tPosition,
46 pImg);
47 case imagetype_is_jpeg:
48 return bTranslateJPEG(pDiag, pFile,
49 ulFileOffsetImage + pImg->tPosition,
50 pImg->tLength - pImg->tPosition,
51 pImg);
52 case imagetype_is_png:
53 if (tOptions.eImageLevel == level_ps_2) {
54 return bAddDummyImage(pDiag, pImg);
56 return bTranslatePNG(pDiag, pFile,
57 ulFileOffsetImage + pImg->tPosition,
58 pImg->tLength - pImg->tPosition,
59 pImg);
60 case imagetype_is_emf:
61 case imagetype_is_wmf:
62 case imagetype_is_pict:
63 case imagetype_is_external:
64 /* FIXME */
65 return bAddDummyImage(pDiag, pImg);
66 case imagetype_is_unknown:
67 default:
68 DBG_DEC(pImg->eImageType);
69 return bAddDummyImage(pDiag, pImg);
71 } /* end of bTranslateImage */