2020-12-28 10:27:51 +01:00
|
|
|
tool
|
|
|
|
extends Control
|
|
|
|
|
|
|
|
var polygon : MMPolygon
|
|
|
|
|
|
|
|
var draw_size : Vector2 = Vector2(1, 1)
|
|
|
|
var draw_offset : Vector2 = Vector2(0, 0)
|
2021-09-30 21:31:52 +02:00
|
|
|
var closed : bool = true
|
|
|
|
|
|
|
|
func set_closed(c : bool = true):
|
|
|
|
closed = c
|
|
|
|
update()
|
2020-12-28 10:27:51 +01:00
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
polygon = MMPolygon.new()
|
|
|
|
connect("resized", self, "_on_resize")
|
|
|
|
_on_resize()
|
|
|
|
|
|
|
|
func transform_point(p : Vector2) -> Vector2:
|
|
|
|
return draw_offset+p*draw_size
|
|
|
|
|
|
|
|
func reverse_transform_point(p : Vector2) -> Vector2:
|
|
|
|
return (p-draw_offset)/draw_size
|
|
|
|
|
|
|
|
func _draw():
|
2022-05-29 22:04:40 +02:00
|
|
|
var current_theme : Theme = mm_globals.main_window.theme
|
2021-01-21 23:07:10 +01:00
|
|
|
var bg = current_theme.get_stylebox("panel", "Panel").bg_color
|
|
|
|
var fg = current_theme.get_color("font_color", "Label")
|
|
|
|
var axes_color : Color = bg.linear_interpolate(fg, 0.25)
|
|
|
|
var curve_color : Color = bg.linear_interpolate(fg, 0.75)
|
|
|
|
draw_rect(Rect2(draw_offset, draw_size), axes_color, false)
|
2021-09-30 21:31:52 +02:00
|
|
|
var tp : Vector2 = transform_point(polygon.points[polygon.points.size()-1 if closed else 0])
|
2020-12-28 10:27:51 +01:00
|
|
|
for p in polygon.points:
|
|
|
|
var tnp = transform_point(p)
|
2021-01-21 23:07:10 +01:00
|
|
|
draw_line(tp, tnp, curve_color)
|
2020-12-28 10:27:51 +01:00
|
|
|
tp = tnp
|
|
|
|
|
|
|
|
func _on_resize() -> void:
|
|
|
|
var ds : float = min(rect_size.x, rect_size.y)
|
|
|
|
draw_size = Vector2(ds, ds)
|
|
|
|
draw_offset = 0.5*(rect_size-draw_size)
|
|
|
|
update()
|