亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gameswf_tools.cpp

?? 一個開源的嵌入式flash播放器 具體看文檔和例子就可
?? CPP
字號:
// gameswf_tools.cpp	-- Thatcher Ulrich <tu@tulrich.com> 2004// This source code has been donated to the Public Domain.  Do// whatever you want with it.// Some optional helper code.#include "base/tu_file.h"#include "base/utility.h"#include "base/zlib_adapter.h"#include "gameswf.h"#include "gameswf_log.h"#include "gameswf_stream.h"#include "gameswf_types.h"#if TU_CONFIG_LINK_TO_ZLIB//#include <zlib.h>	// for compress()#endif // TU_CONFIG_LINK_TO_ZLIBnamespace gameswf { namespace tools{	// This struct tracks an input stream.  When you call	// do_copy(), it writes all the data that has been read from	// the input stream into the output stream.  (Basically it	// goes by the input file position, not by the *actual* read	// calls.)	//	// The copying can be optionally cancelled.	struct copy_helper	{		tu_file*	m_in;		tu_file*	m_out;		int	m_initial_in_pos;		bool	m_done_copy;		copy_helper(tu_file* in, tu_file* out)			:			m_in(in),			m_out(out),			m_initial_in_pos(in->get_position()),			m_done_copy(false)		{			assert(m_in && m_in->get_error() == TU_FILE_NO_ERROR);			assert(m_out && m_out->get_error() == TU_FILE_NO_ERROR);		}		bool	do_copy()		// Copy the data.  Return true on success, false on failure.		{			if (m_done_copy)			{				assert(0);				log_error("gameswf::tools::copy_helper() already done copy\n");				return false;			}			m_done_copy = true;			int	current_in_pos = m_in->get_position();			int	bytes_to_copy = current_in_pos - m_initial_in_pos;			if (bytes_to_copy > 0)			{				m_in->set_position(m_initial_in_pos);				int	bytes_copied = m_out->copy_bytes(m_in, bytes_to_copy);				if (bytes_copied != bytes_to_copy)				{					m_in->set_position(current_in_pos);	// fixup					return false;				}				assert(m_in->get_position() == current_in_pos);				return true;			}			else			{				log_error("gameswf::tools::copy_helper asked to copy %d bytes\n",					  bytes_to_copy);				return false;			}		}	};	void	write_placeholder_bitmap(tu_file* out, Uint16 character_id)	// Write a minimal bitmap character tag into the given stream,	// with the given character_id.	{		out->write_le16((20 << 6) | 0x3F);	// tag header: tag type = 20, size = from next u32		int	tag_size_pos = out->get_position();		out->write_le32(0);	// placeholder for tag size.		out->write_le16(character_id);		out->write_byte(4);	// code for 16 bits/pixel		out->write_le16(2);	// width, min pitch = 4 bytes/row		out->write_le16(1);	// height		// This is zlib-compressed data representing four 0 bytes.		static const int	COMP_SIZE = 12;		unsigned char	compressed_data[COMP_SIZE] =		{			0x78,			0x9c,			0x63,			0x60,			0x60,			0x60,			0x00,			0x00,			0x00,			0x04,			0x00,			0x01,		};		out->write_bytes(compressed_data, COMP_SIZE);// Here's some code to compute that at run-time.#if 0#ifdef TU_CONFIG_LINK_TO_ZLIB		int	buffer_bytes = 4;	// width * height * bytes/pix		unsigned char	buffer[4] = { 0, 0, 0, 0 };		static const int	COMPBUFSIZE = 200;		unsigned char	compressed_buffer[COMPBUFSIZE];		// Deflate our little dummy bitmap.		unsigned long	compressed_size = COMPBUFSIZE;		int err = compress(compressed_buffer, &compressed_size, buffer, sizeof(buffer));		if (err != Z_OK)		{			assert(0);	// There's no good reason for this to fail.			log_error("write_placeholder_bitmap(): compress() failed.\n");		}		else		{			// Dump the compressed data into the output.			out->write_bytes(compressed_buffer, compressed_size);		}#endif // TU_CONFIG_LINK_TO_ZLIB#endif // 0		// Write the actual tag size in the slot at the beginning.		int	end_pos = out->get_position();		int	size = end_pos - tag_size_pos - 4;		out->set_position(tag_size_pos);		out->write_le32(size);		out->set_position(end_pos);	}}}	// end namespace gameswf::toolsint	gameswf::tools::process_swf(tu_file* swf_out, tu_file* in, const process_options& options){	assert(in && in->get_error() == TU_FILE_NO_ERROR);	assert(swf_out && swf_out->get_error() == TU_FILE_NO_ERROR);	// @@ Copied & adapted from movie_def_impl::read()	// @@ TODO share this wrapper code somehow (also with gameswf_parser)	Uint32	file_start_pos = in->get_position();	Uint32	header = in->read_le32();	Uint32	file_length = in->read_le32();	Uint32	file_end_pos = file_start_pos + file_length;	int	version = (header >> 24) & 255;	if ((header & 0x0FFFFFF) != 0x00535746	    && (header & 0x0FFFFFF) != 0x00535743)	{		// ERROR		log_error("gameswf::movie_def_impl::read() -- file does not start with a SWF header!\n");		return 1;	}	bool	compressed = (header & 255) == 'C';	IF_VERBOSE_PARSE(log_msg("version = %d, file_length = %d\n", version, file_length));	tu_file*	original_in = NULL;	if (compressed)	{#if TU_CONFIG_LINK_TO_ZLIB == 0		log_error("gameswf can't read zipped SWF data; TU_CONFIG_LINK_TO_ZLIB is 0!\n");		return -1;#endif		IF_VERBOSE_PARSE(log_msg("file is compressed.\n"));		original_in = in;		// Uncompress the input as we read it.		in = zlib_adapter::make_inflater(original_in);		// Subtract the size of the 8-byte header, since		// it's not included in the compressed		// stream length.		file_end_pos = file_length - 8;	}	stream	str(in);	if (options.m_zip_whole_file)	{		// @@ TODO not implemented yet.		log_error("gameswf::tools::process_swf(): options.m_zip_whole_file is not implemented!  Output will not be zipped.\n");	}	//	// Start the output file	//	int	output_file_start_pos = swf_out->get_position();	swf_out->write_le32(0x06535746);	// Flash 6 header, uncompressed	// File length (need to overwrite later with the actual value.	int	output_file_length_pos = swf_out->get_position();	swf_out->write_le32(0);	float	frame_rate = 30.f;	int	frame_count = 0;	{		copy_helper	cp(in, swf_out);	// copies everything that's read in this scope.		rect	dummy_frame_size;		dummy_frame_size.read(&str);		frame_rate = str.read_u16() / 256.0f;		frame_count = str.read_u16();		str.align();		bool	success = cp.do_copy();		if (!success)		{			// Error!			log_error("gameswf::tools::process_swf() -- unable to copy header data!\n");			return 1;		}	}//	m_playlist.resize(m_frame_count);//	IF_VERBOSE_PARSE(m_frame_size.print());	IF_VERBOSE_PARSE(log_msg("frame rate = %f, frames = %d\n", frame_rate, frame_count));	while ((Uint32) str.get_position() < file_end_pos)	{		copy_helper	cp(in, swf_out);		int	tag_type = str.open_tag();		if (options.m_remove_image_data		    && tag_type == 8)		{			// Don't need no stinkin jpeg tables.			str.close_tag();		}		else if (options.m_remove_image_data			 && (tag_type == 6			     || tag_type == 20			     || tag_type == 21			     || tag_type == 35			     || tag_type == 36))		{			// Some type of bitmap character tag; replace it with a minimal stand-in.			Uint16	cid = str.read_u16();			str.close_tag();			// Insert substitute tag.			write_placeholder_bitmap(swf_out, cid);		}		else		{			// Leave this tag as-is.			str.close_tag();			str.align();			// Copy into output.			bool	success = cp.do_copy();			if (!success)			{				// Error!				log_error("gameswf::tools::process_swf() -- error copying tag!\n");				return 1;			}		}		if (tag_type == 0)		{			if ((unsigned int) str.get_position() != file_end_pos)			{				// Safety break, so we don't read past the end of the				// movie.				log_msg("warning: process_swf() hit stream-end tag, but not at the "					"end of the file yet; stopping for safety\n");				break;			}		}	}	if (original_in)	{		// Done with the zlib_adapter.		delete in;	}		// Go back and write the file size.	int	current_pos = swf_out->get_position();	swf_out->set_position(output_file_length_pos);	swf_out->write_le32(current_pos - output_file_start_pos);	swf_out->set_position(current_pos);	return 0;	// OK}// Local Variables:// mode: C++// c-basic-offset: 8 // tab-width: 8// indent-tabs-mode: t// End:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区久久| 免费人成精品欧美精品| 艳妇臀荡乳欲伦亚洲一区| 亚洲制服丝袜一区| 国产毛片精品一区| 欧美肥胖老妇做爰| 亚洲欧洲综合另类| 国产99久久久久久免费看农村| 555www色欧美视频| 亚洲曰韩产成在线| 波多野结衣亚洲| 久久久噜噜噜久噜久久综合| 美洲天堂一区二卡三卡四卡视频| 色狠狠色狠狠综合| 国产精品久久久久桃色tv| 精品中文字幕一区二区| 欧美一级一区二区| 三级久久三级久久久| 91福利精品第一导航| 自拍偷拍亚洲欧美日韩| 波多野结衣精品在线| 欧美激情中文字幕一区二区| 国产综合色视频| 精品国产sm最大网站| 日本不卡视频一二三区| 5566中文字幕一区二区电影| 性做久久久久久免费观看欧美| 一本大道av伊人久久综合| 国产精品亲子伦对白| 丁香六月综合激情| 中文字幕av一区二区三区| 国产精品99久久久久久久女警 | 成人免费高清在线观看| 久久午夜色播影院免费高清| 久久精品国产一区二区三| 欧美一级片在线看| 久久99精品国产.久久久久 | 精品亚洲aⅴ乱码一区二区三区| 777色狠狠一区二区三区| 日韩高清国产一区在线| 欧美一区二区三区播放老司机| 视频在线观看国产精品| 欧美一区二区三区在线观看视频| 美脚の诱脚舐め脚责91| 久久九九影视网| 99精品视频免费在线观看| 亚洲精品福利视频网站| 欧美人狂配大交3d怪物一区| 另类小说图片综合网| 久久九九99视频| 9人人澡人人爽人人精品| 亚洲va国产天堂va久久en| 欧美日产在线观看| 韩国女主播一区| 亚洲三级在线播放| 欧美日韩不卡一区二区| 国内外成人在线| 国产精品久久久久久妇女6080 | 99精品视频在线观看免费| 亚洲综合激情小说| 精品国偷自产国产一区| av激情成人网| 免费一级片91| 亚洲欧美自拍偷拍色图| 91麻豆精品国产| 成人性视频免费网站| 午夜久久久影院| 欧美激情综合网| 91精品国产综合久久久久久漫画| 国产精品资源在线观看| 洋洋成人永久网站入口| 久久久久国产精品免费免费搜索| 在线一区二区三区四区五区| 久久99久久99| 亚洲高清三级视频| 国产精品区一区二区三区| 91精品一区二区三区久久久久久 | 中文乱码免费一区二区| 欧美日本一区二区三区四区 | 亚洲色图视频网站| 精品国产三级电影在线观看| 91成人免费网站| 成人av在线看| 狠狠色狠狠色综合日日91app| 一区二区三区久久| 国产精品伦理在线| 久久99久久99精品免视看婷婷| 亚洲日本成人在线观看| 国产视频视频一区| 蜜桃久久久久久久| 日韩美女一区二区三区四区| 精品制服美女久久| 亚洲综合免费观看高清完整版在线| 色综合久久久久| 亚洲国产精品一区二区www| 在线不卡的av| 日韩精品一二三区| 欧美一级日韩不卡播放免费| 国产高清久久久久| 美女脱光内衣内裤视频久久网站| 日本亚洲电影天堂| 最新成人av在线| 日本在线不卡视频| 国产成人欧美日韩在线电影| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美综合亚洲图片综合区| 欧美精品色综合| 亚洲欧洲另类国产综合| 天堂va蜜桃一区二区三区漫画版| 国产精品国产三级国产三级人妇| 久久久亚洲精品石原莉奈| 日韩美一区二区三区| 久久色视频免费观看| 欧美一级高清片在线观看| 欧美久久一区二区| 欧美在线观看一区| www.亚洲色图.com| 中文字幕精品一区| 欧洲色大大久久| 欧美日韩国产区一| 欧美军同video69gay| 欧美日韩国产精品成人| 69久久99精品久久久久婷婷| 91麻豆精品国产91久久久久久| 91精品在线观看入口| 日韩精品一区二区三区视频在线观看 | 日韩精品91亚洲二区在线观看| 亚洲午夜精品17c| 视频一区二区三区中文字幕| 日本欧美大码aⅴ在线播放| 日本强好片久久久久久aaa| 日韩高清不卡在线| 久久99国产精品久久99果冻传媒| 精品在线一区二区三区| 成人性生交大片免费看在线播放| 99精品欧美一区| 欧美性三三影院| 精品精品国产高清a毛片牛牛| 日本一区二区三区在线不卡| 亚洲视频香蕉人妖| 日本网站在线观看一区二区三区| 国内外成人在线| 一本久道中文字幕精品亚洲嫩 | 成人综合婷婷国产精品久久| 一本久道久久综合中文字幕| 91麻豆精品国产自产在线观看一区 | 在线成人小视频| 精品久久国产字幕高潮| 国产欧美一区二区三区网站 | 91国产福利在线| 日韩亚洲欧美综合| 最新中文字幕一区二区三区| 日韩国产精品91| 波多野洁衣一区| 欧美成人一区二区| 中文字幕在线不卡一区二区三区 | 亚洲精品菠萝久久久久久久| 视频一区视频二区中文字幕| 成人小视频在线| 日韩精品在线一区| 一区二区三区日本| 岛国精品在线播放| 日韩欧美中文字幕一区| 一区二区三区免费看视频| 国产一区免费电影| 欧美日韩免费观看一区三区| 国产精品国产三级国产普通话三级| 日韩国产欧美视频| 色噜噜狠狠色综合中国| 国产无人区一区二区三区| 天天色天天操综合| 色狠狠av一区二区三区| 国产亚洲人成网站| 麻豆国产精品视频| 一本高清dvd不卡在线观看| 欧美国产精品一区二区| 美女视频第一区二区三区免费观看网站 | 91美女在线看| 久久精品人人做人人爽97| 亚洲成人激情社区| 色综合久久88色综合天天| 国产欧美日韩卡一| 久久99国产精品免费网站| 91精品在线观看入口| 亚洲成在人线在线播放| 色婷婷综合激情| 国产精品丝袜久久久久久app| 韩国欧美国产1区| 久久亚洲综合av| 久久99久久久久| 欧美一区二区三区小说| 日韩精品1区2区3区| 欧美精品粉嫩高潮一区二区| 亚洲电影第三页| 欧美日韩视频在线第一区| 亚洲综合免费观看高清完整版在线| 色综合中文综合网| 91麻豆免费看片| 欧美一区二区三区免费| 欧美日本高清视频在线观看|