コード例 #1
0
ファイル: AnimationModule.cpp プロジェクト: kcotugno/Natron
TableItemAnimPtr
AnimationModule::findTableItemAnim(const KnobTableItemPtr& item) const
{
    KnobItemsTablePtr model = item->getModel();
    if (!model) {
        return TableItemAnimPtr();
    }
    for (std::list<NodeAnimPtr>::iterator it = _imp->nodes.begin(); it != _imp->nodes.end(); ++it) {
        const std::vector<TableItemAnimPtr>& toplevelItems = (*it)->getTopLevelItems();
        for (std::size_t i = 0; i < toplevelItems.size(); ++i) {
            TableItemAnimPtr r = findTableItemAnimRecursive(toplevelItems[i], item);
            if (r) {
                return r;
            }
        }
    }
    return TableItemAnimPtr();

}
コード例 #2
0
ファイル: AnimationModule.cpp プロジェクト: kcotugno/Natron
static TableItemAnimPtr findTableItemAnimRecursive(const TableItemAnimPtr& anim, const KnobTableItemPtr& item)
{
    if (anim->getInternalItem() == item) {
        return anim;
    }
    const std::vector<TableItemAnimPtr>& children = anim->getChildren();
    for (std::size_t i = 0; i < children.size(); ++i) {
        TableItemAnimPtr r = findTableItemAnimRecursive(children[i], item);
        if (r) {
            return r;
        }
    }
    return TableItemAnimPtr();
}
コード例 #3
0
ファイル: NodeAnim.cpp プロジェクト: azerupi/Natron
TableItemAnimPtr
NodeAnim::findTableItem(const KnobTableItemPtr& item) const
{
    for (std::size_t i = 0; i < _imp->topLevelTableItems.size(); ++i) {
        if (_imp->topLevelTableItems[i]->getInternalItem() == item) {
            return _imp->topLevelTableItems[i];
        } else {
            TableItemAnimPtr foundChild = _imp->topLevelTableItems[i]->findTableItem(item);
            if (foundChild) {
                return foundChild;
            }
        }
    }
    return TableItemAnimPtr();
}