t_max_err channels_set(t_hoa_vector *x, t_object *attr, long argc, t_atom *argv) { t_object *b = NULL; if(argc && argv && atom_gettype(argv) == A_LONG) { int number_of_loudspeakers = atom_getlong(argv); if(number_of_loudspeakers != x->f_vector->getNumberOfChannels() && number_of_loudspeakers > 0 && number_of_loudspeakers <= MAX_CHANNELS) { object_method(gensym("dsp")->s_thing, hoa_sym_stop); delete x->f_vector; x->f_vector = new Hoa2D::Vector(number_of_loudspeakers); object_obex_lookup(x, gensym("#B"), (t_object **)&b); object_method(b, hoa_sym_dynlet_begin); dsp_resize((t_pxobject*)x, x->f_vector->getNumberOfChannels()); object_method(b, hoa_sym_dynlet_end); object_attr_setvalueof(x, hoa_sym_angles, 0, NULL); } } return MAX_ERR_NONE; }
void *ramp_new(t_symbol *s, long argc, t_atom *argv) { t_ramp *x = (t_ramp *)object_alloc(ramp_class); if (x) { x->outlets[k_outlet_dumpout] = outlet_new(x, 0L); x->outlets[k_outlet_value] = outlet_new(x, 0L); object_obex_store((void *)x, _sym_dumpout, (t_object *)x->outlets[k_outlet_dumpout]); x->parameterNames = new TTHash; x->rampUnit = NULL; // Set default attributes // @drive Atom a; atom_setsym(&a, gensym("scheduler")); object_attr_setvalueof(x, gensym("drive"), 1, &a); // @function object_attr_setsym(x, gensym("function"), jps_linear); // Now set specified attributes, if any attr_args_process(x, argc, argv); } return (x); // return the pointer to our new instantiation }
t_max_err paramui_setRepetitions(t_paramui *x, void *attr, long argc, t_atom *argv) { if (argc) x->attr_repetitions = atom_getfloat(argv); object_attr_setvalueof(x->obj_parameter, gensym("repetitions/filter"), argc, argv); return MAX_ERR_NONE; }
t_max_err paramui_setPriority(t_paramui *x, void *attr, long argc, t_atom *argv) { if (argc) x->attr_priority = atom_getlong(argv); object_attr_setvalueof(x->obj_parameter, gensym("priority"), argc, argv); return MAX_ERR_NONE; }
t_max_err paramui_setStepsize(t_paramui *x, void *attr, long argc, t_atom *argv) { if (argc) x->attr_stepsize = atom_getfloat(argv); object_attr_setvalueof(x->obj_parameter, gensym("value/stepsize"), argc, argv); return MAX_ERR_NONE; }
t_max_err paramui_setDefault(t_paramui *x, void *attr, long argc, t_atom *argv) { x->attr_defaultSize = argc; if (argc) sysmem_copyptr(argv, x->attr_default, sizeof(t_atom) * argc); object_attr_setvalueof(x->obj_parameter, gensym("default"), argc, argv); return MAX_ERR_NONE; }
t_max_err paramui_setRampFunction(t_paramui *x, void *attr, long argc, t_atom *argv) { if (argc) x->attr_rampFunction = atom_getsym(argv); object_attr_setvalueof(x->obj_parameter, gensym("ramp/function"), argc, argv); return MAX_ERR_NONE; }
t_max_err paramui_setType(t_paramui *x, void *attr, long argc, t_atom *argv) { if (argc) x->attr_type = atom_getsym(argv); object_attr_setvalueof(x->obj_parameter, gensym("type"), argc, argv); return MAX_ERR_NONE; }
t_max_err paramui_setUnitActive(t_paramui *x, void *attr, long argc, t_atom *argv) { if (argc) x->attr_unitActive = atom_getsym(argv); object_attr_setvalueof(x->obj_parameter, gensym("dataspace/unit"), argc, argv); return MAX_ERR_NONE; }
t_max_err paramui_setRange(t_paramui *x, void *attr, long argc, t_atom *argv) { if (argc) x->attr_range[0] = atom_getfloat(argv+0); if (argc > 1) x->attr_range[1] = atom_getfloat(argv+1); object_attr_setvalueof(x->obj_parameter, gensym("range/bounds"), argc, argv); return MAX_ERR_NONE; }
void iterator_notify(t_iterator *x, t_symbol *s, t_symbol *msg, void *sender, void *data) { // post("got %s message from %X (%s)", msg->s_name, sender, s->s_name); if (msg == gensym("attr_modified") && sender == x->a_patcherview) { // sent when an attribute of the sender changes t_symbol *attrname; // 'data' arg is the modified attribute object // get its name: attrname = (t_symbol *)object_method(data, gensym("getname")); post("'%s' attribute was modified", attrname->s_name); if (attrname == gensym("rect")) { t_atom *av = NULL; long ac = 0; object_attr_getvalueof(sender, attrname, &ac, &av); if (ac && av) { t_object *jb; post("new rect: %ld %ld %ld %ld", atom_getlong(av), atom_getlong(av+1), atom_getlong(av+2), atom_getlong(av+3)); object_obex_lookup(x, gensym("#B"), &jb); if (jb) { t_atom *rv = NULL; long rc = 0; object_attr_getvalueof(jb, gensym("patching_rect"), &rc, &rv); if (rc && rv) { // we have box rect // compare cached view size to current view long dx = atom_getlong(av+2) - x->a_cached.x; long dy = atom_getlong(av+3) - x->a_cached.y; long boxw = atom_getlong(rv+2); long boxh = atom_getlong(rv+3); // recache new size x->a_cached.x = atom_getlong(av+2); x->a_cached.y = atom_getlong(av+3); // modify my box width atom_setlong(rv+2, boxw + dx); // (height is ignored by jnewobj) atom_setlong(rv+3, boxh + dy); object_attr_setvalueof(jb, gensym("patching_rect"), rc, rv); freebytes(rv, sizeof(t_atom) * rc); } } freebytes(av, sizeof(t_atom) * ac); } } } }
t_max_err scripto_setattr_offcolor(t_scripto *x, void *attr, long argc, t_atom *argv) { if (x->s_ui) object_attr_setvalueof(x->s_ui, gensym("offcolor"), argc, argv); if (argc >= 4) { x->s_offcolor.red = atom_getfloat(argv); x->s_offcolor.green = atom_getfloat(argv + 1); x->s_offcolor.blue = atom_getfloat(argv + 2); x->s_offcolor.alpha = atom_getfloat(argv + 3); } return 0; }
void hoa_meter_deprecated(t_hoa_meter* x, t_symbol *s, long ac, t_atom* av) { t_atom* argv; long argc; if(s && s == gensym("loudspeakers") && ac && av) { object_error(x, "%s attribute @loudspeakers is deprecated, please use @channels.", eobj_getclassname(x)->s_name); channels_set(x, NULL, ac, av); } if(s && s == gensym("bordercolor") && ac && av) { object_attr_setvalueof((t_object *)x, gensym("bdcolor"), ac, av); object_error(x, "%s attribute @bordercolor is deprecated, please use @bdcolor.", eobj_getclassname(x)->s_name); } atoms_get_attribute(ac, av, gensym("@loudspeakers"), &argc, &argv); if(argc && argv) { object_error(x, "%s attribute @loudspeakers is deprecated, please use @channels.", eobj_getclassname(x)->s_name); channels_set(x, NULL, argc, argv); argc = 0;free(argv);argv = NULL; } atoms_get_attribute(ac, av, gensym("@bordercolor"), &argc, &argv); if(argc && argv) { object_attr_setvalueof((t_object *)x, gensym("bdcolor"), argc, argv); object_error(x, "%s attribute @bordercolor is deprecated, please use @bdcolor.", eobj_getclassname(x)->s_name); argc = 0;free(argv);argv = NULL; } if((s && s == gensym("mbgcolor")) || atoms_has_attribute(ac, av, gensym("@mbgcolor"))) { object_error(x, "%s attribute @mbgcolor is deprecated.", eobj_getclassname(x)->s_name); argc = 0;free(argv);argv = NULL; } }
t_pd_err number_tilde_notify(t_number_tilde *x, t_symbol *s, t_symbol *msg, void *sender, void *data) { if (msg == cream_sym_attr_modified) { if(s == cream_sym_bgcolor || s == cream_sym_bdcolor || s == gensym("textcolor") || s == gensym("fontsize") || s == gensym("fontname") || s == gensym("fontweight") || s == gensym("fontslant")) { ebox_invalidate_layer((t_ebox *)x, cream_sym_background_layer); ebox_invalidate_layer((t_ebox *)x, gensym("value_layer")); } if(s == gensym("fontsize")) { object_attr_setvalueof((t_object *)x, gensym("size"), 0, NULL); } ebox_redraw((t_ebox *)x); } return 0; }
t_max_err channels_set(t_meter *x, t_object *attr, long argc, t_atom *argv) { if(argc && argv && atom_isNumber(argv)) { t_object *b = NULL; int numberOfPlanewaves = atom_getlong(argv); if(numberOfPlanewaves != x->f_meter->getNumberOfPlanewaves() && numberOfPlanewaves > 0 && numberOfPlanewaves <= MAX_UI_CHANNELS) { object_method(hoa_sym_dsp->s_thing, hoa_sym_stop); if (x->f_meter) delete x->f_meter; if (x->f_vector) delete x->f_vector; x->f_meter = new Meter<Hoa2d, t_sample>(numberOfPlanewaves); x->f_vector = new Vector<Hoa2d, t_sample>(numberOfPlanewaves); x->f_meter->computeRendering(); x->f_vector->computeRendering(); object_obex_lookup(x, hoa_sym_pound_B, (t_object **)&b); object_method(b, hoa_sym_dynlet_begin); dsp_resize((t_pxobject*)x, x->f_meter->getNumberOfPlanewaves()); object_method(b, hoa_sym_dynlet_end); if (x->f_meter->getNumberOfPlanewaves() == 1) { object_attr_setdisabled((t_object*)x, hoa_sym_angles, 1); object_attr_setdisabled((t_object*)x, gensym("offset"), 1); object_attr_setdisabled((t_object*)x, gensym("rotation"), 1); } else { object_attr_setdisabled((t_object*)x, hoa_sym_angles, 0); object_attr_setdisabled((t_object*)x, gensym("offset"), 0); object_attr_setdisabled((t_object*)x, gensym("rotation"), 0); } } object_attr_setvalueof(x, hoa_sym_angles, 0, NULL); } return MAX_ERR_NONE; }
t_max_err number_of_channels_set(t_meter *x, t_object *attr, long argc, t_atom *argv) { t_object *b = NULL; int numberOfChannels; if(argc && argv && atom_gettype(argv) == A_LONG) { numberOfChannels = atom_getlong(argv); if(numberOfChannels != x->f_meter->getNumberOfChannels() && numberOfChannels > 0 && numberOfChannels <= MAX_SPEAKER) { int dspState = sys_getdspobjdspstate((t_object*)x); if(dspState) object_method(gensym("dsp")->s_thing, gensym("stop")); delete x->f_meter; delete x->f_vector; x->f_number_of_channels = numberOfChannels; x->f_meter = new Hoa2D::Meter(x->f_number_of_channels); x->f_vector = new Hoa2D::Vector(x->f_number_of_channels); object_obex_lookup(x, gensym("#B"), (t_object **)&b); object_method(b, gensym("dynlet_begin")); dsp_resize((t_pxobject*)x, x->f_number_of_channels); object_method(b, gensym("dynlet_end")); if (x->f_number_of_channels == 1) { object_attr_setdisabled((t_object*)x, gensym("angles"), 1); object_attr_setdisabled((t_object*)x, gensym("offset"), 1); object_attr_setdisabled((t_object*)x, gensym("rotation"), 1); } else { object_attr_setdisabled((t_object*)x, gensym("angles"), 0); object_attr_setdisabled((t_object*)x, gensym("offset"), 0); object_attr_setdisabled((t_object*)x, gensym("rotation"), 0); } object_attr_setvalueof(x, gensym("angles"), 0, NULL); } } return NULL; }
t_pd_err radio_nitems_set(t_radio *x, t_object *attr, long ac, t_atom *av) { int i; t_atom argv[2]; if(ac && av && atom_gettype(av) == A_FLOAT) { if(pd_clip_minmax(atom_getfloat(av), 1, 256) != x->f_nitems) { x->f_nitems = pd_clip_minmax(atom_getfloat(av), 1, 256); for(i = 0; i < x->f_nitems; i++) x->f_items[i] = 0; ebox_invalidate_layer((t_ebox *)x, gensym("background_layer")); ebox_invalidate_layer((t_ebox *)x, gensym("items_layer")); atom_setfloat(argv, x->j_box.b_rect.width); atom_setfloat(argv+1, x->j_box.b_rect.height); object_attr_setvalueof((t_object *)x, gensym("size"), 2, argv); } } return 0; }
void breakpoints_scaleord(t_breakpoints *x, t_symbol* s, int argc, t_atom* argv) { int i; float min, max, ratio; if(argc >= 2 && argv && atom_gettype(argv) == A_FLOAT && atom_gettype(argv+1) == A_FLOAT) { min = atom_getfloat(argv); max = atom_getfloat(argv+1); if(min > max) { min = max; max = atom_getfloat(argv); } ratio = x->f_range_ordinate[1] - x->f_range_ordinate[0]; for(i = 0; i < x->f_number_of_points; i++) { x->f_point_ordinate[i] = ((x->f_point_ordinate[i] - x->f_range_ordinate[0]) / ratio) * (max - min) + min; } object_attr_setvalueof((t_object *)x, gensym("ordrange"), argc, argv); } }
void ui_mute(t_ui *obj, t_symbol *msg, long argc, t_atom *argv) { object_attr_setvalueof(obj, gensym("is_muted"), argc, argv); }
void ui_color_border(t_ui *obj, t_symbol *msg, long argc, t_atom *argv) { if (argc>1) object_attr_setvalueof(obj, gensym("bordercolor"), argc, argv); }
void ui_color_toolbarText(t_ui *obj, t_symbol *msg, long argc, t_atom *argv) { if (argc>1) object_attr_setvalueof(obj, _sym_textcolor, argc, argv); }
void ui_color_toolbarBackground(t_ui *obj, t_symbol *msg, long argc, t_atom *argv) { if (argc>1) object_attr_setvalueof(obj, gensym("headercolor"), argc, argv); }
void ui_color_contentBackground(t_ui *obj, t_symbol *msg, long argc, t_atom *argv) { // Colors default to "0". If default value is passed, we avoid setting the color, in order to stick to object defaults. if (argc>1) object_attr_setvalueof(obj, _sym_bgcolor, argc, argv); }