t_xray_jit_cellcoords *xray_jit_cellcoords_new(void) { t_xray_jit_cellcoords *x; t_jit_matrix_info info; void *m; if (x=(t_xray_jit_cellcoords *)jit_object_alloc(_xray_jit_cellcoords_class)) { x->plane = 0; x->out_mode = 0; //initialize internal matrix jit_matrix_info_default(&info); info.type = _jit_sym_char; info.planecount = 2; x->temp_name = jit_symbol_unique(); m = jit_object_new(_jit_sym_jit_matrix, &info); m = jit_object_method(m, _jit_sym_register, x->temp_name); //Register matrix name if(!m) error("could not allocate internal matrix!"); jit_object_attach(x->temp_name, x); x->temp = m; } else { x = NULL; } return x; }
void *max_jit_turtle_new(t_symbol *s, long argc, t_atom *argv) { t_max_jit_turtle *x; t_jit_matrix_info info; long attrstart,i,j; jit_matrix_info_default(&info); if (x = (t_max_jit_turtle *)max_jit_obex_new(max_jit_turtle_class,gensym("jit_turtle"))) { max_jit_obex_dumpout_set(x, outlet_new(x,0L)); //general purpose outlet(rightmost) x->turtleout = outlet_new(x,0L); // outlet for the LCD commands x->clearmode = 1; x->scale = 10; x->angle = 30; x->origin[0] = 80; // kind of arbitrary, but i think the default jit.lcd matrix size is 160x120. x->origin[1] = 120; x->origincount = 2; x->curstack=0; x->stacknew=1; for(i=0;i<MAXSTACK;i++) { x->thisangle[i] = -PI2/4.; // start facing north (upwards) x->stack_x[i] = x->origin[0]; x->stack_y[i] = x->origin[1]; x->pensize[i] = 1; } max_jit_attr_args(x,argc,argv); //handle attribute args } return (x); }
void legion_outputErrorMatrix(t_legion *x){ void *m; t_jit_matrix_info info; char *bp, *p; int row, col, i; jit_matrix_info_default(&info); info.type = _jit_sym_float64; info.planecount = 1; info.dim[0] = x->t_numRows; info.dim[1] = x->t_numColumns; t_symbol *name = jit_symbol_unique(); m = jit_object_new(_jit_sym_jit_matrix, &info); //m = jit_object_method(m, _jit_sym_register, name); m = jit_object_register(m, name); //jit_object_method(m, gensym("setinfo"), &info); info.dimstride[0] = sizeof(double); info.dimstride[1] = info.dimstride[0] * info.dim[0]; post("%d %d", info.dimstride[0], info.dimstride[1]); jit_object_method(m, _jit_sym_getdata, &bp); for(row = 0; row < x->t_numRows; row++){ for(col = 0; col < x->t_numColumns; col++){ i = (row * x->t_numRows) + col; p = bp + (i / info.dim[0]) * info.dimstride[1] + (i % info.dim[0]) * info.dimstride[0]; *((double *)p) = x->t_rosom[row][col].error; post("%d [%d, %d] %f %p", i, row, col, x->t_rosom[row][col].error, p); } } t_atom a; SETSYM(&a, name); outlet_anything(x->t_out, _jit_sym_jit_matrix, 1, &a); }
t_xray_jit_fdm *xray_jit_fdm_new(void) { t_xray_jit_fdm *x; void *m; t_jit_matrix_info info; if (x=(t_xray_jit_fdm *)jit_object_alloc(_xray_jit_fdm_class)) { x->spacestep = 1.0; x->direction = ps_x; x->calced = 0; x->dim[0] = 1; x->dim[1] = 1; //create internal matrix jit_matrix_info_default(&info); info.type = _jit_sym_float32; info.planecount = 1; x->previousName = jit_symbol_unique(); m = jit_object_new(_jit_sym_jit_matrix, &info); m = jit_object_method(m, _jit_sym_register, x->previousName); //Register matrix name if(!m) error("could not allocate internal matrix!"); jit_object_attach(x->previousName, x); x->previous = m; } else { x = NULL; } return x; }
t_xray_jit_colormap *xray_jit_colormap_new(void) { t_xray_jit_colormap *x; void *m; t_jit_matrix_info info; if (x=(t_xray_jit_colormap *)jit_object_alloc(_xray_jit_colormap_class)) { x->mode = 0; jit_matrix_info_default(&info); info.dimcount = 1; info.type = _jit_sym_float32; info.planecount = 3; x->Colorname = jit_symbol_unique(); m = jit_object_new(_jit_sym_jit_matrix, &info); m = jit_object_method(m, _jit_sym_register, x->Colorname); //Register matrix name if(!m) error("could not allocate internal matrix!"); jit_object_attach(x->Colorname, x); x->Color = m; jit_matrix_info_default(&info); info.dimcount = 1; info.type = _jit_sym_float32; info.planecount = 1; x->Countname = jit_symbol_unique(); m = jit_object_new(_jit_sym_jit_matrix, &info); m = jit_object_method(m, _jit_sym_register, x->Countname); //Register matrix name if(!m) error("could not allocate internal matrix!"); jit_object_attach(x->Countname, x); x->Count = m; } else { x = NULL; } return x; }
t_xray_jit_levelsetseg *xray_jit_levelsetseg_new(void) { t_xray_jit_levelsetseg *x; void *m; t_jit_matrix_info info; t_atom a; if (x=(t_xray_jit_levelsetseg *)jit_object_alloc(_xray_jit_levelsetseg_class)) { x->evolve = 0; x->smooth = 0; x->point[0] = 160; x->point[1] = 120; x->pointcount = 2; x->radius = 4; x->cycles = 7; x->Na = 7; x->Ng = 3; x->Ns = 5; x->gaussKernel = NULL; jit_atom_setlong(&a, 5); xray_jit_levelsetseg_Ng(x, 0L, 1, &a); //allocate and initialize linked-list DLLcreateList( &(x->L_in) ); DLLcreateList( &(x->L_out) ); x->inside = (t_RegionStats *)jit_getbytes(sizeof(t_RegionStats)); x->outside = (t_RegionStats *)jit_getbytes(sizeof(t_RegionStats)); sqrtTwoPi = jit_math_sqrt(2*jit_math_acos(-1)); //setup backgFloat matrix jit_matrix_info_default(&info); info.type = _jit_sym_char; info.planecount = 1; x->phiName = jit_symbol_unique(); m = jit_object_new(_jit_sym_jit_matrix, &info); m = jit_object_method(m, _jit_sym_register, x->phiName); //Register matrix name if(!m) error("could not allocate internal matrix!"); jit_object_attach(x->phiName, x); x->phi = m; } else { x = NULL; } return x; }