git update

This commit is contained in:
Nicolò Santilio 2020-12-31 13:10:20 +01:00
parent d2b04f0953
commit c7d0e56f4e
8 changed files with 8 additions and 611 deletions

11
.gitignore vendored
View File

@ -1,15 +1,20 @@
.import/
export.cfg
export_presets.cfg
# Imported translations (automatically generated from CSV files)
*.translation
# Plugin specific ignores
.github/
file-editor/
scn/
default_env.tres
icon.png
icon.png.import
project.godot
# Mono-specific ignores
.mono/
data_*/
mono_crash.*.json
# System/tool-specific ignores
.directory
*~

View File

@ -1,108 +0,0 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://addons/easy_charts/LineChart2D/LineChart2D.gd" type="Script" id=1]
[ext_resource path="res://addons/easy_charts/Utilities/Point/PointData.gd" type="Script" id=3]
[sub_resource type="StyleBoxFlat" id=1]
content_margin_left = 8.0
content_margin_right = 8.0
content_margin_top = 5.0
content_margin_bottom = 5.0
bg_color = Color( 1, 1, 1, 0 )
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color( 1, 1, 1, 1 )
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
corner_detail = 20
[node name="LineChart2D" type="Node2D"]
script = ExtResource( 1 )
drawing_duration = 0.3
font_color = Color( 0.137255, 0.137255, 0.137255, 1 )
[node name="Grid" type="Node2D" parent="."]
[node name="VLine" type="Line2D" parent="Grid"]
points = PoolVector2Array( 0, 0, 0, 0 )
width = 1.0
default_color = Color( 0.792157, 0.792157, 0.792157, 1 )
[node name="HLine" type="Line2D" parent="Grid"]
points = PoolVector2Array( 0, 0, 0, 0 )
width = 1.0
default_color = Color( 0.792157, 0.792157, 0.792157, 1 )
[node name="Outlines" type="Line2D" parent="."]
points = PoolVector2Array( 0, 0, 2, 0, 2, 2, 0, 2, 0, 0 )
width = 2.0
default_color = Color( 0.117647, 0.117647, 0.117647, 1 )
[node name="Functions" type="Node2D" parent="."]
[node name="Function" type="Line2D" parent="Functions"]
points = PoolVector2Array( 0, 0, 0, 0 )
width = 2.0
default_color = Color( 0.117647, 0.117647, 0.117647, 1 )
[node name="FunctionsTween" type="Tween" parent="."]
[node name="OutlinesTween" type="Tween" parent="."]
[node name="GridTween" type="Tween" parent="."]
[node name="UI" type="CanvasLayer" parent="."]
[node name="PointData" type="PanelContainer" parent="UI"]
margin_right = 67.0
margin_bottom = 38.0
mouse_filter = 2
custom_styles/panel = SubResource( 1 )
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="PointData" type="VBoxContainer" parent="UI/PointData"]
margin_left = 8.0
margin_top = 5.0
margin_right = 59.0
margin_bottom = 36.0
custom_constants/separation = 3
alignment = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Function" type="Label" parent="UI/PointData/PointData"]
margin_right = 51.0
margin_bottom = 14.0
align = 1
valign = 1
[node name="Value" type="HBoxContainer" parent="UI/PointData/PointData"]
margin_top = 17.0
margin_right = 51.0
margin_bottom = 31.0
[node name="x" type="Label" parent="UI/PointData/PointData/Value"]
margin_right = 39.0
margin_bottom = 14.0
custom_colors/font_color = Color( 1, 1, 1, 1 )
text = "Value:"
valign = 1
[node name="y" type="Label" parent="UI/PointData/PointData/Value"]
margin_left = 43.0
margin_right = 51.0
margin_bottom = 14.0
custom_colors/font_color = Color( 1, 1, 1, 1 )
text = "0"
valign = 1

View File

@ -1,108 +0,0 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://addons/easy_charts/LineChart2D/LineChart2D.gd" type="Script" id=1]
[ext_resource path="res://addons/easy_charts/Utilities/Point/PointData.gd" type="Script" id=3]
[sub_resource type="StyleBoxFlat" id=1]
content_margin_left = 8.0
content_margin_right = 8.0
content_margin_top = 5.0
content_margin_bottom = 5.0
bg_color = Color( 1, 1, 1, 0 )
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
border_color = Color( 1, 1, 1, 1 )
corner_radius_top_left = 5
corner_radius_top_right = 5
corner_radius_bottom_right = 5
corner_radius_bottom_left = 5
corner_detail = 20
[node name="LineChart2D" type="Node2D"]
script = ExtResource( 1 )
drawing_duration = 0.3
font_color = Color( 0.137255, 0.137255, 0.137255, 1 )
[node name="Grid" type="Node2D" parent="."]
[node name="VLine" type="Line2D" parent="Grid"]
points = PoolVector2Array( 0, 0, 0, 0 )
width = 1.0
default_color = Color( 0.792157, 0.792157, 0.792157, 1 )
[node name="HLine" type="Line2D" parent="Grid"]
points = PoolVector2Array( 0, 0, 0, 0 )
width = 1.0
default_color = Color( 0.792157, 0.792157, 0.792157, 1 )
[node name="Outlines" type="Line2D" parent="."]
points = PoolVector2Array( 0, 0, 2, 0, 2, 2, 0, 2, 0, 0 )
width = 2.0
default_color = Color( 0.117647, 0.117647, 0.117647, 1 )
[node name="Functions" type="Node2D" parent="."]
[node name="Function" type="Line2D" parent="Functions"]
points = PoolVector2Array( 0, 0, 0, 0 )
width = 2.0
default_color = Color( 0.117647, 0.117647, 0.117647, 1 )
[node name="FunctionsTween" type="Tween" parent="."]
[node name="OutlinesTween" type="Tween" parent="."]
[node name="GridTween" type="Tween" parent="."]
[node name="UI" type="CanvasLayer" parent="."]
[node name="PointData" type="PanelContainer" parent="UI"]
margin_right = 67.0
margin_bottom = 38.0
mouse_filter = 2
custom_styles/panel = SubResource( 1 )
script = ExtResource( 3 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="PointData" type="VBoxContainer" parent="UI/PointData"]
margin_left = 8.0
margin_top = 5.0
margin_right = 59.0
margin_bottom = 36.0
custom_constants/separation = 3
alignment = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Function" type="Label" parent="UI/PointData/PointData"]
margin_right = 51.0
margin_bottom = 14.0
align = 1
valign = 1
[node name="Value" type="HBoxContainer" parent="UI/PointData/PointData"]
margin_top = 17.0
margin_right = 51.0
margin_bottom = 31.0
[node name="x" type="Label" parent="UI/PointData/PointData/Value"]
margin_right = 39.0
margin_bottom = 14.0
custom_colors/font_color = Color( 1, 1, 1, 1 )
text = "Value:"
valign = 1
[node name="y" type="Label" parent="UI/PointData/PointData/Value"]
margin_left = 43.0
margin_right = 51.0
margin_bottom = 14.0
custom_colors/font_color = Color( 1, 1, 1, 1 )
text = "0"
valign = 1

View File

@ -1,280 +0,0 @@
tool
extends Chart
class_name RadarChart
"""
[RadarChart] - General purpose node for Radar Charts
A radar chart is a graphical method of displaying multivariate data in the form
of a two-dimensional chart of three or more quantitative variables represented on axes
starting from the same point. The relative position and angle of the axes is typically
uninformative, but various heuristics, such as algorithms that plot data as the maximal
total area, can be applied to sort the variables (axes) into relative positions that reveal
distinct correlations, trade-offs, and a multitude of other comparative measures.
/ source : Wikipedia /
"""
func _get_property_list():
return [
# Chart Properties
{
"hint": PROPERTY_HINT_NONE,
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Properties/are_values_columns",
"type": TYPE_BOOL
},
{
"hint": PROPERTY_HINT_RANGE,
"hint_string": "-1,100,1",
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Properties/labels_index",
"type": TYPE_INT
},
{
"hint": PROPERTY_HINT_RANGE,
"hint_string": "-1,100,1",
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Properties/function_names_index",
"type": TYPE_INT
},
{
"hint": PROPERTY_HINT_NONE,
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Properties/use_height_as_radius",
"type": TYPE_BOOL
},
{
"hint": PROPERTY_HINT_RANGE,
"hint_string": "0,2000",
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Properties/radius",
"type": TYPE_REAL
},
# Chart Display
{
"hint": PROPERTY_HINT_RANGE,
"hint_string": "0.1,100",
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Display/full_scale",
"type": TYPE_REAL
},
# Chart Style
{
"hint": 24,
"hint_string": "%d/%d:%s"%[TYPE_INT, PROPERTY_HINT_ENUM,
PoolStringArray(PointShapes.keys()).join(",")],
"name": "Chart_Style/points_shape",
"type": TYPE_ARRAY,
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE
},
{
"hint": PROPERTY_HINT_NONE,
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Style/function_colors",
"type": TYPE_COLOR_ARRAY
},
{
"hint": PROPERTY_HINT_NONE,
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Style/outline_color",
"type": TYPE_COLOR
},
{
"hint": PROPERTY_HINT_NONE,
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Style/grid_color",
"type": TYPE_COLOR
},
{
"class_name": "Font",
"hint": PROPERTY_HINT_RESOURCE_TYPE,
"hint_string": "Font",
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Style/font",
"type": TYPE_OBJECT
},
{
"class_name": "Font",
"hint": PROPERTY_HINT_RESOURCE_TYPE,
"hint_string": "Font",
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Style/bold_font",
"type": TYPE_OBJECT
},
{
"hint": PROPERTY_HINT_NONE,
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Style/font_color",
"type": TYPE_COLOR
},
{
"hint": PROPERTY_HINT_ENUM,
"hint_string": PoolStringArray(TemplatesNames.keys()).join(","),
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Style/template",
"type": TYPE_INT
},
{
"hint": PROPERTY_HINT_RANGE,
"hint_string": "0,360",
"usage": PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE,
"name": "Chart_Modifiers/rotation",
"type": TYPE_REAL
},
]
func structure_datas(database : Array, are_values_columns : bool, labels_index : int):
# @x_values_index can be either a column or a row relative to x values
# @y_values can be either a column or a row relative to y values
self.labels_index = labels_index
self.are_values_columns = are_values_columns
match are_values_columns:
true:
for row in database.size():
if row == labels_index:
x_labels = database[row] as PoolStringArray
else:
if database[row].empty() or database[row].size() < 2:
continue
x_datas.append(PoolRealArray(database[row] as Array))
for column in database[row].size():
if column == function_names_index:
y_labels.append(database[row][column])
false:
for row in database.size():
if row == function_names_index:
y_labels = database[row] as PoolStringArray
var x_temp_datas : PoolRealArray = []
for column in database[row].size():
if column == labels_index:
x_labels.append(database[row][column] as String)
else:
x_temp_datas.append(database[row][column] as float)
x_datas.append(x_temp_datas)
if labels_index == -1 :
for data in x_datas[0].size():
x_labels.append("Element %s" % data)
if function_names_index == -1 :
for data in x_datas.size():
y_labels.append("Function %s" % data)
func build_chart():
SIZE = get_size()
origin = OFFSET + SIZE/2
var radar_polygon : Array
func calculate_pass() :
var ordered_max : Array
for data in x_datas :
var ordered_data : Array = (data as Array)
ordered_data.sort()
ordered_max.append(ordered_data.pop_back())
ordered_max.sort()
var max_value : float = ordered_max.pop_back()
var dist = full_scale * pow(10.0,str(max_value).length()-2)
var multi = 0
var value = dist * multi
x_chors.append(value as String)
while value < max_value:
multi+=1
value = dist * multi
x_chors.append(value as String)
func calculate_coordinates():
for chor in x_chors.size():
var inner_polyline : PoolVector2Array
var scalar_factor : float = (x_chors[chor] as float/x_chors.back() as float)
for function in functions:
var angle : float = ((2 * PI * function) / functions) - PI /2 + deg2rad(rotation)
var x_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * cos(angle) + origin.x
var y_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * sin(angle) + origin.y
inner_polyline.append(Vector2(x_coordinate, y_coordinate))
inner_polyline.append(inner_polyline[0])
radar_polygon.append(inner_polyline)
for datas in x_datas:
var function_positions : PoolVector2Array
var function_values : Array
for data in datas.size():
var scalar_factor : float = datas[data] /( x_chors.back() as float)
var angle : float = ((2 * PI * data) / datas.size()) - PI/2 + deg2rad(rotation)
var x_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * cos(angle) + origin.x
var y_coordinate : float = (radius if (not use_height_as_radius and radius<SIZE.y/2) else SIZE.y/2) * scalar_factor * sin(angle) + origin.y
function_positions.append(Vector2(x_coordinate,y_coordinate))
function_values.append([x_labels[data], datas[data]])
function_positions.append(function_positions[0])
point_positions.append(function_positions)
point_values.append(function_values)
func _draw():
if Engine.editor_hint:
return
clear_points()
draw_grid()
for function in point_positions.size():
var function_color : Color = function_colors[function]
draw_polygon(point_positions[function], [Color(function_color.r, function_color.g, function_color.b, 0.2)],[],null,null,true)
draw_polyline(point_positions[function], function_color, 2,true)
for _function in point_values.size():
var PointContainer : Control = Control.new()
Points.add_child(PointContainer)
for function_point in point_values[_function].size():
var point : Point = point_node.instance()
point.connect("_point_pressed",self,"point_pressed")
point.connect("_mouse_entered",self,"show_data")
point.connect("_mouse_exited",self,"hide_data")
point.create_point(points_shape[_function], function_colors[_function],
Color.white, point_positions[_function][function_point],
point.format_value(point_values[_function][function_point], false, false),
y_labels[_function])
# str("Function %s"%_function))
PointContainer.add_child(point)
func draw_grid():
for polyline in radar_polygon:
draw_polyline(polyline, grid_color, 1, true)
var text : String = x_chors[radar_polygon.find(polyline)] as String
draw_string(font, polyline[0] - Vector2(font.get_string_size(text).x/2,-5), text, font_color)
if not radar_polygon.empty():
draw_polyline(radar_polygon[radar_polygon.size()-1], outline_color, 1, true)
for label in x_labels.size():
var point_array : PoolVector2Array = radar_polygon[radar_polygon.size()-1]
draw_line(origin, point_array[label], grid_color, 1, true)
if point_array[label].x != origin.x:
draw_string(font, point_array[label] - (Vector2(font.get_string_size(x_labels[label]).x+10,(5 if point_array[label].y <= origin.y else -10)) if point_array[label].x <= origin.x else - Vector2(10,(-5 if point_array[label].y <= origin.y else 10))), x_labels[label], font_color)
else:
draw_string(font, point_array[label] - (Vector2(font.get_string_size(x_labels[label]).x/2, 10) if point_array[label].y < origin.x else - Vector2(font.get_string_size(x_labels[label]).x/2, 5)), x_labels[label], font_color)
func create_legend():
pass
# legend.clear()
# for function in functions:
# var function_legend = FunctionLegend.instance()
# var f_name : String = x_labels[function]
# var legend_font : Font
# if font != null:
# legend_font = font
# if bold_font != null:
# legend_font = bold_font
# function_legend.create_legend(f_name,function_colors[function],bold_font,font_color)
# legend.append(function_legend)
func count_functions():
if x_labels.size():
functions = x_labels.size()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

View File

@ -1,34 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/Line-Graph1.png-cf75f72c04876dd893d0cb31b406bc73.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/easy_charts/Utilities/Rect/Line-Graph1.png"
dest_files=[ "res://.import/Line-Graph1.png-cf75f72c04876dd893d0cb31b406bc73.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0

View File

@ -1,39 +0,0 @@
#extends Object
#class_name ChartObject
#
#"""
#[ChartObject] :: Class
#
#this class is used to store all the functions that Chart, Chart2D and Chart3D custom instances
#will share in-between.
#Chart classes will extend this class.
#"""
#
#enum PointShapes { Dot, Triangle, Square, Cross }
#enum TemplatesNames { Default, Clean, Gradient, Minimal, Invert }
#
#class Chart extends Control:
# var CHART_TYPE : String = "Chart"
# enum PointShapes { Dot, Triangle, Square, Cross }
# enum TemplatesNames { Default, Clean, Gradient, Minimal, Invert }
#
# export (PoolColorArray) var function_colors = [Color("#1e1e1e")]
# export (Array, PointShapes) var points_shape : Array = [PointShapes.Dot]
#
# var functions : int = 0
#
# func calculate_colors():
# if function_colors.empty() or function_colors.size() < functions:
# for function in functions:
# function_colors.append(Color("#1e1e1e"))
#
# func set_shapes():
# if points_shape.empty() or points_shape.size() < functions:
# for function in functions:
# points_shape.append(PointShapes.Dot)
#
#
#class Chart2D extends Node2D:
# var CHART_TYPE : String = "Chart2D"
# enum PointShapes { Dot, Triangle, Square, Cross }
# enum TemplatesNames { Default, Clean, Gradient, Minimal, Invert }

View File

@ -1,39 +0,0 @@
#extends Object
#class_name ChartObject
#
#"""
#[ChartObject] :: Class
#
#this class is used to store all the functions that Chart, Chart2D and Chart3D custom instances
#will share in-between.
#Chart classes will extend this class.
#"""
#
#enum PointShapes { Dot, Triangle, Square, Cross }
#enum TemplatesNames { Default, Clean, Gradient, Minimal, Invert }
#
#class Chart extends Control:
# var CHART_TYPE : String = "Chart"
# enum PointShapes { Dot, Triangle, Square, Cross }
# enum TemplatesNames { Default, Clean, Gradient, Minimal, Invert }
#
# export (PoolColorArray) var function_colors = [Color("#1e1e1e")]
# export (Array, PointShapes) var points_shape : Array = [PointShapes.Dot]
#
# var functions : int = 0
#
# func calculate_colors():
# if function_colors.empty() or function_colors.size() < functions:
# for function in functions:
# function_colors.append(Color("#1e1e1e"))
#
# func set_shapes():
# if points_shape.empty() or points_shape.size() < functions:
# for function in functions:
# points_shape.append(PointShapes.Dot)
#
#
#class Chart2D extends Node2D:
# var CHART_TYPE : String = "Chart2D"
# enum PointShapes { Dot, Triangle, Square, Cross }
# enum TemplatesNames { Default, Clean, Gradient, Minimal, Invert }