void block_cls_init(t_block *block) { int i; int n = sizeof(blocks)/sizeof(blocks[0]); int found=0; for(i=0;i<n;i++) { if(iseq(block->type,blocks[i]->type)) { blocks[i]->make(block); found=1; break; } } if( iseq(block->cls->type, "menu")) { block->state = state_block_menu_default; } else { block->state = state_block_default; } if(!found)printf("[ERROR:cls_block_init] Unknown block type %s\n",block->type); block->block_state.connecting = 0; }
t_node *add_operator_double(t_context *C,const char *type) { // BLOCK t_node *node_block = add_block(C,type); t_block *block = ( t_block *) node_block->data; block->block_state.draw_outline=1; // OPERANDS t_node *node_op_1 = add_brick_operand(C,block,"a"); t_node *node_op_2 = add_brick_operand(C,block,"b"); t_brick *brick_op_1 = ( t_brick *) node_op_1->data; t_brick *brick_op_2 = ( t_brick *) node_op_2->data; brick_op_1->brick_state.is_versatil=1; brick_op_2->brick_state.is_versatil=1; // RESULT t_node *brick_result=add_brick_operator(C,block,type); t_brick *result = ( t_brick *) brick_result->data; // ACTIONS if(iseq(type,">")) result->exe=op_superior; else if(iseq(type,"<")) result->exe=op_inferior; else if(iseq(type,"=")) result->exe=op_equal; else if(iseq(type,"mod")) result->exe=op_mod; return node_block; }
void add_target_mesh( t_context *C, t_mesh *mesh, const char *name) { t_node *selected=C->scene->selected; if(selected) { t_mesh *mesh = ( t_mesh *) selected->data; t_block *block = mesh->ref; if( iseq( name, "vertex")) add_part_mesh( C, block, "vertex", mesh, dt_mesh); else if( iseq( name, "edges")) add_part_mesh( C, block, "edges", mesh, dt_mesh); block->block_state.update_geometry = 1; } }
t_node *add_multiplier( t_context *C, const char *type) { // BLOCK t_node *node_block = add_block(C, type); t_block *block = ( t_block *) node_block->data; t_node *node_brick = add_brick_slider_float( C, block, type, NULL, NULL); t_brick *brick = ( t_brick *) node_brick->data; if(iseq(type,"10")) brick->var.increment=10; else if(iseq(type,"100")) brick->var.increment=100; else if(iseq(type,".1")) brick->var.increment=.1; else if(iseq(type,".01")) brick->var.increment=.01; else if(iseq(type,".001")) brick->var.increment=.001; return node_block; }
void viewport_set_format( t_viewport *viewport, const char *format) { int width, height; if( iseq( format, "A4")) { width = 210; height = 297; } viewport->width = width; viewport->height = height; }
void *vlst_get_ref(t_vlst *vlst, const char *ref) { void *p; if(iseq(ref,"count")) p=&vlst->count_new; else { printf("[ERROR vlst_get_ref] Unknown ref [%s] \n",ref); return NULL; } return p; }
int app_check_arg( t_app *app, const char *arg) { int i; for( i = 0; i < app->argc; i++) { if( iseq(app->argv[i], arg)) { return 1; } } return 0; }
t_node *add_maths(t_context *C,const char *name) { // NEW BLOCK t_node *node_block = add_block(C,name); t_block *block = ( t_block *) node_block->data; block->block_state.draw_outline = 1; // Brick Result add_part_slider_int(C,block,"result",NULL); //add_part_slider_add_bricks(C,block,"result", 2,NULL); // CLONE //t_node *node_brick_clone = add_part_slider_add( C, block, name, NULL); t_node *node_brick_clone = add_part_slider_add_bricks( C, block, name, 2, NULL); t_brick *brick_clone = ( t_brick *) node_brick_clone->data; if(iseq(name,"+")) brick_clone->exe = op_add; else if(iseq(name,"x")) brick_clone->exe = op_mult; else if(iseq(name,"and")) brick_clone->exe = op_and; else printf("[WARNING add_maths] Unknown type %s\n",name); return node_block; }
t_brick *block_brick_get(t_block *block,const char *name) { t_brick *brick; t_link *l; for(l=block->bricks->first;l;l=l->next) { brick=l->data; if(iseq(brick->id.name,name)) { return brick; } } printf("[ERROR block_brick_get] Can't find brick %s\n",name); return NULL; }
int block_is_connected(const char *gate, t_block *block) { t_link *link; t_brick *brick; t_plug *plug; int plug_in; int follow; if(iseq(gate,"in")) plug_in = 1; else plug_in = 0; if(block->bricks->first) { for(link = block->bricks->first; link; link = link->next) { brick = link->data; if(plug_in) { plug = &brick->plug_in; follow = plug->state.follow_in; } else { plug = &brick->plug_out; follow = plug->state.follow_out; } if(plug->state.is_connected && follow) { return 1; } } return 0; } else { return 0; } }
static void dump(Atom p, int n) { if(!p) return; for(;; p = p->sibs.le_next) { if(iseq(&p->ir)) dump_eqnode(p, n, p->ir.u.eq.nbits); else { demand(isshift(&p->ir), bogus op); dump_shiftnode(p, n, p->ir.u.shift.nbits); } if(!p->sibs.le_next) return; indent(n - 2); printf("OR\n"); } }
void *viewport_get_ref(t_viewport *viewport, const char *ref) { void *p; if(iseq(ref,"width")) p=&viewport->width; else if(iseq(ref,"height")) p=&viewport->height; else if(iseq(ref,"x")) p=&viewport->x; else if(iseq(ref,"y")) p=&viewport->y; else if(iseq(ref,"fullscreen")) p=&viewport->fullscreen; else if(iseq(ref,"show_outline")) p=&viewport->show_outline; else { printf("[ERROR mesh_get_ref] Unknown ref [%s] \n",ref); return NULL; } return p; }
t_node *add_slider_camera(t_context *C,const char *name) { t_camera *camera = op_camera_get_current( C); t_node *node = NULL; if(camera) { if(iseq(name,"pos x")) { scene_add_ref(C->scene,"struct_ref","camera","pos_x",&camera->pos[0],camera); node = add_slider_float(C,"cam pos x",&camera->pos[0]); } else if(iseq(name,"pos y")) { scene_add_ref(C->scene,"struct_ref","camera","pos_y",&camera->pos[1],camera); node = add_slider_float(C,"cam pos y",&camera->pos[1]); } else if(iseq(name,"pos z")) { scene_add_ref(C->scene,"struct_ref","camera","pos_z",&camera->pos[2],camera); node = add_slider_float(C,"cam pos z",&camera->pos[2]); } else if(iseq(name,"eye x")) { scene_add_ref(C->scene,"struct_ref","camera","eye_x",&camera->eye[1],camera); node = add_slider_float(C,"cam eye x",&camera->eye[1]); } else if(iseq(name,"eye y")) { scene_add_ref(C->scene,"struct_ref","camera","eye_y",&camera->eye[2],camera); node = add_slider_float(C,"cam eye y",&camera->eye[2]); } else if(iseq(name,"eye z")) { scene_add_ref(C->scene,"struct_ref","camera","eye_z",&camera->eye[3],camera); node = add_slider_float(C,"cam eye z",&camera->eye[3]); } } return node; }
/* Test if two expressions occupy the same physical memory */ static exp_t * prim_eq(exp_t *args) { chkargs("eq?", args, 2); return iseq(car(args), cadr(args)) ? true : false; }
void add_slider_ref(t_context *C,t_object *object,const char *name) { t_mesh *mesh=NULL; t_material *mat=NULL; if(object->mesh) mesh=object->mesh; if(mesh) { if(mesh->material) mat=mesh->material; } if(iseq(name,"pos x")) scene_add_ref(C->scene,"struct_ref","object","loc_x",&object->loc[0],object); else if(iseq(name,"pos y")) scene_add_ref(C->scene,"struct_ref","object","loc_y",&object->loc[1],object); else if(iseq(name,"pos z")) scene_add_ref(C->scene,"struct_ref","object","loc_z",&object->loc[2],object); else if(iseq(name,"rot x")) scene_add_ref(C->scene,"struct_ref","object","rot_x",&object->rot[0],object); else if(iseq(name,"rot y")) scene_add_ref(C->scene,"struct_ref","object","rot_y",&object->rot[1],object); else if(iseq(name,"rot z")) scene_add_ref(C->scene,"struct_ref","object","rot_z",&object->rot[2],object); else if(iseq(name,"scl x")) scene_add_ref(C->scene,"struct_ref","object","scl_x",&object->size[0],object); else if(iseq(name,"scl y")) scene_add_ref(C->scene,"struct_ref","object","scl_y",&object->size[1],object); else if(iseq(name,"scl z")) scene_add_ref(C->scene,"struct_ref","object","scl_z",&object->size[2],object); else if(iseq(name,"red") && mat) scene_add_ref(C->scene,"struct_ref","material","red",&mat->color[0],mat); else if(iseq(name,"green") && mat) scene_add_ref(C->scene,"struct_ref","material","green",&mat->color[1],mat); else if(iseq(name,"blue") && mat) scene_add_ref(C->scene,"struct_ref","material","blue",&mat->color[2],mat); else if(iseq(name,"alpha") && mat) scene_add_ref(C->scene,"struct_ref","material","alpha",&mat->color[3],mat); else if(iseq(name,"quad face") && mesh) scene_add_ref(C->scene,"struct_ref","mesh","quad_face",&mesh->quad_face,mesh); else if(iseq(name,"mesh") && mesh) scene_add_ref(C->scene,"struct_ref","mesh","mesh",mesh,mesh); }
void app_args_scan(t_app *app) { int i; int scan_port = 0; for(i=0;i<app->argc;i++) { if( scan_port) { app_scan_port( app, app->argv[i]); scan_port = 0; } if(iseq(app->argv[i],"off")) { app->off_screen=1; } if(iseq(app->argv[i],"x")) { app->with_glut=0; } if(iseq(app->argv[i],"client")) { app->off_screen=1; app->client=1; } if(iseq(app->argv[i],"slave")) { app->off_screen=1; app->slave=1; } if(iseq(app->argv[i],"load")) { char *path = app->argv[2]; printf("load %s\n",path); app->load_file = 1; set_path( app->path_file, path); } if(iseq(app->argv[i],"osc_server")) { app->off_screen = 1; app->osc_server = 1; } if(iseq(app->argv[i],"osc_client")) { app->off_screen = 1; app->osc_client = 1; } if(iseq(app->argv[i],"-port")) { scan_port = 1; } } }
void add_slider_target(t_context *C,t_object *object,const char *name) { t_mesh *mesh=NULL; t_material *material=NULL; t_block *block=object->ref; if(object->mesh) mesh=object->mesh; if(mesh) { if(mesh->material) material=mesh->material; } if(iseq(name,"pos x")) add_part_slider_float(C,block,"pos x",&object->loc[0]); else if(iseq(name,"pos y")) add_part_slider_float(C,block,"pos y",&object->loc[1]); else if(iseq(name,"pos z")) add_part_slider_float(C,block,"pos z",&object->loc[2]); else if(iseq(name,"rot x")) add_part_slider_float(C,block,"rot x",&object->rot[0]); else if(iseq(name,"rot y")) add_part_slider_float(C,block,"rot y",&object->rot[1]); else if(iseq(name,"rot z")) add_part_slider_float(C,block,"rot z",&object->rot[2]); else if(iseq(name,"scl x")) add_part_slider_float(C,block,"scl x",&object->size[0]); else if(iseq(name,"scl y")) add_part_slider_float(C,block,"scl y",&object->size[1]); else if(iseq(name,"scl z")) add_part_slider_float(C,block,"scl z",&object->size[2]); else if(iseq(name,"red") && material) add_part_slider_float(C,block,"red",&material->color[0]); else if(iseq(name,"green") && material) add_part_slider_float(C,block,"green",&material->color[1]); else if(iseq(name,"blue") && material) add_part_slider_float(C,block,"blue",&material->color[2]); else if(iseq(name,"alpha") && material) add_part_slider_float(C,block,"alpha",&material->color[3]); else if(iseq(name,"color") && mesh) mesh_add_default_color(mesh); else if(iseq(name,"faces") && mesh) mesh_add_brick_faces(mesh); else if(iseq(name,"mesh")) add_part_object(C,block,"mesh",object,dt_object); block->block_state.update_geometry = 1; }
int get_special_key() { if(iseq(special_key,"eacute")) return 233; else return 0; }