def pointer_gamut_visual(reference_colourspace='CIE xyY', size=4.0, edge_size=0.5, uniform_colour=(0.9, 0.9, 0.9), uniform_opacity=0.8, uniform_edge_colour=(0.9, 0.9, 0.9), uniform_edge_opacity=0.8, parent=None): """ Returns a :class:`vispy.scene.visuals.Symbol` class instance representing Pointer's Gamut data using cross symbols. Parameters ---------- reference_colourspace : unicode, optional **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to use for colour conversions / transformations. size : numeric, optional Cross size. edge_size : numeric, optional Cross edge size. uniform_colour : array_like, optional Uniform cross colour. uniform_opacity : numeric, optional Uniform cross opacity. uniform_edge_colour : array_like, optional Uniform cross edge colour. uniform_edge_opacity : numeric, optional Uniform cross edge opacity. parent : Node, optional Parent of the Pointer's Gamut visual in the `SceneGraph`. Returns ------- Symbol Pointer's Gamut visual. """ points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model( POINTER_GAMUT_DATA, POINTER_GAMUT_ILLUMINANT, reference_colourspace), reference_colourspace) RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba RGB_e = ColorArray(uniform_edge_colour, alpha=uniform_edge_opacity).rgba markers = Symbol(symbol='cross', positions=points, size=size, edge_size=edge_size, face_colour=RGB, edge_colour=RGB_e, parent=parent) return markers
def pointer_gamut_visual(reference_colourspace='CIE xyY', size=4.0, edge_size=0.5, uniform_colour=(0.9, 0.9, 0.9), uniform_opacity=0.8, uniform_edge_colour=(0.9, 0.9, 0.9), uniform_edge_opacity=0.8, parent=None): """ Returns a :class:`vispy.scene.visuals.Symbol` class instance representing Pointer's Gamut data using cross symbols. Parameters ---------- reference_colourspace : unicode, optional **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to use for colour conversions / transformations. size : numeric, optional Cross size. edge_size : numeric, optional Cross edge size. uniform_colour : array_like, optional Uniform cross colour. uniform_opacity : numeric, optional Uniform cross opacity. uniform_edge_colour : array_like, optional Uniform cross edge colour. uniform_edge_opacity : numeric, optional Uniform cross edge opacity. parent : Node, optional Parent of the Pointer's Gamut visual in the `SceneGraph`. Returns ------- Symbol Pointer's Gamut visual. """ points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(POINTER_GAMUT_DATA, POINTER_GAMUT_ILLUMINANT, reference_colourspace), reference_colourspace) RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba RGB_e = ColorArray(uniform_edge_colour, alpha=uniform_edge_opacity).rgba markers = Symbol( symbol='cross', positions=points, size=size, edge_size=edge_size, face_colour=RGB, edge_colour=RGB_e, parent=parent) return markers
def pointer_gamut_boundaries_visual(reference_colourspace='CIE xyY', width=2.0, uniform_colour=(0.9, 0.9, 0.9), uniform_opacity=0.8, parent=None): """ Returns a :class:`vispy.scene.visuals.Line` class instance representing Pointer's Gamut boundaries. 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 Line width. uniform_colour : array_like, optional Uniform line colour. uniform_opacity : numeric, optional Uniform line opacity. parent : Node, optional Parent of the Pointer's Gamut boundaries visual in the `SceneGraph`. Returns ------- Line Pointer's Gamut boundaries visual. """ XYZ = np.vstack((POINTER_GAMUT_BOUNDARIES, POINTER_GAMUT_BOUNDARIES[0, ...])) illuminant = DEFAULT_PLOTTING_ILLUMINANT points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model( XYZ, illuminant, reference_colourspace), reference_colourspace) points[np.isnan(points)] = 0 RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba line = Line(points, RGB, width=width, method='agg', parent=parent) return line
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_whitepoint_axis_visual(colourspace='ITU-R BT.709', reference_colourspace='CIE xyY', width=2.0, method='gl', parent=None): """ Returns a :class:`vispy.scene.visuals.Line` class instance representing a given RGB colourspace whitepoint axis. Parameters ---------- colourspace : unicode, optional See :func:`RGB_colourspace_volume_visual` argument for possible values. :class:`colour.RGB_Colourspace` class instance name defining the *RGB* colourspace whitepoint axis to draw. reference_colourspace : unicode, optional **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to use for colour conversions / transformations. 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 ------- Line RGB colourspace whitepoint axis. """ colourspace = first_item(filter_RGB_colourspaces(colourspace).values()) XYZ_o = xy_to_XYZ(colourspace.whitepoint + (0, )) XYZ_f = xy_to_XYZ(colourspace.whitepoint + (1.1, )) XYZ_l = np.vstack([XYZ_o, XYZ_f]) illuminant = DEFAULT_PLOTTING_ILLUMINANT points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(XYZ_l, illuminant, reference_colourspace), reference_colourspace) line = Line(points, (1, 1, 1), width=width, method=method, parent=parent) return line
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 pointer_gamut_boundaries_visual(reference_colourspace='CIE xyY', width=2.0, uniform_colour=(0.9, 0.9, 0.9), uniform_opacity=0.8, parent=None): """ Returns a :class:`vispy.scene.visuals.Line` class instance representing Pointer's Gamut boundaries. 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 Line width. uniform_colour : array_like, optional Uniform line colour. uniform_opacity : numeric, optional Uniform line opacity. parent : Node, optional Parent of the Pointer's Gamut boundaries visual in the `SceneGraph`. Returns ------- Line Pointer's Gamut boundaries visual. """ XYZ = np.vstack([POINTER_GAMUT_BOUNDARIES, POINTER_GAMUT_BOUNDARIES[0, ...]]) illuminant = DEFAULT_PLOTTING_ILLUMINANT points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(XYZ, illuminant, reference_colourspace), reference_colourspace) points[np.isnan(points)] = 0 RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba line = Line(points, RGB, width=width, method='agg', parent=parent) return line
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
def RGB_scatter_visual(RGB, colourspace='ITU-R BT.709', reference_colourspace='CIE xyY', symbol='disc', size=4.0, edge_size=0.5, uniform_colour=None, uniform_opacity=1.0, uniform_edge_colour=None, uniform_edge_opacity=1.0, resampling='auto', parent=None): """ Returns a :class:`vispy.scene.visuals.Symbol` class instance representing *RGB* data using given symbols. Parameters ---------- RGB : array_like *RGB* data to draw. 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 of the data to draw. reference_colourspace : unicode, optional **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to use for colour conversions / transformations. symbol : unicode, optional Symbol type to draw. size : numeric, optional Symbol size. edge_size : numeric, optional Symbol edge size. uniform_colour : array_like, optional Uniform symbol colour. uniform_opacity : numeric, optional Uniform symbol opacity. uniform_edge_colour : array_like, optional Uniform symbol edge colour. uniform_edge_opacity : numeric, optional Uniform symbol edge opacity. resampling : numeric or unicode, optional Resampling value, if numeric input, one pixel every `resampling` argument value will be kept. parent : Node, optional Parent of the *RGB* scatter visual in the `SceneGraph`. Returns ------- Symbol *RGB* scatter visual. """ colourspace = get_RGB_colourspace(colourspace) RGB = np.asarray(RGB) if resampling == 'auto': resampling = max(int((0.0078125 * np.average(RGB.shape[0:1])) // 2), 1) RGB = RGB[::resampling, ::resampling].reshape((-1, 3)) XYZ = RGB_to_XYZ(RGB, colourspace.whitepoint, colourspace.whitepoint, colourspace.RGB_to_XYZ_matrix) points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(XYZ, colourspace.whitepoint, reference_colourspace), reference_colourspace) points[np.isnan(points)] = 0 RGB = np.clip(RGB, 0, 1) if uniform_colour is None: RGB = np.hstack((RGB, np.full((RGB.shape[0], 1), uniform_opacity, DEFAULT_FLOAT_DTYPE))) else: RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba if uniform_edge_colour is None: RGB_e = RGB else: RGB_e = ColorArray(uniform_edge_colour, alpha=uniform_edge_opacity).rgba markers = Symbol(symbol=symbol, positions=points, size=size, edge_size=edge_size, face_colour=RGB, edge_colour=RGB_e, parent=parent) return markers
def RGB_scatter_visual(RGB, colourspace='ITU-R BT.709', reference_colourspace='CIE xyY', symbol='disc', size=4.0, edge_size=0.5, uniform_colour=None, uniform_opacity=1.0, uniform_edge_colour=None, uniform_edge_opacity=1.0, resampling='auto', parent=None): """ Returns a :class:`vispy.scene.visuals.Symbol` class instance representing *RGB* data using given symbols. Parameters ---------- RGB : array_like *RGB* data to draw. 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 of the data to draw. reference_colourspace : unicode, optional **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to use for colour conversions / transformations. symbol : unicode, optional Symbol type to draw. size : numeric, optional Symbol size. edge_size : numeric, optional Symbol edge size. uniform_colour : array_like, optional Uniform symbol colour. uniform_opacity : numeric, optional Uniform symbol opacity. uniform_edge_colour : array_like, optional Uniform symbol edge colour. uniform_edge_opacity : numeric, optional Uniform symbol edge opacity. resampling : numeric or unicode, optional Resampling value, if numeric input, one pixel every `resampling` argument value will be kept. parent : Node, optional Parent of the *RGB* scatter visual in the `SceneGraph`. Returns ------- Symbol *RGB* scatter visual. """ colourspace = first_item(filter_RGB_colourspaces(colourspace).values()) RGB = np.asarray(RGB) if resampling == 'auto': resampling = max(int((0.0078125 * np.average(RGB.shape[0:1])) // 2), 1) RGB = RGB[::resampling, ::resampling].reshape([-1, 3]) XYZ = RGB_to_XYZ(RGB, colourspace.whitepoint, colourspace.whitepoint, colourspace.RGB_to_XYZ_matrix) points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(XYZ, colourspace.whitepoint, reference_colourspace), reference_colourspace) points[np.isnan(points)] = 0 RGB = np.clip(RGB, 0, 1) if uniform_colour is None: RGB = np.hstack([RGB, np.full((RGB.shape[0], 1), uniform_opacity, DEFAULT_FLOAT_DTYPE)]) else: RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba if uniform_edge_colour is None: RGB_e = RGB else: RGB_e = ColorArray( uniform_edge_colour, alpha=uniform_edge_opacity).rgba markers = Symbol( symbol=symbol, positions=points, size=size, edge_size=edge_size, face_colour=RGB, edge_colour=RGB_e, parent=parent) return markers
def spectral_locus_visual(reference_colourspace='CIE xyY', cmfs='CIE 1931 2 Degree Standard Observer', width=2.0, uniform_colour=None, uniform_opacity=1.0, method='gl', parent=None): """ Returns a :class:`vispy.scene.visuals.Line` class instance representing the spectral locus. Parameters ---------- reference_colourspace : unicode, optional **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to use for colour conversions / transformations. cmfs : unicode, optional Standard observer colour matching functions used to draw the spectral locus. width : numeric, optional Line width. uniform_colour : array_like, optional Uniform symbol colour. uniform_opacity : numeric, optional Uniform symbol opacity. method : unicode, optional **{'gl', 'agg'}**, Line drawing method. parent : Node, optional Parent of the spectral locus visual in the `SceneGraph`. Returns ------- Line Spectral locus visual. """ cmfs = first_item(filter_cmfs(cmfs).values()) XYZ = cmfs.values XYZ = np.vstack([XYZ, XYZ[0, ...]]) illuminant = DEFAULT_PLOTTING_ILLUMINANT points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(XYZ, illuminant, reference_colourspace), reference_colourspace) points[np.isnan(points)] = 0 if uniform_colour is None: RGB = normalise_maximum(XYZ_to_sRGB(XYZ, illuminant), axis=-1) RGB = np.hstack([ RGB, np.full((RGB.shape[0], 1), uniform_opacity, DEFAULT_FLOAT_DTYPE) ]) else: RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba line = Line(points, np.clip(RGB, 0, 1), width=width, method=method, parent=parent) return line
def spectral_locus_visual(reference_colourspace='CIE xyY', cmfs='CIE 1931 2 Degree Standard Observer', width=2.0, uniform_colour=None, uniform_opacity=1.0, method='gl', parent=None): """ Returns a :class:`vispy.scene.visuals.Line` class instance representing the spectral locus. Parameters ---------- reference_colourspace : unicode, optional **{'CIE XYZ', 'CIE xyY', 'CIE Lab', 'CIE Luv', 'CIE UCS', 'CIE UVW', 'IPT', 'Hunter Lab', 'Hunter Rdab'}**, Reference colourspace to use for colour conversions / transformations. cmfs : unicode, optional Standard observer colour matching functions used to draw the spectral locus. width : numeric, optional Line width. uniform_colour : array_like, optional Uniform symbol colour. uniform_opacity : numeric, optional Uniform symbol opacity. method : unicode, optional **{'gl', 'agg'}**, Line drawing method. parent : Node, optional Parent of the spectral locus visual in the `SceneGraph`. Returns ------- Line Spectral locus visual. """ cmfs = first_item(filter_cmfs(cmfs).values()) XYZ = cmfs.values XYZ = np.vstack([XYZ, XYZ[0, ...]]) illuminant = DEFAULT_PLOTTING_ILLUMINANT points = common_colourspace_model_axis_reorder( XYZ_to_colourspace_model(XYZ, illuminant, reference_colourspace), reference_colourspace) points[np.isnan(points)] = 0 if uniform_colour is None: RGB = normalise_maximum(XYZ_to_sRGB(XYZ, illuminant), axis=-1) RGB = np.hstack([RGB, np.full((RGB.shape[0], 1), uniform_opacity, DEFAULT_FLOAT_DTYPE)]) else: RGB = ColorArray(uniform_colour, alpha=uniform_opacity).rgba line = Line( points, np.clip(RGB, 0, 1), width=width, method=method, parent=parent) return line
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