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

📄 gtk_transition.cpp

📁 彩信浏览器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	setup_transition(m_outtrans, agw, &opm, &npm);	uint n_points = m_newpolygon.size();	if (n_points <= 2) { // cannot create polygon, maybe not yet implemented		return;	}		GdkPoint* points = (GdkPoint*) malloc (n_points*sizeof(GdkPoint));	uint idx = 0;	std::vector<point>::iterator newpoint;	for( newpoint=m_newpolygon.begin();	     newpoint != m_newpolygon.end(); newpoint++) {	    	point p = *newpoint + dst_global_topleft;		points[idx].x = p.x;		points[idx].y = p.y;		idx++;	}	GdkRegion* region = gdk_region_polygon(points, n_points, GDK_WINDING_RULE); 	free(points);	GdkGC *gc = gdk_gc_new (opm);	gdk_gc_set_clip_region(gc, region);	const rect& newrect_whole =  m_dst->get_clipped_screen_rect();	int Ldst= newrect_whole.left(), Tdst = newrect_whole.top(),        	Wdst = newrect_whole.width(), Hdst = newrect_whole.height();	AM_DBG logger::get_logger()->debug("gtk_transition_blitclass_poly::update(): ltwh=(%d,%d,%d,%d)",Ldst,Tdst,Wdst,Hdst);	gdk_draw_pixmap(opm, gc, npm, Ldst, Tdst, Ldst, Tdst, Wdst, Hdst);	gdk_region_destroy(region);	g_object_unref (G_OBJECT (gc));	finalize_transition(m_outtrans, agw, m_dst);}voidgtk_transition_blitclass_polylist::update(){	AM_DBG logger::get_logger()->debug("gtk_transition_blitclass_polylist::update(%f)", m_progress);	ambulant_gtk_window *agw = (ambulant_gtk_window *)m_dst->get_gui_window();	GdkPixmap *npm, *opm;	const lib::point& dst_global_topleft = m_dst->get_global_topleft();	setup_transition(m_outtrans, agw, &opm, &npm);	GdkRegion* clip_region = gdk_region_new();	AM_DBG logger::get_logger()->debug("gtk_transition_blitclass_polylist: m_newpolygonlist.size()=%d", m_newpolygonlist.size());	std::vector< std::vector<point> >::iterator partpolygon;	for (partpolygon=m_newpolygonlist.begin(); 	     partpolygon!=m_newpolygonlist.end(); partpolygon++) {		uint n_points = partpolygon->size();		if (n_points <= 2) { // cannot create polygon			logger::get_logger()->warn("gtk_transition_blitclass_polylist: cannot create polygon, partpolygon.size()=%d", n_points);			break;		}			GdkPoint* points = (GdkPoint*) malloc (n_points*sizeof(GdkPoint));		uint idx = 0;		std::vector<point>::iterator newpoint;		AM_DBG logger::get_logger()->debug("gtk_transition_blitclass_polylist: partpolygon.size()=%d", partpolygon->size());		for( newpoint=partpolygon->begin();		     newpoint != partpolygon->end(); newpoint++) {			point p = *newpoint + dst_global_topleft;			points[idx].x = p.x;			points[idx].y = p.y;			idx++;			AM_DBG logger::get_logger()->debug("gtk_transition_blitclass_polylist: idx=%d, p=(%d,%d)", idx, p.x, p.y);		}		GdkRegion* next_region = gdk_region_polygon(points, n_points, GDK_WINDING_RULE); 		free(points);		gdk_region_union (clip_region, next_region);		gdk_region_destroy(next_region);	}	rect newrect_whole =  m_dst->get_rect();	newrect_whole.translate(dst_global_topleft);	newrect_whole &= m_dst->get_clipped_screen_rect();	int Ldst= newrect_whole.left(), Tdst = newrect_whole.top(),        	Wdst = newrect_whole.width(), Hdst = newrect_whole.height();	AM_DBG logger::get_logger()->debug("gtk_transition_blitclass_polylist::update(): ltwh=(%d,%d,%d,%d)",Ldst,Tdst,Wdst,Hdst);	GdkGC *gc = gdk_gc_new (opm);	gdk_gc_set_clip_region(gc, clip_region);	gdk_draw_pixmap(opm, gc, npm, Ldst, Tdst, Ldst, Tdst, Wdst, Hdst);	gdk_region_destroy(clip_region);	g_object_unref (G_OBJECT (gc));	finalize_transition(m_outtrans, agw, m_dst);}smil2::transition_engine *gtk_transition_engine(common::surface *dst, bool is_outtrans, const transition_info *info){	smil2::transition_engine *rv;	AM_DBG logger::get_logger()->debug("gtk_transition_engine: info=0x%x info->m_type=%d", info, info->m_type);		switch(info->m_type) {	// Series 1: edge wipes	case barWipe:		rv = new gtk_transition_engine_barwipe();		break;	case boxWipe:		rv = new gtk_transition_engine_boxwipe();		break;	case fourBoxWipe:		rv = new gtk_transition_engine_fourboxwipe();		break;	case barnDoorWipe:		rv = new gtk_transition_engine_barndoorwipe();		break;	case diagonalWipe:		rv = new gtk_transition_engine_diagonalwipe();		break;	case miscDiagonalWipe:		rv = new gtk_transition_engine_miscdiagonalwipe();		break;	case veeWipe:		rv = new gtk_transition_engine_veewipe();		break;	case barnVeeWipe:		rv = new gtk_transition_engine_barnveewipe();		break;	case zigZagWipe:		rv = new gtk_transition_engine_zigzagwipe();		break;	case barnZigZagWipe:		rv = new gtk_transition_engine_barnzigzagwipe();		break;	case bowTieWipe:		rv = new gtk_transition_engine_bowtiewipe();		break;	// series 2: iris wipes	case irisWipe:		rv = new gtk_transition_engine_iriswipe();		break;	case pentagonWipe:		rv = new gtk_transition_engine_pentagonwipe();		break;	case arrowHeadWipe:		rv = new gtk_transition_engine_arrowheadwipe();		break;	case triangleWipe:		rv = new gtk_transition_engine_trianglewipe();		break;	case hexagonWipe:		rv = new gtk_transition_engine_hexagonwipe();		break;	case eyeWipe:		rv = new gtk_transition_engine_eyewipe();		break;	case roundRectWipe:		rv = new gtk_transition_engine_roundrectwipe();		break;	case ellipseWipe:		rv = new gtk_transition_engine_ellipsewipe();		break;	case starWipe:		rv = new gtk_transition_engine_starwipe();		break;	case miscShapeWipe:		rv = new gtk_transition_engine_miscshapewipe();		break;	// series 3: clock-type wipes	case clockWipe:		rv = new gtk_transition_engine_clockwipe();		break;	case singleSweepWipe:		rv = new gtk_transition_engine_singlesweepwipe();		break;	case doubleSweepWipe:		rv = new gtk_transition_engine_doublesweepwipe();		break;	case saloonDoorWipe:		rv = new gtk_transition_engine_saloondoorwipe();		break;	case windshieldWipe:		rv = new gtk_transition_engine_windshieldwipe();		break;	case fanWipe:		rv = new gtk_transition_engine_fanwipe();		break;	case doubleFanWipe:		rv = new gtk_transition_engine_doublefanwipe();		break;	case pinWheelWipe:		rv = new gtk_transition_engine_pinwheelwipe();		break;	// series 4: matrix wipe types	case snakeWipe:		rv = new gtk_transition_engine_snakewipe();		break;	case waterfallWipe:		rv = new gtk_transition_engine_waterfallwipe();		break;	case spiralWipe:		rv = new gtk_transition_engine_spiralwipe();		break;	case parallelSnakesWipe:		rv = new gtk_transition_engine_parallelsnakeswipe();		break;	case boxSnakesWipe:		rv = new gtk_transition_engine_boxsnakeswipe();		break;	// series 5: SMIL-specific types	case pushWipe:		rv = new gtk_transition_engine_pushwipe();		break;	case slideWipe:		rv = new gtk_transition_engine_slidewipe();		break;	case fade:		rv = new gtk_transition_engine_fade();		break;	default:		logger::get_logger()->warn("gtk_transition_engine: transition type %s not yet implemented",			repr(info->m_type).c_str());		rv = NULL;	}	if (rv)		rv->init(dst, is_outtrans, info);	return rv;}} // namespace gtk} // namespace gui} //namespace ambulant

⌨️ 快捷键说明

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