Exemple #1
0
void color_patchline(t_connect *x)
{
	t_object *line, *obj, *patcher;
	object_obex_lookup(x, gensym("#P"), &patcher);
	for (line = jpatcher_get_firstline(patcher); line; line = jpatchline_get_nextline(line)) 
	{
		obj = jbox_get_object(jpatchline_get_box1(line));
						   
		if (validConditionColor(obj) == 1)
		{ 
			if (jpatchline_get_inletnum(line) % 2 == 1) 
				jpatchline_set_color(line, &x->f_colorPositiv);
			else
				jpatchline_set_color(line, &x->f_colorNegativ);			
		}
		else if (validConditionColor(obj) == 2)
		{ 
			jpatchline_set_color(line, &x->f_colorPlane);		
		}
	}
}
Exemple #2
0
void color_patchline(t_connect *x)
{
	t_object *line, *startobj;
	t_object *jb, *o;
	t_hoa_err err;
	t_jrgba* linecolor = NULL;
	int inletnum, sign;
	short startobj_type;
	t_hoa_boxinfos* startobj_infos = (t_hoa_boxinfos*) malloc( sizeof(t_hoa_boxinfos));
	line = jpatcher_get_firstline(x->f_patcher);
	
	while (line)
	{
		startobj = jbox_get_object(jpatchline_get_box1(line));
		
		if(object_is_hoa(startobj) || is_obj_hoa_exotic(startobj))
		{
			startobj_type = object_is_hoa(startobj);
			
			hoa_boxinfos_init(startobj_infos);
			err = (t_hoa_err) object_method(startobj, hoa_sym_hoa_getinfos, startobj_infos, NULL);
			
			if (err == HOA_ERR_NONE)
			{
				// ambisonics colors (zero | neg | pos) (ex: hoa.encoder~ => hoa.optim~)
				if (startobj_infos->autoconnect_outputs_type == HOA_CONNECT_TYPE_AMBISONICS)
				{
					inletnum = jpatchline_get_inletnum(line);
					
					if (startobj_infos->object_type == HOA_OBJECT_2D)
						sign = x->f_ambi2D->getHarmonicArgument(inletnum);
					if (startobj_infos->object_type == HOA_OBJECT_3D)
						sign = x->f_ambi3D->getHarmonicArgument(inletnum);
					
					if (sign > 0)
						linecolor = &x->f_color_positiv;
					else if (sign < 0)
						linecolor = &x->f_color_negativ;
					else
						linecolor = &x->f_color_zero;
					
					jpatchline_set_color(line, linecolor);
				}
				// planewave color (ex: hoa.projector~ => hoa.recomposer~)
				else if (startobj_infos->autoconnect_outputs_type == HOA_CONNECT_TYPE_PLANEWAVES)
				{
					jpatchline_set_color(line, &x->f_color_plane);
				}
			}
			
			// hoa.plug~ retro compatibility
			else if (object_classname(startobj) == hoa_sym_jpatcher)
			{
				jb = jpatcher_get_firstobject(startobj);
				while(jb)
				{
					o = jbox_get_object(jb);
					if(object_classname(o) == gensym("hoa.plug_script"))
					{
						inletnum = jpatchline_get_inletnum(line);
						
						if (inletnum == 0)
							jpatchline_set_color(line, &x->f_color_zero);
						else if (inletnum % 2 == 1)
							jpatchline_set_color(line, &x->f_color_negativ);
						else
							jpatchline_set_color(line, &x->f_color_positiv);
						break;
					}
					jb = jbox_get_nextobject(jb);
				}
				
			}
		}
		
		line = jpatchline_get_nextline(line);
	}
	
	free(startobj_infos);
}