www.pudn.com > FlashFormat.rar > FDTBitmaps.h
// Copyright © 1999 Middlesoft, Inc. All rights reserved.
// First Created By Lee Thomason.
// First Created On 09/08/1999.
// Last Modified On 11/09/1999.
/****************************************************************************************
File Summary: FDTBitmaps.h
This header-file contains the declarations of all low-level bitmap-related classes,
which are all derived from class FDT:
class FDTDefineBits;
class FDTDefineBitsJPEG2;
class FDTDefineBitsJPEG3;
class FDTDefineBitsLosslessBase;
class FDTDefineBitsLossless : public FDTDefineBitsLosslessBase;
class FDTDefineBitsLossless2 : public FDTDefineBitsLosslessBase;
class FDTJPEGTables;
****************************************************************************************/
#ifndef _F_DEFINE_BITMAPS_H_
#define _F_DEFINE_BITMAPS_H_
#include "FDT.h"
struct FRGB;
struct FRGBA;
// A flash object which defines a jpeg bitmap image (flash 1.0)
class FDTDefineBits : public FDT {
public:
// constructed with image size and a pointer to the actual jpeg stream
FDTDefineBits(U32 _size, U8* _image);
U16 ID(void);
virtual void WriteToSWFStream(FSWFStream* _SWFStream);
private:
U16 characterID;
U32 size;
U8* image;
};
// A flash object which defines a jpeg bitmap image (flash 2.0)
// Differs from FDTDefineBits in that the encoding data and image data are contained in the object separately, but this DefineBitsJPEG2 doesn't really do this (as does not flash)...
// An empty stream is writen where encoding data should normally be encountered and all the JPEG and encoding data is written within the JPEG stream
class FDTDefineBitsJPEG2 : public FDT {
public:
FDTDefineBitsJPEG2(U8* _JPEGStream, U32 _JPEGSize);
U16 ID(void);
virtual void WriteToSWFStream(FSWFStream* _SWFStream);
private:
U16 characterID;
U32 JPEGSize;
U8* JPEGStream;
};
// A flash object which defines a jpeg bitmap image (flash 3.0)
// Differs from FDTDefineBitsJPEG2 in that Alpha transparency data is contained in this object
class FDTDefineBitsJPEG3 : public FDT{
public:
FDTDefineBitsJPEG3(U8* _JPEGStream, U32 _JPEGSize,
U8* _alphaStream, U32 _alphaSize);
U16 ID(void);
virtual void WriteToSWFStream(FSWFStream* _SWFStream);
private:
U16 characterID;
U32 alphaSize;
U32 JPEGSize;
U8* JPEGStream;
U8* alphaStream;
};
// Base class for FDTDefineBitsLossless (below) and FDTDefineBitsLossless2.
// Please see those two classes for descripion of parameters.
// Note this class can be constructed - it will write the correct tag when
// WriteToSWFStream is called. Or one of the child classes can be used.
class FDTDefineBitsLosslessBase : public FDT {
public:
enum {
bm1Bit, // 2 color
bm2Bit, // 4 color
bm4Bit, // 16 color
bm8Bit, // 256 color
bm16Bit, // high
bm32Bit // true
};
virtual U16 ID() { return characterID; }
FDTDefineBitsLosslessBase( U8 _format,
U16 _width,
U16 _height,
int _colorTableCount,
const void* _colorTableData,
const void* _imageData,
bool alpha
);
virtual ~FDTDefineBitsLosslessBase();
virtual void WriteToSWFStream(FSWFStream* _SWFStream);
private:
U16 characterID;
U8 format;
U16 width;
U16 height;
int colorTableCount;
bool alpha;
unsigned long compressedSize; // a count of how many bytes are in the compressed buffer
unsigned char* compressed; // pointer to the compressed data
};
// Defines a loss-less bitmap object, like a GIF, BMP, or PCT.
// This version does not accept alpha channel data - FDTDefineBitsLossless2 does.
// Accepts raw bitmap data and compresses it.
class FDTDefineBitsLossless : public FDTDefineBitsLosslessBase {
public:
FDTDefineBitsLossless( U8 _format, // format, from FDTDefineBitsLosslessBase.
U16 _width, // size of the image
U16 _height,
int _colorTableCount, // how many entries in the color table - consistent
// with format. May be 0.
const FRGB* _colorTableData, // Null if no color cable. RGB data
const void* _imageData // Pointer to the image. (byte aligned.)
);
};
// Defines a loss-less bitmap object, like a GIF, BMP, or PCT.
// This version requires alpha channel data. Note the color table is RGBA.
// Accepts raw bitmap data and compresses it.
class FDTDefineBitsLossless2 : public FDTDefineBitsLosslessBase {
public:
FDTDefineBitsLossless2( U8 _format, // format, from FDTDefineBitsLosslessBase.
U16 _width, // size of the image
U16 _height,
int _colorTableCount, // how many entries in the color table - consistent
// with format. May be 0.
const FRGBA* _colorTableData, // Null if no color cable. RGB data
const void* _imageData // Pointer to the image. (byte aligned.)
);
};
//the JPEGTable structure (contains the encoding scheme for all JPEGs defined using DefineBits
class FDTJPEGTables : public FDT{
public:
FDTJPEGTables(U32 encodingDataSize, U8* encodingData);
virtual void WriteToSWFStream(FSWFStream *_SWFStream);
private:
U32 encodingDataSize;
U8* encodingData;
};
#endif