本文整理汇总了C++中ofx::ImageEffectDescriptor::defineGroupParam方法的典型用法代码示例。如果您正苦于以下问题:C++ ImageEffectDescriptor::defineGroupParam方法的具体用法?C++ ImageEffectDescriptor::defineGroupParam怎么用?C++ ImageEffectDescriptor::defineGroupParam使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ofx::ImageEffectDescriptor
的用法示例。
在下文中一共展示了ImageEffectDescriptor::defineGroupParam方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: describeInContext
void BasicExamplePluginFactory::describeInContext(OFX::ImageEffectDescriptor& desc, OFX::ContextEnum context)
{
// Source clip only in the filter context
// create the mandated source clip
ClipDescriptor *srcClip = desc.defineClip(kOfxImageEffectSimpleSourceClipName);
srcClip->addSupportedComponent(ePixelComponentRGBA);
srcClip->addSupportedComponent(ePixelComponentAlpha);
srcClip->setTemporalClipAccess(false);
srcClip->setSupportsTiles(true);
srcClip->setIsMask(false);
// if general or paint context, define the mask clip
if(context == eContextGeneral || context == eContextPaint) {
// if paint context, it is a mandated input called 'brush'
ClipDescriptor *maskClip = context == eContextGeneral ? desc.defineClip("Mask") : desc.defineClip("Brush");
maskClip->addSupportedComponent(ePixelComponentAlpha);
maskClip->setTemporalClipAccess(false);
if(context == eContextGeneral)
maskClip->setOptional(true);
maskClip->setSupportsTiles(true);
maskClip->setIsMask(true); // we are a mask input
}
// create the mandated output clip
ClipDescriptor *dstClip = desc.defineClip(kOfxImageEffectOutputClipName);
dstClip->addSupportedComponent(ePixelComponentRGBA);
dstClip->addSupportedComponent(ePixelComponentAlpha);
dstClip->setSupportsTiles(true);
// make some pages and to things in
PageParamDescriptor *page = desc.definePageParam("Controls");
// group param to group the scales
GroupParamDescriptor *componentScalesGroup = desc.defineGroupParam("componentScales");
componentScalesGroup->setHint("Scales on the individual component");
componentScalesGroup->setLabels("Components", "Components", "Components");
// make overall scale params
DoubleParamDescriptor *param = defineScaleParam(desc, "scale", "scale", "Scales all component in the image", 0);
page->addChild(*param);
// add a boolean to enable the component scale
BooleanParamDescriptor *boolP = desc.defineBooleanParam("scaleComponents");
boolP->setDefault(true);
boolP->setHint("Enables scales on individual components");
boolP->setLabels("Scale Components", "Scale Components", "Scale Components");
boolP->setParent(*componentScalesGroup);
page->addChild(*boolP);
// make the four component scale params
param = defineScaleParam(desc, "scaleR", "red", "Scales the red component of the image", componentScalesGroup);
page->addChild(*param);
param = defineScaleParam(desc, "scaleG", "green", "Scales the green component of the image", componentScalesGroup);
page->addChild(*param);
param = defineScaleParam(desc, "scaleB", "blue", "Scales the blue component of the image", componentScalesGroup);
page->addChild(*param);
param = defineScaleParam(desc, "scaleA", "alpha", "Scales the alpha component of the image", componentScalesGroup);
page->addChild(*param);
}
示例2: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void AVReaderPluginFactory::describeInContext(OFX::ImageEffectDescriptor& desc, OFX::EContext context)
{
// Create the mandated output clip
OFX::ClipDescriptor* dstClip = desc.defineClip(kOfxImageEffectOutputClipName);
dstClip->addSupportedComponent(OFX::ePixelComponentRGBA);
dstClip->addSupportedComponent(OFX::ePixelComponentRGB);
dstClip->addSupportedComponent(OFX::ePixelComponentAlpha);
dstClip->setSupportsTiles(kSupportTiles);
describeReaderParamsInContext(desc, context);
// Groups
OFX::GroupParamDescriptor* formatGroup = desc.defineGroupParam(kParamFormatGroup);
OFX::GroupParamDescriptor* videoGroup = desc.defineGroupParam(kParamVideoGroup);
OFX::GroupParamDescriptor* metaGroup = desc.defineGroupParam(kParamMetaGroup);
formatGroup->setLabel("Format");
videoGroup->setLabel("Video");
metaGroup->setLabel("Metadata");
formatGroup->setAsTab();
videoGroup->setAsTab();
metaGroup->setAsTab();
/// FORMAT PARAMETERS
avtranscoder::FormatContext formatContext(AV_OPT_FLAG_DECODING_PARAM);
avtranscoder::OptionArray formatOptions = formatContext.getOptions();
common::addOptionsToGroup(desc, formatGroup, formatOptions, common::kPrefixFormat);
OFX::GroupParamDescriptor* formatDetailedGroup = desc.defineGroupParam(kParamFormatDetailedGroup);
formatDetailedGroup->setLabel("Detailed");
formatDetailedGroup->setAsTab();
formatDetailedGroup->setParent(formatGroup);
avtranscoder::OptionArrayMap formatDetailedGroupOptions = avtranscoder::getAvailableOptionsPerOutputFormat();
common::addOptionsToGroup(desc, formatDetailedGroup, formatDetailedGroupOptions, common::kPrefixFormat);
/// VIDEO PARAMETERS
AVCodecContext* videoContext = avcodec_alloc_context3(NULL);
avtranscoder::OptionArray videoOptions;
avtranscoder::loadOptions(videoOptions, videoContext, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM);
common::addOptionsToGroup(desc, videoGroup, videoOptions, common::kPrefixVideo);
av_free(videoContext);
OFX::BooleanParamDescriptor* useCustomSAR = desc.defineBooleanParam(kParamUseCustomSAR);
useCustomSAR->setLabel("Override SAR");
useCustomSAR->setDefault(false);
useCustomSAR->setHint("Override the file SAR (Storage Aspect Ratio) with a custom SAR value.");
useCustomSAR->setParent(videoGroup);
OFX::DoubleParamDescriptor* customSAR = desc.defineDoubleParam(kParamCustomSAR);
customSAR->setLabel("Custom SAR");
customSAR->setDefault(1.0);
customSAR->setDisplayRange(0., 3.);
customSAR->setRange(0., 10.);
customSAR->setHint("Choose a custom value to override the file SAR (Storage Aspect Ratio). Maximum value: 10.");
customSAR->setParent(videoGroup);
OFX::IntParamDescriptor* streamIndex = desc.defineIntParam(kParamVideoStreamIndex);
streamIndex->setLabel(kParamVideoStreamIndexLabel);
streamIndex->setDefault(0);
streamIndex->setDisplayRange(0., 16.);
streamIndex->setRange(0., 100.);
streamIndex->setHint("Choose a custom value to decode the video stream you want. Maximum value: 100.");
streamIndex->setParent(videoGroup);
OFX::GroupParamDescriptor* videoDetailedGroup = desc.defineGroupParam(kParamVideoDetailedGroup);
videoDetailedGroup->setLabel("Detailed");
videoDetailedGroup->setAsTab();
videoDetailedGroup->setParent(videoGroup);
avtranscoder::OptionArrayMap videoDetailedGroupOptions = avtranscoder::getAvailableOptionsPerVideoCodec();
common::addOptionsToGroup(desc, videoDetailedGroup, videoDetailedGroupOptions, common::kPrefixVideo);
/// METADATA PARAMETERS
AVCodecContext* metaDataContext = avcodec_alloc_context3(NULL);
avtranscoder::OptionArray metaDataOptions;
avtranscoder::loadOptions(metaDataOptions, metaDataContext, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_METADATA);
common::addOptionsToGroup(desc, metaGroup, metaDataOptions, common::kPrefixMetaData);
av_free(metaDataContext);
OFX::StringParamDescriptor* metaDataWrapper = desc.defineStringParam(kParamMetaDataWrapper);
metaDataWrapper->setLabel(kParamMetaDataWrapperLabel);
metaDataWrapper->setEnabled(false);
metaDataWrapper->setStringType(OFX::eStringTypeMultiLine);
metaDataWrapper->setParent(metaGroup);
OFX::StringParamDescriptor* metaDataVideo = desc.defineStringParam(kParamMetaDataVideo);
metaDataVideo->setLabel(kParamMetaDataVideoLabel);
metaDataVideo->setEnabled(false);
metaDataVideo->setStringType(OFX::eStringTypeMultiLine);
metaDataVideo->setParent(metaGroup);
OFX::StringParamDescriptor* metaDataAudio = desc.defineStringParam(kParamMetaDataAudio);
metaDataAudio->setLabel(kParamMetaDataAudioLabel);
//.........这里部分代码省略.........
示例3: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void CropPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc,
OFX::EContext context )
{
OFX::ClipDescriptor* srcClip = desc.defineClip( kOfxImageEffectSimpleSourceClipName );
srcClip->addSupportedComponent( OFX::ePixelComponentRGBA );
srcClip->addSupportedComponent( OFX::ePixelComponentRGB );
srcClip->addSupportedComponent( OFX::ePixelComponentAlpha );
srcClip->setSupportsTiles( kSupportTiles );
// Create the mandated output clip
OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName );
dstClip->addSupportedComponent( OFX::ePixelComponentRGBA );
dstClip->addSupportedComponent( OFX::ePixelComponentRGB );
dstClip->addSupportedComponent( OFX::ePixelComponentAlpha );
dstClip->setSupportsTiles( kSupportTiles );
OFX::BooleanParamDescriptor* bop = desc.defineBooleanParam( kParamFillMode );
bop->setLabels( kParamFillModeLabel, kParamFillModeLabel, kParamFillModeLabel );
bop->setScriptName( "BandsOperations" );
bop->setHint( "Fill bands with black color or repeat last pixel and reset Rod." );
bop->setDefault( true );
OFX::ChoiceParamDescriptor* format = desc.defineChoiceParam( kParamPresets );
format->setLabels( kParamPresetsLabel, kParamPresetsLabel, kParamPresetsLabel );
format->setScriptName( "formats" );
format->appendOption( "1.33 (4/3) bands" );
format->appendOption( "1.77 (16/9e) bands" );
format->appendOption( "1.85 bands" );
format->appendOption( "2.35 (Cinemascope) bands" );
format->appendOption( "2.40 bands" );
format->setDefault( 0 );
OFX::BooleanParamDescriptor* shape = desc.defineBooleanParam( kParamDisplayRect );
shape->setLabels( kParamDisplayRectLabel, kParamDisplayRectLabel, kParamDisplayRectLabel );
shape->setDefault( false );
OFX::BooleanParamDescriptor* anamorphic = desc.defineBooleanParam( kParamAnamorphic );
anamorphic->setLabels( kParamAnamorphicLabel, kParamAnamorphicLabel, "Anamorphic (stretch)" );
anamorphic->setDefault( false );
anamorphic->setIsSecret( true );
OFX::GroupParamDescriptor* bandsGroup = desc.defineGroupParam( "Bands sizes" );
OFX::IntParamDescriptor* upBand = desc.defineIntParam( kParamUp );
upBand->setLabels( kParamUpLabel, kParamUpLabel, kParamUpLabel );
upBand->setParent( *bandsGroup );
OFX::IntParamDescriptor* downBand = desc.defineIntParam( kParamDown );
downBand->setLabels( kParamDownLabel, kParamDownLabel, kParamDownLabel );
downBand->setParent( *bandsGroup );
OFX::IntParamDescriptor* leftBand = desc.defineIntParam( kParamLeft );
leftBand->setLabels( kParamLeftLabel, kParamLeftLabel, kParamLeftLabel );
leftBand->setParent( *bandsGroup );
OFX::IntParamDescriptor* rightBand = desc.defineIntParam( kParamRight );
rightBand->setLabels( kParamRightLabel, kParamRightLabel, kParamRightLabel );
rightBand->setParent( *bandsGroup );
OFX::PushButtonParamDescriptor* helpButton = desc.definePushButtonParam( kCropHelpButton );
helpButton->setScriptName( "&Help" );
}
示例4: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void CropPluginFactory::describeInContext(OFX::ImageEffectDescriptor& desc, OFX::EContext context)
{
OFX::ClipDescriptor* srcClip = desc.defineClip(kOfxImageEffectSimpleSourceClipName);
srcClip->addSupportedComponent(OFX::ePixelComponentRGBA);
srcClip->addSupportedComponent(OFX::ePixelComponentRGB);
srcClip->addSupportedComponent(OFX::ePixelComponentAlpha);
srcClip->setSupportsTiles(kSupportTiles);
OFX::ClipDescriptor* dstClip = desc.defineClip(kOfxImageEffectOutputClipName);
dstClip->addSupportedComponent(OFX::ePixelComponentRGBA);
dstClip->addSupportedComponent(OFX::ePixelComponentRGB);
dstClip->addSupportedComponent(OFX::ePixelComponentAlpha);
dstClip->setSupportsTiles(kSupportTiles);
OFX::ChoiceParamDescriptor* mode = desc.defineChoiceParam(kParamMode);
mode->setLabel("Mode");
mode->appendOption(kParamModeCrop);
mode->appendOption(kParamModeFillColor);
// mode->appendOption( kParamModeResize ); // good idea or not?
mode->setDefault(eParamModeCrop);
OFX::RGBAParamDescriptor* fillColor = desc.defineRGBAParam(kParamFillColor);
fillColor->setLabel("Color");
fillColor->setHint("Color to fill bands");
fillColor->setDefault(0.0, 0.0, 0.0, 1.0);
OFX::ChoiceParamDescriptor* axis = desc.defineChoiceParam(kParamAxis);
axis->setLabel("Axis");
axis->appendOption(kParamAxisXY);
axis->appendOption(kParamAxisX);
axis->appendOption(kParamAxisY);
axis->setDefault(eParamAxisY);
axis->setEvaluateOnChange(false);
OFX::ChoiceParamDescriptor* symmetric = desc.defineChoiceParam(kParamSymmetric);
symmetric->setLabel("Symmetric");
symmetric->appendOption(kParamSymmetricNone);
symmetric->appendOption(kParamSymmetricXY);
symmetric->appendOption(kParamSymmetricX);
symmetric->appendOption(kParamSymmetricY);
symmetric->setHint("Is the crop region symmetric around image center?");
symmetric->setDefault(true);
symmetric->setEvaluateOnChange(false);
OFX::BooleanParamDescriptor* fixedRatio = desc.defineBooleanParam(kParamFixedRatio);
fixedRatio->setLabel("Fixed ratio");
fixedRatio->setHint("Constrain the cropped region to this ratio.");
fixedRatio->setDefault(true);
fixedRatio->setEvaluateOnChange(false);
OFX::ChoiceParamDescriptor* preset = desc.defineChoiceParam(kParamPreset);
preset->setLabel("Preset");
preset->appendOption(kParamPreset_custom);
preset->appendOption(kParamPreset_1_33);
preset->appendOption(kParamPreset_1_77);
preset->appendOption(kParamPreset_1_85);
preset->appendOption(kParamPreset_2_35);
preset->appendOption(kParamPreset_2_40);
preset->setDefault(0);
preset->setEvaluateOnChange(false);
OFX::DoubleParamDescriptor* ratio = desc.defineDoubleParam(kParamRatio);
ratio->setLabel("Ratio");
ratio->setRange(0, std::numeric_limits<double>::max());
ratio->setDisplayRange(0, 3);
ratio->setDefault(2.0);
ratio->setHint("Ratio X/Y of the cropped region.");
OFX::BooleanParamDescriptor* overlay = desc.defineBooleanParam(kParamOverlay);
overlay->setLabel("Overlay");
overlay->setHint("Display overlay rectangle");
overlay->setDefault(false);
overlay->setEvaluateOnChange(false);
OFX::GroupParamDescriptor* cropRegion = desc.defineGroupParam(kParamGroupCropRegion);
OFX::IntParamDescriptor* xMin = desc.defineIntParam(kParamXMin);
xMin->setLabel("X min");
// xMin->setRange( 0, std::numeric_limits<int>::max() );
xMin->setDisplayRange(0, 3000);
xMin->setDefault(0);
xMin->setParent(*cropRegion);
OFX::IntParamDescriptor* yMin = desc.defineIntParam(kParamYMin);
yMin->setLabel("Y min");
// yMin->setRange( 0, std::numeric_limits<int>::max() );
yMin->setDisplayRange(0, 3000);
yMin->setDefault(0);
yMin->setParent(*cropRegion);
OFX::IntParamDescriptor* xMax = desc.defineIntParam(kParamXMax);
xMax->setLabel("X max");
// xMax->setRange( 0, std::numeric_limits<int>::max() );
xMax->setDisplayRange(0, 3000);
//.........这里部分代码省略.........
示例5:
void
GenericOCIO::describeInContextContext(OFX::ImageEffectDescriptor &desc, OFX::ContextEnum /*context*/, OFX::PageParamDescriptor *page)
{
#ifdef OFX_IO_USING_OCIO
OFX::GroupParamDescriptor* group = desc.defineGroupParam(kOCIOParamContext);
group->setHint(kOCIOParamContextHint);
group->setOpen(false);
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextKey1);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
param->setLayoutHint(OFX::eLayoutHintNoNewLine);
page->addChild(*param);
}
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextValue1);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
page->addChild(*param);
}
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextKey2);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
param->setLayoutHint(OFX::eLayoutHintNoNewLine);
page->addChild(*param);
}
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextValue2);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
page->addChild(*param);
}
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextKey3);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
param->setLayoutHint(OFX::eLayoutHintNoNewLine);
page->addChild(*param);
}
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextValue3);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
page->addChild(*param);
}
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextKey4);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
param->setLayoutHint(OFX::eLayoutHintNoNewLine);
page->addChild(*param);
}
{
OFX::StringParamDescriptor* param = desc.defineStringParam(kOCIOParamContextValue4);
param->setHint(kOCIOParamContextHint);
param->setAnimates(true);
param->setParent(*group);
page->addChild(*param);
}
page->addChild(*group);
#endif
}
示例6: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void NormalizePluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc,
OFX::EContext context )
{
OFX::ClipDescriptor* srcClip = desc.defineClip( kOfxImageEffectSimpleSourceClipName );
srcClip->addSupportedComponent( OFX::ePixelComponentRGBA );
srcClip->addSupportedComponent( OFX::ePixelComponentRGB );
srcClip->addSupportedComponent( OFX::ePixelComponentAlpha );
srcClip->setSupportsTiles( kSupportTiles );
// Create the mandated output clip
OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName );
dstClip->addSupportedComponent( OFX::ePixelComponentRGBA );
dstClip->addSupportedComponent( OFX::ePixelComponentRGB );
dstClip->addSupportedComponent( OFX::ePixelComponentAlpha );
dstClip->setSupportsTiles( kSupportTiles );
OFX::ChoiceParamDescriptor* mode = desc.defineChoiceParam( kParamMode );
mode->setLabel( "Input" );
mode->appendOption( kParamModeAnalyse );
mode->appendOption( kParamModeCustom );
OFX::ChoiceParamDescriptor* analyse = desc.defineChoiceParam( kParamAnalyseMode );
analyse->setLabel( "Analyse" );
analyse->appendOption( kParamAnalysePerChannel );
analyse->appendOption( kParamAnalyseLuminosity );
analyse->appendOption( kParamAnalyseR );
analyse->appendOption( kParamAnalyseG );
analyse->appendOption( kParamAnalyseB );
analyse->appendOption( kParamAnalyseA );
OFX::PushButtonParamDescriptor* analyseNow = desc.definePushButtonParam( kParamAnalyseNow );
analyseNow->setLabel( "Analyse" );
OFX::GroupParamDescriptor* srcGroup = desc.defineGroupParam( kParamSrcGroup );
srcGroup->setLabel( "Source" );
OFX::RGBAParamDescriptor* srcMinColor = desc.defineRGBAParam( kParamSrcCustomColorMin );
srcMinColor->setLabel( "Min" );
srcMinColor->setDefault( 0.0, 0.0, 0.0, 0.0 );
srcMinColor->setParent( srcGroup );
OFX::RGBAParamDescriptor* srcMaxColor = desc.defineRGBAParam( kParamSrcCustomColorMax );
srcMaxColor->setLabel( "Max" );
srcMaxColor->setDefault( 1.0, 1.0, 1.0, 1.0 );
srcMaxColor->setParent( srcGroup );
OFX::GroupParamDescriptor* dstGroup = desc.defineGroupParam( kParamDstGroup );
dstGroup->setLabel( "Destination" );
OFX::RGBAParamDescriptor* dstMinColor = desc.defineRGBAParam( kParamDstCustomColorMin );
dstMinColor->setLabel( "Min" );
dstMinColor->setDefault( 0.0, 0.0, 0.0, 0.0 );
dstMinColor->setParent( dstGroup );
OFX::RGBAParamDescriptor* dstMaxColor = desc.defineRGBAParam( kParamDstCustomColorMax );
dstMaxColor->setLabel( "Max" );
dstMaxColor->setDefault( 1.0, 1.0, 1.0, 1.0 );
dstMaxColor->setParent( dstGroup );
OFX::GroupParamDescriptor* processGroup = desc.defineGroupParam( kParamProcessGroup );
processGroup->setLabel( "Process" );
OFX::BooleanParamDescriptor* processR = desc.defineBooleanParam( kParamProcessR );
processR->setLabel( "R" );
processR->setDefault( true );
processR->setParent( processGroup );
OFX::BooleanParamDescriptor* processG = desc.defineBooleanParam( kParamProcessG );
processG->setLabel( "G" );
processG->setDefault( true );
processG->setParent( processGroup );
OFX::BooleanParamDescriptor* processB = desc.defineBooleanParam( kParamProcessB );
processB->setLabel( "B" );
processB->setDefault( true );
processB->setParent( processGroup );
OFX::BooleanParamDescriptor* processA = desc.defineBooleanParam( kParamProcessA );
processA->setLabel( "A" );
processA->setDefault( true );
processA->setParent( processGroup );
}
示例7: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void SobelPluginFactory::describeInContext(OFX::ImageEffectDescriptor& desc, OFX::EContext context)
{
OFX::ClipDescriptor* srcClip = desc.defineClip(kOfxImageEffectSimpleSourceClipName);
srcClip->addSupportedComponent(OFX::ePixelComponentRGBA);
srcClip->addSupportedComponent(OFX::ePixelComponentRGB);
srcClip->addSupportedComponent(OFX::ePixelComponentAlpha);
srcClip->setSupportsTiles(kSupportTiles);
OFX::ClipDescriptor* dstClip = desc.defineClip(kOfxImageEffectOutputClipName);
dstClip->addSupportedComponent(OFX::ePixelComponentRGBA);
dstClip->addSupportedComponent(OFX::ePixelComponentRGB);
dstClip->setSupportsTiles(kSupportTiles);
OFX::Double2DParamDescriptor* size = desc.defineDouble2DParam(kParamSize);
size->setLabel("Size");
size->setDefault(1.0, 1.0);
size->setRange(0.0, 0.0, std::numeric_limits<double>::max(), std::numeric_limits<double>::max());
size->setDisplayRange(0, 0, 10, 10);
size->setDoubleType(OFX::eDoubleTypeScale);
OFX::GroupParamDescriptor* advanced = desc.defineGroupParam(kParamGroupAdvanced);
advanced->setLabel("Advanced");
OFX::BooleanParamDescriptor* unidimensional = desc.defineBooleanParam(kParamUnidimensional);
unidimensional->setLabel("Unidimensional");
unidimensional->setHint("Instead of using a square convolution matrix, use 1D kernels.");
unidimensional->setDefault(false);
unidimensional->setParent(advanced);
OFX::BooleanParamDescriptor* reverseKernel = desc.defineBooleanParam(kParamReverseKernel);
reverseKernel->setLabel("Reverse");
reverseKernel->setHint("Reverse the kernel (convolution or correlation).");
reverseKernel->setDefault(false);
reverseKernel->setParent(advanced);
OFX::BooleanParamDescriptor* normalizedKernel = desc.defineBooleanParam(kParamNormalizedKernel);
normalizedKernel->setLabel("Normalized kernel");
normalizedKernel->setHint("Use a normalized kernel to compute the gradient.");
normalizedKernel->setDefault(true);
normalizedKernel->setParent(advanced);
OFX::DoubleParamDescriptor* kernelEpsilon = desc.defineDoubleParam(kParamKernelEpsilon);
kernelEpsilon->setLabel("Kernel espilon value");
kernelEpsilon->setHint("Threshold at which we no longer consider the values of the function.");
kernelEpsilon->setDefault(0.01);
kernelEpsilon->setRange(std::numeric_limits<double>::epsilon(), 1);
kernelEpsilon->setDisplayRange(0, 0.01);
kernelEpsilon->setParent(advanced);
OFX::ChoiceParamDescriptor* pass = desc.defineChoiceParam(kParamPass);
pass->setLabel("Pass");
pass->setHint("The sobel filter is computed using a 2D separable filter. So it consists in 2 passes.\n"
"By default we compute the 2 passes, but with this option you can separate each pass.");
pass->appendOption(kParamPassFull);
pass->appendOption(kParamPass1);
pass->appendOption(kParamPass2);
pass->setDefault(0);
pass->setParent(advanced);
OFX::ChoiceParamDescriptor* border = desc.defineChoiceParam(kParamBorder);
border->setLabel("Gradient border");
border->setHint("Border method for gradient computation.");
border->appendOption(kParamBorderMirror);
border->appendOption(kParamBorderConstant);
border->appendOption(kParamBorderBlack);
border->appendOption(kParamBorderPadded);
OFX::BooleanParamDescriptor* computeNorm = desc.defineBooleanParam(kParamComputeGradientNorm);
computeNorm->setLabel("Compute norm");
computeNorm->setHint("To disable the norm computation, if you don't need it.");
computeNorm->setDefault(true);
OFX::BooleanParamDescriptor* normManhattan = desc.defineBooleanParam(kParamGradientNormManhattan);
normManhattan->setLabel("Use the manhattan norm");
normManhattan->setHint("Use manhattan norm instead of standard one.");
normManhattan->setDefault(false);
OFX::BooleanParamDescriptor* computeGradientDirection = desc.defineBooleanParam(kParamComputeGradientDirection);
computeGradientDirection->setLabel("Gradient direction");
computeGradientDirection->setHint("To disable the gradient direction computation, if you don't need it.");
computeGradientDirection->setDefault(false);
OFX::BooleanParamDescriptor* gradientDirectionAbs = desc.defineBooleanParam(kParamGradientDirectionAbs);
gradientDirectionAbs->setLabel("Angle between 0 and PI");
gradientDirectionAbs->setHint("Limit gradient direction between 0 and PI.");
gradientDirectionAbs->setDefault(true);
OFX::PushButtonParamDescriptor* infosButton = desc.definePushButtonParam(kParamInfos);
infosButton->setLabel("Infos");
OFX::ChoiceParamDescriptor* outputComponent = desc.defineChoiceParam(kParamOutputComponent);
outputComponent->setLabel("Output component");
outputComponent->appendOption(OFX::getImageEffectHostDescription()->supportsPixelComponent(OFX::ePixelComponentRGB)
? kParamOutputComponentRGB
: "---");
//.........这里部分代码省略.........
示例8: describeInContext
void LensCalibrationPluginFactory::describeInContext(OFX::ImageEffectDescriptor& desc, OFX::ContextEnum context)
{
//Input Clip
OFX::ClipDescriptor *srcClip = desc.defineClip(kOfxImageEffectSimpleSourceClipName);
srcClip->addSupportedComponent(OFX::ePixelComponentRGBA);
srcClip->setTemporalClipAccess(false);
srcClip->setSupportsTiles(false);
srcClip->setIsMask(false);
srcClip->setOptional(false);
//Output clip
OFX::ClipDescriptor *dstClip = desc.defineClip(kOfxImageEffectOutputClipName);
dstClip->addSupportedComponent(OFX::ePixelComponentRGBA);
dstClip->setSupportsTiles(false);
//Calibration Group
{
OFX::GroupParamDescriptor *groupCalibration = desc.defineGroupParam(kParamGroupCalibration);
groupCalibration->setLabel("Calibration");
groupCalibration->setAsTab();
{
OFX::Int2DParamDescriptor *param = desc.defineInt2DParam(kParamImageSize);
param->setLabel("Image Size");
param->setHint("Input image size used to calibrate the optics. Obviously, all images should have the same size.");
param->setDefault(0, 0);
param->setDisplayRange(0, 0, 10000, 10000);
param->setAnimates(false);
param->setParent(*groupCalibration);
param->setEnabled(false); // should not be edited by the user
}
{
OFX::BooleanParamDescriptor *param = desc.defineBooleanParam(kParamInputImageIsGray);
param->setLabel("Input image is gray");
param->setHint("Input image is gray");
param->setParent(*groupCalibration);
}
{
OFX::ChoiceParamDescriptor *param = desc.defineChoiceParam(kParamPatternType);
param->setLabel("Pattern Type");
param->setHint("Type of pattern to detect");
param->appendOptions(kStringParamPatternType);
param->setDefault(eParamPatternTypeChessboard);
param->setAnimates(false);
param->setParent(*groupCalibration);
}
{
OFX::Int2DParamDescriptor *param = desc.defineInt2DParam(kParamPatternSize);
param->setLabel("Pattern Size");
param->setHint("Number of inner corners per one of board dimension Width Height");
param->setDefault(10, 7);
param->setRange(2, 2, kOfxFlagInfiniteMax, kOfxFlagInfiniteMax);
param->setDisplayRange(2, 2, 15, 15);
param->setAnimates(false);
param->setParent(*groupCalibration);
}
{
OFX::DoubleParamDescriptor *param = desc.defineDoubleParam(kParamSquareSize);
param->setLabel("Square Size");
param->setHint("Define the size of the grid's square cells (mm)");
param->setDisplayRange(0, 100);
param->setDefault(1);
param->setAnimates(false);
param->setParent(*groupCalibration);
param->setLayoutHint(OFX::eLayoutHintDivider);
}
{
OFX::IntParamDescriptor *param = desc.defineIntParam(kParamNbRadialCoef);
param->setLabel("Nb Radial Coef");
param->setHint("Number of radial coefficient.");
param->setRange(0, 6);
param->setDisplayRange(0, 6);
param->setDefault(3);
param->setAnimates(false);
param->setParent(*groupCalibration);
}
{
OFX::IntParamDescriptor *param = desc.defineIntParam(kParamMaxFrames);
param->setLabel("Max Frames");
param->setHint("Maximal number of frames to extract from the video file.");
param->setRange(0, kOfxFlagInfiniteMax);
param->setDisplayRange(0, 1000);
param->setDefault(0);
param->setAnimates(false);
param->setParent(*groupCalibration);
}
{
OFX::IntParamDescriptor *param = desc.defineIntParam(kParamMaxCalibFrames);
param->setLabel("Max Calibration Frames");
param->setHint("Maximal number of frames to use to calibrate from the selected frames.");
param->setRange(0, kOfxFlagInfiniteMax);
param->setDisplayRange(0, 1000);
param->setDefault(100);
//.........这里部分代码省略.........
示例9: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void ImageStatisticsPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc,
OFX::EContext context )
{
OFX::ClipDescriptor* srcClip = desc.defineClip( kOfxImageEffectSimpleSourceClipName );
srcClip->addSupportedComponent( OFX::ePixelComponentRGBA );
srcClip->addSupportedComponent( OFX::ePixelComponentAlpha );
srcClip->setSupportsTiles( kSupportTiles );
// Create the mandated output clip
OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName );
dstClip->addSupportedComponent( OFX::ePixelComponentRGBA );
dstClip->addSupportedComponent( OFX::ePixelComponentAlpha );
dstClip->setSupportsTiles( kSupportTiles );
OFX::ChoiceParamDescriptor* coordSystem = desc.defineChoiceParam( kParamCoordinateSystem );
coordSystem->setLabel( "Coordinate system" );
coordSystem->appendOption( kParamCoordinateSystemNormalized );
coordSystem->appendOption( kParamCoordinateSystemCanonical );
coordSystem->setDefault( 0 );
OFX::Double2DParamDescriptor* rectCenter = desc.defineDouble2DParam( kParamRectCenter );
rectCenter->setLabel( "Center" );
rectCenter->setDoubleType( OFX::eDoubleTypePlain );
// rectCenter->setDoubleType( OFX::eDoubleTypeNormalisedXYAbsolute );
rectCenter->setDefault( 0.5, 0.5 );
OFX::Double2DParamDescriptor* rectSize = desc.defineDouble2DParam( kParamRectSize );
rectSize->setLabel( "Size" );
rectSize->setDoubleType( OFX::eDoubleTypePlain );
// rectSize->setDoubleType( OFX::eDoubleTypeNormalisedXYAbsolute );
rectSize->setDefault( 0.5, 0.5 );
OFX::ChoiceParamDescriptor* chooseOutput = desc.defineChoiceParam( kParamChooseOutput );
chooseOutput->setLabel( "Choose output" );
chooseOutput->appendOption( kParamChooseOutputSource );
chooseOutput->appendOption( kParamChooseOutputAverage );
chooseOutput->appendOption( kParamChooseOutputChannelMin );
chooseOutput->appendOption( kParamChooseOutputChannelMax );
chooseOutput->appendOption( kParamChooseOutputLuminosityMin );
chooseOutput->appendOption( kParamChooseOutputLuminosityMax );
chooseOutput->setDefault( 0 );
OFX::GroupParamDescriptor* outputGroup = desc.defineGroupParam( kParamOutputGroup );
outputGroup->setLabel( "Output" );
// -----------------------------------------------------------------------------
OFX::GroupParamDescriptor* rgbaGroup = desc.defineGroupParam( kParamOutputGroupRGBA );
rgbaGroup->setLabel( "RGBA" );
rgbaGroup->setParent( outputGroup );
OFX::RGBAParamDescriptor* outputAverage = desc.defineRGBAParam( kParamOutputAverage );
outputAverage->setLabel( "Average" );
outputAverage->setParent( rgbaGroup );
outputAverage->setEvaluateOnChange( false );
OFX::RGBAParamDescriptor* outputChannelMin = desc.defineRGBAParam( kParamOutputChannelMin );
outputChannelMin->setLabel( "Channels' min" );
outputChannelMin->setHint( "Minimum value per channel" );
outputChannelMin->setParent( rgbaGroup );
outputChannelMin->setEvaluateOnChange( false );
OFX::RGBAParamDescriptor* outputChannelMax = desc.defineRGBAParam( kParamOutputChannelMax );
outputChannelMax->setLabel( "Channels' max" );
outputChannelMax->setParent( rgbaGroup );
outputChannelMax->setEvaluateOnChange( false );
OFX::RGBAParamDescriptor* outputLuminosityMin = desc.defineRGBAParam( kParamOutputLuminosityMin );
outputLuminosityMin->setLabel( "Luminosity min" );
outputLuminosityMin->setParent( rgbaGroup );
outputLuminosityMin->setEvaluateOnChange( false );
OFX::RGBAParamDescriptor* outputLuminosityMax = desc.defineRGBAParam( kParamOutputLuminosityMax );
outputLuminosityMax->setLabel( "Luminosity max" );
outputLuminosityMax->setParent( rgbaGroup );
outputLuminosityMax->setEvaluateOnChange( false );
OFX::RGBAParamDescriptor* outputKurtosis = desc.defineRGBAParam( kParamOutputKurtosis );
outputKurtosis->setLabel( "Kurtosis" );
outputKurtosis->setParent( rgbaGroup );
outputKurtosis->setEvaluateOnChange( false );
OFX::RGBAParamDescriptor* outputSkewness = desc.defineRGBAParam( kParamOutputSkewness );
outputSkewness->setLabel( "Skewness" );
outputSkewness->setParent( rgbaGroup );
outputSkewness->setEvaluateOnChange( false );
// -----------------------------------------------------------------------------
OFX::GroupParamDescriptor* hslGroup = desc.defineGroupParam( kParamOutputGroupHSL );
hslGroup->setLabel( "HSL" );
hslGroup->setParent( outputGroup );
OFX::Double3DParamDescriptor* outputAverageHSL = desc.defineDouble3DParam( kParamOutputAverageHSL );
//.........这里部分代码省略.........
示例10: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void PinningPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc,
OFX::EContext context )
{
OFX::ClipDescriptor* srcClip = desc.defineClip( kOfxImageEffectSimpleSourceClipName );
srcClip->addSupportedComponent( OFX::ePixelComponentRGBA );
srcClip->addSupportedComponent( OFX::ePixelComponentAlpha );
srcClip->setSupportsTiles( kSupportTiles );
// Create the mandated output clip
OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName );
dstClip->addSupportedComponent( OFX::ePixelComponentRGBA );
dstClip->addSupportedComponent( OFX::ePixelComponentAlpha );
dstClip->setSupportsTiles( kSupportTiles );
//////////////////// Options ////////////////////
OFX::ChoiceParamDescriptor* method = desc.defineChoiceParam( kParamMethod );
method->setLabel( "Method" );
method->appendOption( kParamMethodAffine );
method->appendOption( kParamMethodPerspective );
method->appendOption( kParamMethodBilinear );
method->setDefault( 1 );
method->setHint( "Interpolation method" );
OFX::ChoiceParamDescriptor* interpolation = desc.defineChoiceParam( kParamInterpolation );
interpolation->setLabel( "Interpolation" );
interpolation->appendOption( kParamInterpolationNearest );
interpolation->appendOption( kParamInterpolationBilinear );
interpolation->setDefault( 1 );
interpolation->setHint( "Interpolation method" );
OFX::PushButtonParamDescriptor* setToCornersIn = desc.definePushButtonParam( kParamSetToCornersIn);
setToCornersIn->setLabel( "Set In" );
setToCornersIn->setHint("Set to corners in points");
OFX::PushButtonParamDescriptor* setToCornersOut = desc.definePushButtonParam( kParamSetToCornersOut);
setToCornersOut->setLabel( "Set Out" );
setToCornersOut->setHint("Set to corners out points");
OFX::BooleanParamDescriptor* overlay = desc.defineBooleanParam( kParamOverlay );
overlay->setLabel( "Overlay" );
overlay->setDefault( true );
OFX::BooleanParamDescriptor* inverse = desc.defineBooleanParam( kParamInverse );
inverse->setLabel( "Inverse" );
inverse->setDefault( false );
/*
//TODO-vince///////////
//////////////////// Transform Centre Point ////////////////////
OFX::GroupParamDescriptor* groupCentre = desc.defineGroupParam( kParamGroupCentre );
groupCentre->setLabel( "Centre point" );
groupCentre->setOpen(false);
OFX::ChoiceParamDescriptor* manipulatorMode = desc.defineChoiceParam( kParamManipulatorMode );
manipulatorMode->appendOption( kParamManipulatorModeTranslate );
manipulatorMode->appendOption( kParamManipulatorModeRotate );
manipulatorMode->appendOption( kParamManipulatorModeScale );
OFX::Double2DParamDescriptor* pCentre = desc.defineDouble2DParam( kParamPointCentre);
pCentre->setLabel( "Centre point" );
pCentre->setHint( "Transform Centre point" );
pCentre->setDefault( 0.0, 0.0 );
pCentre->setParent( groupCentre );
OFX::BooleanParamDescriptor* overlayCentre = desc.defineBooleanParam( kParamOverlayCentre );
overlayCentre->setLabel( "Overlay" );
overlayCentre->setDefault( true );
overlayCentre->setParent( groupCentre );
OFX::RGBParamDescriptor* ouverlayCentreColor = desc.defineRGBParam( kParamOverlayCentreColor );
ouverlayCentreColor->setLabel( "Color" );
ouverlayCentreColor->setHint( "Centre point overlay color" );
ouverlayCentreColor->setDefault( 0.0, 1.0, 0.0 );
ouverlayCentreColor->setParent( groupCentre );
*/
//////////////////// IN Points ////////////////////
OFX::GroupParamDescriptor* groupIn = desc.defineGroupParam( kParamGroupIn );
groupIn->setLabel( "Input points" );
groupIn->setOpen(false);
OFX::Double2DParamDescriptor* pIn0 = desc.defineDouble2DParam( kParamPointIn + "0" );
pIn0->setLabel( "In 0" );
pIn0->setHint( "Input point 0" );
pIn0->setDefault( -0.5, -0.5 );
pIn0->setParent( groupIn );
OFX::Double2DParamDescriptor* pIn1 = desc.defineDouble2DParam( kParamPointIn + "1" );
pIn1->setLabel( "In 1" );
pIn1->setHint( "Input point 1" );
pIn1->setDefault( 0.5, -0.5 );
pIn1->setParent( groupIn );
OFX::Double2DParamDescriptor* pIn2 = desc.defineDouble2DParam( kParamPointIn + "2" );
pIn2->setLabel( "In 2" );
pIn2->setHint( "Input point 2" );
pIn2->setDefault( -0.5, 0.5 );
//.........这里部分代码省略.........
示例11: describeInContext
//.........这里部分代码省略.........
OFX::DoubleParamDescriptor* preScale = desc.defineDoubleParam( kParamPreScale );
preScale->setLabel( "Pre-scale" );
// preScale->setDoubleType( eDoubleTypeNormalisedXY );
preScale->setDefault( 1.0 );
preScale->setRange( 0.00001, std::numeric_limits<double>::max() );
preScale->setDisplayRange( 0.0, 2.5 );
preScale->setHint( "If the transformation of optics is high, you may need to change the scale of the result to be globally closer to the source image or preserve a good resolution." );
OFX::DoubleParamDescriptor* postScale = desc.defineDoubleParam( kParamPostScale );
postScale->setLabel( "Post-scale" );
// scale->setDoubleType( eDoubleTypeNormalisedXY );
postScale->setDefault( 1.0 );
postScale->setRange( 0.00001, std::numeric_limits<double>::max() );
postScale->setDisplayRange( 0.0, 2.5 );
postScale->setHint( "If the transformation of optics is high, you may need to change the scale of the result to be globally closer to the source image or preserve a good resolution." );
OFX::ChoiceParamDescriptor* interpolation = desc.defineChoiceParam( kParamInterpolation );
interpolation->setLabel( "Interpolation" );
interpolation->appendOption( kParamInterpolationNearest );
interpolation->appendOption( kParamInterpolationBilinear );
interpolation->setDefault( 1 );
interpolation->setHint( "Interpolation method" );
OFX::ChoiceParamDescriptor* resizeRod = desc.defineChoiceParam( kParamResizeRod );
resizeRod->setLabel( "Resize RoD" );
resizeRod->appendOption( kParamResizeRodNo );
resizeRod->appendOption( kParamResizeRodSourceRef );
resizeRod->appendOption( kParamResizeRodMin );
resizeRod->appendOption( kParamResizeRodMax );
resizeRod->appendOption( kParamResizeRodManual );
resizeRod->setDefault( 0 );
resizeRod->setHint( "Resize output RoD" );
OFX::DoubleParamDescriptor* scaleRod = desc.defineDoubleParam( kParamResizeRodManualScale );
scaleRod->setLabel( "Scale RoD" );
// scaleRod->setDoubleType( eDoubleTypeNormalisedXY );
// scaleRod->setIsSecret( true );
// scaleRod->setEnabled( false );
scaleRod->setDefault( 1.0 );
scaleRod->setRange( 0.0, std::numeric_limits<double>::max() );
scaleRod->setDisplayRange( 0, 2.5 );
scaleRod->setHint( "Adjust the output RoD." );
OFX::GroupParamDescriptor* displayOptions = desc.defineGroupParam( kParamDisplayOptions );
displayOptions->setLabel( "Display options" );
displayOptions->setHint( "Display options (change nothing on the image)" );
OFX::BooleanParamDescriptor* displayGrid = desc.defineBooleanParam( kParamGridOverlay );
displayGrid->setLabel( "Display grid" );
displayGrid->setParent( *displayOptions );
displayGrid->setDefault( false );
displayGrid->setEvaluateOnChange( false );
displayGrid->setHint( "Display the grid" );
OFX::Double2DParamDescriptor* gridCenter = desc.defineDouble2DParam( kParamGridCenter );
gridCenter->setLabel( "Grid center" );
gridCenter->setDoubleType( OFX::eDoubleTypePlain );
gridCenter->setParent( *displayOptions );
gridCenter->setDefault( 0.0, 0.0 );
gridCenter->setDisplayRange( -1.0, -1.0, 1.0, 1.0 );
gridCenter->setEvaluateOnChange( false );
gridCenter->setHint( "Allows you to shift the center of the display grid." );
OFX::BooleanParamDescriptor* gridCenterOverlay = desc.defineBooleanParam( kParamGridCenterOverlay );
gridCenterOverlay->setLabel( "Display grid center" );
gridCenterOverlay->setParent( *displayOptions );
gridCenterOverlay->setDefault( false );
gridCenterOverlay->setEvaluateOnChange( false );
gridCenterOverlay->setHint( "Active grid center point overlay." );
OFX::Double2DParamDescriptor* gridScale = desc.defineDouble2DParam( kParamGridScale );
gridScale->setLabel( "Grid scale" );
gridScale->setDoubleType( OFX::eDoubleTypePlain );
gridScale->setParent( *displayOptions );
gridScale->setDefault( 1.0, 1.0 );
gridScale->setDisplayRange( -10.0, -10.0, 10.0, 10.0 );
gridScale->setEvaluateOnChange( false );
gridScale->setHint( "Allows you to scale the display grid." );
OFX::GroupParamDescriptor* debugOptions = desc.defineGroupParam( kParamDebugOptions );
debugOptions->setLabel( "Debug options" );
debugOptions->setHint( "Debug options" );
debugOptions->setParent( *displayOptions );
#ifdef TUTTLE_PRODUCTION
debugOptions->setIsSecret( true );
#endif
OFX::BooleanParamDescriptor* debugDisplayRoi = desc.defineBooleanParam( kParamDebugDisplayRoi );
debugDisplayRoi->setLabel( "Display RoI" );
#ifdef TUTTLE_PRODUCTION
debugDisplayRoi->setIsSecret( true );
#endif
debugDisplayRoi->setParent( *debugOptions );
debugDisplayRoi->setDefault( false );
debugDisplayRoi->setEvaluateOnChange( false );
debugDisplayRoi->setHint( "Display RoI" );
OFX::PushButtonParamDescriptor* helpButton = desc.definePushButtonParam( kParamHelp );
helpButton->setLabel( "Help" );
}
示例12: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void HistogramKeyerPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc,OFX::EContext context )
{
OFX::ClipDescriptor* srcClip = desc.defineClip( kOfxImageEffectSimpleSourceClipName );
srcClip->addSupportedComponent( OFX::ePixelComponentRGBA );
srcClip->addSupportedComponent( OFX::ePixelComponentRGB );
srcClip->addSupportedComponent( OFX::ePixelComponentAlpha );
srcClip->setSupportsTiles( kSupportTiles );
OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName );
dstClip->addSupportedComponent( OFX::ePixelComponentRGBA );
dstClip->addSupportedComponent( OFX::ePixelComponentRGB );
dstClip->addSupportedComponent( OFX::ePixelComponentAlpha );
dstClip->setSupportsTiles( kSupportTiles );
//global display
OFX::BooleanParamDescriptor* boolGLOBAL = desc.defineBooleanParam(kGlobalDisplay);
boolGLOBAL->setHint("Display global overlay on screen.");
boolGLOBAL->setDefault(true);
// if parametric parameters are supported
if( OFX::getImageEffectHostDescription()->supportsParametricParameter )
{
OFX::ParametricParamDescriptor* curvesRGB = desc.defineParametricParam( kParamRGBColorSelection );
OFX::ParametricParamDescriptor* curvesHSL = desc.defineParametricParam( kParamHSLColorSelection );
//Group Param (RGB & HSL)
OFX::GroupParamDescriptor *groupRGB = desc.defineGroupParam(kGroupRGB);
groupRGB->setLabel(kGroupRGBLabel);
OFX::GroupParamDescriptor *groupHSL = desc.defineGroupParam(kGroupHSL);
groupHSL->setLabel(kGroupHSLLabel);
//define the graphic aspect
curvesRGB->setRange( 0.0, 1.0 ); //set range on RGB curve
curvesHSL->setRange( 0.0, 1.0 ); //set range on HSL curve
curvesRGB->setDimension(nbCurvesRGB); //3 curves on RGB
curvesHSL->setDimension(nbCurvesHSL); //3 curves on HSL
//Add curves RGB
curvesRGB->setDimensionLabel( kParamColorSelectionRed, 0 ); // 0 on RGB is red
curvesRGB->setDimensionLabel( kParamColorSelectionGreen, 1 ); // 1 on RGB is green
curvesRGB->setDimensionLabel( kParamColorSelectionBlue, 2 ); // 2 on RGB is blue
//Add curves HSL
curvesHSL->setDimensionLabel( kParamColorSelectionHue, 0 ); // 0 on HSL is hue
curvesHSL->setDimensionLabel( kParamColorSelectionSaturation, 1 ); // 1 on HSL is saturation
curvesHSL->setDimensionLabel( kParamColorSelectionLightness, 2 ); // 2 on HSK is lightness
//define curves color RGB
curvesRGB->setHint( "Color selection" );
static const OfxRGBColourD red = {1,0,0}; //set red color to red curve
static const OfxRGBColourD green = {0,1,0}; //set green color to green curve
static const OfxRGBColourD blue = {0,0,1}; //set blue color to blue curve
curvesRGB->setUIColour( 0, red );
curvesRGB->setUIColour( 1, green );
curvesRGB->setUIColour( 2, blue );
//define curves color HSL
curvesHSL->setHint( "Color selection" );
curvesHSL->setUIColour( 0, red ); //set red color on hue curve
curvesHSL->setUIColour( 1, green ); //set green color on saturation curve
curvesHSL->setUIColour( 2, blue ); //set lightness color on saturation curve
curvesRGB->setInteractDescriptor( new OFX::DefaultParamInteractWrap<RGBParamOverlayDescriptor>() ); //attach parametric curve to RGBOverlay
curvesHSL->setInteractDescriptor( new OFX::DefaultParamInteractWrap<HSLParamOverlayDescriptor>() ); //attach parametric curve to HSLOverlay
//add curves to their groups
curvesRGB->setParent(groupRGB); //add RGB curves to RGB group
curvesHSL->setParent(groupHSL); //add HSL curves to HSL group
//Set each curves to initial value
curvesRGB->setIdentity();
curvesHSL->setIdentity();
//add 2 control points (0,1) and (1,1) for each channel
for(unsigned int i=0; i< nbCurvesRGB; ++i)
{
//curvesRGB->addControlPoint( i, 0.0, 0.0, 1.0, false );
curvesRGB->addControlPoint( i, 0.0, 1.0, 1.0, false );
}
for(unsigned int i=0; i< nbCurvesHSL; ++i)
{
//curvesHSL->addControlPoint( i, 0.0, 0.0, 1.0, false );
curvesHSL->addControlPoint( i, 0.0, 1.0, 1.0, false );
}
//Channels checkboxes (RGB)
OFX::BooleanParamDescriptor* boolR = desc.defineBooleanParam(kBoolRed);
boolR->setDefault(false); //red channel is not selected by default
boolR->setHint("Activate Red channel");
boolR->setLayoutHint( OFX::eLayoutHintNoNewLine ); //line is not finished
boolR->setParent(groupRGB);
//red multiplier
OFX::DoubleParamDescriptor* redMultiplier = desc.defineDoubleParam(kMultiplierRed);
redMultiplier->setLabel(kMultiplierLabel);
redMultiplier->setHint("Determinate curve from selection precision.");
redMultiplier->setRange(1, 1000);
redMultiplier->setDisplayRange(0,5);
redMultiplier->setDefault(1);
//.........这里部分代码省略.........
示例13: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void ColorSpacePluginFactory::describeInContext(OFX::ImageEffectDescriptor& desc, OFX::EContext context)
{
OFX::ClipDescriptor* srcClip = desc.defineClip(kOfxImageEffectSimpleSourceClipName);
srcClip->addSupportedComponent(OFX::ePixelComponentRGBA);
srcClip->addSupportedComponent(OFX::ePixelComponentRGB);
srcClip->addSupportedComponent(OFX::ePixelComponentAlpha);
srcClip->setSupportsTiles(kSupportTiles);
// Create the mandated output clip
OFX::ClipDescriptor* dstClip = desc.defineClip(kOfxImageEffectOutputClipName);
dstClip->addSupportedComponent(OFX::ePixelComponentRGBA);
dstClip->addSupportedComponent(OFX::ePixelComponentRGB);
dstClip->addSupportedComponent(OFX::ePixelComponentAlpha);
dstClip->setSupportsTiles(kSupportTiles);
/* ----------------------- INPUT PARAMETERS -------------------------- */
OFX::GroupParamDescriptor* inGroup = desc.defineGroupParam(kColorSpaceIn);
inGroup->setLabel("Input configuration");
OFX::ChoiceParamDescriptor* inReferenceSpace = desc.defineChoiceParam(kColorSpaceReferenceSpaceIn);
inReferenceSpace->setLabel("Reference Space");
inReferenceSpace->setParent(inGroup);
OFX::GroupParamDescriptor* inCustom = desc.defineGroupParam(kColorSpaceCustomizedIn);
inCustom->setLabel("Custom");
inCustom->setOpen(false);
inCustom->setParent(inGroup);
OFX::ChoiceParamDescriptor* inGradationLaw = desc.defineChoiceParam(kColorSpaceGradationLawIn);
inGradationLaw->setLabel("Gradation Law");
inGradationLaw->setParent(inCustom);
OFX::DoubleParamDescriptor* inGammaValue = desc.defineDoubleParam(kColorSpaceInGammaValue);
inGammaValue->setLabel("Gamma");
inGammaValue->setDefault(1.0);
inGammaValue->setRange(0.0, std::numeric_limits<double>::max());
inGammaValue->setDisplayRange(0.0, 5.0);
inGammaValue->setHint("Adjust the Gamma.");
inGammaValue->setParent(inCustom);
OFX::DoubleParamDescriptor* inBlackPoint = desc.defineDoubleParam(kColorSpaceInBlackPoint);
inBlackPoint->setLabel("Black Point");
inBlackPoint->setDefault(0.0);
inBlackPoint->setRange(0.0, 1.0);
inBlackPoint->setDisplayRange(0.0, 1.0);
inBlackPoint->setHint("Adjust the Black Point.");
inBlackPoint->setParent(inCustom);
OFX::DoubleParamDescriptor* inWhitePoint = desc.defineDoubleParam(kColorSpaceInWhitePoint);
inWhitePoint->setLabel("White Point");
inWhitePoint->setDefault(1.0);
inWhitePoint->setRange(0.0, 1.0);
inWhitePoint->setDisplayRange(0.0, 1.0);
inWhitePoint->setHint("Adjust the White Point.");
inWhitePoint->setParent(inCustom);
OFX::DoubleParamDescriptor* inGammaSensito = desc.defineDoubleParam(kColorSpaceInGammaSensito);
inGammaSensito->setLabel("Gamma Sensito");
inGammaSensito->setDefault(1.0);
inGammaSensito->setRange(0.0, std::numeric_limits<double>::max());
inGammaSensito->setDisplayRange(0.0, 5.0);
inGammaSensito->setHint("Adjust the Gamma Sensito.");
inGammaSensito->setParent(inCustom);
OFX::ChoiceParamDescriptor* inLayout = desc.defineChoiceParam(kColorSpaceLayoutIn);
inLayout->setLabel("Layout");
inLayout->setParent(inCustom);
OFX::ChoiceParamDescriptor* inTempColor = desc.defineChoiceParam(kColorSpaceTempColorIn);
inTempColor->setLabel("Color Temperature");
inTempColor->setHint("Select the color temperature.");
inTempColor->setParent(inCustom);
OFX::GroupParamDescriptor* inPrimaries = desc.defineGroupParam(kColorSpacePrimariesIn);
inPrimaries->setLabel("Primaries color");
inPrimaries->setOpen(false);
inPrimaries->setParent(inCustom);
OFX::DoubleParamDescriptor* inXr = desc.defineDoubleParam(kColorSpaceXrIn);
inXr->setLabel("X red");
inXr->setDefault(1.0);
inXr->setRange(0.0, 1.0);
inXr->setDisplayRange(0.0, 1.0);
inXr->setHint("Adjust the X red primary color.");
inXr->setParent(inPrimaries);
OFX::DoubleParamDescriptor* inYr = desc.defineDoubleParam(kColorSpaceYrIn);
inYr->setLabel("Y red");
inYr->setDefault(1.0);
inYr->setRange(0.0, 1.0);
inYr->setDisplayRange(0.0, 1.0);
inYr->setHint("Adjust the Y red primary color.");
inYr->setParent(inPrimaries);
//.........这里部分代码省略.........
示例14: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void PinningPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc,
OFX::EContext context )
{
OFX::ClipDescriptor* srcClip = desc.defineClip( kOfxImageEffectSimpleSourceClipName ); // clip de source nomme source
//OFX::ClipDescriptor* toto = desc.defineClip( "toto" );
srcClip->addSupportedComponent( OFX::ePixelComponentRGBA ); //proprietes de la source
srcClip->addSupportedComponent( OFX::ePixelComponentAlpha );
srcClip->setSupportsTiles( kSupportTiles );
// Create the mandated output clip
OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName ); //sortie, laisser comme ca et pi c'est tout
dstClip->addSupportedComponent( OFX::ePixelComponentRGBA );
dstClip->addSupportedComponent( OFX::ePixelComponentAlpha );
dstClip->setSupportsTiles( kSupportTiles );
OFX::GroupParamDescriptor* grpSrc = desc.defineGroupParam( kParamGroupSource ); //groupe source
grpSrc->setLabel( "Points de départ" );
grpSrc->setHint( "Selectionnez 4 points de départ" );
OFX::Double2DParamDescriptor* src0 = desc.defineDouble2DParam( kParamPointSource + "0" ); //kpa... nom utilisé par le plug
src0->setLabel( "src0" ); //nom que voit l'utilisateur
src0->setDefault( 0, 0 );
src0->setParent(grpSrc);
OFX::Double2DParamDescriptor* src1 = desc.defineDouble2DParam( kParamPointSource + "1" );
src1->setLabel( "src1" );
src1->setDefault( 0, 1 );
src1->setParent(grpSrc);
OFX::Double2DParamDescriptor* src2 = desc.defineDouble2DParam( kParamPointSource + "2" );
src2->setLabel( "src2" );
src2->setDefault( 1, 1 );
src2->setParent(grpSrc);
OFX::Double2DParamDescriptor* src3 = desc.defineDouble2DParam( kParamPointSource + "3" );
src3->setLabel( "src3" );
src3->setDefault( 1, 0 );
src3->setParent(grpSrc);
OFX::GroupParamDescriptor* grpDst = desc.defineGroupParam( kParamGroupDestination ); //groupe destination
grpDst->setLabel( "Points d'arrivée" );
grpDst->setHint( "Selectionnez 4 points d'arrivée" );
OFX::Double2DParamDescriptor* dest0 = desc.defineDouble2DParam( kParamPointDestination + "0" ); //kpa... nom utilisé par le plug
dest0->setLabel( "dst0" ); //nom que voit l'utilisateur
dest0->setDefault( 0, 0 );
dest0->setParent(grpDst);
OFX::Double2DParamDescriptor* dest1 = desc.defineDouble2DParam( kParamPointDestination + "1" );
dest1->setLabel( "dst1" );
dest1->setDefault( 0, 1 );
dest1->setParent(grpDst);
OFX::Double2DParamDescriptor* dest2 = desc.defineDouble2DParam( kParamPointDestination + "2" );
dest2->setLabel( "dst2" );
dest2->setDefault( 1, 1 );
dest2->setParent(grpDst);
OFX::Double2DParamDescriptor* dest3 = desc.defineDouble2DParam( kParamPointDestination + "3" );
dest3->setLabel( "dst3" );
dest3->setDefault( 1, 0 );
dest3->setParent(grpDst);
OFX::PushButtonParamDescriptor* helpButton = desc.definePushButtonParam( kParamHelpButton ); //cree un bouton help
//helpButton->setHint( "bla bla" );
helpButton->setLabel( "Help" );
OFX::GroupParamDescriptor* displayOptions = desc.defineGroupParam( kParamDisplayOptions );
displayOptions->setLabel( "Options d'affichage" );
displayOptions->setHint( "Options d'affichage (Ne change rien sur l'image)" );
OFX::BooleanParamDescriptor* displayGrid = desc.defineBooleanParam( kParamGridOverlay );
displayGrid->setLabel( "Afficher la grille" );
displayGrid->setParent( *displayOptions );
displayGrid->setDefault( false );
displayGrid->setEvaluateOnChange( false );
displayGrid->setHint( "Afficher la grille" );
OFX::Double2DParamDescriptor* gridCenter = desc.defineDouble2DParam( kParamGridCenter );
gridCenter->setLabel( "Centre de la grille" );
gridCenter->setDoubleType( OFX::eDoubleTypePlain );
gridCenter->setParent( *displayOptions );
gridCenter->setDefault( 0.0, 0.0 );
gridCenter->setDisplayRange( -1.0, -1.0, 1.0, 1.0 );
gridCenter->setEvaluateOnChange( false );
gridCenter->setHint( "Allows you to shift the center of the display grid." );
OFX::Double2DParamDescriptor* center = desc.defineDouble2DParam( kParamCenter );
center->setLabel( "Center" );
center->setDoubleType( OFX::eDoubleTypePlain );
center->setDefault( 0.0, 0.0 );
center->setDisplayRange( -1.0, -1.0, 1.0, 1.0 );
center->setHint( "Center parameter allows you to shift the center of distortion." );
OFX::Double2DParamDescriptor* gridScale = desc.defineDouble2DParam( kParamGridScale );
gridScale->setLabel( "Echelle de la grille" );
gridScale->setDoubleType( OFX::eDoubleTypePlain );
gridScale->setParent( *displayOptions );
gridScale->setDefault( 1.0, 1.0 );
//.........这里部分代码省略.........
示例15: describeInContext
/**
* @brief Function called to describe the plugin controls and features.
* @param[in, out] desc Effect descriptor
* @param[in] context Application context
*/
void HistogramPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc,OFX::EContext context )
{
OFX::ClipDescriptor* srcClip = desc.defineClip( kOfxImageEffectSimpleSourceClipName );
srcClip->addSupportedComponent( OFX::ePixelComponentRGBA );
srcClip->addSupportedComponent( OFX::ePixelComponentRGB );
srcClip->addSupportedComponent( OFX::ePixelComponentAlpha );
srcClip->setSupportsTiles( kSupportTiles );
OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName );
dstClip->addSupportedComponent( OFX::ePixelComponentRGBA );
dstClip->addSupportedComponent( OFX::ePixelComponentRGB );
dstClip->addSupportedComponent( OFX::ePixelComponentAlpha );
dstClip->setSupportsTiles( kSupportTiles );
//global display
OFX::BooleanParamDescriptor* boolGLOBAL = desc.defineBooleanParam(kGlobalDisplay);
boolGLOBAL->setHint("Display global overlay on screen.");
boolGLOBAL->setDefault(true);
// RGB / HSL
{
//Group Param (RGB & HSL)
OFX::GroupParamDescriptor *groupRGB = desc.defineGroupParam(kGroupRGB);
groupRGB->setLabel(kGroupRGBLabel);
OFX::GroupParamDescriptor *groupHSL = desc.defineGroupParam(kGroupHSL);
groupHSL->setLabel(kGroupHSLLabel);
//Channels checkboxes (RGB)
OFX::BooleanParamDescriptor* boolR = desc.defineBooleanParam(kBoolRed);
boolR->setDefault(true); //red channel is not selected by default
boolR->setHint("Activate Red channel");
boolR->setLayoutHint( OFX::eLayoutHintNoNewLine ); //line is not finished
boolR->setParent(groupRGB);
//red multiplier
OFX::DoubleParamDescriptor* redMultiplier = desc.defineDoubleParam(kMultiplierRed);
redMultiplier->setLabel(kMultiplierLabel);
redMultiplier->setHint("Determinate curve from selection precision.");
redMultiplier->setRange(1, 1000);
redMultiplier->setDisplayRange(0,5);
redMultiplier->setDefault(1);
redMultiplier->setParent(groupRGB);
OFX::BooleanParamDescriptor* boolG = desc.defineBooleanParam(kBoolGreen);
boolG->setDefault(true); //green channel is not selected by default
boolG->setHint("Activate Green channel");
boolG->setLayoutHint( OFX::eLayoutHintNoNewLine ); //line is not finished
boolG->setParent(groupRGB);
//green multiplier
OFX::DoubleParamDescriptor* greenMultiplier = desc.defineDoubleParam(kMultiplierGreen);
greenMultiplier->setLabel(kMultiplierLabel);
greenMultiplier->setHint("Determinate curve from selection precision.");
greenMultiplier->setRange(1, 1000);
greenMultiplier->setDisplayRange(0,5);
greenMultiplier->setDefault(1);
greenMultiplier->setParent(groupRGB);
OFX::BooleanParamDescriptor* boolB = desc.defineBooleanParam(kBoolBlue);
boolB->setHint("Activate Blue channel");
boolB->setLayoutHint( OFX::eLayoutHintNoNewLine ); //line is not finished
boolB->setDefault(true); //blue channel is not selected by default
boolB->setParent(groupRGB);
//blue multiplier
OFX::DoubleParamDescriptor* blueMultiplier = desc.defineDoubleParam(kMultiplierBlue);
blueMultiplier->setLabel(kMultiplierLabel);
blueMultiplier->setHint("Determinate curve from selection precision.");
blueMultiplier->setRange(1, 1000);
blueMultiplier->setDisplayRange(0,5);
blueMultiplier->setDefault(1);
blueMultiplier->setParent(groupRGB);
//Channels check box (HSL)
OFX::BooleanParamDescriptor* boolH = desc.defineBooleanParam(kBoolHue);
boolH->setDefault(true);
boolH->setHint("Activate Hue channel");
boolH->setLayoutHint( OFX::eLayoutHintNoNewLine ); //line is not finished
boolH->setParent(groupHSL);
//Hue multiplier
OFX::DoubleParamDescriptor* hueMultiplier = desc.defineDoubleParam(kMultiplierHue);
hueMultiplier->setLabel(kMultiplierLabel);
hueMultiplier->setHint("Determinate curve from selection precision.");
hueMultiplier->setRange(1, 1000);
hueMultiplier->setDisplayRange(0,5);
hueMultiplier->setDefault(1);
hueMultiplier->setParent(groupHSL);
OFX::BooleanParamDescriptor* boolS = desc.defineBooleanParam(kBoolSaturation);
boolS->setDefault(true);
boolS->setHint("Activate Saturation channel");
boolS->setLayoutHint( OFX::eLayoutHintNoNewLine ); //line is not finished
boolS->setParent(groupHSL);
//Saturation multiplier
OFX::DoubleParamDescriptor* saturationMultiplier = desc.defineDoubleParam(kMultiplierSaturation);
saturationMultiplier->setLabel(kMultiplierLabel);
saturationMultiplier->setHint("Determinate curve from selection precision.");
//.........这里部分代码省略.........