예제 #1
0
void activateTargetAndCopySource(ImageOutport& outport, ImageInport& inport, ImageType type) {
    auto outImage = outport.getEditableData();
    auto outImageGL = outImage->getEditableRepresentation<ImageGL>();

    auto inImage = inport.getData();
    auto inImageGL = inImage->getRepresentation<ImageGL>();
    inImageGL->copyRepresentationsTo(outImageGL);

    outImageGL->activateBuffer(type);
}
예제 #2
0
파일: layer.cpp 프로젝트: Ojaswi/inviwo
void Layer::copyRepresentationsTo(Layer* targetLayer) {
    // TODO: And also need to be tested on multiple representations_ such as LayerRAM, LayerDisk
    // TODO: optimize the code

    auto& targets = targetLayer->representations_;
    bool copyDone = false;

    for (auto& sourceElem : representations_) {
        auto sourceRepr = sourceElem.second;
        if (sourceRepr->isValid()) {
            for (auto& targetElem : targets) {
                auto targetRepr = targetElem.second;
                if (typeid(*sourceRepr) == typeid(*targetRepr)) {
                    if (sourceRepr->copyRepresentationsTo(targetRepr.get())) {
                        targetRepr->setValid(true);
                        targetLayer->lastValidRepresentation_ = targetElem.second;
                        copyDone = true;
                    }
                }
            }
        }
    }

    if (!copyDone) {  // Fallback
        ivwAssert(lastValidRepresentation_, "Last valid representation is expected.");
        for (auto& targetElem : targets) targetElem.second->setValid(false);
        targetLayer->createDefaultRepresentation();

        auto clone = std::shared_ptr<LayerRepresentation>(lastValidRepresentation_->clone());
        targetLayer->addRepresentation(clone);
        targetLayer->setDimensions(targetLayer->getDimensions());

        if (lastValidRepresentation_->copyRepresentationsTo(clone.get())) {
            clone->setValid(true);
            targetLayer->lastValidRepresentation_ = clone;
        }
    }
}
예제 #3
0
bool ImageGL::copyRepresentationsTo(DataRepresentation* targetRep) const {
    return copyRepresentationsTo(dynamic_cast<ImageGL*>(targetRep));
}