1*f5736e95SDavid du Colombier /*
2*f5736e95SDavid du Colombier * jpeg2eps.c
3*f5736e95SDavid du Colombier * Copyright (C) 2000-2002 A.J. van Os; Released under GPL
4*f5736e95SDavid du Colombier *
5*f5736e95SDavid du Colombier * Description:
6*f5736e95SDavid du Colombier * Functions to translate jpeg pictures into eps
7*f5736e95SDavid du Colombier *
8*f5736e95SDavid du Colombier */
9*f5736e95SDavid du Colombier
10*f5736e95SDavid du Colombier #include <stdio.h>
11*f5736e95SDavid du Colombier #include "antiword.h"
12*f5736e95SDavid du Colombier
13*f5736e95SDavid du Colombier #if defined(DEBUG)
14*f5736e95SDavid du Colombier static int iPicCounter = 0;
15*f5736e95SDavid du Colombier #endif /* DEBUG */
16*f5736e95SDavid du Colombier
17*f5736e95SDavid du Colombier
18*f5736e95SDavid du Colombier #if defined(DEBUG)
19*f5736e95SDavid du Colombier /*
20*f5736e95SDavid du Colombier * vCopy2File
21*f5736e95SDavid du Colombier */
22*f5736e95SDavid du Colombier static void
vCopy2File(FILE * pFile,ULONG ulFileOffset,size_t tPictureLen)23*f5736e95SDavid du Colombier vCopy2File(FILE *pFile, ULONG ulFileOffset, size_t tPictureLen)
24*f5736e95SDavid du Colombier {
25*f5736e95SDavid du Colombier FILE *pOutFile;
26*f5736e95SDavid du Colombier size_t tIndex;
27*f5736e95SDavid du Colombier int iTmp;
28*f5736e95SDavid du Colombier char szFilename[30];
29*f5736e95SDavid du Colombier
30*f5736e95SDavid du Colombier if (!bSetDataOffset(pFile, ulFileOffset)) {
31*f5736e95SDavid du Colombier return;
32*f5736e95SDavid du Colombier }
33*f5736e95SDavid du Colombier
34*f5736e95SDavid du Colombier sprintf(szFilename, "/tmp/pic/pic%04d.jpg", ++iPicCounter);
35*f5736e95SDavid du Colombier pOutFile = fopen(szFilename, "wb");
36*f5736e95SDavid du Colombier if (pOutFile == NULL) {
37*f5736e95SDavid du Colombier return;
38*f5736e95SDavid du Colombier }
39*f5736e95SDavid du Colombier for (tIndex = 0; tIndex < tPictureLen; tIndex++) {
40*f5736e95SDavid du Colombier iTmp = iNextByte(pFile);
41*f5736e95SDavid du Colombier if (putc(iTmp, pOutFile) == EOF) {
42*f5736e95SDavid du Colombier break;
43*f5736e95SDavid du Colombier }
44*f5736e95SDavid du Colombier }
45*f5736e95SDavid du Colombier (void)fclose(pOutFile);
46*f5736e95SDavid du Colombier } /* end of vCopy2File */
47*f5736e95SDavid du Colombier #endif /* DEBUG */
48*f5736e95SDavid du Colombier
49*f5736e95SDavid du Colombier /*
50*f5736e95SDavid du Colombier * bTranslateJPEG - translate a JPEG picture
51*f5736e95SDavid du Colombier *
52*f5736e95SDavid du Colombier * This function translates a picture from jpeg to eps
53*f5736e95SDavid du Colombier *
54*f5736e95SDavid du Colombier * return TRUE when sucessful, otherwise FALSE
55*f5736e95SDavid du Colombier */
56*f5736e95SDavid du Colombier BOOL
bTranslateJPEG(diagram_type * pDiag,FILE * pFile,ULONG ulFileOffset,size_t tPictureLen,const imagedata_type * pImg)57*f5736e95SDavid du Colombier bTranslateJPEG(diagram_type *pDiag, FILE *pFile,
58*f5736e95SDavid du Colombier ULONG ulFileOffset, size_t tPictureLen, const imagedata_type *pImg)
59*f5736e95SDavid du Colombier {
60*f5736e95SDavid du Colombier #if defined(DEBUG)
61*f5736e95SDavid du Colombier vCopy2File(pFile, ulFileOffset, tPictureLen);
62*f5736e95SDavid du Colombier #endif /* DEBUG */
63*f5736e95SDavid du Colombier
64*f5736e95SDavid du Colombier /* Seek to start position of JPEG data */
65*f5736e95SDavid du Colombier if (!bSetDataOffset(pFile, ulFileOffset)) {
66*f5736e95SDavid du Colombier return FALSE;
67*f5736e95SDavid du Colombier }
68*f5736e95SDavid du Colombier
69*f5736e95SDavid du Colombier vImagePrologue(pDiag, pImg);
70*f5736e95SDavid du Colombier vASCII85EncodeFile(pFile, pDiag->pOutFile, tPictureLen);
71*f5736e95SDavid du Colombier vImageEpilogue(pDiag);
72*f5736e95SDavid du Colombier
73*f5736e95SDavid du Colombier return TRUE;
74*f5736e95SDavid du Colombier } /* end of bTranslateJPEG */
75