예제 #1
0
 const std::vector<const runtime::Parameter*> ConvertPixelType::setupInitParameters()
 {
     std::vector<const runtime::Parameter*> parameters;
     
     EnumParameter* dataFlow = new runtime::EnumParameter(DATA_FLOW);
     dataFlow->setAccessMode(runtime::Parameter::NONE_WRITE);
     dataFlow->setTitle("Data flow");
     dataFlow->add(runtime::EnumDescription(runtime::Enum(MANUAL), "Manual"));
     dataFlow->add(runtime::EnumDescription(runtime::Enum(ALLOCATE), "Allocate"));
     parameters.push_back(dataFlow);
     
     return parameters;
 }
예제 #2
0
 const std::vector<const Parameter*> ReadDirectory::setupParameters()
 {
     std::vector<const runtime::Parameter*> parameters;
     
     EnumParameter* directory = new EnumParameter(DIRECTORY);
     directory->setTitle(L_("Directory"));
     directory->setAccessMode(runtime::Parameter::INITIALIZED_WRITE);
     parameters.push_back(directory);
     
     directory->add(EnumDescription(Enum(NO_DIRECTORY), L_("None")));
     boost::filesystem::path path (BASE_DIRECTORY);
     m_directoryMap.clear();
     std::vector<std::string> dirNames;
     if (boost::filesystem::exists(path))
     {
         if (boost::filesystem::is_directory(path))
         {
             for(boost::filesystem::directory_iterator iter(path);
                 iter != boost::filesystem::directory_iterator();
                 ++iter)
             {
                 if (! boost::filesystem::is_directory(iter->path()))
                     continue;
                 
                 dirNames.push_back(iter->path().filename().string());
             }
         }
     }
     
     std::sort(dirNames.begin(), dirNames.end());
     std::size_t i = NO_DIRECTORY + 1;
     for (std::vector<std::string>::const_iterator iter = dirNames.begin();
          iter != dirNames.end(); ++iter)
     {
         directory->add(EnumDescription(Enum(i), *iter));
         m_directoryMap[i] = *iter;
         i++;
     }
                                 
     return parameters;
 }
예제 #3
0
 const std::vector<const Parameter*> ConvertPixelType::setupParameters()
 {
     std::vector<const runtime::Parameter*> parameters;
     
     EnumParameter* pixelType = new EnumParameter(PIXEL_TYPE);
     pixelType->setTitle("Pixel type");
     pixelType->setAccessMode(runtime::Parameter::ACTIVATED_WRITE);
     pixelType->add(EnumDescription(Enum(runtime::Image::MONO_8), "Mono image 8-bit"));
     pixelType->add(EnumDescription(Enum(runtime::Image::RGB_24), "RGB image 24-bit"));
     pixelType->add(EnumDescription(Enum(runtime::Image::BGR_24), "BGR image 24-bit"));
     pixelType->add(EnumDescription(Enum(runtime::Image::BAYERBG_8), "Bayer BG pattern 8-bit"));
     pixelType->add(EnumDescription(Enum(runtime::Image::BAYERGB_8), "Bayer GB pattern 8-bit"));
     parameters.push_back(pixelType);
                                 
     return parameters;
 }
예제 #4
0
파일: env.cpp 프로젝트: jimfinnis/stumpy2
 virtual void run(ComponentInstance *ci,int out){
     EnvGenData *d = (EnvGenData *)ci->privateData;
     Component *c = ci->component;
     Envelope& e = pEnv->get(c);
     
     int trig;
     // always trigger if not connected.
     if(!c->isInputConnected(0))trig=1;
     else trig = tInt->getInput(ci,0);
     
     int finishout=0;
     
     // do we retrigger?
     bool retrig=false;
     switch(pMode->get(c)){
     case MODE_RETRIG: // we retrigger if input high
         if(trig)retrig=true;break;
     case MODE_ONESHOT: // we retrigger if input high AND we've never done before
         if(trig && d->start<0 && !d->oneshotdone)retrig=true;break;
     case MODE_NORETRIG: // we retrigger if input high AND we're done
         if(trig && d->start<0)retrig=true;break;
     case MODE_FREERUN: // we retrigger when we're done
         if(d->start<0)retrig=true;break;
     }
     
     
     c->dprintf("Trig=%s retrig=%s start=%f nextstage=%d OSD=%s",
                trig?"Y":"N",
                retrig?"Y":"N",
                d->start,d->nextstage,
                d->oneshotdone?"Y":"N");
     
     if(retrig){
         d->start = Time::now();
         d->nextstage=0;
         d->op=0;
     }
     
     float mul = powf(2.0,(float)pPower2->get(c));
     
     if(d->start>=0){
         // running
         float t = Time::now() - d->start;
         
         t *= mul;
         
         while(t>=e.times[d->nextstage]){
             // we have hit the next stage
             if(++d->nextstage == ENVSIZE){
                 // we have run out of envelope!
                 d->start = -1;
                 d->oneshotdone=true;
                 finishout=1;
                 break;
             }
         }
         
         if(d->start>=0){ // are we *still* running?
             // calculate the level - there is an implicit level 0 at 
             // time 0.
             float l1 = d->nextstage ? e.levels[d->nextstage-1] : 0;
             float t1 = d->nextstage ? e.times[d->nextstage-1] : 0;
             
             float l2 = e.levels[d->nextstage];
             float t2 = e.times[d->nextstage];
             c->dprintf("time %f: waiting for %d, t1=%f,l1=%f  t1=%f,l2=%f\n",
                    t-t1,d->nextstage,t1,l1,t2,l2);
             
             // interpolate and deal with zero-length steps
             if(t2-t1 > 0.0001f){
                 float a = (t-t1)/(t2-t1);
                 d->op = a*l2 + (1.0f-a)*l1;
             } else {
                 d->op = l2; // use the second entry
             }
         }
     }
     c->dprintf("Out=%f",d->op);
     tFloat->setOutput(ci,0,d->op);
     tInt->setOutput(ci,1,finishout);
 }
SimpleParametersPanel* SimplePanelBuilder::buildParametersPanel(Parameters& parameters, ParametersInterface* pParent, ParameterPanelType panelType)
{
	if (parameters.m_aParameters.empty())
		return NULL;

	SimpleParametersPanel* pSPP = new SimpleParametersPanel(pParent);

	std::vector<Parameter*>::iterator it = parameters.m_aParameters.begin();
	for (; it != parameters.m_aParameters.end(); ++it)
	{
		Parameter* pParam = *it;

		ParameterType parameterType = pParam->getType();
		std::string name = pParam->getName();
		std::string label = pParam->getLabel();
		unsigned int flags = pParam->getFlags();

		if (panelType == eMaterialParameter || panelType == eTextureParameter)
			flags |= eParameterFloatSliderEdit;

		// this isn't great, but due to wanting a completely clean separation between ParameterPanels/Controls and Parameters, the easiest
		// way to do things...

		Control* pControl = NULL;

		switch (parameterType)
		{
			case eParameterBool:
			{
				BasicParameter<bool>* pTypedParam = static_cast<BasicParameter<bool>*>(pParam);
				pControl = new BoolControl(name, pTypedParam->getPairedValue(), label);
				break;
			}
			case eParameterUInt:
			{
				RangeParameter<unsigned int, unsigned int>* pTypedParam = static_cast<RangeParameter<unsigned int, unsigned int>*>(pParam);
				bool scrub = pTypedParam->getFlags() & eParameterScrubButton;
				pControl = new UIntControl(name, pTypedParam->getPairedValue(), pTypedParam->getMin(), pTypedParam->getMax(), label, scrub);
				break;
			}
			case eParameterFloat:
			{
				RangeParameter<float, float>* pTypedParam = static_cast<RangeParameter<float, float>*>(pParam);
				pControl = new FloatControl(name, pTypedParam->getPairedValue(), pTypedParam->getMin(), pTypedParam->getMax(), label,
											pTypedParam->getFlags());
				break;
			}
			case eParameterFloatSlider:
			{
				RangeParameter<float, float>* pTypedParam = static_cast<RangeParameter<float, float>*>(pParam);

				bool editControl = (flags & eParameterFloatSliderEdit);
				bool logScale = (flags & eParameterFloatSliderLogScale);
				bool highPrecision = (flags & eParameterFloatSliderHighPrecision);

				pControl = new FloatSliderControl(name, pTypedParam->getPairedValue(), pTypedParam->getMin(), pTypedParam->getMax(),
												  label, editControl, logScale, highPrecision);
				break;
			}
			case eParameterFloatPair:
			{
				RangeParameterPair<float, float>* pTypedParam = static_cast<RangeParameterPair<float, float>*>(pParam);
				pControl = new FloatPairControl(name, pTypedParam->getPairedValue1(), pTypedParam->getPairedValue2(), pTypedParam->getMin(),
												 pTypedParam->getMax(), label, pTypedParam->getFlags());
				break;
			}
			case eParameterEnum:
			{
				EnumParameter* pTypedParam = static_cast<EnumParameter*>(pParam);
				pControl = new EnumControl(name, pTypedParam->getPairedValue(), pTypedParam->getOptions(), label);
				break;
			}
			case eParameterColour:
			{
				BasicParameter<Colour3f>* pTypedParam = static_cast<BasicParameter<Colour3f>*>(pParam);
				pControl = new ColourControl(name, pTypedParam->getPairedValue(), label);
				break;
			}
			case eParameterVector:
			{
				RangeParameter<Vector, float>* pTypedParam = static_cast<RangeParameter<Vector, float>*>(pParam);
				pControl = new VectorControl(name, pTypedParam->getPairedValue(), pTypedParam->getMin(), pTypedParam->getMax(), label);
				break;
			}
			case eParameterFile:
			{
				BasicParameter<std::string>* pTypedParam = static_cast<BasicParameter<std::string>*>(pParam);
				// flags for type of category
				FileControl::FileCategory category = FileControl::eNormal;
				if (flags & eParameterFileParamTexture)
					category = FileControl::eTexture;
				else if (flags & eParameterFileParamEnvMap)
					category = FileControl::eEnvironmentMap;
				else if (flags & eParameterFileParamVolumeBuffer)
					category = FileControl::eVolumeBuffer;

				pControl = new FileControl(name, pTypedParam->getPairedValue(), label, category);
				break;
			}
			case eParameterTexture1f:
			case eParameterTexture3f:
			{
				BasicParameter<TextureParameters>* pTypedParam = static_cast<BasicParameter<TextureParameters>*>(pParam);

				pControl = new TextureControl(name, pTypedParam->getPairedValue(), label, flags);
				break;
			}
			default:
				break;
		}

		pSPP->addControl(pControl);

		delete pParam;
	}

	return pSPP;
}
예제 #6
0
 const std::vector<const Parameter*> ParameterOperator::setupParameters()
 {
     std::vector<const Parameter*> parameters;
     
     ParameterGroup* group1 = new ParameterGroup(PARAM_GROUP_1);
     group1->setTitle("Group 1");
     parameters.push_back(group1);
     
     ParameterGroup* group2 = new ParameterGroup(PARAM_GROUP_2, group1);
     group2->setTitle("Group 2");
     parameters.push_back(group2);
     
     NumericParameter<Int32>* intParam = new NumericParameter<Int32>(INT_PARAM, group1);
     intParam->setTitle("Integer parameter");
     intParam->setMax(Int32(1000));
     intParam->setMin(Int32(-1000));
     intParam->setAccessMode(Parameter::INITIALIZED_WRITE);
     parameters.push_back(intParam);
     
     EnumParameter* enumParam = new EnumParameter(ENUM_PARAM, group2);
     enumParam->setTitle("Enum parameter");
     enumParam->setAccessMode(Parameter::ACTIVATED_WRITE);
     enumParam->add(EnumDescription(Enum(0), "Choice 0"));
     enumParam->add(EnumDescription(Enum(1), "Choice 1"));
     enumParam->add(EnumDescription(Enum(2), "Choice 2"));
     parameters.push_back(enumParam);
     
     Parameter* boolParam = new Parameter(BOOL_PARAM, Variant::BOOL);
     boolParam->setTitle("Boolean parameter");
     boolParam->setAccessMode(Parameter::INITIALIZED_WRITE);
     parameters.push_back(boolParam);
     
     Parameter* matrixParam = new MatrixParameter(MATRIX_PARAM, Variant::FLOAT_32_MATRIX);
     matrixParam->setTitle("Matrix parameter");
     matrixParam->setAccessMode(Parameter::INITIALIZED_WRITE);
     parameters.push_back(matrixParam);
     
     MatrixParameter* intMatrixParam = new MatrixParameter(INT_MATRIX_PARAM, Variant::UINT_32_MATRIX);
     intMatrixParam->setTitle("Integer matrix parameter");
     intMatrixParam->setAccessMode(Parameter::INITIALIZED_WRITE);
     intMatrixParam->setRows(1);
     intMatrixParam->setCols(2);
     parameters.push_back(intMatrixParam);
     
     Parameter* triggerValueParam = new Parameter(TRIGGER_VALUE_PARAM, Variant::BOOL);
     triggerValueParam->setTitle("Trigger value");
     triggerValueParam->setAccessMode(Parameter::INITIALIZED_WRITE);
     parameters.push_back(triggerValueParam);
     
     Parameter* triggerParam = new Parameter(TRIGGER_PARAM, Variant::TRIGGER);
     triggerParam->setTitle("Trigger");
     triggerParam->setAccessMode(Parameter::INITIALIZED_WRITE);
     triggerParam->setUpdateBehavior(Parameter::PUSH);
     parameters.push_back(triggerParam);
     
     Parameter* pushParam = new Parameter(PUSH_PARAM, Variant::FLOAT_32);
     pushParam->setTitle("Push");
     pushParam->setAccessMode(Parameter::INITIALIZED_WRITE);
     pushParam->setUpdateBehavior(Parameter::PUSH);
     parameters.push_back(pushParam);
     
     Parameter* pullParam = new Parameter(PULL_PARAM, Variant::FLOAT_32);
     pullParam->setTitle("Pull");
     pullParam->setAccessMode(Parameter::INITIALIZED_READ);
     pullParam->setUpdateBehavior(Parameter::PULL);
     parameters.push_back(pullParam);
     
     return parameters;
 }