Exemplo n.º 1
0
Arquivo: motif.c Projeto: E-LLP/QuIP
static void text_func(Widget textID, XtPointer app_data, XtPointer widget_data )
{
	Screen_Obj *sop;
	const char *s;

	sop=find_object(DEFAULT_QSP_ARG  textID);
#ifdef CAUTIOUS
	if( sop == NO_SCREEN_OBJ ){
		NWARN("CAUTIOUS:  text_func:  couldn't locate text widget");
		return;
	}
#endif /* CAUTIOUS */

	s = get_text(sop);

	if( s == NULL )
		assign_reserved_var( SOB_QSP_ARG  "input_string","(null)");
	else {
		assign_reserved_var( SOB_QSP_ARG  "input_string",s);
		free((void *)s);
	}

	/* We should chew the text when a return is typed, or something? */
NADVISE("text_func calling chew_text...");
	chew_text(DEFAULT_QSP_ARG sop->so_action_text,"(text event)");
} // text_func
Exemplo n.º 2
0
Arquivo: glmenu.c Projeto: nasa/QuIP
static COMMAND_FUNC( do_cap_q )
{
	GLenum cap;

	cap = CHOOSE_CAP("capability");
	if( cap == INVALID_CONSTANT ){
		assign_reserved_var(CAP_RESULT_VARNAME,"-1");
		return;
	}

	if( glIsEnabled(cap) == GL_TRUE ){
		assign_reserved_var(CAP_RESULT_VARNAME,"1");
	} else {
		assign_reserved_var(CAP_RESULT_VARNAME,"0");
	}
}
Exemplo n.º 3
0
Arquivo: glmenu.c Projeto: nasa/QuIP
static COMMAND_FUNC( do_check_extension )
{
	int i;

	i=WHICH_ONE("GL extension",N_KNOWN_EXTENSIONS,extension_table);
	if( i < 0 ) return;

#ifndef BUILD_FOR_OBJC
	if( check_extension(QSP_ARG  extension_table[i]) ){
		assign_reserved_var("extension_present","1");
	} else {
		assign_reserved_var("extension_present","0");
	}
#else // ! BUILD_FOR_OBJC
	WARN("Sorry, can't check for extensions in native Apple build...");
#endif // ! BUILD_FOR_OBJC
}
Exemplo n.º 4
0
static COMMAND_FUNC( do_grab )
{
	Data_Obj *dp;

	CHECK_CAM
	if( (dp=grab_spink_cam_frame(the_cam_p )) == NULL ){
		/* any error */
		// We might fail because we need to release a frame...
		// Don't shut down in that case.
		WARN("do_grab:  failed.");
	} else {
		char num_str[32];

		// BUG - we appear to be doing this twice...
		sprintf(num_str,"%d",the_cam_p->skc_newest);
		assign_reserved_var("newest",num_str);
	}

}
Exemplo n.º 5
0
Arquivo: lookmenu.c Projeto: nasa/QuIP
static COMMAND_FUNC( do_read_data )	/** read a data file */
{
	FILE *fp;
	const char *filename;
	char num_str[16];

	filename=nameof("data file");
	fp=try_open( filename, "r" );
	if( !fp ) return;

	/* We used to clear the data tables here,
	 * but now they are dynamically allocated
	 * and cleared at that time...
	 */

	/* clear old classes */
	do_delete_all_classes(SINGLE_QSP_ARG);
	//curr_tcp=NULL;
	n_have_classes=0;
	if( read_exp_data(QSP_ARG  fp) != 0 ){
		fclose(fp);
		sprintf(ERROR_STRING,"do_read_data:  error return from read_exp_data, file %s",filename);
		WARN(ERROR_STRING);
		return;
	}
	fclose(fp);
	n_have_classes = eltcount(class_list());

	sprintf(num_str,"%d",n_have_classes);	// BUG?  buffer overflow
						// if n_have_classes too big???
	assign_reserved_var( "n_classes" , num_str );
	
	if( verbose ){
		sprintf(ERROR_STRING,"File %s read, %d classes, %d x-values",
			filename,n_have_classes,_nvals);
		advise(ERROR_STRING);
	}
}
Exemplo n.º 6
0
Arquivo: glmenu.c Projeto: nasa/QuIP
static COMMAND_FUNC( do_slct_obj )
{
	int x, y;
	const char *s;
	GLuint n_names, *ptr;
	GLint hits;
	GLuint this_hit=0;	/* initialize to silence compiler */
	GLuint the_hit;
	float z1,z2;
	float z_this,z_min;
	int clickWindowSize = 1;
	GLint viewport[4];
	GLint i;
	GLuint j;
	char ret_str[32];

	x=(int)HOW_MANY("x location");
	y=(int)HOW_MANY("y location");
	s=NAMEOF("scene render command");
	s=savestr(s);

	//glPushMatrix();

	glSelectBuffer(MAX_SELECT,selectBuf);
	check_gl_error("glSelectBuffer");
	glRenderMode(GL_SELECT);
	check_gl_error("glRenderMode");

	glMatrixMode(GL_PROJECTION);
	check_gl_error("glMatrixMode");
	glPushMatrix();
	check_gl_error("glPushMatrix");
	glLoadIdentity();
	check_gl_error("glLoadIdentity");

	glGetIntegerv(GL_VIEWPORT,viewport);
	check_gl_error("glGetIntegerv");
	gluPickMatrix(x,viewport[3]-y,
			clickWindowSize,clickWindowSize,viewport);
	check_gl_error("gluPickMatrix");
	// Setup camera.
	//drawer.setupCamera(&manager);
	//glMatrixMode(GL_MODELVIEW);
	glInitNames();
	check_gl_error("glInitNames");
	glPushName(0);
	check_gl_error("glPushName");
	//drawer.drawAirspace(&manager, &table);
	
	/* Call the user's draw routine here... */
	chew_text(s, "(gl object selection)" );
	rls_str(s);

	// Restoring the original projection matrix.
	glMatrixMode(GL_PROJECTION);
	check_gl_error("glMatrixMode GL_PROJECTION");
	glPopMatrix();
	check_gl_error("glPopMatrix");
	glMatrixMode(GL_MODELVIEW);
	check_gl_error("glMatrixMode GL_MODELVIEW");
	glFlush();
	check_gl_error("glFlush");

	// Returning to normal rendering mode.
	hits = glRenderMode(GL_RENDER);

	//printf ("hits = %d\n", hits);

	// Red book example.
	// When there are multiple objects, the hits are recorded
	// in drawing order, we have to check the z values to know
	// which is the foreground object.
	z_min=100000;
	ptr = (GLuint *) selectBuf;
	for (i = 0; i < hits; i++) {
		n_names = *ptr++;
		z1= ((float)*ptr++)/0x7fffffff;
		z2= ((float)*ptr++)/0x7fffffff;

		if( z1 < z2 ) z_this = z1;
		else z_this=z2;

		if( z_this < z_min ) z_min=z_this;

		for(j=0;j<n_names;j++){
			this_hit=*ptr++;
		}
//		sprintf(ERROR_STRING,"Hit %d, %d from %g to %g, last is %d",
//			i,n_names,z1,z2,this_hit);
//		advise(ERROR_STRING);
	}
	the_hit=0;
	ptr = (GLuint *) selectBuf;
	for (i = 0; i < hits; i++) {
		n_names = *ptr++;
		z1= ((float)*ptr++)/0x7fffffff;
		z2= ((float)*ptr++)/0x7fffffff;
		if( z1 < z2 ) z_this = z1;
		else z_this=z2;
		for(j=0;j<n_names;j++){
			this_hit=*ptr++;
		}
		if( z_this == z_min )
			the_hit=this_hit;
	}
//sprintf(ERROR_STRING,"front-most hit is %d",the_hit);
//advise(ERROR_STRING);
	sprintf(ret_str,"%d",the_hit);
	assign_reserved_var("selection_index",ret_str);

	//if (hits != 0) {
	//manager.advanceTrial(processHits());
	//}

	//glPopMatrix();

	/* Set a variable to indicate what happened */
}