196 lines
5.4 KiB
C++
196 lines
5.4 KiB
C++
// 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_
|
|
|
|
#ifdef WIN32 // added from DV
|
|
#pragma warning(push)
|
|
#pragma warning(disable : 4786)
|
|
#pragma warning(disable : 4251)
|
|
|
|
#endif
|
|
|
|
#include "FDT.h"
|
|
|
|
#include "tcommon.h"
|
|
|
|
#undef DVAPI
|
|
#undef DVVAR
|
|
#ifdef TFLASH_EXPORTS
|
|
#define DVAPI DV_EXPORT_API
|
|
#define DVVAR DV_EXPORT_VAR
|
|
#else
|
|
#define DVAPI DV_IMPORT_API
|
|
#define DVVAR DV_IMPORT_VAR
|
|
#endif
|
|
|
|
struct FRGB;
|
|
struct FRGBA;
|
|
|
|
// A flash object which defines a jpeg bitmap image (flash 1.0)
|
|
|
|
class DVAPI 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 DVAPI FDTDefineBitsJPEG2 : public FDT
|
|
{
|
|
|
|
public:
|
|
FDTDefineBitsJPEG2(U8 *_JPEGStream, U32 _JPEGSize);
|
|
U16 ID(void);
|
|
virtual void WriteToSWFStream(FSWFStream *_SWFStream);
|
|
~FDTDefineBitsJPEG2();
|
|
|
|
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 DVAPI 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 DVAPI 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;
|
|
TUINT32 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 DVAPI 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 DVAPI 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 DVAPI FDTJPEGTables : public FDT
|
|
{
|
|
|
|
public:
|
|
FDTJPEGTables(U32 encodingDataSize, U8 *encodingData);
|
|
virtual void WriteToSWFStream(FSWFStream *_SWFStream);
|
|
|
|
private:
|
|
U32 encodingDataSize;
|
|
U8 *encodingData;
|
|
};
|
|
#endif
|