Allow warning and background decorator colours to be configurable

This commit is contained in:
Dion Moult
2024-07-14 16:39:29 +10:00
parent 0dc084d785
commit d6dab75653
2 changed files with 29 additions and 9 deletions
@@ -26,10 +26,6 @@ from gpu_extras.batch import batch_for_shader
from typing import Union
ERROR_ELEMENTS_COLOR = (1, 0.2, 0.322, 1) # RED
UNSPECIAL_ELEMENT_COLOR = (0.2, 0.2, 0.2, 1) # GREY
def transparent_color(color, alpha=0.1):
color = [i for i in color]
color[3] = alpha
@@ -82,6 +78,8 @@ class ProfileDecorator:
selected_elements_color = self.addon_prefs.decorator_color_selected
unselected_elements_color = self.addon_prefs.decorator_color_unselected
special_elements_color = self.addon_prefs.decorator_color_special
error_elements_color = self.addon_prefs.decorator_color_error
background_elements_color = self.addon_prefs.decorator_color_background
obj = context.active_object
@@ -200,12 +198,12 @@ class ProfileDecorator:
self.draw_batch("LINES", all_vertices, transparent_color(unselected_elements_color), unselected_edges)
self.draw_batch("LINES", all_vertices, selected_elements_color, selected_edges)
self.draw_batch("LINES", all_vertices, UNSPECIAL_ELEMENT_COLOR, arc_edges)
self.draw_batch("LINES", all_vertices, background_elements_color, arc_edges)
self.draw_batch("LINES", all_vertices, special_elements_color, preview_edges)
self.draw_batch("LINES", all_vertices, special_elements_color, roof_angle_edges)
self.draw_batch("POINTS", unselected_vertices, transparent_color(unselected_elements_color, 0.5))
self.draw_batch("POINTS", error_vertices, ERROR_ELEMENTS_COLOR)
self.draw_batch("POINTS", error_vertices, error_elements_color)
self.draw_batch("POINTS", special_vertices, special_elements_color)
self.draw_batch("POINTS", selected_vertices, selected_elements_color)
@@ -232,7 +230,7 @@ class ProfileDecorator:
arc_centroids.append(tuple(centroid))
arc_segments.append(tool.Cad.create_arc_segments(pts=points, num_verts=17, make_edges=True))
self.draw_batch("POINTS", arc_centroids, UNSPECIAL_ELEMENT_COLOR)
self.draw_batch("POINTS", arc_centroids, background_elements_color)
for verts, edges in arc_segments:
self.draw_batch("LINES", verts, special_elements_color, edges)
@@ -253,7 +251,7 @@ class ProfileDecorator:
segments = [[list(matrix @ Vector(v)) for v in segments[0]], segments[1]]
circle_segments.append(segments)
self.draw_batch("POINTS", circle_centroids, UNSPECIAL_ELEMENT_COLOR)
self.draw_batch("POINTS", circle_centroids, background_elements_color)
for verts, edges in circle_segments:
self.draw_batch("LINES", verts, special_elements_color, edges)
+23 -1
View File
@@ -240,7 +240,25 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences):
min=0.0,
max=1.0,
size=4,
description="Color of special selected verts/edges (openings, preview verts/edges in roof editing, verts with arcs/circles in profile editing)",
description="Color of derived, parametric, or invisible geometry",
)
decorator_color_error: bpy.props.FloatVectorProperty(
name="Warning Elements Color",
subtype="COLOR",
default=(1, 0.2, 0.322, 1), # red
min=0.0,
max=1.0,
size=4,
description="Color of warning, error, or problem overlays",
)
decorator_color_background: bpy.props.FloatVectorProperty(
name="Background Elements Color",
subtype="COLOR",
default=(0.2, 0.2, 0.2, 1), # grey
min=0.0,
max=1.0,
size=4,
description="Color of background overlays",
)
def draw(self, context):
@@ -315,6 +333,10 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences):
row.prop(self, "decorator_color_unselected")
row = self.layout.row()
row.prop(self, "decorator_color_special")
row = self.layout.row()
row.prop(self, "decorator_color_error")
row = self.layout.row()
row.prop(self, "decorator_color_background")
row = self.layout.row(align=True)
row.prop(context.scene.BIMProperties, "schema_dir")