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); } } }
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); }