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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
/************************************************************************/
/* */
/* Open the objects embedded in a document. */
/* */
/************************************************************************/
# include "tedConfig.h"
# include <stdlib.h>
# include <string.h>
# include <stdio.h>
# include <sioMemory.h>
# include <sioHex.h>
# include <appImage.h>
# include <appWinMeta.h>
# include <appDebugon.h>
# include "docBuf.h"
/************************************************************************/
/* */
/* Make the bitmap for an image. */
/* Make a name for an image. */
/* */
/************************************************************************/
static int docGetBitmap( bmReadBitmap readBitmap,
InsertedObject * io,
const MemoryBuffer * mb )
{
int res;
AppBitmapImage * abi= (AppBitmapImage *)malloc( sizeof(AppBitmapImage) );
SimpleInputStream * sisMem;
SimpleInputStream * sisBitmap;
if ( ! abi )
{ XDEB(abi); return -1; }
appInitBitmapImage( abi );
sisMem= sioInMemoryOpen( mb );
if ( ! sisMem )
{ XDEB(sisMem); return -1; }
sisBitmap= sioInHexOpen( sisMem );
if ( ! sisBitmap )
{ XDEB(sisMem); return -1; }
res= (*readBitmap)( &(abi->abiBitmap), &(abi->abiBuffer), sisBitmap );
if ( res < 0 )
{ LDEB(res); return -1; }
if ( res > 0 )
{ return 0; }
sioInClose( sisBitmap );
sioInClose( sisMem );
io->ioPrivate= (void *)abi;
return 0;
}
int docGetBitmapForObject( InsertedObject * io )
{
switch( io->ioKind )
{
case DOCokPICTWMETAFILE:
if ( ! io->ioPrivate &&
docGetBitmap( appMetaPlayWmfImg,
io, &io->ioObjectData ) )
{ LDEB(1); return 0; }
break;
case DOCokPICTPNGBLIP:
if ( ! io->ioPrivate &&
docGetBitmap( bmPngReadPng,
io, &io->ioObjectData ) )
{ LDEB(1); return 0; }
break;
case DOCokPICTJPEGBLIP:
if ( ! io->ioPrivate &&
docGetBitmap( bmJpegReadJfif,
io, &io->ioObjectData ) )
{ LDEB(1); return 0; }
break;
case DOCokOLEOBJECT:
if ( io->ioResultKind == DOCokPICTWMETAFILE )
{
if ( ! io->ioPrivate &&
docGetBitmap( appMetaPlayWmfImg,
io, &io->ioResultData ) )
{ LDEB(1); return 0; }
return 0;
}
return 0;
case DOCokMACPICT:
case DOCokPICTEMFBLIP:
default:
LDEB(io->ioKind); return 0;
}
return 0;
}
|