void NoiseExamplePluginFactory::describeInContext(OFX::ImageEffectDescriptor &desc, ContextEnum context) { ClipDescriptor *dstClip = desc.defineClip("Output"); dstClip->addSupportedComponent(ePixelComponentRGBA); dstClip->addSupportedComponent(ePixelComponentAlpha); dstClip->setSupportsTiles(true); dstClip->setFieldExtraction(eFieldExtractSingle); DoubleParamDescriptor *param = desc.defineDoubleParam("Noise"); param->setLabels("noise", "noise", "noise"); param->setScriptName("noise"); param->setHint("How much noise to make."); param->setDefault(0.2); param->setRange(0, 10); param->setIncrement(0.1); param->setDisplayRange(0, 1); param->setAnimates(true); // can animate param->setDoubleType(eDoubleTypeScale); PageParamDescriptor *page = desc.definePageParam("Controls"); page->addChild(*param); }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void Jpeg2000ReaderPluginFactory::describeInContext( OFX::ImageEffectDescriptor &desc, OFX::EContext context ) { OFX::ClipDescriptor* dstClip = desc.defineClip( kOfxImageEffectOutputClipName ); dstClip->addSupportedComponent( OFX::ePixelComponentRGBA ); dstClip->addSupportedComponent( OFX::ePixelComponentRGB ); dstClip->addSupportedComponent( OFX::ePixelComponentAlpha ); dstClip->setSupportsTiles( kSupportTiles ); describeReaderParamsInContext( desc, context ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void TextPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleText", "Text", "Text" ); desc.setPluginGrouping( "tuttle/image/generator" ); // add the supported contexts desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setRenderThreadSafety( OFX::eRenderFullySafe ); desc.setSupportsTiles( kSupportTiles ); desc.setSupportsMultiResolution( false ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void TimeShiftPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleTimeShift", "TimeShift", "TimeShift" ); desc.setPluginGrouping( "tuttle/image/process/time" ); // add the supported contexts desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setTemporalClipAccess( true ); desc.setSupportsTiles( true ); desc.setRenderThreadSafety( OFX::eRenderFullySafe ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void ViewerPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleViewer", "Viewer", "Viewer" ); desc.setPluginGrouping( "tuttle/image/io" ); desc.setDescription( kViewerHelp ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); desc.setRenderThreadSafety( OFX::eRenderFullySafe ); }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void ConvolutionPluginFactory::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::Int2DParamDescriptor* size = desc.defineInt2DParam( kParamSize ); size->setLabel( "Size" ); size->setDefault( 3, 3 ); // size->setIncrement( 2, 2 ); size->setRange( 3, 3, kParamSizeMax, kParamSizeMax ); OFX::ChoiceParamDescriptor* border = desc.defineChoiceParam( kParamBorder ); border->setLabel( "Border" ); border->appendOption( kParamBorderMirror ); border->appendOption( kParamBorderConstant ); border->appendOption( kParamBorderBlack ); border->appendOption( kParamBorderPadded ); for( unsigned int y = 0; y < kParamSizeMax; ++y ) { for( unsigned int x = 0; x < kParamSizeMax; ++x ) { const std::string name( getCoefName( y, x ) ); OFX::DoubleParamDescriptor* coef = desc.defineDoubleParam( name ); coef->setLabel( name ); coef->setDisplayRange( -10.0, 10.0 ); coef->setDefault( 0.0 ); } } }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void ColorTransferPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleColorTransfer", "ColorTransfer", "ColorTransfer" ); desc.setPluginGrouping( "tuttle/image/process/color" ); desc.setDescription( "ColorTransfer\n" "\n" "The standard usage of this node is to impose one image's color characteristics to another.\n" "If srcRef input clip is not the same as the source clip, " "it applies the tranformation from srcRef to dstRef on the source clip.\n" "\n" "Warning: pixel values <= 0.0001 will be clamp, because these values " "are undefined in the colorspace used for the transformation.\n" "\n" "Technically, the node modify the statistics of the image in a particular colorspace lambda-alpha-beta.\n" "This colorspace, created by Rederman and al., is closed to the human perception and minimizes " "the correlation between channels for many natural scenes.\n" "However, a choice parameter allows the user to choose in which colorspace the color transfer should be processed: " "LMS, lambda-alpha-beta or original/source colorspace. \n" "According to the chosen colorspace, result varies (more or less colorfull, or dense...).\n\n" "For more details see the article:\n" "'Color Transfert between images' by Erik Reinhard, Michael Ashikhmin, Bruce Gooch and Peter Shirley. University of Utah.\n" ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( true ); desc.setRenderThreadSafety( OFX::eRenderInstanceSafe ); }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void Move2DPluginFactory::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::Double2DParamDescriptor* translation = desc.defineDouble2DParam( kParamTranslation ); translation->setLabel( "Translation" ); translation->setDefault( 0, 0 ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void ImageStatisticsPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleImageStatistics", "ImageStatistics", "Image statistics" ); desc.setPluginGrouping( "tuttle/param/analysis" ); // add the supported contexts desc.addSupportedContext( OFX::eContextGeneral ); desc.addSupportedContext( OFX::eContextFilter ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsMultiResolution( false ); desc.setSupportsTiles( kSupportTiles ); desc.setOverlayInteractDescriptor( new OFX::DefaultEffectOverlayWrap<ImageStatisticsEffectOverlayDescriptor>() ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void CropPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleCrop", "Crop", "Image crop" ); desc.setPluginGrouping( "tuttle/image/process/geometry" ); // add the supported contexts desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); desc.setRenderThreadSafety( OFX::eRenderFullySafe ); desc.setOverlayInteractDescriptor( new OFX::DefaultEffectOverlayWrap<CropMarginOverlay>() ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void ColorSpacePluginFactory::describe(OFX::ImageEffectDescriptor& desc) { desc.setLabels("TuttleColorSpace", "ColorSpace", "Color convertions"); desc.setPluginGrouping("tuttle/image/process/color"); desc.setDescription("ColorSpace\n" "Plugin is used to apply colorspace transformations on images."); // add the supported contexts desc.addSupportedContext(OFX::eContextFilter); desc.addSupportedContext(OFX::eContextGeneral); // add supported pixel depths desc.addSupportedBitDepth(OFX::eBitDepthUByte); desc.addSupportedBitDepth(OFX::eBitDepthUShort); desc.addSupportedBitDepth(OFX::eBitDepthFloat); // plugin flags desc.setSupportsTiles(kSupportTiles); desc.setRenderThreadSafety(OFX::eRenderFullySafe); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void ColorTransformPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleColorTransform", "ColorTransform", "ColorTransform" ); desc.setPluginGrouping( "tuttle/image/process/color" ); desc.setDescription( "Plugin under early development." ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); desc.setRenderThreadSafety( OFX::eRenderFullySafe ); }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void ColorBarsPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc, OFX::EContext context ) { describeGeneratorParamsInContext( desc, context ); OFX::ChoiceParamDescriptor* levels = desc.defineChoiceParam( kColorBarsLevels ); levels->setLabel( "Levels" ); levels->appendOption( kColorBarsLevels100 ); levels->appendOption( kColorBarsLevels75 ); levels->setDefault( eColorBarsLevels75 ); }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void Jpeg2000WriterPluginFactory::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 ); describeWriterParamsInContext( desc, context ); OFX::ChoiceParamDescriptor* bitDepth = static_cast<OFX::ChoiceParamDescriptor*>( desc.getParamDescriptor( kTuttlePluginBitDepth ) ); bitDepth->resetOptions(); bitDepth->appendOption( kTuttlePluginBitDepth8 ); bitDepth->appendOption( kTuttlePluginBitDepth12 ); bitDepth->appendOption( kTuttlePluginBitDepth16 ); #ifndef TUTTLE_PRODUCTION bitDepth->appendOption( kTuttlePluginBitDepth32 ); #endif bitDepth->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); bitDepth->setDefault( eTuttlePluginBitDepth8 ); OFX::BooleanParamDescriptor* lossless = desc.defineBooleanParam( kParamLossless ); lossless->setLabel( "lossless" ); lossless->setHint("When no cinema profile is selected, set compression to lossless."); lossless->setDefault( false ); OFX::ChoiceParamDescriptor* cineProfil = desc.defineChoiceParam( kParamCinemaProfil ); cineProfil->appendOption( kParamCinemaProfilNoDigit ); cineProfil->appendOption( kParamCinemaProfil2k24fps ); cineProfil->appendOption( kParamCinemaProfil2k48fps ); cineProfil->appendOption( kParamCinemaProfil4k24fps ); cineProfil->setDefault( 0 ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void PrintPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttlePrint", "TuttlePrint", "TuttlePrint" ); desc.setPluginGrouping( "tuttle/image/process/color" ); desc.setDescription( "TuttlePrint\n" "Allows to print a part of the image." ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); desc.setRenderThreadSafety( OFX::eRenderFullySafe ); }
void describeReaderParamsInContext( OFX::ImageEffectDescriptor& desc, OFX::EContext context ) { OFX::StringParamDescriptor* filename = desc.defineStringParam( kTuttlePluginFilename ); filename->setLabel( kTuttlePluginFilenameLabel ); filename->setStringType( OFX::eStringTypeFilePath ); filename->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); desc.addClipPreferencesSlaveParam( *filename ); OFX::ChoiceParamDescriptor* component = desc.defineChoiceParam( kTuttlePluginChannel ); component->appendOption( kTuttlePluginChannelAuto ); component->appendOption( kTuttlePluginChannelGray ); component->appendOption( kTuttlePluginChannelRGB ); component->appendOption( kTuttlePluginChannelRGBA ); component->setLabel( kTuttlePluginChannelLabel ); component->setDefault( eParamReaderChannelAuto ); OFX::ChoiceParamDescriptor* explicitConversion = desc.defineChoiceParam( kTuttlePluginBitDepth ); explicitConversion->setLabel( kTuttlePluginBitDepthLabel ); explicitConversion->appendOption( kTuttlePluginBitDepthAuto ); explicitConversion->appendOption( kTuttlePluginBitDepth8 ); explicitConversion->appendOption( kTuttlePluginBitDepth16 ); explicitConversion->appendOption( kTuttlePluginBitDepth32f ); explicitConversion->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); explicitConversion->setAnimates( false ); desc.addClipPreferencesSlaveParam( *explicitConversion ); if( OFX::getImageEffectHostDescription()->supportsMultipleClipDepths ) { explicitConversion->setDefault( 0 ); } else { explicitConversion->setIsSecret( true ); explicitConversion->setDefault( static_cast<int>( OFX::getImageEffectHostDescription()->getPixelDepth() ) ); } }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void LensDistortPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { // basic labels desc.setLabels( "TuttleLensDistort", "LensDistort", "Create or correct lens distortion." ); desc.setPluginGrouping( "tuttle/image/process/geometry" ); // add the supported contexts desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // set a few flags desc.setRenderThreadSafety( OFX::eRenderFullySafe ); desc.setSupportsTiles( true ); desc.setOverlayInteractDescriptor( new OFX::DefaultEffectOverlayWrap<LensDistortOverlayDescriptor>() ); }
/** @brief describe a double param */ void describe3DDoubleParam(OFX::ImageEffectDescriptor &desc, const std::string &name, DoubleTypeEnum doubleType, double min, double max, PageParamDescriptor *page) { Double3DParamDescriptor *param = desc.defineDouble3DParam(name); param->setLabels(name, name, name); param->setScriptName(name); param->setHint("A 3D double parameter"); param->setDefault(0, 0, 0); param->setRange(min, min, min, max, max, max); param->setDisplayRange(min, min, min, max, max, max); param->setDoubleType(doubleType); page->addChild(*param); }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void ColorWheelPluginFactory::describeInContext( OFX::ImageEffectDescriptor& desc, OFX::EContext context ) { describeGeneratorParamsInContext( desc, context ); OFX::ChoiceParamDescriptor* mode = desc.defineChoiceParam( kColorWheelMode ); mode->setLabel( "Type" ); mode->setHint( "Select mode for the color wheel." ); mode->appendOption( kColorWheelModeWhite ); mode->appendOption( kColorWheelModeBlack ); mode->appendOption( kColorWheelModeRainbow ); mode->setDefault( 0 ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void LutPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleLut", "Lut", "Color transformation through CLUT file" ); desc.setPluginGrouping( "tuttle/image/process/color" ); desc.setDescription( "Image Luter is used to lut components of an image." ); // add the supported contexts desc.addSupportedContext( OFX::eContextGeneral ); desc.addSupportedContext( OFX::eContextFilter ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); desc.setSupportsTiles( kSupportTiles ); //desc.setRenderThreadSafety( OFX::eRenderFullySafe ); //< @todo tuttle: remove process data from LutPlugin }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void ComponentPluginFactory::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* outTo = desc.defineChoiceParam( kParamTo ); outTo->setLabel( kParamToLabel ); outTo->appendOption( kConvertToGray ); outTo->appendOption( kConvertToRGB ); outTo->appendOption( kConvertToRGBA ); outTo->setDefault( eConvertToRGBA ); OFX::ChoiceParamDescriptor* outGray = desc.defineChoiceParam( kParamToGray ); outGray->setLabel( kParamToGrayLabel ); outGray->appendOption( kConvertToGrayMean ); outGray->appendOption( kConvertToGrayRec601 ); outGray->appendOption( kConvertToGrayRec709 ); outGray->appendOption( kConvertToGraySelectRed ); outGray->appendOption( kConvertToGraySelectGreen ); outGray->appendOption( kConvertToGraySelectBlue ); outGray->appendOption( kConvertToGraySelectAlpha ); outGray->setDefault( 3 ); // terry::color::components::eConvertToGrayRec709 OFX::BooleanParamDescriptor* outPremult = desc.defineBooleanParam( kParamPremutliplied ); outPremult->setLabel( kParamPremutlipliedLabel ); outPremult->setDefault( false ); }
/** @brief The basic describe function, passed a plugin descriptor */ void WriteOIIOPluginFactory::describe(OFX::ImageEffectDescriptor &desc) { GenericWriterDescribe(desc); // basic labels desc.setLabels(kPluginName, kPluginName, kPluginName); desc.setPluginDescription("Write images using OpenImageIO.\n\n" "OpenImageIO supports writing the following file formats:\n" "BMP (*.bmp)\n" "Cineon (*.cin)\n" //"Direct Draw Surface (*.dds)\n" "DPX (*.dpx)\n" //"Field3D (*.f3d)\n" "FITS (*.fits)\n" "HDR/RGBE (*.hdr)\n" "Icon (*.ico)\n" "IFF (*.iff)\n" "JPEG (*.jpg *.jpe *.jpeg *.jif *.jfif *.jfi)\n" "JPEG-2000 (*.jp2 *.j2k)\n" "OpenEXR (*.exr)\n" "Portable Network Graphics (*.png)\n" "PNM / Netpbm (*.pbm *.pgm *.ppm)\n" "PSD (*.psd *.pdd *.psb)\n" //"Ptex (*.ptex)\n" "RLA (*.rla)\n" "SGI (*.sgi *.rgb *.rgba *.bw *.int *.inta)\n" "Softimage PIC (*.pic)\n" "Targa (*.tga *.tpic)\n" "TIFF (*.tif *.tiff *.tx *.env *.sm *.vsm)\n" "Zfile (*.zfile)\n\n" + oiio_versions()); #ifdef OFX_EXTENSIONS_TUTTLE const char* extensions[] = { "bmp", "cin", /*"dds",*/ "dpx", /*"f3d",*/ "fits", "hdr", "ico", "iff", "jpg", "jpe", "jpeg", "jif", "jfif", "jfi", "jp2", "j2k", "exr", "png", "pbm", "pgm", "ppm", "psd", "pdd", "psb", /*"ptex",*/ "rla", "sgi", "rgb", "rgba", "bw", "int", "inta", "pic", "tga", "tpic", "tif", "tiff", "tx", "env", "sm", "vsm", "zfile", NULL }; desc.addSupportedExtensions(extensions); desc.setPluginEvaluation(50); #endif }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void PinningPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttlePinning", "Pinning", "Pinning" ); desc.setPluginGrouping( "tuttle/image/process/geometry" ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); desc.setOverlayInteractDescriptor( new OFX::DefaultEffectOverlayWrap<PinningEffectOverlayDescriptor > ( ) ); }
void describeWriterParamsInContext( OFX::ImageEffectDescriptor& desc, OFX::EContext context ) { OFX::StringParamDescriptor* filename = desc.defineStringParam( kTuttlePluginFilename ); filename->setLabel( kTuttlePluginFilenameLabel ); filename->setStringType( OFX::eStringTypeFilePath ); filename->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); desc.addClipPreferencesSlaveParam( *filename ); OFX::ChoiceParamDescriptor* channel = desc.defineChoiceParam( kTuttlePluginChannel ); channel->setLabel( kTuttlePluginChannelLabel ); channel->appendOption( kTuttlePluginChannelAuto ); channel->appendOption( kTuttlePluginChannelGray ); channel->appendOption( kTuttlePluginChannelRGB ); channel->appendOption( kTuttlePluginChannelRGBA ); channel->setDefault( 0 ); OFX::ChoiceParamDescriptor* bitDepth = desc.defineChoiceParam( kTuttlePluginBitDepth ); bitDepth->setLabel( kTuttlePluginBitDepthLabel ); bitDepth->appendOption( kTuttlePluginBitDepth8 ); bitDepth->appendOption( kTuttlePluginBitDepth16 ); bitDepth->setDefault( 0 ); OFX::BooleanParamDescriptor* premult = desc.defineBooleanParam( kParamPremultiplied ); premult->setLabel( kParamPremultipliedLabel ); premult->setDefault( false ); OFX::PushButtonParamDescriptor* render = desc.definePushButtonParam( kParamWriterRender ); render->setLabels( "Render", "Render", "Render step" ); render->setHint("Force render (writing)"); OFX::BooleanParamDescriptor* renderAlways = desc.defineBooleanParam( kParamWriterRenderAlways ); renderAlways->setLabel( "Render always" ); // renderAlways->setDefault( false ); renderAlways->setDefault( true ); // because tuttle is not declared as a background renderer OFX::IntParamDescriptor* forceNewRender = desc.defineIntParam( kParamWriterForceNewRender ); forceNewRender->setLabel( "Force new render" ); forceNewRender->setEnabled( false ); forceNewRender->setIsSecret( true ); forceNewRender->setIsPersistant( false ); forceNewRender->setAnimates( false ); forceNewRender->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); forceNewRender->setEvaluateOnChange( true ); forceNewRender->setDefault( 0 ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void DiffPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleDiff", "Diff", "Diff" ); desc.setPluginGrouping( "tuttle/param/analysis" ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void PushPixelPluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttlePushPixel", "PushPixel", "Distort an image based on mask gradient." ); desc.setPluginGrouping( "tuttle/image/process/geometry" ); desc.setDescription( "Distort an image based on mask gradient." ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); }
/** * @brief Function called to describe the plugin main features. * @param[in, out] desc Effect descriptor */ void SwscalePluginFactory::describe( OFX::ImageEffectDescriptor& desc ) { desc.setLabels( "TuttleSwscale", "Swscale", "Swscale" ); desc.setPluginGrouping( "tuttle/image/process/geometry" ); desc.setDescription( "SwScale: fast resizing plugin\n" "Plugin using swscale library from FFmpeg.\n" "Warning: Could not run with floating point images and\n" " RGBA data different of 8 bit (32bpp).\n" ); // add the supported contexts, only filter at the moment desc.addSupportedContext( OFX::eContextFilter ); desc.addSupportedContext( OFX::eContextGeneral ); // add supported pixel depths desc.addSupportedBitDepth( OFX::eBitDepthUByte ); desc.addSupportedBitDepth( OFX::eBitDepthUShort ); //desc.addSupportedBitDepth( OFX::eBitDepthFloat ); // plugin flags desc.setSupportsTiles( kSupportTiles ); desc.setRenderThreadSafety( OFX::eRenderFullySafe ); }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void DPXWriterPluginFactory::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 ); // Controls OFX::StringParamDescriptor* filename = desc.defineStringParam( kParamWriterFilename ); filename->setLabel( "Filename" ); filename->setStringType( OFX::eStringTypeFilePath ); filename->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); desc.addClipPreferencesSlaveParam( *filename ); OFX::ChoiceParamDescriptor* componentsType = desc.defineChoiceParam( kParamComponentsType ); componentsType->setLabel( "Components type" ); componentsType->appendOption( "rgb" ); componentsType->appendOption( "rgba" ); componentsType->appendOption( "abgr" ); componentsType->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); componentsType->setDefault( 1 ); OFX::ChoiceParamDescriptor* bitDepth = desc.defineChoiceParam( kParamWriterBitDepth ); bitDepth->setLabel( "Bit depth" ); bitDepth->appendOption( kTuttlePluginBitDepth8 ); bitDepth->appendOption( kTuttlePluginBitDepth10 ); bitDepth->appendOption( kTuttlePluginBitDepth12 ); bitDepth->appendOption( kTuttlePluginBitDepth16 ); bitDepth->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); bitDepth->setDefault( 3 ); OFX::BooleanParamDescriptor* compressed = desc.defineBooleanParam( kParamCompressed ); compressed->setLabel( "Remove unused bits (bit streaming)" ); compressed->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); compressed->setDefault( false ); describeWriterParamsInContext( desc, context ); }
void CImgFilterPluginHelperBase::describeInContextEnd(OFX::ImageEffectDescriptor &desc, OFX::ContextEnum /*context*/, OFX::PageParamDescriptor* page) { ofxsPremultDescribeParams(desc, page); ofxsMaskMixDescribeParams(desc, page); { OFX::BooleanParamDescriptor* param = desc.defineBooleanParam(kParamPremultChanged); param->setDefault(false); param->setIsSecret(true); param->setAnimates(false); param->setEvaluateOnChange(false); if (page) { page->addChild(*param); } } }
/** * @brief Function called to describe the plugin controls and features. * @param[in, out] desc Effect descriptor * @param[in] context Application context */ void PngWriterPluginFactory::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::StringParamDescriptor* filename = desc.defineStringParam( kParamWriterFilename ); filename->setLabel( "Filename" ); filename->setStringType( OFX::eStringTypeFilePath ); filename->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); desc.addClipPreferencesSlaveParam( *filename ); OFX::ChoiceParamDescriptor* components = desc.defineChoiceParam( kParamOutputComponents ); components->setLabel( "Components" ); components->appendOption( kParamOutputComponentsRGBA ); components->appendOption( kParamOutputComponentsRGB ); components->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); components->setDefault( 0 ); OFX::ChoiceParamDescriptor* bitDepth = desc.defineChoiceParam( kParamWriterBitDepth ); bitDepth->setLabel( "Bit depth" ); bitDepth->appendOption( kTuttlePluginBitDepth8 ); bitDepth->appendOption( kTuttlePluginBitDepth16 ); bitDepth->setCacheInvalidation( OFX::eCacheInvalidateValueAll ); bitDepth->setDefault( 1 ); describeWriterParamsInContext( desc, context ); }