@brief ctor */
| 363 | public: |
| 364 | /** @brief ctor */ |
| 365 | ColorMatrixPlugin(OfxImageEffectHandle handle) |
| 366 | : ImageEffect(handle) |
| 367 | , _dstClip(NULL) |
| 368 | , _srcClip(NULL) |
| 369 | , _maskClip(NULL) |
| 370 | , _premultChanged(NULL) |
| 371 | { |
| 372 | |
| 373 | _dstClip = fetchClip(kOfxImageEffectOutputClipName); |
| 374 | assert( _dstClip && (!_dstClip->isConnected() || _dstClip->getPixelComponents() == ePixelComponentRGB || |
| 375 | _dstClip->getPixelComponents() == ePixelComponentRGBA || |
| 376 | _dstClip->getPixelComponents() == ePixelComponentAlpha) ); |
| 377 | _srcClip = getContext() == eContextGenerator ? NULL : fetchClip(kOfxImageEffectSimpleSourceClipName); |
| 378 | assert( (!_srcClip && getContext() == eContextGenerator) || |
| 379 | ( _srcClip && (!_srcClip->isConnected() || _srcClip->getPixelComponents() == ePixelComponentRGB || |
| 380 | _srcClip->getPixelComponents() == ePixelComponentRGBA || |
| 381 | _srcClip->getPixelComponents() == ePixelComponentAlpha) ) ); |
| 382 | _maskClip = fetchClip(getContext() == eContextPaint ? "Brush" : "Mask"); |
| 383 | assert(!_maskClip || !_maskClip->isConnected() || _maskClip->getPixelComponents() == ePixelComponentAlpha); |
| 384 | _processR = fetchBooleanParam(kParamProcessR); |
| 385 | _processG = fetchBooleanParam(kParamProcessG); |
| 386 | _processB = fetchBooleanParam(kParamProcessB); |
| 387 | _processA = fetchBooleanParam(kParamProcessA); |
| 388 | assert(_processR && _processG && _processB && _processA); |
| 389 | _outputRed = fetchRGBAParam(kParamOutputRedName); |
| 390 | _outputGreen = fetchRGBAParam(kParamOutputGreenName); |
| 391 | _outputBlue = fetchRGBAParam(kParamOutputBlueName); |
| 392 | _outputAlpha = fetchRGBAParam(kParamOutputAlphaName); |
| 393 | _clampBlack = fetchBooleanParam(kParamClampBlack); |
| 394 | _clampWhite = fetchBooleanParam(kParamClampWhite); |
| 395 | assert(_outputRed && _outputGreen && _outputBlue && _outputAlpha && _clampBlack && _clampWhite); |
| 396 | _premult = fetchBooleanParam(kParamPremult); |
| 397 | _premultChannel = fetchChoiceParam(kParamPremultChannel); |
| 398 | assert(_premult && _premultChannel); |
| 399 | _mix = fetchDoubleParam(kParamMix); |
| 400 | _maskApply = ( ofxsMaskIsAlwaysConnected( OFX::getImageEffectHostDescription() ) && paramExists(kParamMaskApply) ) ? fetchBooleanParam(kParamMaskApply) : 0; |
| 401 | _maskInvert = fetchBooleanParam(kParamMaskInvert); |
| 402 | assert(_mix && _maskInvert); |
| 403 | _premultChanged = fetchBooleanParam(kParamPremultChanged); |
| 404 | assert(_premultChanged); |
| 405 | } |
| 406 | |
| 407 | private: |
| 408 | /* Override the render */ |
nothing calls this directly
no test coverage detected