?? blob.c
字號:
///////////////////////////////////////////////////////////////////////////////
//
// blob.c
//
// DESCRIPTION
// Define functions to read binary data
//
//
///////////////////////////////////////////////////////////////////////////////
/*
Include declarations.
*/
#include "gifcommon.h"
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% G e t B l o b I n f o %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% GetBlobInfo() initializes the BlobInfo structure.
%
% The format of the GetBlobInfo method is:
%
% void GetBlobInfo(BlobInfo *blob_info)
%
% A description of each parameter follows:
%
% o blob_info: Specifies a pointer to a BlobInfo structure.
%
%
*/
void GetBlobInfo
(
BlobInfo *blob_info
)
{
(void) memset(blob_info, 0, sizeof(BlobInfo));
blob_info->quantum = 65536;
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% C l o n e B l o b I n f o %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Method CloneBlobInfo makes a duplicate of the given blob info structure,
% or if blob info is NULL, a new one.
%
% The format of the CloneBlobInfo method is:
%
% BlobInfo *CloneBlobInfo(const BlobInfo *blob_info)
%
% A description of each parameter follows:
%
% o clone_info: Method CloneBlobInfo returns a duplicate of the given
% blob info, or if blob info is NULL a new one.
%
% o quantize_info: a structure of type info.
%
%
*/
BlobInfo *CloneBlobInfo
(
const BlobInfo *blob_info,
AllocateMemory getmemory
)
{
BlobInfo *clone_info;
clone_info = (BlobInfo *) getmemory(sizeof(BlobInfo));
if (clone_info == (BlobInfo *) OP_NULL)
{
return OP_NULL;
}
if (blob_info == (BlobInfo *) OP_NULL)
{
GetBlobInfo(clone_info);
return(clone_info);
}
*clone_info=(*blob_info);
return(clone_info);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
+ O p e n B l o b %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Method OpenBlob opens a file associated with the image. A file name of
% '-' sets the file to stdin for type 'r' and stdout for type 'w'. If the
% filename suffix is '.gz' or '.Z', the image is decompressed for type 'r'
% and compressed for type 'w'. If the filename prefix is '|', it is piped
% to or from a system command.
%
% The format of the OpenBlob method is:
%
% unsigned int OpenBlob(const ImageInfo *image_info,Image *image,
% const char *type,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o status: Method OpenBlob returns True if the file is successfully
% opened otherwise False.
%
% o image_info: The image info..
%
% o image: The image.
%
% o type: 'r' for reading; 'w' for writing.
%
*/
unsigned int OpenBlob
(
Image *image,
const char *type
)
{
return 1;
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
+ C l o s e B l o b %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Method CloseBlob closes a file associated with the image. If the
% filename prefix is '|', the file is a pipe and is closed with PipeClose.
%
% The format of the CloseBlob method is:
%
% void CloseBlob(Image *image)
%
% A description of each parameter follows:
%
% o image: The image.
%
%
*/
void CloseBlob
(
Image *image
)
{
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% D e s t r o y B l o b I n f o %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% DestroyBlobInfo() deallocates memory associated with an BlobInfo structure.
%
% The format of the DestroyBlobInfo method is:
%
% void DestroyBlobInfo(BlobInfo *blob)
%
% A description of each parameter follows:
%
% o blob: Specifies a pointer to a BlobInfo structure.
%
%
*/
void DestroyBlobInfo
(
BlobInfo *blob,
LiberateMemory freememory
)
{
freememory((void *) blob);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
+ R e a d B l o b %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Method ReadBlob reads data from the blob or image file and returns it. It
% returns the number of bytes read.
%
% The format of the ReadBlob method is:
%
% unsigned int ReadBlob(Image *image,const unsigned int length,void *data)
%
% A description of each parameter follows:
%
% o count: Method ReadBlob returns the number of bytes read.
%
% o image: The image.
%
% o length: Specifies an integer representing the number of bytes
% to read from the file.
%
% o data: Specifies an area to place the information requested from
% the file.
%
%
*/
unsigned int ReadBlob
(
Image *image,
const unsigned int length,
unsigned char **data
)
{
unsigned int count;
count=Min(length,image->blob->length-image->blob->offset);
if(count != 0)
{
*data = image->blob->data+image->blob->offset;
image->blob->offset+=count;
}
return(count);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
+ R e a d B l o b B y t e %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Method ReadBlobByte reads a single byte from the image file and returns it.
%
% The format of the ReadBlobByte method is:
%
% int ReadBlobByte(Image *image)
%
% A description of each parameter follows.
%
% o value: Method ReadBlobByte returns an integer read from the file.
%
% o image: The image.
%
%
*/
int ReadBlobByte
(
Image *image
)
{
unsigned char *tp;
unsigned char **p;
unsigned int count;
p = &tp;
count = ReadBlob(image, 1, p);
if (count == 0)
{
return(EOF);
}
return(*tp);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
+ R e a d B l o b L S B S h o r t %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Method ReadBlobLSBShort reads a short value as a 16 bit quantity in
% least-significant byte first order.
%
% The format of the ReadBlobLSBShort method is:
%
% unsigned short ReadBlobLSBShort(Image *image)
%
% A description of each parameter follows.
%
% o value: Method ReadBlobLSBShort returns an unsigned short read from
% the file.
%
% o image: The image.
%
%
*/
unsigned short ReadBlobLSBShort
(
Image *image
)
{
unsigned char *tp;
unsigned char **p;
unsigned short value;
p = &tp;
value = ReadBlob(image, 2, p);
if (value == 0)
{
return((unsigned short) ~0);
}
value = tp[1] << 8;
value |= tp[0];
return(value);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -