Beispiel #1
0
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;
}
Beispiel #2
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;
}
Beispiel #3
0
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;
	}
}
Beispiel #4
0
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;
}
Beispiel #5
0
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;
}
Beispiel #6
0
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;
}
Beispiel #7
0
Datei: app.c Projekt: rvba/minuit
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;
}
Beispiel #8
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;
}
Beispiel #9
0
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;
}
Beispiel #10
0
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;
	}

}
Beispiel #11
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");
	}
}
Beispiel #12
0
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;
}
Beispiel #13
0
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;
}
Beispiel #14
0
/* 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;
}
Beispiel #15
0
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);

}
Beispiel #16
0
Datei: app.c Projekt: rvba/minuit
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;
		}
	}
}
Beispiel #17
0
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;

}
Beispiel #18
0
Datei: txt.c Projekt: rvba/minuit
int get_special_key()
{
	if(iseq(special_key,"eacute")) return 233;
	else return 0;
}