void SwitchPluginFactory::describe(OFX::ImageEffectDescriptor &desc) { // basic labels desc.setLabels(kPluginName, kPluginName, kPluginName); desc.setPluginGrouping(kPluginGrouping); desc.setPluginDescription(kPluginDescription); // add the supported contexts desc.addSupportedContext(eContextGeneral); desc.addSupportedContext(eContextFilter); // add supported pixel depths desc.addSupportedBitDepth(eBitDepthUByte); desc.addSupportedBitDepth(eBitDepthUShort); desc.addSupportedBitDepth(eBitDepthFloat); // set a few flags desc.setSingleInstance(false); desc.setHostFrameThreading(false); desc.setSupportsMultiResolution(true); desc.setSupportsTiles(true); desc.setTemporalClipAccess(false); desc.setRenderTwiceAlways(false); desc.setSupportsMultipleClipPARs(false); #ifdef OFX_EXTENSIONS_NUKE // Enable transform by the host. // It is only possible for transforms which can be represented as a 3x3 matrix. desc.setCanTransform(true); #endif }
void SwitchPluginFactory::describeInContext(OFX::ImageEffectDescriptor &desc, OFX::ContextEnum context) { // Source clip only in the filter context // create the mandated source clip for (int i = 0; i < kSwitchPluginSourceClipCount; ++i) { std::stringstream s; s << i; ClipDescriptor *srcClip = desc.defineClip(s.str()); srcClip->addSupportedComponent(ePixelComponentRGB); srcClip->addSupportedComponent(ePixelComponentRGBA); srcClip->addSupportedComponent(ePixelComponentAlpha); srcClip->setTemporalClipAccess(false); srcClip->setSupportsTiles(true); srcClip->setIsMask(false); if (i >= 2) { srcClip->setOptional(true); } } // create the mandated output clip ClipDescriptor *dstClip = desc.defineClip(kOfxImageEffectOutputClipName); dstClip->addSupportedComponent(ePixelComponentRGB); dstClip->addSupportedComponent(ePixelComponentRGBA); dstClip->addSupportedComponent(ePixelComponentAlpha); dstClip->setSupportsTiles(true); // make some pages and to things in PageParamDescriptor *page = desc.definePageParam("Controls"); IntParamDescriptor *which = desc.defineIntParam(kSwitchPluginParamWhich); which->setLabels(kSwitchPluginParamWhichLabel, kSwitchPluginParamWhichLabel, kSwitchPluginParamWhichLabel); which->setHint(kSwitchPluginParamWhichHint); which->setDefault(0); which->setRange(0, kSwitchPluginSourceClipCount); which->setDisplayRange(0, 1); which->setAnimates(true); page->addChild(*which); #ifdef OFX_EXTENSIONS_NUKE // Enable transform by the host. // It is only possible for transforms which can be represented as a 3x3 matrix. desc.setCanTransform(true); #endif }