Skip to content

Class organization

Otto Link edited this page Apr 11, 2024 · 14 revisions

Namespace(s)

flowchart LR
    git-hmap(["otto-link/HighMap"]) --> hmap

    git-gnode(["otto-link/GNode"]) --> gnode
    
    git-hesiod(["otto-link/Hesiod"]) --> hesiod
    hesiod --> serialization
    hesiod --> cnode
    hesiod --> attribute
    hesiod --> vnode
    hesiod --> gui
Loading

Node graph classes

---
title: QtNodes-based
---
classDiagram
    class NodeDelegateModel["QtNodes::NodeDelegateModel"]

    class DataFlowGraphModel["QtNodes::DataFlowGraphModel"] {
        - std::shared_ptr<NodeDelegateModelRegistry> _registry
        - std::unordered_map<NodeId, std::unique_ptr<NodeDelegateModel>> _models
    }

    class DataFlowGraphicsScene["QtNodes::DataFlowGraphicsScene"]

    class NodeEditorWidget {
        - std::unique_ptr<hesiod::HsdDataFlowGraphModel> model
        - std::unique_ptr<QtNodes::DataFlowGraphicsScene> scene
    }

    QMainWindow <|-- MainWindow
    MainWindow "1" *-- "1" ModelConfig
    MainWindow "1" *-- "1" Viewer2dWidget
    MainWindow "1" *-- "1" Viewer3dWidget
    MainWindow "1" *-- "1" NodeSettingsWidget
    MainWindow "1" *-- "1" NodeEditorWidget

    %% QWidget <|-- Viewer2dWidget

    %% QWidget <|-- Viewer3dWidget
    Viewer3dWidget "1" *-- "1" HmapGLViewer
    %% QOpenGLWidget <|-- HmapGLViewer

    %% QWidget <|-- NodeEditorWidget

    NodeEditorWidget "1" *-- "1" HsdDataFlowGraphModel
    NodeEditorWidget "1" *-- "1" DataFlowGraphicsScene
    DataFlowGraphModel <|-- HsdDataFlowGraphModel
    DataFlowGraphModel "1" *-- "*" NodeDelegateModel
    %% AbstractGraphModel <-- DataFlowGraphModel

    DataFlowGraphicsScene "1" o-- "1" DataFlowGraphModel



    NodeDelegateModel <|-- BaseNode
    BaseNode <|-- NoiseFbm
    BaseNode <|-- GammaCorrection

    %% BaseNode "1" *-- "1" Preview
    %% BaseNode "1" *-- "1" QMenu
Loading
classDiagram
    class Tree {
        + std::string id
        - std::map<...> nodes_map
        + update()
    }
    class ViewTree {
    }
    class Node {
        + std::string id
        + int hash_id
        # std::string node_type
        - std::map<...> ports
    }
    class Port {
        + std::string id
        + int hash_id
    }

    class ControlNode {
        - std::map<...> attr
    }
    class Filter {
        + compute()
    }
%%    class Gradient {
%%        + compute()
%%    }
    class LinkInfos {
%%        + std::string node_id_from
%%        + std::string port_id_from
%%        + int         port_hash_id_from
%%        + std::string node_id_to
%%        + std::string port_id_to
%%        + int         port_hash_id_to
    }

    Node "1" *-- "*" Port

    Node <|-- ControlNode
    ControlNode "1" *-- "*" Attribute
    
    Attribute <|-- BoolAttribute
    Attribute <|-- FloatAttribute

    Tree <|-- ControlTree
    Tree "1" *-- "*" Node

    ControlTree <-- ViewTree
    ViewTree "1" *-- "*" LinkInfos

%%    ControlNode <|-- Gradient
    ControlNode <|-- Filter
    Filter <|-- Clamp
    Filter <|-- Remap

    ControlNode <|-- ViewNode

%%    ViewNode <-- ViewGradient
%%    Gradient <-- ViewGradient

    ViewNode <|-- ViewClamp
    Clamp <|-- ViewClamp

    ViewNode <|-- ViewRemap
    Remap <|-- ViewRemap

    style Tree fill:#f9f
    style Node fill:#f9f
    style Port fill:#f9f

    style ControlTree fill:#aff
    style ControlNode fill:#aff
    style Filter fill:#aff
    style Clamp fill:#aff
    style Gradient fill:#aff
    style Remap fill:#aff
    
    style ViewTree fill:#ffa
    style ViewNode fill:#ffa
    style LinkInfos fill:#ffa
    style ViewClamp fill:#ffa
    style ViewGradient fill:#ffa
    style ViewRemap fill:#ffa
    
    style Attribute fill:#ddd
    style BoolAttribute fill:#ddd
    style FloatAttribute fill:#ddd
Loading

Window system

classDiagram
    MainWindow
    MainWindow "1" *-- "1" WindowManager

    WindowManager "1" *-- "*" Window
    Window <|-- NodeEditor
    Window <|-- NodeList
    Window <|-- NodeSettings
    Window <|-- Viewer2D    
    Window <|-- Viewer3D
Loading

Clone this wiki locally