def chromaticity_diagram_construction_visual( cmfs='CIE 1931 2 Degree Standard Observer', width=2.0, method='gl', parent=None): """ Returns a :class:`vispy.scene.visuals.Node` class instance representing the chromaticity diagram construction with the spectral locus. Parameters ---------- cmfs : unicode, optional Standard observer colour matching functions used to draw the spectral locus. width : numeric, optional Line width. method : unicode, optional **{'gl', 'agg'}**, Line drawing method. parent : Node, optional Parent of the spectral locus visual in the `SceneGraph`. Returns ------- Node Chromaticity diagram construction visual. """ from colour_analysis.visuals import Primitive node = Node(parent=parent) simplex_p = np.array([(1, 0, 0), (0, 1, 0), (0, 0, 1)]) simplex_f = np.array([(0, 1, 2)]) simplex_c = np.array([(1, 1, 1), (1, 1, 1), (1, 1, 1)]) Primitive(simplex_p, simplex_f, uniform_opacity=0.5, vertex_colours=simplex_c, parent=node) simplex_f = np.array([(0, 1, 2), (1, 2, 0), (2, 0, 1)]) Primitive(simplex_p, simplex_f, uniform_opacity=1.0, vertex_colours=simplex_c, wireframe=True, parent=node) lines = [] for XYZ in first_item(filter_cmfs(cmfs).values()).values: lines.append(XYZ * 1.75) lines.append((0, 0, 0)) lines = np.array(lines) Line(lines, (0, 0, 0), width=width, method=method, parent=node) return node
def pointer_gamut_hull_visual(reference_colourspace='CIE xyY', width=2.0, uniform_colour=(0.9, 0.9, 0.9), uniform_opacity=0.4, parent=None): """ Returns a :class:`vispy.scene.visuals.Node` class instance with :class:`vispy.scene.visuals.Lines` class instance children representing Pointer's Gamut hull. Parameters ---------- reference_colourspace : unicode, optional See :func:`pointer_gamut_visual` argument for possible values. Reference colourspace to use for colour conversions / transformations. width : numeric, optional Lines width. uniform_colour : array_like, optional Uniform lines colour. uniform_opacity : numeric, optional Uniform lines opacity. parent : Node, optional Parent of the Pointer's Gamut hull visual in the `SceneGraph`. Returns ------- Node Pointer's Gamut hull visual. """ node = Node(parent=parent) pointer_gamut_data = np.reshape(POINTER_GAMUT_DATA, (16, -1, 3)) for i in range(16): points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model( np.vstack((pointer_gamut_data[i], pointer_gamut_data[i][0, ...])), POINTER_GAMUT_ILLUMINANT, reference_colourspace), reference_colourspace) points[np.isnan(points)] = 0 RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba Line(points, RGB, width=width, parent=node) return node
def RGB_colourspace_volume_visual(colourspace='ITU-R BT.709', reference_colourspace='CIE xyY', segments=16, uniform_colour=None, uniform_opacity=0.5, wireframe=True, wireframe_colour=None, wireframe_opacity=1.0, parent=None): """ Returns a :class:`vispy.scene.visuals.Node` class instance with one or two :class:`colour_analysis.visuals.Box` class instance children representing a *RGB* colourspace volume visual. Parameters ---------- colourspace : unicode, optional **{'ITU-R BT.709', 'ACES2065-1', 'ACEScc', 'ACEScg', 'ACESproxy', 'ALEXA Wide Gamut', 'Adobe RGB (1998)', 'Adobe Wide Gamut RGB', 'Apple RGB', 'Best RGB', 'Beta RGB', 'CIE RGB', 'Cinema Gamut', 'ColorMatch RGB', 'DCI-P3', 'DCI-P3+', 'DRAGONcolor', 'DRAGONcolor2', 'Don RGB 4', 'ECI RGB v2', 'ERIMM RGB', 'Ekta Space PS 5', 'Max RGB', 'NTSC', 'Pal/Secam', 'ProPhoto RGB', 'REDcolor', 'REDcolor2', 'REDcolor3', 'REDcolor4', 'RIMM RGB', 'ROMM RGB', 'ITU-R BT.2020', 'Russell RGB', 'S-Gamut', 'S-Gamut3', 'S-Gamut3.Cine', 'SMPTE-C RGB', 'V-Gamut', 'Xtreme RGB', 'sRGB'}**, :class:`colour.RGB_Colourspace` class instance name defining the *RGB* colourspace volume to draw. reference_colourspace : unicode **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to convert the *CIE XYZ* tristimulus values to. segments : int, optional Box segments. uniform_colour : array_like, optional Uniform mesh colour. uniform_opacity : numeric, optional Uniform mesh opacity. wireframe : bool, optional Use wireframe display. Uniform mesh opacity. wireframe_colour : array_like, optional Wireframe mesh colour. wireframe_opacity : numeric, optional Wireframe mesh opacity. parent : Node, optional Parent of the *RGB* colourspace volume visual in the `SceneGraph`. """ node = Node(parent) colourspace = first_item(filter_RGB_colourspaces(colourspace).values()) RGB_cube_f = RGB_identity_cube(width_segments=segments, height_segments=segments, depth_segments=segments, uniform_colour=uniform_colour, uniform_opacity=uniform_opacity, vertex_colours=not uniform_colour, parent=node) vertices = RGB_cube_f.mesh_data.get_vertices() XYZ = RGB_to_XYZ(vertices, colourspace.whitepoint, colourspace.whitepoint, colourspace.RGB_to_XYZ_matrix) value = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(XYZ, colourspace.whitepoint, reference_colourspace), reference_colourspace) value[np.isnan(value)] = 0 RGB_cube_f.mesh_data.set_vertices(value) if wireframe: RGB_cube_w = RGB_identity_cube(width_segments=segments, height_segments=segments, depth_segments=segments, uniform_colour=wireframe_colour, uniform_opacity=wireframe_opacity, vertex_colours=not wireframe_colour, wireframe=True, parent=node) RGB_cube_w.mesh_data.set_vertices(value) return node