コード例 #1
0
ファイル: jni_writer.c プロジェクト: S73417H/opensplice
jni_result
jni_writerWrite(
    jni_writer wri,
    const c_char* xmlUserData)
{

    jni_result r;
    jni_writerCopyArg copyArg;
    sd_validationResult valResult;
    
    if( (wri == NULL) || (xmlUserData == NULL) || (wri->uwriter == NULL) || (xmlUserData == NULL)){
        r = JNI_RESULT_BAD_PARAMETER;
    } 
    else{
        copyArg = os_malloc(C_SIZEOF(jni_writerCopyArg));
        copyArg->writer = wri;
        copyArg->xmlData = xmlUserData;
        
        r = jni_convertResult(u_writerWrite(wri->uwriter,
                                            copyArg,
                                            u_timeGet(),
                                            U_INSTANCEHANDLE_NIL));
        valResult = sd_serializerLastValidationResult(wri->deserializer);
        
        if(valResult != SD_VAL_SUCCESS){
            OS_REPORT_2(OS_ERROR, CONT_DCPSJNI, 0, 
                        "Write of userdata failed.\nReason: %s\nError: %s\n",
                        sd_serializerLastValidationMessage(wri->deserializer),
                        sd_serializerLastValidationLocation(wri->deserializer));           
            r = JNI_RESULT_ERROR;
        }
        os_free(copyArg);
    }
    return r;
}
コード例 #2
0
ファイル: timing.cpp プロジェクト: Sciumo/gasandbox
/*
returns time (in seconds) passed since last call to this function (0.0 the first time)
*/
double u_timeElapsed() {
	double t, temp;

	if ( (t = u_timeGet()) < 0.0) return -1.0;
	
	if (s_LastTimeElapsed < 0) {
		s_LastTimeElapsed = t;
		return 0.0;
	}
	else {
		temp = s_LastTimeElapsed;
		s_LastTimeElapsed = t;
		return t - temp;
	}
}
コード例 #3
0
ファイル: gaigenhp_main.cpp プロジェクト: Sciumo/gasandbox
void timerCallback(void *) {
	static char timingText[32];
	sprintf(timingText, "%f", g_lastTiming);
	g_timingOutput->value(timingText);

	static char boxesText[32];
	sprintf(boxesText, "%d", g_boxes);
	g_boxesOutput->value(boxesText);
	fprintf(stderr,"boxes %d, refines %d\n",g_boxes,g_refines);
//	Fl::add_timeout(10.0f / 30.0f, timerCallback);

	if (g_pushGo) {
		if ((int)(u_timeGet() * 2.0) & 1)
			ui_goButton->color(FL_GRAY);
		else ui_goButton->color(FL_RED);
		ui_goButton->redraw();
	}
}
コード例 #4
0
gapi_instanceHandle_t
gapi_fooDataWriter_register_instance (
    gapi_fooDataWriter _this,
    const gapi_foo *instance_data)
{
    _DataWriter datawriter;
    gapi_instanceHandle_t handle = GAPI_HANDLE_NIL;

    if ( instance_data ) {
        datawriter = gapi_dataWriterReadClaim(_this, NULL);
        if ( datawriter ) {
            handle = _DataWriterRegisterInstance(datawriter,
                                                 instance_data,
                                                 u_timeGet());
            _EntityReadRelease(datawriter);
        }
    }
    return handle;
}
コード例 #5
0
gapi_returnCode_t
gapi_fooDataWriter_unregister_instance (
    gapi_fooDataWriter _this,
    const gapi_foo *instance_data,
    const gapi_instanceHandle_t handle)
{
    _DataWriter datawriter;
    gapi_returnCode_t result = GAPI_RETCODE_OK;

    if ( instance_data || handle ) {
        datawriter = gapi_dataWriterReadClaim(_this, &result);
        if ( datawriter ) {
            result = _DataWriterUnregisterInstance(datawriter,
                                                   instance_data,
                                                   handle,
                                                   u_timeGet());
            _EntityReadRelease(datawriter);
        }
    } else {
        result = GAPI_RETCODE_PRECONDITION_NOT_MET;
    }
    return result;
}
コード例 #6
0
void glwindow::makeList() {

	// create a cube display list
	vector dir[3], base;
	dir[0] = _vector(e1);
	dir[1] = _vector(e2);
	dir[2] = _vector(e3);
	glNewList(cubeListName, GL_COMPILE);
	drawCube(base, dir);
	glEndList();

	// create vector field display list
	glNewList(fieldListName, GL_COMPILE);
	glColor3f(lineColor[0], lineColor[1], lineColor[2]);

	// set up the cube
	base.set(vector_e1_e2_e3, -0.5f * g_cubeSize+g_cx, -0.5f * g_cubeSize+g_cy, -0.5f * g_cubeSize+g_cz);
	dir[0] = _vector(e1 * g_cubeSize);
	dir[1] = _vector(e2 * g_cubeSize);
	dir[2] = _vector(e3 * g_cubeSize);

	// draw it's vector field
	glDisable(GL_NORMALIZE);
	glDisable(GL_LIGHTING);
	  drawVectorField(base, dir, g_vgs, g_evalFunc, 
			  g_vectorSize*0.05f, g_unitField);
	glEndList();

	glNewList(resultListName, GL_COMPILE);
	// evaluate, draw
	if (g_lighting) {
		glEnable(GL_NORMALIZE);
		glEnable(GL_LIGHTING);
		glEnable(GL_LIGHT0);
	}
	glEnable(GL_CULL_FACE);
	glCullFace(GL_BACK);
	double t = u_timeGet();
	extern int g_refines;
	g_boxes=0; g_refines=0;
	findSingularities(base, dir, g_gs, g_evalFunc, 0, g_maxDepth);
	g_lastTiming = u_timeGet() - t;
	timerCallback(NULL);
	glEndList();
	if ( g_Dcube > 0 ) {
	  glNewList(sphereListName, GL_COMPILE);
	  glDisable(GL_NORMALIZE);
	  glDisable(GL_LIGHTING);
	  drawSphere(g_gs, 0);
	  glEndList();

	  glNewList(spherePListName, GL_COMPILE);
	  if (g_lighting) {
		glEnable(GL_NORMALIZE);
		glEnable(GL_LIGHTING);
		glEnable(GL_LIGHT0);
	  }
	  drawSphere(g_gs,1);
	  glEndList();

	  glNewList(sphereNListName, GL_COMPILE);
	  if (g_lighting) {
		glEnable(GL_NORMALIZE);
		glEnable(GL_LIGHTING);
		glEnable(GL_LIGHT0);
	  }
	  drawSphere(g_gs,2);
	  glEndList();



	  glNewList(circListName, GL_COMPILE);
	  glDisable(GL_NORMALIZE);
	  glDisable(GL_LIGHTING);
	  drawCirc(g_gs, 0);
	  glEndList();

	  glNewList(circPListName, GL_COMPILE);
	  if (g_lighting) {
		glEnable(GL_NORMALIZE);
		glEnable(GL_LIGHTING);
		glEnable(GL_LIGHT0);
	  }
	  drawCirc(g_gs,1);
	  glEndList();

	  glNewList(circNListName, GL_COMPILE);
	  if (g_lighting) {
		glEnable(GL_NORMALIZE);
		glEnable(GL_LIGHTING);
		glEnable(GL_LIGHT0);
	  }
	  drawCirc(g_gs,2);
	  glEndList();
	}
}
コード例 #7
0
void glwindow::draw() {
	if (!listNamesGenerated) {
		resultListName = glGenLists(9);
		cubeListName = resultListName + 1;
		fieldListName = resultListName + 2;
		sphereListName = resultListName +3;
		spherePListName = resultListName +4;
		sphereNListName = resultListName +5;
		circListName = resultListName +6;
		circPListName = resultListName +7;
		circNListName = resultListName +8;
		listNamesGenerated = true;
		makeNewList = true;
	}
	if (makeNewList) {
	  extern Fl_Output *g_hpvalueOutput;
		makeList();
		makeNewList = 0;
		static char valueText[32];
		if ( g_Dcube > 0 ) {
		  sprintf(valueText,"%g",g_hpvalue);
		  g_hpvalueOutput->value(valueText);
		} else {
		  g_hpvalueOutput->value("");
		}
		g_hpvalueOutput->redraw();
	}

	g_fieldsCurrentTime  = u_timeGet();

	beginglDraw();
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();

	glTranslatef(dx, dy, -distance);

	rotorGLMult(rot);
	// test for converting a rotor to a OpenGL matrix using outer morphism (should go into seperate function or something)
	/*e3ga_om om;
	e3ga vi[3], ri = rot.inverse(); // vi = vector images; ri = rot inverse
	vi[0] = rot * e3ga::e1 * ri;
	vi[1] = rot * e3ga::e2 * ri;
	vi[2] = rot * e3ga::e3 * ri;
	om.initOuterMorphism(vi);
	float rotM[16] = {
		om.c[1 + 0 * 3 + 0], om.c[1 + 1 * 3 + 0], om.c[1 + 2 * 3 + 0], 0,
		om.c[1 + 0 * 3 + 1], om.c[1 + 1 * 3 + 1], om.c[1 + 2 * 3 + 1], 0,
		om.c[1 + 0 * 3 + 2], om.c[1 + 1 * 3 + 2], om.c[1 + 2 * 3 + 2], 0,
		0, 0, 0, 1
	};
	glMultMatrixf(rotM);*/
	

	if (g_showField) {
	  glCallList(fieldListName);
	}

	if (g_showResult) {
	  glCallList(resultListName);
	}

	if (g_showSphere && g_Dcube>0) {
	  glCallList(sphereListName);
	}
	if (g_showPSphere && g_Dcube>0) {
	  glCallList(spherePListName);
	}
	if (g_showNSphere && g_Dcube>0) {
	  glCallList(sphereNListName);
	}

	if ( g_showCirc && g_Dcube > 0 ) {
	  glCallList(circListName);
	  glCallList(circPListName);
	  glCallList(circNListName);
	}
	glPopMatrix();

	endglDraw();
}