-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathimgtrans.c
71 lines (63 loc) · 1.66 KB
/
imgtrans.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
* 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 */