tahoma2d/toonz/sources/common/flash/FDTBitmaps.h
Toshihiro Shimizu 890dddabbd first commit
2016-03-19 02:57:51 +09:00

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