| 597 | |
| 598 | mDeclarePluginFactory(CopyRectanglePluginFactory, {ofxsThreadSuiteCheck();}, {}); |
| 599 | void |
| 600 | CopyRectanglePluginFactory::describe(ImageEffectDescriptor &desc) |
| 601 | { |
| 602 | // basic labels |
| 603 | desc.setLabel(kPluginName); |
| 604 | desc.setPluginGrouping(kPluginGrouping); |
| 605 | desc.setPluginDescription(kPluginDescription); |
| 606 | |
| 607 | desc.addSupportedContext(eContextGeneral); |
| 608 | |
| 609 | desc.addSupportedBitDepth(eBitDepthUByte); |
| 610 | desc.addSupportedBitDepth(eBitDepthUShort); |
| 611 | desc.addSupportedBitDepth(eBitDepthFloat); |
| 612 | |
| 613 | |
| 614 | desc.setSingleInstance(false); |
| 615 | desc.setHostFrameThreading(false); |
| 616 | desc.setTemporalClipAccess(false); |
| 617 | desc.setRenderTwiceAlways(true); |
| 618 | desc.setSupportsMultipleClipPARs(kSupportsMultipleClipPARs); |
| 619 | desc.setSupportsMultipleClipDepths(kSupportsMultipleClipDepths); |
| 620 | desc.setRenderThreadSafety(kRenderThreadSafety); |
| 621 | |
| 622 | desc.setSupportsTiles(kSupportsTiles); |
| 623 | |
| 624 | // in order to support multiresolution, render() must take into account the pixelaspectratio and the renderscale |
| 625 | // and scale the transform appropriately. |
| 626 | // All other functions are usually in canonical coordinates. |
| 627 | desc.setSupportsMultiResolution(kSupportsMultiResolution); |
| 628 | desc.setOverlayInteractDescriptor(new RectangleOverlayDescriptor); |
| 629 | |
| 630 | #ifdef OFX_EXTENSIONS_NATRON |
| 631 | desc.setChannelSelector(ePixelComponentNone); // we have our own channel selector |
| 632 | #endif |
| 633 | } |
| 634 | |
| 635 | ImageEffect* |
| 636 | CopyRectanglePluginFactory::createInstance(OfxImageEffectHandle handle, |