]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/aux/antiword/imgtrans.c
exec(2): fix prototypes
[plan9front.git] / sys / src / cmd / aux / antiword / imgtrans.c
1 /*
2  * imgtrans.c
3  * Copyright (C) 2000-2002 A.J. van Os; Released under GPL
4  *
5  * Description:
6  * Generic functions to translate Word images
7  */
8
9 #include <stdio.h>
10 #include "antiword.h"
11
12
13 /*
14  * bTranslateImage - translate the image
15  *
16  * This function reads the type of the given image and and gets it translated.
17  *
18  * return TRUE when sucessful, otherwise FALSE
19  */
20 BOOL
21 bTranslateImage(diagram_type *pDiag, FILE *pFile, BOOL bMinimalInformation,
22         ULONG ulFileOffsetImage, const imagedata_type *pImg)
23 {
24         options_type    tOptions;
25
26         DBG_MSG("bTranslateImage");
27
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);
34
35         vGetOptions(&tOptions);
36         fail(tOptions.eImageLevel == level_no_images);
37
38         if (bMinimalInformation) {
39                 return bAddDummyImage(pDiag, pImg);
40         }
41
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);
55                 }
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);
70         }
71 } /* end of bTranslateImage */