t_jit_err jit_split_init(void) { long attrflags=0; t_jit_object *attr; t_jit_object *mop; _jit_split_class = jit_class_new("jit_split",(method)jit_split_new,(method)jit_split_free, sizeof(t_jit_split),0L); //add mop mop = jit_object_new(_jit_sym_jit_mop,1,2); jit_mop_output_nolink(mop,1); jit_mop_output_nolink(mop,2); jit_class_addadornment(_jit_split_class,mop); //add methods jit_class_addmethod(_jit_split_class, (method)jit_split_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes attrflags = JIT_ATTR_GET_DEFER_LOW | JIT_ATTR_SET_USURP_LOW; attr = jit_object_new(_jit_sym_jit_attr_offset,"splitdim",_jit_sym_char,attrflags, (method)0L,(method)0L,calcoffset(t_jit_split,splitdim)); jit_class_addattr(_jit_split_class,attr); attr = jit_object_new(_jit_sym_jit_attr_offset,"autoclear",_jit_sym_char,attrflags, (method)0L,(method)0L,calcoffset(t_jit_split,autoclear)); jit_class_addattr(_jit_split_class,attr); attr = jit_object_new(_jit_sym_jit_attr_offset,"splitpoint",_jit_sym_long,attrflags, (method)0L,(method)0L,calcoffset(t_jit_split,splitpoint)); jit_class_addattr(_jit_split_class,attr); //add methods jit_class_register(_jit_split_class); return JIT_ERR_NONE; }
void *max_jit_scissors_new(t_symbol *s, long argc, t_atom *argv) { t_max_jit_scissors *x; void *o, *p, *mop; t_jit_matrix_info info; long i; if (x=(t_max_jit_scissors *)max_jit_obex_new(max_jit_scissors_class, gensym("jit_scissors"))) { if (o=jit_object_new(gensym("jit_scissors"))) { max_jit_obex_jitob_set(x, o); max_jit_obex_dumpout_set(x, outlet_new(x, NULL)); max_jit_mop_setup(x); max_jit_mop_inputs(x); max_jit_attr_args(x, argc, argv); // get attr args to know rows and cols x->maxn = jit_attr_getlong(o, ps_rows) * jit_attr_getlong(o, ps_columns); max_jit_mop_variable_addoutputs(x, x->maxn); max_jit_mop_outputs(x); // don't forget the nolink! mop = max_jit_obex_adornment_get(x, _jit_sym_jit_mop); for (i = 1; i <= x->maxn; i++) jit_mop_output_nolink(mop, i); jit_attr_setlong(o, gensym("max"), x->maxn); max_jit_mop_matrix_args(x, argc, argv); // now set matrix info } else { jit_object_error((t_object *)x,"jit.scissors: could not allocate object"); freeobject((t_object *) x); x = NULL; } } return (x); }
t_jit_err jit_submatrix_init(void) { long attrflags=0; t_jit_object *attr,*mop,*o; _jit_submatrix_class = jit_class_new("jit_submatrix",(method)jit_submatrix_new,(method)jit_submatrix_free, sizeof(t_jit_submatrix),0L); //add mop mop = jit_object_new(_jit_sym_jit_mop,1,1); //#inputs,#outputs jit_mop_output_nolink(mop,1); jit_class_addadornment(_jit_submatrix_class,mop); //add methods jit_class_addmethod(_jit_submatrix_class, (method)jit_submatrix_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes attrflags = JIT_ATTR_GET_DEFER_LOW | JIT_ATTR_SET_USURP_LOW; attr = jit_object_new(_jit_sym_jit_attr_offset_array,"dim",_jit_sym_long,JIT_MATRIX_MAX_DIMCOUNT,attrflags, (method)0L,(method)0L,calcoffset(t_jit_submatrix,dimcount),calcoffset(t_jit_submatrix,dim)); object_addattr_parse(attr,"category",_jit_sym_symbol,0,"MOP"); jit_class_addattr(_jit_submatrix_class,attr); attr = jit_object_new(_jit_sym_jit_attr_offset_array,"offset",_jit_sym_long,JIT_MATRIX_MAX_DIMCOUNT,attrflags, (method)0L,(method)0L,calcoffset(t_jit_submatrix,offsetcount),calcoffset(t_jit_submatrix,offset)); jit_class_addattr(_jit_submatrix_class,attr); jit_class_register(_jit_submatrix_class); return JIT_ERR_NONE; }
t_jit_err jit_coerce_init(void) { long attrflags=0; t_jit_object *attr,*mop,*o; _jit_coerce_class = jit_class_new("jit_coerce",(method)jit_coerce_new,(method)jit_coerce_free, sizeof(t_jit_coerce),0L); //add mop mop = jit_object_new(_jit_sym_jit_mop,1,1); //#inputs,#outputs jit_mop_output_nolink(mop,1); jit_class_addadornment(_jit_coerce_class,mop); //add methods jit_class_addmethod(_jit_coerce_class, (method)jit_coerce_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes attrflags = JIT_ATTR_GET_DEFER_LOW | JIT_ATTR_SET_USURP_LOW; attr = jit_object_new(_jit_sym_jit_attr_offset,"type",_jit_sym_symbol,attrflags, (method)0L,(method)0L,calcoffset(t_jit_coerce,type)); object_addattr_parse(attr,"category",_jit_sym_symbol,0,"MOP"); object_addattr_parse(attr,"basic",_jit_sym_long,0,"1"); object_addattr_parse(attr,"label",_jit_sym_symbol,0,"Type"); jit_class_addattr(_jit_coerce_class,attr); attr = jit_object_new(_jit_sym_jit_attr_offset,"planecount",_jit_sym_long,attrflags, (method)0L,(method)0L,calcoffset(t_jit_coerce,planecount)); object_addattr_parse(attr,"category",_jit_sym_symbol,0,"MOP"); object_addattr_parse(attr,"basic",_jit_sym_long,0,"1"); object_addattr_parse(attr,"label",_jit_sym_symbol,0,"Planecount"); jit_class_addattr(_jit_coerce_class,attr); jit_class_register(_jit_coerce_class); return JIT_ERR_NONE; }
t_jit_err cv_jit_lines_init(void) { long attrflags=0; t_jit_object *attr,*mop,*output; _cv_jit_lines_class = jit_class_new("cv_jit_lines",(method)cv_jit_lines_new,(method)cv_jit_lines_free, sizeof(t_cv_jit_lines),0L); //add mop mop = (t_jit_object *)jit_object_new(_jit_sym_jit_mop,1,1); //Object has one input and one output jit_mop_single_type(mop,_jit_sym_char); //Set input type and planecount jit_mop_single_planecount(mop,1); jit_mop_output_nolink(mop,1); //Turn off output linking so that output matrix does not adapt to input output = (t_jit_object *)jit_object_method(mop,_jit_sym_getoutput,1); //Get a pointer to the output matrix jit_attr_setlong(output,_jit_sym_minplanecount,4); //Set output plane count jit_attr_setlong(output,_jit_sym_maxplanecount,4); //4 -> Coordinates of start and end points for each line jit_attr_setlong(output,_jit_sym_mindim,1); //Only one dimension jit_attr_setlong(output,_jit_sym_maxdim,1); jit_attr_setsym(output,_jit_sym_types,_jit_sym_long); jit_class_addadornment(_cv_jit_lines_class,mop); //add methods jit_class_addmethod(_cv_jit_lines_class, (method)cv_jit_lines_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes attr = (t_jit_object *)jit_object_new(_jit_sym_jit_attr_offset,"threshold",_jit_sym_float64,attrflags, (method)0L,(method)0L,calcoffset(t_cv_jit_lines,threshold)); jit_attr_addfilterset_clip(attr,1,255,TRUE,TRUE); //clip to 1-255 jit_class_addattr(_cv_jit_lines_class,attr); attr = (t_jit_object *)jit_object_new(_jit_sym_jit_attr_offset,"resolution",_jit_sym_long,attrflags, (method)0L,(method)0L,calcoffset(t_cv_jit_lines,resolution)); jit_attr_addfilterset_clip(attr,1,10,TRUE,TRUE); //clip to 1-10 jit_class_addattr(_cv_jit_lines_class,attr); attr = (t_jit_object *)jit_object_new(_jit_sym_jit_attr_offset,"gap",_jit_sym_float64,attrflags, (method)0L,(method)0L,calcoffset(t_cv_jit_lines,gap)); jit_class_addattr(_cv_jit_lines_class,attr); attr = (t_jit_object *)jit_object_new(_jit_sym_jit_attr_offset,"length",_jit_sym_float64,attrflags, (method)0L,(method)0L,calcoffset(t_cv_jit_lines,length)); jit_class_addattr(_cv_jit_lines_class,attr); attr = (t_jit_object *)jit_object_new(_jit_sym_jit_attr_offset,"sensitivity",_jit_sym_long,attrflags, (method)0L,(method)0L,calcoffset(t_cv_jit_lines,sensitivity)); jit_attr_addfilterset_clip(attr,1,255,TRUE,TRUE); //clip to 1-255 jit_class_addattr(_cv_jit_lines_class,attr); jit_class_register(_cv_jit_lines_class); return JIT_ERR_NONE; }
t_jit_err cv_jit_blobs_direction_init(void) { long attrflags=0; t_jit_object *attr,*mop,*output; t_symbol *atsym; atsym = gensym("jit_attr_offset"); _cv_jit_blobs_direction_class = jit_class_new("cv_jit_blobs_direction",(method)cv_jit_blobs_direction_new,(method)cv_jit_blobs_direction_free, sizeof(t_cv_jit_blobs_direction),0L); //add mop mop = jit_object_new(_jit_sym_jit_mop,1,1); //Object has one input and one output jit_mop_single_type(mop,_jit_sym_float32); //Set input type and planecount jit_mop_single_planecount(mop,17); jit_mop_output_nolink(mop,1); //Turn off output linking so that output matrix does not adapt to input output = jit_object_method(mop,_jit_sym_getoutput,1); //Get a pointer to the output matrix jit_attr_setlong(output,_jit_sym_minplanecount,1); jit_attr_setlong(output,_jit_sym_maxplanecount,1); jit_attr_setlong(output,_jit_sym_mindim,1); jit_attr_setlong(output,_jit_sym_maxdim,1); jit_attr_setsym(output,_jit_sym_types,_jit_sym_float32); jit_class_addadornment(_cv_jit_blobs_direction_class,mop); //add methods jit_class_addmethod(_cv_jit_blobs_direction_class, (method)cv_jit_blobs_direction_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes attrflags = JIT_ATTR_GET_DEFER_LOW | JIT_ATTR_SET_USURP_LOW; attr = jit_object_new(_jit_sym_jit_attr_offset,"mode",_jit_sym_long,attrflags, (method)0L,(method)0L,calcoffset(t_cv_jit_blobs_direction,mode)); jit_attr_addfilterset_clip(attr,0,1,TRUE,TRUE); //clip to 0-1 jit_class_addattr(_cv_jit_blobs_direction_class,attr); attr = jit_object_new(_jit_sym_jit_attr_offset,"flip",_jit_sym_long,attrflags, (method)0L,(method)0L,calcoffset(t_cv_jit_blobs_direction,flip)); jit_attr_addfilterset_clip(attr,0,1,TRUE,TRUE); //clip to 0-1 jit_class_addattr(_cv_jit_blobs_direction_class,attr); jit_class_register(_cv_jit_blobs_direction_class); return JIT_ERR_NONE; }
t_jit_err jit_dimmap_init(void) { long attrflags=0; t_jit_object *attr,*mop,*o; t_symbol *atsym; atsym = gensym("jit_attr_offset"); _jit_dimmap_class = jit_class_new("jit_dimmap",(method)jit_dimmap_new,(method)jit_dimmap_free, sizeof(t_jit_dimmap),0L); //add mop mop = jit_object_new(_jit_sym_jit_mop,1,1); jit_mop_output_nolink(mop,1); jit_class_addadornment(_jit_dimmap_class,mop); o = jit_object_method(mop,_jit_sym_getoutput,1); //add methods jit_class_addmethod(_jit_dimmap_class, (method)jit_dimmap_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes attrflags = JIT_ATTR_GET_DEFER_LOW | JIT_ATTR_SET_USURP_LOW; CLASS_STICKY_ATTR(_jit_dimmap_class,"category",0,"Behavior"); CLASS_STICKY_ATTR(_jit_dimmap_class,"basic",0,"1"); attr = jit_object_new(_jit_sym_jit_attr_offset_array,"map",_jit_sym_long,JIT_MATRIX_MAX_DIMCOUNT,attrflags, (method)0L,(method)jit_dimmap_map,calcoffset(t_jit_dimmap,mapcount),calcoffset(t_jit_dimmap,map)); jit_class_addattr(_jit_dimmap_class,attr); CLASS_ATTR_LABEL(_jit_dimmap_class,"map",0,"Dimension Map"); attr = jit_object_new(_jit_sym_jit_attr_offset_array,"invert",_jit_sym_long,JIT_MATRIX_MAX_DIMCOUNT,attrflags, (method)0L,(method)0L,calcoffset(t_jit_dimmap,invertcount),calcoffset(t_jit_dimmap,invert)); jit_class_addattr(_jit_dimmap_class,attr); CLASS_ATTR_LABEL(_jit_dimmap_class,"invert",0,"Dimension Invert"); CLASS_STICKY_ATTR_CLEAR(_jit_dimmap_class, "basic"); CLASS_STICKY_ATTR_CLEAR(_jit_dimmap_class, "category"); jit_class_register(_jit_dimmap_class); return JIT_ERR_NONE; }
t_jit_err cv_jit_blobs_centroids_init(void) { t_jit_object *mop,*output; t_symbol *atsym; atsym = gensym("jit_attr_offset"); _cv_jit_blobs_centroids_class = jit_class_new("cv_jit_blobs_centroids",(method)cv_jit_blobs_centroids_new,(method)cv_jit_blobs_centroids_free, sizeof(t_cv_jit_blobs_centroids),0L); //add mop mop = jit_object_new(_jit_sym_jit_mop,1,1); //Object has one input and one output output = jit_object_method(mop,_jit_sym_getoutput,1); //Get a pointer to the output matrix jit_mop_single_type(mop,_jit_sym_char); //Set input type and planecount jit_mop_single_planecount(mop,1); jit_mop_output_nolink(mop,1); //Turn off output linking so that output matrix does not adapt to input jit_attr_setlong(output,_jit_sym_minplanecount,3); //Output has 3 planes: centroid coordinates + mass jit_attr_setlong(output,_jit_sym_maxplanecount,3); jit_attr_setlong(output,_jit_sym_mindim,1); jit_attr_setlong(output,_jit_sym_maxdim,1); jit_attr_setsym(output,_jit_sym_types,_jit_sym_float32); jit_class_addadornment(_cv_jit_blobs_centroids_class,mop); //add methods jit_class_addmethod(_cv_jit_blobs_centroids_class, (method)cv_jit_blobs_centroids_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes /*No attributes for this object*/ jit_class_register(_cv_jit_blobs_centroids_class); return JIT_ERR_NONE; }
t_jit_err jit_thin_init(void) { long attrflags=0; t_jit_object *attr,*mop,*o; t_symbol *atsym; atsym = gensym("jit_attr_offset"); _jit_thin_class = jit_class_new("jit_thin",(method)jit_thin_new,(method)jit_thin_free, sizeof(t_jit_thin),0L); //add mop mop = jit_object_new(_jit_sym_jit_mop,1,1); jit_mop_output_nolink(mop,1); jit_class_addadornment(_jit_thin_class,mop); o = jit_object_method(mop,_jit_sym_getoutput,1); //add methods jit_class_addmethod(_jit_thin_class, (method)jit_thin_matrix_calc, "matrix_calc", A_CANT, 0L); jit_class_register(_jit_thin_class); return JIT_ERR_NONE; }
t_jit_err cv_jit_features_init(void) { long attrflags=0; t_jit_object *attr,*mop,*output; t_symbol *atsym; atsym = gensym("jit_attr_offset"); _cv_jit_features_class = jit_class_new("cv_jit_features",(method)cv_jit_features_new,(method)cv_jit_features_free, sizeof(t_cv_jit_features),A_CANT,0L); //A_CANT = untyped //add mop mop = (t_jit_object *)jit_object_new(_jit_sym_jit_mop,1,1); //Object has one input and one output output = (t_jit_object *)jit_object_method(mop,_jit_sym_getoutput,1); //Get a pointer to the output matrix jit_mop_single_type(mop,_jit_sym_char); //Set input type and planecount jit_mop_single_planecount(mop,1); jit_mop_output_nolink(mop,1); //Turn off output linking so that output matrix does not adapt to input jit_attr_setlong(output,_jit_sym_minplanecount,2); //Two planes, holding the feature's coordinates jit_attr_setlong(output,_jit_sym_maxplanecount,2); jit_attr_setlong(output,_jit_sym_mindim,1); //Only one dimension jit_attr_setlong(output,_jit_sym_maxdim,1); jit_attr_setsym(output,_jit_sym_types,_jit_sym_float32); //Coordinates are returned with sub-pixel accuracy jit_class_addadornment(_cv_jit_features_class,mop); //add methods jit_class_addmethod(_cv_jit_features_class, (method)cv_jit_features_matrix_calc, "matrix_calc", A_CANT, 0L); //add attributes attrflags = JIT_ATTR_GET_DEFER_LOW | JIT_ATTR_SET_USURP_LOW; //threshold attr = (t_jit_object *)jit_object_new( _jit_sym_jit_attr_offset,"threshold",_jit_sym_float64,attrflags,(method)0L,(method)0L,calcoffset(t_cv_jit_features,threshold)); jit_attr_addfilterset_clip(attr,0.001,1,TRUE,TRUE); //clip to 0.001-1 jit_class_addattr(_cv_jit_features_class, attr); //minimum distance attr = (t_jit_object *)jit_object_new( _jit_sym_jit_attr_offset,"distance",_jit_sym_float64,attrflags,(method)0L,(method)0L,calcoffset(t_cv_jit_features,distance)); jit_attr_addfilterset_clip(attr,0,0,TRUE,FALSE); //clip to 0 jit_class_addattr(_cv_jit_features_class, attr); //roi attr = (t_jit_object *)jit_object_new(_jit_sym_jit_attr_offset_array, "roi", _jit_sym_long, 4, attrflags, (method)0L, (method)0L, calcoffset(t_cv_jit_features, roicount),calcoffset(t_cv_jit_features,roi)); jit_class_addattr(_cv_jit_features_class, attr); attr = (t_jit_object *)jit_object_new( _jit_sym_jit_attr_offset,"useroi",_jit_sym_char,attrflags,(method)0L,(method)0L,calcoffset(t_cv_jit_features,useroi)); jit_attr_addfilterset_clip(attr,0,1,TRUE,TRUE); //clip to 0-1 jit_class_addattr(_cv_jit_features_class, attr); //Precision attr = (t_jit_object *)jit_object_new( _jit_sym_jit_attr_offset,"precision",_jit_sym_char,attrflags,(method)0L,(method)0L,calcoffset(t_cv_jit_features,precision)); jit_attr_addfilterset_clip(attr,0,1,TRUE,TRUE); //clip to 0-1 jit_class_addattr(_cv_jit_features_class, attr); jit_class_register(_cv_jit_features_class); return JIT_ERR_NONE; }