⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fbitmap.h

📁 flash文件的解码程序
💻 H
字号:
#ifndef FBITMAP_H_FILE
#define FBITMAP_H_FILE

#include "FBase.h"
#include <iostream>
#include <vector>

class FlashTagDefineBitsJPEG1  : public FlashTag, public FlashIDEnabled
{
DEFINE_RW_INTERFACE
public:
	FlashTagDefineBitsJPEG1() : FlashIDEnabled(false) {}
	FlashTagDefineBitsJPEG1(unsigned char *_data, UDWORD _len) : data(_data), len(_len) {}

	friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsJPEG1 &data);
	friend std::istream &operator >> (std::istream &in,  FlashTagDefineBitsJPEG1 &data);

	const unsigned char *GetJPEGData() { return data; }
	UDWORD GetJPEGDataSize() { return len; }

private:	
	gc_vector<unsigned char *> datagc;
	unsigned char *data;
	UDWORD len;
};

class FlashTagJPEGTables  : public FlashTag
{
DEFINE_RW_INTERFACE
public:
	FlashTagJPEGTables() {}	
	FlashTagJPEGTables(unsigned char *_data, UDWORD _len) : data(_data), len(_len) {}

	friend std::ostream &operator << (std::ostream &out, FlashTagJPEGTables &data);
	friend std::istream &operator >> (std::istream &in,  FlashTagJPEGTables &data);

	const unsigned char *GetJPEGData() { return data; }
	UDWORD GetJPEGDataSize() { return len; }

private:	
	unsigned char *data;
	gc_vector<unsigned char *> datagc;
	UDWORD len;
};

class FlashTagDefineBitsJPEG2  : public FlashTag, public FlashIDEnabled
{
DEFINE_RW_INTERFACE
public:
	FlashTagDefineBitsJPEG2() : FlashIDEnabled(false) {}
	FlashTagDefineBitsJPEG2(unsigned char *_JPEGdata, UDWORD _len) : data(_JPEGdata), len(_len) {}

	friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsJPEG2 &data);
	friend std::istream &operator >> (std::istream &in,  FlashTagDefineBitsJPEG2 &data);

	const unsigned char *GetJPEGData() { return data; }
	UDWORD GetJPEGDataSize() { return len; }

private:	
	unsigned char *data;
	UDWORD len;
	gc_vector<unsigned char *> gc;
};

class FlashTagDefineBitsJPEG3  : public FlashTag, public FlashIDEnabled
{
DEFINE_RW_INTERFACE
public:
	FlashTagDefineBitsJPEG3() : FlashIDEnabled(false) {}
	FlashTagDefineBitsJPEG3(unsigned char *_JPEGdata, UDWORD _len, unsigned char *_TRANSdata2, UDWORD _len2) : data(_JPEGdata), len(_len), data2(_TRANSdata2), len2(_len2) {}

	friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsJPEG3 &data);
	friend std::istream &operator >> (std::istream &in,  FlashTagDefineBitsJPEG3 &data);

	const unsigned char *GetJPEGData() { return data; }
	UDWORD GetJPEGDataSize() { return len; }

	const unsigned char *GetAlphaData() { return data2; }
	UDWORD GetAlphaDataSize() { return len2; }

private:	
	unsigned char *data;
	UDWORD len;
	unsigned char *data2;
	UDWORD len2;

	gc_vector<unsigned char *> gc;
};

class FlashZLibBitmapData
{
public:	
	FlashZLibBitmapData() { data = NULL; }
	FlashZLibBitmapData(unsigned char *_data, UDWORD _len) : withalpha(false), data(_data), len(_len) {}
	
	~FlashZLibBitmapData()
	{
	}
	void AddColor(FlashRGB &r) { colors.push_back(r); }
	void SetAlpha(bool a) { withalpha = a; }
	bool GetAlpha() { return withalpha; }
	UDWORD GetSize() { return colors.size(); }

	void Write(std::ostream &out, char format);
	void Read(std::istream &in, char format, UDWORD size, UDWORD size_buffer);

	const unsigned char *GetData() { return data; }
	UDWORD GetDataSize() { return len; }

private:
	friend class FlashTagDefineBitsLossless;
	friend class FlashTagDefineBitsLossless2;
	gc_vector<unsigned char *> gc;
	bool withalpha;
	std::vector<FlashRGB> colors;
	
	unsigned char *data;
        UDWORD len;
};

class FlashTagDefineBitsLossless : public FlashTag, public FlashIDEnabled
{
DEFINE_RW_INTERFACE
public:
	FlashTagDefineBitsLossless() : FlashIDEnabled(false) {}
	FlashTagDefineBitsLossless(char _format, UWORD _width, UWORD _height, FlashZLibBitmapData &_d)
		:	format(_format), width(_width), height(_height),  d(_d) {}

	friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsLossless &data);
	friend std::istream &operator >> (std::istream &in,  FlashTagDefineBitsLossless &data);

	int GetFormat() { return format; }
	UWORD GetWidth() { return width; }
	UWORD GetHeight() { return height; }
	FlashZLibBitmapData &GetData() { return d; }

private:
	char format;
	UWORD width;
	UWORD height;
	FlashZLibBitmapData d;
  
};

class FlashTagDefineBitsLossless2 : public FlashTag, public FlashIDEnabled
{
DEFINE_RW_INTERFACE
public:
	FlashTagDefineBitsLossless2() : FlashIDEnabled(false) {}
	FlashTagDefineBitsLossless2(char _format, UWORD _width, UWORD _height, FlashZLibBitmapData &_d)
		:	format(_format), width(_width), height(_height), d(_d) {}

	friend std::ostream &operator << (std::ostream &out, FlashTagDefineBitsLossless2 &data);
	friend std::istream &operator >> (std::istream &in,  FlashTagDefineBitsLossless2 &data);


	int GetFormat() { return format; }
	UWORD GetWidth() { return width; }
	UWORD GetHeight() { return height; }
    FlashZLibBitmapData &GetData() { return d; }

private:
	char format;
	UWORD width;
	UWORD height;
	FlashZLibBitmapData d;
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -