#include "onf_stepcreatecolorcomposite.h"
ONF_StepCreateColorComposite::ONF_StepCreateColorComposite() : SuperClass()
{
}
QString ONF_StepCreateColorComposite::description() const
{
return tr("Créer une image RVB");
}
QString ONF_StepCreateColorComposite::detailledDescription() const
{
return tr("");
}
QString ONF_StepCreateColorComposite::inputDescription() const
{
return SuperClass::inputDescription() + tr("
");
}
QString ONF_StepCreateColorComposite::outputDescription() const
{
return SuperClass::outputDescription() + tr("
");
}
QString ONF_StepCreateColorComposite::detailsDescription() const
{
return tr("");
}
QString ONF_StepCreateColorComposite::URL() const
{
//return tr("STEP URL HERE");
return SuperClass::URL(); //by default URL of the plugin
}
CT_VirtualAbstractStep* ONF_StepCreateColorComposite::createNewInstance() const
{
return new ONF_StepCreateColorComposite();
}
//////////////////// PROTECTED METHODS //////////////////
void ONF_StepCreateColorComposite::declareInputModels(CT_StepInModelStructureManager& manager)
{
manager.addResult(_inResult, tr("2D Images"));
manager.setZeroOrMoreRootGroup(_inResult, _inZeroOrMoreRootGroup);
manager.addGroup(_inZeroOrMoreRootGroup, _inGroup);
manager.addItem(_inGroup, _inRed, tr("Red band"));
manager.addItem(_inGroup, _inGreen, tr("Green band"));
manager.addItem(_inGroup, _inBlue, tr("Blue band"));
manager.addResult(_inResultDEM, tr("DEM"), "", true);
manager.setZeroOrMoreRootGroup(_inResultDEM, _inZeroOrMoreRootGroupDEM);
manager.addGroup(_inZeroOrMoreRootGroupDEM, _inGroupDEM);
manager.addItem(_inGroupDEM, _inDEM, tr("DEM"));
}
void ONF_StepCreateColorComposite::declareOutputModels(CT_StepOutModelStructureManager& manager)
{
manager.addResultCopy(_inResult);
manager.addItem(_inGroup, _outColorcomposite, tr("Color Composite"));
}
void ONF_StepCreateColorComposite::compute()
{
CT_Image2D* zvalue = nullptr;
for (const CT_Image2D* imageIn : _inDEM.iterateInputs(_inResultDEM))
{
zvalue = const_cast*>(imageIn);
}
// COPIED results browsing
for (CT_StandardItemGroup* grp : _inGroup.iterateOutputs(_inResult))
{
if (isStopped()) {return;}
CT_AbstractImage2D* red = const_cast(grp->singularItem(_inRed));
CT_AbstractImage2D* green = const_cast(grp->singularItem(_inGreen));
CT_AbstractImage2D* blue = const_cast(grp->singularItem(_inBlue));
if (green == nullptr) {green = red;}
if (blue == nullptr) {blue = red;}
if (red != nullptr && green != nullptr && blue != nullptr)
{
CT_ColorComposite* colorComposite = new CT_ColorComposite(red, green, blue, zvalue);
grp->addSingularItem(_outColorcomposite, colorComposite);
}
}
}