mirror of
https://github.com/simon987/antiword.git
synced 2025-04-10 13:06:41 +00:00
98 lines
2.1 KiB
C
98 lines
2.1 KiB
C
/*
|
|
* jpeg2sprt.c
|
|
* Copyright (C) 2000-2002 A.J. van Os; Released under GPL
|
|
*
|
|
* Description:
|
|
* Functions to translate jpeg pictures into sprites
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include "antiword.h"
|
|
|
|
#if 0 /* defined(DEBUG) */
|
|
static int iPicCounter = 0;
|
|
#endif /* DEBUG */
|
|
|
|
|
|
#if 0 /* defined(DEBUG) */
|
|
static void
|
|
vCopy2File(UCHAR *pucJpeg, size_t tJpegSize)
|
|
{
|
|
FILE *pOutFile;
|
|
size_t tIndex;
|
|
char szFilename[30];
|
|
|
|
sprintf(szFilename, "<Wimp$ScrapDir>.jpeg%04d", ++iPicCounter);
|
|
pOutFile = fopen(szFilename, "wb");
|
|
if (pOutFile == NULL) {
|
|
return;
|
|
}
|
|
DBG_MSG(szFilename);
|
|
for (tIndex = 0; tIndex < tJpegSize; tIndex++) {
|
|
if (putc(pucJpeg[tIndex], pOutFile) == EOF) {
|
|
break;
|
|
}
|
|
}
|
|
(void)fclose(pOutFile);
|
|
vSetFiletype(szFilename, FILETYPE_JPEG);
|
|
} /* end of vCopy2File */
|
|
#endif /* DEBUG */
|
|
|
|
/*
|
|
* bSave2Draw - save the JPEG picture to the Draw file
|
|
*
|
|
* This function puts a JPEG picture in a Draw file
|
|
*
|
|
* return TRUE when sucessful, otherwise FALSE
|
|
*/
|
|
BOOL
|
|
bSave2Draw(diagram_type *pDiag, FILE *pFile,
|
|
size_t tJpegSize, const imagedata_type *pImg)
|
|
{
|
|
UCHAR *pucJpeg, *pucTmp;
|
|
size_t tLen;
|
|
int iByte;
|
|
|
|
pucJpeg = xmalloc(tJpegSize);
|
|
for (pucTmp = pucJpeg, tLen = 0; tLen < tJpegSize; pucTmp++, tLen++) {
|
|
iByte = iNextByte(pFile);
|
|
if (iByte == EOF) {
|
|
return FALSE;
|
|
}
|
|
*pucTmp = (UCHAR)iByte;
|
|
}
|
|
|
|
#if 0 /* defined(DEBUG) */
|
|
vCopy2File(pucJpeg, tJpegSize);
|
|
#endif /* DEBUG */
|
|
|
|
/* Add the JPEG to the Draw file */
|
|
vImage2Diagram(pDiag, pImg, pucJpeg, tJpegSize);
|
|
|
|
xfree(pucJpeg);
|
|
return TRUE;
|
|
} /* end of bSave2Draw */
|
|
|
|
/*
|
|
* bTranslateJPEG - translate a JPEG picture
|
|
*
|
|
* This function translates a picture from jpeg to sprite
|
|
*
|
|
* return TRUE when sucessful, otherwise FALSE
|
|
*/
|
|
BOOL
|
|
bTranslateJPEG(diagram_type *pDiag, FILE *pFile,
|
|
ULONG ulFileOffset, size_t tPictureLen, const imagedata_type *pImg)
|
|
{
|
|
/* Seek to start position of JPEG data */
|
|
if (!bSetDataOffset(pFile, ulFileOffset)) {
|
|
return FALSE;
|
|
}
|
|
|
|
if (iGetRiscOsVersion() >= 360) {
|
|
return bSave2Draw(pDiag, pFile, tPictureLen, pImg);
|
|
}
|
|
/* JPEG is not supported until RISC OS 3.6 */
|
|
return bAddDummyImage(pDiag, pImg);
|
|
} /* end of bTranslateJPEG */
|