summaryrefslogtreecommitdiffstats
path: root/scene/gui/graph_node.h
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui/graph_node.h')
-rw-r--r--scene/gui/graph_node.h181
1 files changed, 58 insertions, 123 deletions
diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h
index 873683bc62..1178421819 100644
--- a/scene/gui/graph_node.h
+++ b/scene/gui/graph_node.h
@@ -31,170 +31,111 @@
#ifndef GRAPH_NODE_H
#define GRAPH_NODE_H
-#include "scene/gui/container.h"
-#include "scene/resources/text_line.h"
+#include "scene/gui/graph_element.h"
-class GraphNode : public Container {
- GDCLASS(GraphNode, Container);
+class HBoxContainer;
- struct _MinSizeCache {
- int min_size;
- bool will_stretch;
- int final_size;
- };
+class GraphNode : public GraphElement {
+ GDCLASS(GraphNode, GraphElement);
-public:
- enum Overlay {
- OVERLAY_DISABLED,
- OVERLAY_BREAKPOINT,
- OVERLAY_POSITION
- };
-
-private:
struct Slot {
bool enable_left = false;
int type_left = 0;
Color color_left = Color(1, 1, 1, 1);
+ Ref<Texture2D> custom_port_icon_left;
+
bool enable_right = false;
int type_right = 0;
Color color_right = Color(1, 1, 1, 1);
- Ref<Texture2D> custom_slot_left;
- Ref<Texture2D> custom_slot_right;
+ Ref<Texture2D> custom_port_icon_right;
+
bool draw_stylebox = true;
};
- String title;
- Ref<TextLine> title_buf;
-
- String language;
- TextDirection text_direction = TEXT_DIRECTION_AUTO;
-
- bool show_close = false;
- Vector2 position_offset;
- bool comment = false;
- bool resizable = false;
- bool draggable = true;
- bool selectable = true;
-
- bool resizing = false;
- Vector2 resizing_from;
- Vector2 resizing_from_size;
-
- Rect2 close_rect;
-
- Vector<int> cache_y;
-
struct PortCache {
- Vector2 position;
- int height;
-
- int slot_idx;
+ Vector2 pos;
+ int slot_index;
int type = 0;
Color color;
};
- Vector<PortCache> left_port_cache;
- Vector<PortCache> right_port_cache;
+ struct _MinSizeCache {
+ int min_size;
+ bool will_stretch;
+ int final_size;
+ };
- HashMap<int, Slot> slot_info;
+ HBoxContainer *titlebar_hbox = nullptr;
+ Label *title_label = nullptr;
- bool connpos_dirty = true;
+ String title;
- void _connpos_update();
- void _resort();
- void _shape();
+ Vector<PortCache> left_port_cache;
+ Vector<PortCache> right_port_cache;
- Vector2 drag_from;
- bool selected = false;
+ HashMap<int, Slot> slot_table;
- Overlay overlay = OVERLAY_DISABLED;
+ Vector<int> slot_y_cache;
-#ifdef TOOLS_ENABLED
- void _edit_set_position(const Point2 &p_position) override;
-#endif
+ bool port_pos_dirty = true;
+
+ void _port_pos_update();
protected:
- virtual void gui_input(const Ref<InputEvent> &p_ev) override;
void _notification(int p_what);
static void _bind_methods();
+ virtual void _resort() override;
+
+ virtual void draw_port(int p_slot_index, Point2i p_pos, bool p_left, const Color &p_color);
+ GDVIRTUAL4(_draw_port, int, Point2i, bool, const Color &);
+
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
- void _validate_property(PropertyInfo &p_property) const;
public:
- void set_slot(int p_idx, bool p_enable_left, int p_type_left, const Color &p_color_left, bool p_enable_right, int p_type_right, const Color &p_color_right, const Ref<Texture2D> &p_custom_left = Ref<Texture2D>(), const Ref<Texture2D> &p_custom_right = Ref<Texture2D>(), bool p_draw_stylebox = true);
- void clear_slot(int p_idx);
- void clear_all_slots();
-
- bool is_slot_enabled_left(int p_idx) const;
- void set_slot_enabled_left(int p_idx, bool p_enable_left);
-
- void set_slot_type_left(int p_idx, int p_type_left);
- int get_slot_type_left(int p_idx) const;
-
- void set_slot_color_left(int p_idx, const Color &p_color_left);
- Color get_slot_color_left(int p_idx) const;
-
- bool is_slot_enabled_right(int p_idx) const;
- void set_slot_enabled_right(int p_idx, bool p_enable_right);
-
- void set_slot_type_right(int p_idx, int p_type_right);
- int get_slot_type_right(int p_idx) const;
-
- void set_slot_color_right(int p_idx, const Color &p_color_right);
- Color get_slot_color_right(int p_idx) const;
-
- bool is_slot_draw_stylebox(int p_idx) const;
- void set_slot_draw_stylebox(int p_idx, bool p_enable);
-
void set_title(const String &p_title);
String get_title() const;
- void set_text_direction(TextDirection p_text_direction);
- TextDirection get_text_direction() const;
-
- void set_language(const String &p_language);
- String get_language() const;
+ HBoxContainer *get_titlebar_hbox();
- void set_position_offset(const Vector2 &p_offset);
- Vector2 get_position_offset() const;
+ void set_slot(int p_slot_index, bool p_enable_left, int p_type_left, const Color &p_color_left, bool p_enable_right, int p_type_right, const Color &p_color_right, const Ref<Texture2D> &p_custom_left = Ref<Texture2D>(), const Ref<Texture2D> &p_custom_right = Ref<Texture2D>(), bool p_draw_stylebox = true);
+ void clear_slot(int p_slot_index);
+ void clear_all_slots();
- void set_selected(bool p_selected);
- bool is_selected();
+ bool is_slot_enabled_left(int p_slot_index) const;
+ void set_slot_enabled_left(int p_slot_index, bool p_enable);
- void set_drag(bool p_drag);
- Vector2 get_drag_from();
+ void set_slot_type_left(int p_slot_index, int p_type);
+ int get_slot_type_left(int p_slot_index) const;
- void set_show_close_button(bool p_enable);
- bool is_close_button_visible() const;
+ void set_slot_color_left(int p_slot_index, const Color &p_color);
+ Color get_slot_color_left(int p_slot_index) const;
- int get_connection_input_count();
- int get_connection_input_height(int p_port);
- Vector2 get_connection_input_position(int p_port);
- int get_connection_input_type(int p_port);
- Color get_connection_input_color(int p_port);
- int get_connection_input_slot(int p_port);
+ bool is_slot_enabled_right(int p_slot_index) const;
+ void set_slot_enabled_right(int p_slot_index, bool p_enable);
- int get_connection_output_count();
- int get_connection_output_height(int p_port);
- Vector2 get_connection_output_position(int p_port);
- int get_connection_output_type(int p_port);
- Color get_connection_output_color(int p_port);
- int get_connection_output_slot(int p_port);
+ void set_slot_type_right(int p_slot_index, int p_type);
+ int get_slot_type_right(int p_slot_index) const;
- void set_overlay(Overlay p_overlay);
- Overlay get_overlay() const;
+ void set_slot_color_right(int p_slot_index, const Color &p_color);
+ Color get_slot_color_right(int p_slot_index) const;
- void set_resizable(bool p_enable);
- bool is_resizable() const;
+ bool is_slot_draw_stylebox(int p_slot_index) const;
+ void set_slot_draw_stylebox(int p_slot_index, bool p_enable);
- void set_draggable(bool p_draggable);
- bool is_draggable();
+ int get_input_port_count();
+ Vector2 get_input_port_position(int p_port_idx);
+ int get_input_port_type(int p_port_idx);
+ Color get_input_port_color(int p_port_idx);
+ int get_input_port_slot(int p_port_idx);
- void set_selectable(bool p_selectable);
- bool is_selectable();
+ int get_output_port_count();
+ Vector2 get_output_port_position(int p_port_idx);
+ int get_output_port_type(int p_port_idx);
+ Color get_output_port_color(int p_port_idx);
+ int get_output_port_slot(int p_port_idx);
virtual Size2 get_minimum_size() const override;
@@ -203,13 +144,7 @@ public:
virtual Vector<int> get_allowed_size_flags_horizontal() const override;
virtual Vector<int> get_allowed_size_flags_vertical() const override;
- bool is_resizing() const {
- return resizing;
- }
-
GraphNode();
};
-VARIANT_ENUM_CAST(GraphNode::Overlay)
-
#endif // GRAPH_NODE_H