1- /* *
2- * This is a minimal implementation of the Simple Sum example
3- */
41#pragma once
52
63#include " ImNodeFlow.h"
74
8- /* The simple sum basic node */
9- class SimpleSum : public ImFlow ::BaseNode
10- {
11-
5+ class SimpleSum : public ImFlow ::BaseNode {
126public:
13- SimpleSum ()
14- {
7+ SimpleSum () {
158 setTitle (" Simple sum" );
169 setStyle (ImFlow::NodeStyle::green ());
1710 ImFlow::BaseNode::addIN<int >(" In" , 0 , ImFlow::ConnectionFilter::SameType ());
18- ImFlow::BaseNode::addOUT<int >(" Out" , nullptr )->behaviour ([this ](){ return getInVal<int >(" In" ) + m_valB; });
11+ ImFlow::BaseNode::addOUT<int >(" Out" , nullptr )->behaviour ([this ]() { return getInVal<int >(" In" ) + m_valB; });
12+ }
13+
14+ void draw () override {
15+ ImGui::SetNextItemWidth (100 .f );
16+ ImGui::InputInt (" ##ValB" , &m_valB);
17+ }
18+
19+ private:
20+ int m_valB = 0 ;
21+ };
22+
23+ class CollapsingNode : public ImFlow ::BaseNode {
24+ public:
25+ CollapsingNode () {
26+ setTitle (" Collapsing node" );
27+ setStyle (ImFlow::NodeStyle::red ());
28+ ImFlow::BaseNode::addIN<int >(" In" , 0 , ImFlow::ConnectionFilter::SameType ());
29+ ImFlow::BaseNode::addIN<int >(" Other" , 0 , ImFlow::ConnectionFilter::SameType ());
30+ ImFlow::BaseNode::addOUT<int >(" Out" , nullptr )->behaviour ([this ]() { return getInVal<int >(" In" ) + m_valB; });
1931 }
2032
21- void draw () override
22- {
33+ void draw () override {
2334 if (ImFlow::BaseNode::isSelected ()) {
24- ImGui::SetNextItemWidth ( 100 . f );
25- ImGui::InputInt ( " ##ValB " , &m_valB );
26- ImGui::Button ( " Hello " );
35+ ImGui::Text ( " You can only see me when the node is selected! " );
36+ ImGui::SetNextItemWidth ( 100 . f );
37+ ImGui::InputInt ( " ##ValB " , &m_valB );
2738 }
2839 }
2940
@@ -32,26 +43,22 @@ class SimpleSum : public ImFlow::BaseNode
3243};
3344
3445/* Node editor that sets up the grid to place nodes */
35- struct NodeEditor : ImFlow::BaseNode
36- {
46+ struct NodeEditor : ImFlow::BaseNode {
3747 ImFlow::ImNodeFlow mINF ;
38- NodeEditor (float d, std::size_t r)
39- : BaseNode()
40- {
41- mINF .setSize ({d,d});
42- if (r > 0 ) {
43- mINF .addNode <SimpleSum>({0 ,0 });
44- mINF .addNode <SimpleSum>({10 ,10 });
48+
49+ NodeEditor (float d, std::size_t r) : BaseNode() {
50+ mINF .setSize ({d, d});
51+ if (r > 0 ) {
52+ mINF .addNode <SimpleSum>({0 , 0 });
53+ mINF .addNode <SimpleSum>({10 , 10 });
4554 }
4655 }
4756
48- void set_size (ImVec2 d)
49- {
57+ void set_size (ImVec2 d) {
5058 mINF .setSize (d);
5159 }
5260
53- void draw () override
54- {
61+ void draw () override {
5562 mINF .update ();
5663 }
5764};
0 commit comments