Rollercoaster-Derivatives/addons/easy_charts/utilities/containers/canvas/canvas.gd

65 lines
1.9 KiB
GDScript

extends Control
class_name Canvas
@onready var _title_lbl: Label = $CanvasContainer/Title
@onready var _x_lbl: Label = $CanvasContainer/DataContainer/PlotContainer/XLabel
@onready var _y_lbl: Label = $CanvasContainer/DataContainer/YLabel
@onready var _legend: FunctionLegend = $CanvasContainer/DataContainer/FunctionLegend
func _ready():
pass # Replace with function body.
func prepare_canvas(chart_properties: ChartProperties) -> void:
if chart_properties.draw_frame:
set_color(chart_properties.colors.frame)
set_frame_visible(true)
else:
set_frame_visible(false)
if chart_properties.show_title:
update_title(chart_properties.title, chart_properties.colors.text)
else:
_title_lbl.hide()
if chart_properties.show_x_label:
update_x_label(chart_properties.x_label, chart_properties.colors.text)
else:
_x_lbl.hide()
if chart_properties.show_y_label:
update_y_label(chart_properties.y_label, chart_properties.colors.text, -90)
else:
_y_lbl.hide()
if chart_properties.show_legend:
_legend.show()
else:
hide_legend()
func update_title(text: String, color: Color, rotation: float = 0.0) -> void:
_title_lbl.show()
_update_canvas_label(_title_lbl, text, color, rotation)
func update_y_label(text: String, color: Color, rotation: float = 0.0) -> void:
_y_lbl.show()
_update_canvas_label(_y_lbl, text, color, rotation)
func update_x_label(text: String, color: Color, rotation: float = 0.0) -> void:
_x_lbl.show()
_update_canvas_label(_x_lbl, text, color, rotation)
func _update_canvas_label(canvas_label: Label, text: String, color: Color, rotation: float = 0.0) -> void:
canvas_label.set_text(text)
canvas_label.modulate = color
canvas_label.rotation = rotation
func hide_legend() -> void:
_legend.hide()
func set_color(color: Color) -> void:
get("theme_override_styles/panel").set("bg_color", color)
func set_frame_visible(visible: bool) -> void:
get("theme_override_styles/panel").set("draw_center", visible)