ComputeTrace::ComputeTrace(int argc, char *argv[]) : coSimpleModule(argc, argv, "Creates traces from points timestep dependent") , m_firsttime(true) { //the timesteps shall NOT be handled automatically by the coSimpleModule class setComputeTimesteps(1); /*Fed in points*/ p_pointsIn = addInputPort("GridIn0", "Points|Spheres", "a set of points or spheres containing the particle/s to be traced over time"); p_dataIn = addInputPort("DataIn0", "Float|Byte|Int|Vec2|Vec3|RGBA|Mat3|Tensor", "data mapped associated with spheres"); p_dataIn->setRequired(false); p_IDIn = addInputPort("IDIn0", "Int", "ID of each atom"); p_IDIn->setRequired(false); /*Boolean that specifies if a particle should be traced or not*/ p_traceParticle = addBooleanParam("traceParticle", "set if particle should be traced"); p_traceParticle->setValue(1); /*Integer that specifies the particle to be traced in Module Parameter window*/ p_particle = addStringParam("selection", "ranges of selected set elements"); p_particle->setValue("1-1"); p_maxParticleNumber = addInt32Param("maxParticleNum", "maximum number of particles to trace"); p_maxParticleNumber->setValue(100); /*Integer that specifies the starting point*/ p_start = addIntSliderParam("start", "Timestep at which the tracing should be started"); p_start->setValue(0, 0, 0); /*Integer that specifies the ending point*/ p_stop = addIntSliderParam("stop", "Timestep at which the tracing should be stopped"); p_stop->setValue(0, 0, 0); /* Boolean that specifies if the bounding box leaving should be regarded */ p_regardInterrupt = addBooleanParam("LeavingBoundingBox", "set if leaving bounding box should be taken into account"); p_regardInterrupt->setValue(0); p_animate = addBooleanParam("animate", "disable for static trace"); p_animate->setValue(1); /* 3 values specifying the x, y and z dimension of the bounding box */ p_boundingBoxDimensions = addFloatVectorParam("BoundingBoxDimensions", "x, y, z dimensions of the bounding box"); p_boundingBoxDimensions->setValue(0, 0, 0); /*Output should be a line*/ p_traceOut = addOutputPort("GridOut0", "Lines", "Trace of a specified particle"); /*unique index per line mappable as color attribute*/ p_indexOut = addOutputPort("DataOut0", "Float", "unique index for every specified particle"); /*fade out value per timestep mappable as color attribute*/ p_fadingOut = addOutputPort("DataOut1", "Float", "fade out value for per vertex coloring of lines over time"); p_dataOut = addOutputPort("DataOut2", "Float|Byte|Int|Vec2|Vec3|RGBA|Mat3|Tensor", "data mapped to lines"); p_dataOut->setDependencyPort(p_dataIn); IDs = NULL; assert(sizeof(animValues) / sizeof(animValues[0]) == AnimNumValues); p_animateViewer = addChoiceParam("animateViewer", "Animate Viewer"); p_animateViewer->setValue(AnimNumValues, animValues, AnimOff); p_animLookAt = addFloatVectorParam("animLookAt", "Animated viewer looks at this point"); p_animLookAt->setValue(0., 0., 0.); }
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // ++++ // ++++ Constructor : This will set up module port structure /// ++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ParamTest::ParamTest(int argc, char *argv[]) : coSimpleModule(argc, argv, "Param Program: Show all parameter types") { //autoInitParam(0); // Immediate-mode String parameter stringImm = addStringParam("stringImm", "Immediate string"); stringImm->setValue("This is an immediate String Parameter"); // Immediate-mode Boolean parameter, pre-set to FALSE boolImm = addBooleanParam("boolImm", "Immediate coBooleanParam"); boolImm->setValue(0); iScalImm = addInt32Param("iScalImm", "Immediate coIntScalarParam"); iScalImm->setValue(123); fScalImm = addFloatParam("fScalImm", "Immediate coFloatParam"); fScalImm->setValue(-12.56f); // integer sliders: immediate and non-immediate iSlidImm = addIntSliderParam("iSlidImm", "Immediate coIntSliderParam"); iSlidImm->setValue(1, 27, 16); // float sliders: immediate and non-immediate fSlidImm = addFloatSliderParam("fSlidImm", "Immediate coFloatSliderParam"); fSlidImm->setValue(-10.0, 30.0, 0.0); // float vector: use default size of 3 and set with 3D setValue function fVectImm = addFloatVectorParam("fVectImm", "Immediate coFloatVectorParam"); fVectImm->setValue(1.34f, 1.889f, -99.87f); // it makes no sense to put a file selector in the switch, since // it is not displayed in the control panel browseImm = addFileBrowserParam("myFile", "a file browser"); browseImm->setValue("/var/tmp/whatever.txt", "*.txt"); browseImm->show(); browse = addFileBrowserParam("my2File", "a file browser"); browse->setValue("/var/tmp/whatever2.txt", "*.txt"); browse->show(); // Now this is a choice : we have the choice between 6 values const char *choiceVal[] = { "left lower inlet", "left upper inlet", "left center inlet", "right center inlet", "right lower Inlet", "right upper Inlet" }; choImm = addChoiceParam("choImm", "Nun auch noch Choices"); choImm->setValue(6, choiceVal, 1); // add an input port for 'coDoUnstructuredGrid' objects inPortReq = addInputPort("inputReq", "StructuredGrid", "Required input port"); // add another input port for 'coDoUnstructuredGrid' objects inPortNoReq = addInputPort("inputNoReq", "UnstructuredGrid", "Not required input port"); // tell that this port does not have to be connected inPortNoReq->setRequired(0); // add an output port for this type outPort = addOutputPort("outPort", "coDoUnstructuredGrid", "Output Port"); // and that's all ... no init() or anything else ... that's done in the lib }