本文整理汇总了C++中POVMS_Object::TryGetFloat方法的典型用法代码示例。如果您正苦于以下问题:C++ POVMS_Object::TryGetFloat方法的具体用法?C++ POVMS_Object::TryGetFloat怎么用?C++ POVMS_Object::TryGetFloat使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类POVMS_Object
的用法示例。
在下文中一共展示了POVMS_Object::TryGetFloat方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SetOptions
//.........这里部分代码省略.........
// driven and doesn't have an explicit function for adding library paths per se.
//
// we use the Path equivalence operator rather than a string compare since
// using Path should handle platform-specific issues like case-sensitivity (or,
// rather, lack thereof). note that at the time of writing, the Path class did
// not yet implement case-insensitive comparisions.
//
// NB while it would of course be more efficient to sort the list so searches are
// faster, we'd have to make a copy of it to do that, as we can't change the order
// of existing entries (that would change the include path search order). it's not
// common to have a lot of include paths, so we just use linear searches.
for (int i = 1; i <= pathlist.GetListSize(); i++)
{
POVMS_Attribute lp;
pathlist.GetNth(i, lp);
Path path(lp.GetUCS2String());
if (find(libpaths.begin(), libpaths.end(), path) == libpaths.end())
libpaths.push_back(path);
}
}
if (opts.m_LibraryPaths.empty() == false)
{
for (vector<UCS2String>::const_iterator i = opts.m_LibraryPaths.begin(); i != opts.m_LibraryPaths.end(); i++)
{
Path path(*i);
if (find(libpaths.begin(), libpaths.end(), path) == libpaths.end())
libpaths.push_back(path);
}
}
if (libpaths.empty() == false)
{
POVMS_List pathlist;
for (list<Path>::iterator i = libpaths.begin(); i != libpaths.end(); i++)
{
POVMS_Attribute attr((*i)().c_str());
pathlist.Append(attr);
}
ropts.Set (kPOVAttrib_LibraryPath, pathlist) ;
}
if (ropts.TryGetBool(kPOVAttrib_RealTimeRaytracing, false) == true)
ropts.SetBool(kPOVAttrib_OutputToFile, false);
m_OutputToFileSet = ropts.TryGetBool(kPOVAttrib_OutputToFile, true);
// this is a bit messy: Grayscale_Output or OutputAlpha may be specified
// in an INI file or elsewhere prior to the output file type being set.
// so we can't check to see if it is supported with that file type
// until all options have been parsed.
if (m_OutputToFileSet)
{
int oft = ropts.TryGetInt(kPOVAttrib_OutputFileType, DEFAULT_OUTPUT_FORMAT);
bool has16BitGrayscale = false;
bool hasAlpha = false;
for (int i = 0; FileTypeTable[i].internalId != 0; i ++)
{
if (oft == FileTypeTable[i].internalId)
{
has16BitGrayscale = FileTypeTable[i].has16BitGrayscale;
hasAlpha = FileTypeTable[i].hasAlpha;
break;
}
}
if (ropts.TryGetBool(kPOVAttrib_GrayscaleOutput, false) && !has16BitGrayscale)
{
AppendStatusMessage ("Grayscale output not currently supported with selected output file type.");
AppendErrorMessage ("Grayscale output not currently supported with selected output file type.") ;
return (m_LastError = vfeUnsupportedOptionCombination);
}
if (ropts.TryGetBool(kPOVAttrib_OutputAlpha, false) && !hasAlpha)
{
AppendWarningMessage ("Warning: Alpha channel output currently not (or not officially) supported with selected output file type.") ;
}
}
if (ropts.TryGetInt(kPOVAttrib_RenderBlockSize, 32) < 4)
return (m_LastError = vfeRenderBlockSizeTooSmall);
if ((ropts.TryGetInt(kPOVAttrib_DisplayGammaType, DEFAULT_DISPLAY_GAMMA_TYPE) == kPOVList_GammaType_PowerLaw) &&
(ropts.TryGetFloat(kPOVAttrib_DisplayGamma, DEFAULT_DISPLAY_GAMMA) < 0.001f))
return (m_LastError = vfeDisplayGammaTooSmall);
if ((ropts.TryGetInt(kPOVAttrib_FileGammaType, DEFAULT_FILE_GAMMA_TYPE) == kPOVList_GammaType_PowerLaw) &&
(ropts.TryGetFloat(kPOVAttrib_FileGamma, DEFAULT_FILE_GAMMA) < 0.001f))
return (m_LastError = vfeFileGammaTooSmall);
n = sizeof (str) ;
if ((err = POVMSUtil_GetUCS2String (&obj, kPOVAttrib_CreateIni, str, &n)) == kNoErr && str [0] != 0)
if ((err = options.WriteFile (UCS2toASCIIString(str).c_str(), &obj)) != kNoErr)
return (m_LastError = vfeFailedToWriteINI);
opts.m_Options = ropts;
m_RenderOptions = opts ;
m_OptionsSet = true;
return (m_LastError = vfeNoError) ;
}
示例2: StartParser
void Scene::StartParser(POVMS_Object& parseOptions)
{
size_t seed = 0; // TODO
// A scene can only be parsed once
if (parserControlThread == nullptr)
parserControlThread = new std::thread(boost::bind(&Scene::ParserControlThread, this));
else
return;
if (parseOptions.Exist(kPOVAttrib_Version))
{
sceneData->languageVersion = clip(int(parseOptions.GetFloat(kPOVAttrib_Version) * 100.0f + .5f), 100, 10000);
sceneData->languageVersionSet = true;
}
sceneData->warningLevel = clip(parseOptions.TryGetInt(kPOVAttrib_WarningLevel, 9), 0, 9);
sceneData->inputFile = parseOptions.TryGetUCS2String(kPOVAttrib_InputFile, "object.pov");
sceneData->headerFile = parseOptions.TryGetUCS2String(kPOVAttrib_IncludeHeader, "");
DBL outputWidth = parseOptions.TryGetFloat(kPOVAttrib_Width, 160);
DBL outputHeight = parseOptions.TryGetFloat(kPOVAttrib_Height, 120);
sceneData->aspectRatio = outputWidth / outputHeight;
sceneData->defaultFileType = parseOptions.TryGetInt(kPOVAttrib_OutputFileType, DEFAULT_OUTPUT_FORMAT); // TODO - should get DEFAULT_OUTPUT_FORMAT from the front-end
sceneData->clocklessAnimation = parseOptions.TryGetBool(kPOVAttrib_ClocklessAnimation, false); // TODO - experimental code
sceneData->splitUnions = parseOptions.TryGetBool(kPOVAttrib_SplitUnions, false);
sceneData->removeBounds = parseOptions.TryGetBool(kPOVAttrib_RemoveBounds, true);
sceneData->boundingMethod = clip<int>(parseOptions.TryGetInt(kPOVAttrib_BoundingMethod, 1), 1, 2);
if(parseOptions.TryGetBool(kPOVAttrib_Bounding, true) == false)
sceneData->boundingMethod = 0;
sceneData->outputAlpha = parseOptions.TryGetBool(kPOVAttrib_OutputAlpha, false);
if (!sceneData->outputAlpha)
// if we're not outputting an alpha channel, precompose the scene background against a black "background behind the background"
// (NB: Here, background color is still at its default of <0,0,0,0,1> = full transparency; we're changing that to opaque black.)
sceneData->backgroundColour.Clear();
// NB a value of '0' for any of the BSP parameters tells the BSP code to use its internal default
sceneData->bspMaxDepth = parseOptions.TryGetInt(kPOVAttrib_BSP_MaxDepth, 0);
sceneData->bspObjectIsectCost = clip<float>(parseOptions.TryGetFloat(kPOVAttrib_BSP_ISectCost, 0.0f), 0.0f, HUGE_VAL);
sceneData->bspBaseAccessCost = clip<float>(parseOptions.TryGetFloat(kPOVAttrib_BSP_BaseAccessCost, 0.0f), 0.0f, HUGE_VAL);
sceneData->bspChildAccessCost = clip<float>(parseOptions.TryGetFloat(kPOVAttrib_BSP_ChildAccessCost, 0.0f), 0.0f, HUGE_VAL);
sceneData->bspMissChance = clip<float>(parseOptions.TryGetFloat(kPOVAttrib_BSP_MissChance, 0.0f), 0.0f, 1.0f - EPSILON);
sceneData->realTimeRaytracing = parseOptions.TryGetBool(kPOVAttrib_RealTimeRaytracing, false);
if(parseOptions.Exist(kPOVAttrib_Declare) == true)
{
POVMS_List ds;
parseOptions.Get(kPOVAttrib_Declare, ds);
for(int i = 1; i <= ds.GetListSize(); i++)
{
std::ostringstream sstr;
POVMS_Attribute a;
POVMS_Object d;
ds.GetNth(i, d);
d.Get(kPOVAttrib_Value, a);
switch (a.Type())
{
case kPOVMSType_CString:
sstr << "\"" + d.TryGetString(kPOVAttrib_Value, "") + "\"";
break;
case kPOVMSType_Float:
sstr << d.TryGetFloat(kPOVAttrib_Value, 0.0);
break;
default:
// shouldn't happen unless we make a coding error
throw POV_EXCEPTION(kParamErr, "Invalid type passed in declare list");
}
sceneData->declaredVariables.insert(make_pair(d.GetString(kPOVAttrib_Identifier), sstr.str()));
}
}
// do parsing
sceneThreadData.push_back(dynamic_cast<TraceThreadData *>(parserTasks.AppendTask(new ParserTask(
sceneData, pov_parser::ParserOptions(bool(parseOptions.Exist(kPOVAttrib_Clock)), parseOptions.TryGetFloat(kPOVAttrib_Clock, 0.0), seed)
))));
// wait for parsing
parserTasks.AppendSync();
// do bounding - we always call this even if the bounding is turned off
// because it also generates object statistics
sceneThreadData.push_back(dynamic_cast<TraceThreadData *>(parserTasks.AppendTask(new BoundingTask(
sceneData,
clip<int>(parseOptions.TryGetInt(kPOVAttrib_BoundingThreshold, DEFAULT_AUTO_BOUNDINGTHRESHOLD),1,SIGNED16_MAX),
seed
))));
// wait for bounding
parserTasks.AppendSync();
//.........这里部分代码省略.........