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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gameswf_morph2.cpp

?? 一個開源的嵌入式flash播放器的源代碼
?? CPP
字號:
// gameswf_morph2.cpp// -- Thatcher Ulrich <tu@tulrich.com>, Mike Shaver <shaver@off.net> 2003, Vitalij Alexeev <tishka92@mail.ru> 2004.// This source code has been donated to the Public Domain.  Do// whatever you want with it.// Loading and rendering of morphing shapes using gameswf_shape.#include "gameswf_morph2.h"#include "gameswf_stream.h"namespace gameswf{	morph2_character_def::morph2_character_def():		m_last_ratio(-1.0f), m_mesh(0)	{		m_shape1 = new shape_character_def();		m_shape2 = new shape_character_def();	}	morph2_character_def::~morph2_character_def()	{		delete m_shape2;		delete m_shape1;	}	void	morph2_character_def::display(character* inst)	{		int i;		float ratio = inst->m_ratio;		// bounds		rect	new_bound;		new_bound.set_lerp(m_shape1->get_bound(), m_shape2->get_bound(), ratio);		set_bound(new_bound);		// fill styles		for (i=0; i < m_fill_styles.size(); i++)		{			fill_style& fs = m_fill_styles[i];			const fill_style& fs1 = m_shape1->get_fill_styles()[i];			const fill_style& fs2 = m_shape2->get_fill_styles()[i];			fs.set_lerp(fs1, fs2, ratio);		}		// line styles		for (i=0; i < m_line_styles.size(); i++)		{			line_style& ls = m_line_styles[i];			const line_style& ls1 = m_shape1->get_line_styles()[i];			const line_style& ls2 = m_shape2->get_line_styles()[i];			ls.m_width = (Uint16)frnd(flerp(ls1.get_width(), ls2.get_width(), ratio));			ls.m_color.set_lerp(ls1.get_color(), ls2.get_color(), ratio);		}		// shape		int k=0, n=0;		for (i=0; i < m_paths.size(); i++)		{			path& p = m_paths[i];			const path& p1 = m_shape1->get_paths()[i];			p.m_fill0 = p1.m_fill0;			p.m_fill1 = p1.m_fill1; 			// @@ hack.			if (p.m_fill0 == 0 && p.m_fill1 == 0)			{				if (m_shape1->get_fill_styles().size() > 0) p.m_fill0 = 1;			}      			p.m_line = p1.m_line;			p.m_ax = flerp(p1.m_ax, m_shape2->get_paths()[n].m_ax, ratio);			p.m_ay = flerp(p1.m_ay, m_shape2->get_paths()[n].m_ay, ratio);      			//  edges;			int len = p1.m_edges.size();			p.m_edges.resize(len);			for (int j=0; j < p.m_edges.size(); j++)			{				p.m_edges[j].m_cx = flerp(p1.m_edges[j].m_cx, m_shape2->get_paths()[n].m_edges[k].m_cx, ratio);				p.m_edges[j].m_cy = flerp(p1.m_edges[j].m_cy, m_shape2->get_paths()[n].m_edges[k].m_cy, ratio);				p.m_edges[j].m_ax = flerp(p1.m_edges[j].m_ax, m_shape2->get_paths()[n].m_edges[k].m_ax, ratio);				p.m_edges[j].m_ay = flerp(p1.m_edges[j].m_ay, m_shape2->get_paths()[n].m_edges[k].m_ay, ratio);				k++;				if (m_shape2->get_paths()[n].m_edges.size() <= k)				{					k=0; n++;				}			}		}    //  display		matrix mat = inst->get_world_matrix();		cxform cx = inst->get_world_cxform();		float max_error = 20.0f / mat.get_max_scale() /	inst->get_parent()->get_pixel_scale();		if (ratio != m_last_ratio)		{			delete m_mesh;			m_last_ratio = ratio;			m_mesh = new mesh_set(this, max_error * 0.75f);		}		m_mesh->display(mat, cx, m_fill_styles, m_line_styles);	}  	void	morph2_character_def::read(stream* in, int tag_type, bool with_style, movie_definition_sub* md)	{		UNUSED(tag_type);		UNUSED(with_style);		rect	bound1, bound2;		bound1.read(in);		bound2.read(in);		m_shape1->set_bound(bound1);		m_shape2->set_bound(bound2);		offset = in->read_u32();		fill_style_count = in->read_variable_count();		int i;		for (i = 0; i < fill_style_count; i++) {			fill_style fs1, fs2;			fs1.m_type = in->read_u8();			fs2.m_type = fs1.m_type;			IF_VERBOSE_PARSE(log_msg("morph fill style type = 0x%X\n", fs1.m_type));			if (fs1.m_type == 0x00)			{				fs1.m_color.read_rgba(in);				fs2.m_color.read_rgba(in);				IF_VERBOSE_PARSE(log_msg("morph fill style begin color: "); fs1.m_color.print());				IF_VERBOSE_PARSE(log_msg("morph fill style end color: "); fs2.m_color.print());			}			else if (fs1.m_type == 0x10 || fs1.m_type == 0x12)			{				matrix	input_matrix1, input_matrix2;				input_matrix1.read(in);				input_matrix2.read(in);				fs1.m_gradient_matrix.set_identity();				fs2.m_gradient_matrix.set_identity();				if (fs1.m_type == 0x10)				{					fs1.m_gradient_matrix.concatenate_translation(128.f, 0.f);					fs1.m_gradient_matrix.concatenate_scale(1.0f / 128.0f);					fs2.m_gradient_matrix.concatenate_translation(128.f, 0.f);					fs2.m_gradient_matrix.concatenate_scale(1.0f / 128.0f);				}				else				{					fs1.m_gradient_matrix.concatenate_translation(32.f, 32.f);					fs1.m_gradient_matrix.concatenate_scale(1.0f / 512.0f);					fs2.m_gradient_matrix.concatenate_translation(32.f, 32.f);					fs2.m_gradient_matrix.concatenate_scale(1.0f / 512.0f);				}				matrix	m1, m2;				m1.set_inverse(input_matrix1);				fs1.m_gradient_matrix.concatenate(m1);				m2.set_inverse(input_matrix2);				fs2.m_gradient_matrix.concatenate(m2);				// GRADIENT				int	num_gradients = in->read_u8();				assert(num_gradients >= 1 && num_gradients <= 8);				fs1.m_gradients.resize(num_gradients);				fs2.m_gradients.resize(num_gradients);				for (int j = 0; j < num_gradients; j++)				{					fs1.m_gradients[j].read(in, tag_type);					fs2.m_gradients[j].read(in, tag_type);				}				IF_VERBOSE_PARSE(log_msg("morph fsr: num_gradients = %d\n", num_gradients));				// @@ hack.				if (num_gradients > 0)				{					fs1.m_color = fs1.m_gradients[0].m_color;					fs2.m_color = fs2.m_gradients[0].m_color;				}			}			else if (fs1.m_type == 0x40 || fs1.m_type == 0x41)			{				int	bitmap_char_id = in->read_u16();				IF_VERBOSE_PARSE(log_msg("morph fsr bitmap_char = %d\n", bitmap_char_id));				// Look up the bitmap character.				fs1.m_bitmap_character = md->get_bitmap_character(bitmap_char_id);				fs2.m_bitmap_character = fs1.m_bitmap_character;				matrix	m1, m2;				m1.read(in);				m2.read(in);				// For some reason, it looks like they store the inverse of the				// TWIPS-to-texcoords matrix.				fs1.m_bitmap_matrix.set_inverse(m1);				fs2.m_bitmap_matrix.set_inverse(m2);			}			m_shape1->m_fill_styles.push_back(fs1);			m_shape2->m_fill_styles.push_back(fs2);		}		line_style_count = in->read_variable_count();		for (i = 0; i < line_style_count; i++) {			line_style ls1, ls2;			ls1.m_width = in->read_u16();			ls2.m_width = in->read_u16();			ls1.m_color.read(in, tag_type);			ls2.m_color.read(in, tag_type);			m_shape1->m_line_styles.push_back(ls1);			m_shape2->m_line_styles.push_back(ls2);		}		m_shape1->read(in, tag_type, false, md);		in->align();		m_shape2->read(in, tag_type, false, md);		assert(m_shape1->m_fill_styles.size() == m_shape2->m_fill_styles.size());		assert(m_shape1->m_line_styles.size() == m_shape2->m_line_styles.size());		// setup array size		m_fill_styles.resize(m_shape1->m_fill_styles.size());		for (i = 0; i < m_fill_styles.size(); i++)		{			fill_style& fs = m_fill_styles[i];			fill_style& fs1 = m_shape1->m_fill_styles[i];			fs.m_gradients.resize(fs1.m_gradients.size());		}		m_line_styles.resize(m_shape1->m_line_styles.size());		m_paths.resize(m_shape1->m_paths.size());		int edges_count1 = 0;		for (i = 0; i < m_paths.size(); i++)		{			path& p = m_paths[i];			path& p1 = m_shape1->m_paths[i];			int len = p1.m_edges.size();			edges_count1 += len;			p.m_edges.resize(len);		}		int edges_count2 = 0;		for (i = 0; i < m_shape2->m_paths.size(); i++)		{			path& p2 = m_shape2->m_paths[i];			int len = p2.m_edges.size();			edges_count2 += len;		}		assert(edges_count1 == edges_count2);	}}// Local Variables:// mode: C++// c-basic-offset: 8 // tab-width: 8// indent-tabs-mode: t// End:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国精品主播一区二区在线观看| 在线免费观看视频一区| 精品久久国产字幕高潮| 美女视频黄免费的久久| 日韩一级免费观看| 麻豆一区二区三区| 国产亚洲精品aa| 成人国产精品免费观看视频| 国产精品久久久久久久第一福利| 99久久精品国产一区| 亚洲一二三级电影| 日韩一级免费观看| 粉嫩一区二区三区性色av| 国产精品二区一区二区aⅴ污介绍| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 精品久久一区二区三区| 国产一区91精品张津瑜| 国产精品乱码久久久久久| 色爱区综合激月婷婷| 日韩成人伦理电影在线观看| 欧美成人bangbros| 99re热这里只有精品免费视频| 亚洲一级二级三级在线免费观看| 91精品久久久久久久91蜜桃| 国产一区二区三区黄视频 | 亚洲精品日产精品乱码不卡| 欧美性videosxxxxx| 男女男精品视频| 中文字幕中文在线不卡住| 欧美日韩久久一区| 国产iv一区二区三区| 亚洲电影一级片| 欧美国产精品久久| 91.麻豆视频| 成人午夜伦理影院| 蜜桃视频在线一区| 亚洲蜜臀av乱码久久精品| 日韩欧美自拍偷拍| 在线中文字幕一区二区| 国产综合色在线视频区| 一区二区三区**美女毛片| 久久综合九色综合欧美就去吻| 一本久久a久久免费精品不卡| 久久精品99久久久| 亚洲电影第三页| 国产精品成人在线观看| 精品国产一区二区三区av性色| 在线亚洲人成电影网站色www| 国产一区二区三区在线观看精品 | 精品久久久久一区| 在线视频欧美精品| av一区二区三区| 国产精品一区一区| 免费在线视频一区| 亚洲成人精品影院| 亚洲免费观看高清完整版在线观看| 精品国产91洋老外米糕| 欧美日韩二区三区| 91国产福利在线| 成人免费视频网站在线观看| 久久国产精品99精品国产| 午夜激情久久久| 亚洲综合久久久| 亚洲精品国产一区二区精华液| 国产日韩欧美精品电影三级在线| 日韩一区二区免费高清| 欧美三级日韩三级国产三级| 一本一本大道香蕉久在线精品| 国产91精品露脸国语对白| 国产在线不卡视频| 国产在线不卡视频| 韩国成人在线视频| 精品无码三级在线观看视频| 美女mm1313爽爽久久久蜜臀| 日韩精品久久理论片| 五月开心婷婷久久| 日本不卡一区二区三区| 亚洲国产精品久久一线不卡| 一区二区三区电影在线播| 一区二区三区国产| 五月婷婷另类国产| 午夜成人在线视频| 日本不卡视频在线| 国产又粗又猛又爽又黄91精品| 国模套图日韩精品一区二区| 国产一区二区三区四区五区美女| 国内不卡的二区三区中文字幕| 国产精品中文欧美| 99热在这里有精品免费| www.欧美日韩国产在线| 日本二三区不卡| 欧美日韩视频在线一区二区| 欧美日韩国产高清一区二区| 欧美日本高清视频在线观看| 6080午夜不卡| www国产成人免费观看视频 深夜成人网| 日韩欧美不卡一区| 欧美激情一区二区三区在线| 国产精品第五页| 无码av免费一区二区三区试看| 麻豆免费精品视频| 成人免费观看男女羞羞视频| 91国偷自产一区二区三区观看| 欧美日韩不卡一区| 久久精品日产第一区二区三区高清版| 亚洲国产成人一区二区三区| 国产精品黄色在线观看| 亚洲a一区二区| 久久国产精品99精品国产| 高清在线不卡av| 欧美中文字幕一区二区三区| 欧美一区二区三区日韩视频| 久久久.com| 午夜精品久久久久久久久| 国产精品一二一区| 欧美亚洲高清一区二区三区不卡| 日韩视频在线永久播放| 国产精品色呦呦| 婷婷综合在线观看| 成人免费精品视频| 777精品伊人久久久久大香线蕉| 久久精品男人的天堂| 亚洲午夜一区二区| 国产精品一区二区男女羞羞无遮挡 | 成人一区二区三区| 欧美喷潮久久久xxxxx| 日本一区二区免费在线观看视频| 亚洲夂夂婷婷色拍ww47| 色综合久久久久久久久久久| 欧美日韩高清不卡| 久久久蜜桃精品| 一二三区精品视频| 国产一区二区精品久久| 色偷偷久久人人79超碰人人澡| 91麻豆精品91久久久久同性| 中文子幕无线码一区tr| 免费在线欧美视频| 91极品视觉盛宴| 国产精品久久毛片| 成人少妇影院yyyy| 精品美女一区二区| 蜜臀久久99精品久久久久宅男| 国产91富婆露脸刺激对白| 日韩一区二区不卡| 爽爽淫人综合网网站| 欧洲另类一二三四区| 中文字幕日本乱码精品影院| 9l国产精品久久久久麻豆| 欧美大片在线观看一区| 国产一区高清在线| 欧美精品一区二区三区在线| 午夜精品久久久久久久| 精品一区二区三区香蕉蜜桃 | 婷婷亚洲久悠悠色悠在线播放| 国产精品高清亚洲| 日韩美女啊v在线免费观看| 在线播放91灌醉迷j高跟美女 | 在线观看不卡一区| 国产精品美女久久久久久2018| 久久国产精品99久久人人澡| 欧美影院一区二区三区| 欧美一区二区三区视频免费播放| 亚洲一二三四在线| 日韩一区二区精品在线观看| 韩国欧美国产一区| 欧美—级在线免费片| 国产盗摄一区二区| 亚洲精品视频在线看| 色综合久久中文字幕| 五月天中文字幕一区二区| 91精品国产综合久久精品图片| 美腿丝袜亚洲一区| 蜜臀99久久精品久久久久久软件 | 欧美成人性战久久| 1024成人网| 91一区二区在线观看| 综合激情网...| 91伊人久久大香线蕉| 亚洲天堂中文字幕| 色国产综合视频| 亚洲夂夂婷婷色拍ww47| 欧美日本免费一区二区三区| 日韩国产高清影视| 精品国产区一区| 国产91富婆露脸刺激对白| 中文字幕一区二区在线观看| 色综合欧美在线视频区| 亚洲午夜激情网页| 91麻豆精品久久久久蜜臀| 久久精品国产99国产| 国产日韩欧美高清在线| 成人av在线资源网站| 亚洲视频在线一区二区| 在线看国产一区二区| 免费一级欧美片在线观看| 久久伊人中文字幕| 成人福利电影精品一区二区在线观看| **性色生活片久久毛片| 欧美综合欧美视频| 日韩电影在线看|