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

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

?? gameswf_impl.h

?? 一個開源的嵌入式flash播放器的源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
	// Information about how to display a character.	struct display_info	{		movie*	m_parent;		int	m_depth;		cxform	m_color_transform;		matrix	m_matrix;		float	m_ratio;                Uint16 	m_clip_depth;		display_info()			:			m_parent(NULL),			m_depth(0),			m_ratio(0.0f),                        m_clip_depth(0)		{		}		void	concatenate(const display_info& di)		// Concatenate the transforms from di into our		// transforms.		{			m_depth = di.m_depth;			m_color_transform.concatenate(di.m_color_transform);			m_matrix.concatenate(di.m_matrix);			m_ratio = di.m_ratio;                        m_clip_depth = di.m_clip_depth;		}	};	// character is a live, stateful instance of a character_def.	// It represents a single active element in a movie.	struct character : public movie	{		int		m_id;		movie*		m_parent;		tu_string	m_name;		int		m_depth;		cxform		m_color_transform;		matrix		m_matrix;		float		m_ratio;                Uint16		m_clip_depth;		bool		m_visible;		hash<event_id, as_value>	m_event_handlers;		void		(*m_display_callback)(void*);		void*		m_display_callback_user_ptr;		character(movie* parent, int id)			:			m_id(id),			m_parent(parent),			m_depth(-1),			m_ratio(0.0f),			m_clip_depth(0),			m_visible(true),			m_display_callback(NULL),			m_display_callback_user_ptr(NULL)					{			assert((parent == NULL && m_id == -1)			       || (parent != NULL && m_id >= 0));		}		// Accessors for basic display info.		int	get_id() const { return m_id; }		movie*	get_parent() const { return m_parent; }		void set_parent(movie* parent) { m_parent = parent; }  // for extern movie		int	get_depth() const { return m_depth; }		void	set_depth(int d) { m_depth = d; }		const matrix&	get_matrix() const { return m_matrix; }		void	set_matrix(const matrix& m)		{			assert(m.is_valid());			m_matrix = m;		}		const cxform&	get_cxform() const { return m_color_transform; }		void	set_cxform(const cxform& cx) { m_color_transform = cx; }		void	concatenate_cxform(const cxform& cx) { m_color_transform.concatenate(cx); }		void	concatenate_matrix(const matrix& m) { m_matrix.concatenate(m); }		float	get_ratio() const { return m_ratio; }		void	set_ratio(float f) { m_ratio = f; }		Uint16	get_clip_depth() const { return m_clip_depth; }		void	set_clip_depth(Uint16 d) { m_clip_depth = d; }		void	set_name(const char* name) { m_name = name; }		const tu_string&	get_name() const { return m_name; }		// For edit_text support (Flash 5).  More correct way		// is to do "text_character.text = whatever", via		// set_member().		virtual const char*	get_text_name() const { return ""; }		virtual void	set_text_value(const char* new_text) { assert(0); }		virtual matrix	get_world_matrix() const		// Get our concatenated matrix (all our ancestor transforms, times our matrix).  Maps		// from our local space into "world" space (i.e. root movie space).		{			matrix	m;			if (m_parent)			{				m = m_parent->get_world_matrix();			}			m.concatenate(get_matrix());			return m;		}		virtual cxform	get_world_cxform() const		// Get our concatenated color transform (all our ancestor transforms,		// times our cxform).  Maps from our local space into normal color space.		{			cxform	m;			if (m_parent)			{				m = m_parent->get_world_cxform();			}			m.concatenate(get_cxform());			return m;		}		// Event handler accessors.		bool	get_event_handler(event_id id, as_value* result)		{			return m_event_handlers.get(id, result);		}		void	set_event_handler(event_id id, const as_value& method)		{			m_event_handlers.set(id, method);		}		// Movie interfaces.  By default do nothing.  sprite_instance and some others override these.		virtual void	display() {}		virtual float	get_height() { return 0; }		virtual float	get_width() { return 0; }		virtual movie*	get_root_movie() { return m_parent->get_root_movie(); }		virtual int	get_current_frame() const { assert(0); return 0; }		virtual bool	has_looped() const { assert(0); return false; }		virtual void	restart() { /*assert(0);*/ }		virtual void	advance(float delta_time) {}	// for buttons and sprites		virtual void	goto_frame(int target_frame) {}		virtual bool	get_accept_anim_moves() const { return true; }		virtual void	get_drag_state(drag_state* st) { assert(m_parent); m_parent->get_drag_state(st); }		virtual void	set_visible(bool visible) { m_visible = visible; }		virtual bool	get_visible() const { return m_visible; }		virtual void	set_display_callback(void (*callback)(void*), void* user_ptr)		{			m_display_callback = callback;			m_display_callback_user_ptr = user_ptr;		}		virtual void	do_display_callback()		{			if (m_display_callback)			{				(*m_display_callback)(m_display_callback_user_ptr);			}		}		virtual void	get_mouse_state(int* x, int* y, int* buttons) { get_parent()->get_mouse_state(x, y, buttons); }		// Utility.		void	do_mouse_drag();	};	// For characters that don't store unusual state in their instances.	struct generic_character : public character	{		character_def*	m_def;		generic_character(character_def* def, movie* parent, int id)			:			character(parent, id),			m_def(def)		{			assert(m_def);		}		virtual void	display()		{			m_def->display(this);	// pass in transform info			do_display_callback();		}		// @@ tulrich: these are used for finding bounds; TODO		// need to do this using enclose_transformed_rect(),		// not by scaling the local height/width!		virtual float	get_height()		{			matrix	m = get_world_matrix();			float	h = m_def->get_height_local() * m.m_[1][1];			return h;		}		virtual float	get_width()		{			matrix	m = get_world_matrix();			float	w = m_def->get_width_local() * m.m_[0][0];			return w;		}		// new, from Vitaly.		virtual movie*	get_topmost_mouse_entity(float x, float y)		{			assert(get_visible());	// caller should check this.			matrix	m = get_matrix();			point	p;			m.transform_by_inverse(&p, point(x, y));			if (m_def->point_test_local(p.m_x, p.m_y))			{				// The mouse is inside the shape.				return this;			}			return NULL;		}	};	struct bitmap_character_def : public character_def	{		virtual gameswf::bitmap_info*	get_bitmap_info() = 0;	};#if 1	// Bitmap character	struct bitmap_character : public bitmap_character_def	{		bitmap_character(bitmap_info* bi)			:			m_bitmap_info(bi)		{		}// 		bitmap_character(image::rgb* image)// 		{// 			assert(image != 0);// 			// Create our bitmap info, from our image.// 			m_bitmap_info = gameswf::render::create_bitmap_info_rgb(image);// 		}// 		bitmap_character(image::rgba* image)// 		{// 			assert(image != 0);// 			// Create our bitmap info, from our image.// 			m_bitmap_info = gameswf::render::create_bitmap_info_rgba(image);// 		}		gameswf::bitmap_info*	get_bitmap_info()		{			return m_bitmap_info.get_ptr();		}	private:		smart_ptr<gameswf::bitmap_info>	m_bitmap_info;	};#endif	// Execute tags include things that control the operation of	// the movie.  Essentially, these are the events associated	// with a frame.	struct execute_tag	{		virtual ~execute_tag() {}		virtual void	execute(movie* m) {}		virtual void	execute_state(movie* m) {}		virtual void	execute_state_reverse(movie* m, int frame) { execute_state(m); }		virtual bool	is_remove_tag() const { return false; }		virtual bool	is_action_tag() const { return false; }		virtual uint32	get_depth_id_of_replace_or_add_tag() const { return static_cast<uint32>(-1); }	};	//	// Loader callbacks.	//		// Register a loader function for a certain tag type.  Most	// standard tags are handled within gameswf.  Host apps might want	// to call this in order to handle special tag types.	typedef void (*loader_function)(stream* input, int tag_type, movie_definition_sub* m);	void	register_tag_loader(int tag_type, loader_function lf);			// Tag loader functions.	void	null_loader(stream* in, int tag_type, movie_definition_sub* m);	void	set_background_color_loader(stream* in, int tag_type, movie_definition_sub* m);	void	jpeg_tables_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_bits_jpeg_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_bits_jpeg2_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_bits_jpeg3_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_shape_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_shape_morph_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_font_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_font_info_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_text_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_edit_text_loader(stream* in, int tag_type, movie_definition_sub* m);	void	place_object_2_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_bits_lossless_2_loader(stream* in, int tag_type, movie_definition_sub* m);	void	sprite_loader(stream* in, int tag_type, movie_definition_sub* m);	void	end_loader(stream* in, int tag_type, movie_definition_sub* m);	void	remove_object_2_loader(stream* in, int tag_type, movie_definition_sub* m);	void	do_action_loader(stream* in, int tag_type, movie_definition_sub* m);	void	button_character_loader(stream* in, int tag_type, movie_definition_sub* m);	void	frame_label_loader(stream* in, int tag_type, movie_definition_sub* m);	void	export_loader(stream* in, int tag_type, movie_definition_sub* m);	void	import_loader(stream* in, int tag_type, movie_definition_sub* m);	void	define_sound_loader(stream* in, int tag_type, movie_definition_sub* m);	void	start_sound_loader(stream* in, int tag_type, movie_definition_sub* m);	void	button_sound_loader(stream* in, int tag_type, movie_definition_sub* m);	void	do_init_action_loader(stream* in, int tag_type, movie_definition_sub* m);	// sound_stream_loader();	// head, head2, block}	// end namespace gameswf#endif // GAMESWF_IMPL_H// 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一区二区三区免费野_久草精品视频
亚洲欧洲国产日韩| av成人老司机| 日韩和欧美一区二区| 亚洲人成人一区二区在线观看| 2欧美一区二区三区在线观看视频| 538在线一区二区精品国产| 在线不卡免费av| 欧美大片顶级少妇| 久久久久国产精品麻豆ai换脸| 2021中文字幕一区亚洲| 国产日韩精品一区二区三区在线| 国产日韩精品一区二区浪潮av| 中文字幕精品一区| 亚洲免费大片在线观看| 亚洲福利视频三区| 久久精品国产77777蜜臀| 狠狠色丁香久久婷婷综合丁香| 国产成人福利片| 色综合婷婷久久| 91精品久久久久久久91蜜桃| 欧美tickling挠脚心丨vk| 欧美国产成人精品| 亚洲男同性视频| 日本伊人精品一区二区三区观看方式| 麻豆精品在线播放| 91丨porny丨中文| 日韩午夜精品电影| 国产精品成人在线观看| 天天av天天翘天天综合网| 国产在线精品一区二区三区不卡| 丰满少妇在线播放bd日韩电影| 91日韩精品一区| 成人免费毛片高清视频| 91小视频在线| 欧美三片在线视频观看| 精品999久久久| 亚洲国产精品久久人人爱蜜臀| 久久er精品视频| 色婷婷综合中文久久一本| 日韩精品一区在线观看| 亚洲免费观看视频| 国产在线精品一区在线观看麻豆| 91国内精品野花午夜精品| 久久色成人在线| 午夜伦理一区二区| 91视频一区二区| 久久亚洲综合色| 日韩av网站免费在线| 色婷婷综合久久| 国产视频亚洲色图| 人禽交欧美网站| 99视频热这里只有精品免费| 欧美一区二区久久久| 日韩理论片网站| 国产suv精品一区二区6| 这里只有精品视频在线观看| 亚洲欧美综合色| 国产成人a级片| 日韩欧美在线123| 日日摸夜夜添夜夜添国产精品| 色综合咪咪久久| 国产精品欧美一级免费| 国产成人免费视频精品含羞草妖精| 欧美一区二区私人影院日本| 亚洲午夜激情网站| 日本久久一区二区三区| 亚洲欧洲性图库| 成人动漫精品一区二区| 欧美韩国日本一区| 国产成人高清视频| 国产日产欧美一区| 国产99久久久精品| 久久久综合视频| 国产成人在线看| 国产女同互慰高潮91漫画| 国产精品一区二区无线| 日本一区免费视频| 大胆欧美人体老妇| 亚洲免费伊人电影| 国产成人8x视频一区二区| 欧美激情一区在线| 99久久国产综合色|国产精品| 中文字幕制服丝袜一区二区三区| 北条麻妃一区二区三区| 亚洲精品乱码久久久久久| 在线视频一区二区三| 亚洲成人激情综合网| 欧美一区二区网站| 国产成人在线免费| 一区二区三区四区高清精品免费观看| 一本色道a无线码一区v| 婷婷综合另类小说色区| 欧美三级中文字幕| 久久精品国产亚洲a| 国产欧美综合在线| 在线免费一区三区| 蜜臀av性久久久久蜜臀aⅴ| 久久精品欧美一区二区三区麻豆| 成人福利电影精品一区二区在线观看| 亚洲男人天堂av网| 日韩一区二区三区免费看| 日韩1区2区3区| 久久蜜桃av一区精品变态类天堂| a在线欧美一区| 日韩精品一级中文字幕精品视频免费观看 | 欧美一区二区三级| 久久激情五月激情| 亚洲日本成人在线观看| 欧美一区二区不卡视频| 国产精品一区二区在线看| 亚洲黄色在线视频| 久久亚洲春色中文字幕久久久| 色天天综合色天天久久| 国产美女精品一区二区三区| 亚洲欧美成人一区二区三区| 日韩欧美www| 欧美亚洲国产bt| 国产不卡视频一区| 美女高潮久久久| 亚洲综合色成人| 欧美韩日一区二区三区| 日韩欧美中文一区二区| 在线视频你懂得一区二区三区| 成人av网站大全| 奇米888四色在线精品| 国产精品久久久久久久久搜平片 | 久久成人免费电影| 亚洲免费观看高清| 久久青草国产手机看片福利盒子| 国产成人精品www牛牛影视| 日韩中文字幕91| 亚洲国产成人porn| 亚洲人妖av一区二区| 欧美精品在欧美一区二区少妇| 国产a久久麻豆| 寂寞少妇一区二区三区| 日韩av网站免费在线| 天堂久久久久va久久久久| 一区av在线播放| 一区二区三区在线不卡| 中文无字幕一区二区三区 | 国产精品二三区| 久久久精品免费观看| 久久亚洲春色中文字幕久久久| 91精品国产麻豆国产自产在线 | 欧美浪妇xxxx高跟鞋交| 在线看一区二区| 欧洲精品中文字幕| 91久久精品网| 欧美天天综合网| 欧美撒尿777hd撒尿| 色噜噜久久综合| 在线一区二区三区做爰视频网站| 91麻豆123| 色欧美日韩亚洲| 欧美日韩日日骚| 欧美一级xxx| 亚洲精品一区二区三区福利| 久久综合九色综合欧美98| 久久久久88色偷偷免费| 国产人妖乱国产精品人妖| 国产精品高潮久久久久无| 综合久久一区二区三区| 亚洲精品一二三| 日韩精品一二区| 蜜臀久久久久久久| 韩国女主播一区二区三区| 国产不卡视频一区| 在线播放一区二区三区| 91精品综合久久久久久| www成人在线观看| 国产精品婷婷午夜在线观看| 亚洲人成7777| 日本视频在线一区| 国产白丝精品91爽爽久久| 一本大道久久a久久综合婷婷| 欧美亚洲自拍偷拍| 精品美女被调教视频大全网站| 久久综合av免费| 亚洲精品乱码久久久久久久久| 亚洲精品五月天| 男人的天堂亚洲一区| 国产成a人无v码亚洲福利| 欧美影视一区在线| 久久精品人人做人人爽人人| 亚洲一区二区三区视频在线播放| 天堂在线亚洲视频| 国产高清不卡二三区| 精品1区2区3区| 亚洲国产精品成人综合 | 国产高清精品久久久久| 欧美亚洲精品一区| 国产日韩欧美不卡在线| 日韩福利电影在线观看| 粉嫩蜜臀av国产精品网站| 欧美精品久久天天躁| 亚洲欧美综合网| 国产精品亚洲综合一区在线观看| 欧美中文字幕一二三区视频| 国产日韩欧美高清在线|