Source code for colour.models.rgb_colourspace

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
RGB Colourspace
===============

Defines the :class:`RGB_Colourspace` class for the *RGB* colourspaces dataset
from :mod:`colour.models.dataset.aces_rgb`, etc...

See Also
--------
`RGB Colourspaces IPython Notebook
<http://nbviewer.ipython.org/github/colour-science/colour-ipython/blob/master/notebooks/models/rgb.ipynb>`_  # noqa
"""

from __future__ import division, unicode_literals

import numpy as np

from colour.algebra import to_ndarray

__author__ = 'Colour Developers'
__copyright__ = 'Copyright (C) 2013 - 2014 - Colour Developers'
__license__ = 'New BSD License - http://opensource.org/licenses/BSD-3-Clause'
__maintainer__ = 'Colour Developers'
__email__ = 'colour-science@googlegroups.com'
__status__ = 'Production'

__all__ = ['RGB_Colourspace']


[docs]class RGB_Colourspace(object): """ Implements support for the *RGB* colourspaces dataset from :mod:`colour.models.dataset.aces_rgb`, etc.... Parameters ---------- name : str or unicode *RGB* Colourspace name. primaries : array_like *RGB* Colourspace primaries. whitepoint : array_like *RGB* Colourspace whitepoint. to_XYZ : array_like Transformation matrix from colourspace to *CIE XYZ* colourspace. to_RGB : array_like Transformation matrix from *CIE XYZ* colourspace to colourspace. transfer_function : object *RGB* Colourspace transfer function from linear to colourspace. inverse_transfer_function : object *RGB* Colourspace inverse transfer function from colourspace to linear. """ def __init__(self, name, primaries, whitepoint, to_XYZ=None, to_RGB=None, transfer_function=None, inverse_transfer_function=None): self.__name = None self.name = name self.__primaries = None self.primaries = primaries self.__whitepoint = None self.whitepoint = whitepoint self.__to_XYZ = None self.to_XYZ = to_XYZ self.__to_RGB = None self.to_RGB = to_RGB self.__transfer_function = None self.transfer_function = transfer_function self.__inverse_transfer_function = None self.inverse_transfer_function = inverse_transfer_function @property def name(self): """ Property for **self.__name** private attribute. Returns ------- str or unicode self.__name. """ return self.__name @name.setter
[docs] def name(self, value): """ Setter for **self.__name** private attribute. Parameters ---------- value : str or unicode Attribute value. """ if value is not None: assert type(value) in (str, unicode), ( ('"{0}" attribute: "{1}" type is not ' '"str" or "unicode"!').format('name', value)) self.__name = value
@property def primaries(self): """ Property for **self.__primaries** private attribute. Returns ------- array_like, (3, 2) self.__primaries. """ return self.__primaries @primaries.setter
[docs] def primaries(self, value): """ Setter for **self.__primaries** private attribute. Parameters ---------- value : array_like, (3, 2) Attribute value. """ if value is not None: value = to_ndarray(value) self.__primaries = value
@property def whitepoint(self): """ Property for **self.__whitepoint** private attribute. Returns ------- array_like self.__whitepoint. """ return self.__whitepoint @whitepoint.setter
[docs] def whitepoint(self, value): """ Setter for **self.__whitepoint** private attribute. Parameters ---------- value : array_like Attribute value. """ if value is not None: assert type(value) in (tuple, list, np.ndarray, np.matrix), ( ('"{0}" attribute: "{1}" type is not "tuple", "list", ' '"ndarray" or "matrix"!').format('whitepoint', value)) self.__whitepoint = value
@property def to_XYZ(self): """ Property for **self.__to_XYZ** private attribute. Returns ------- array_like, (3, 3) self.__to_XYZ. """ return self.__to_XYZ @to_XYZ.setter
[docs] def to_XYZ(self, value): """ Setter for **self.__to_XYZ** private attribute. Parameters ---------- value : array_like Attribute value. """ if value is not None: value = to_ndarray(value) self.__to_XYZ = value
@property def to_RGB(self): """ Property for **self.__to_RGB** private attribute. Returns ------- array_like, (3, 3) self.__to_RGB. """ return self.__to_RGB @to_RGB.setter
[docs] def to_RGB(self, value): """ Setter for **self.__to_RGB** private attribute. Parameters ---------- value : array_like Attribute value. """ if value is not None: value = to_ndarray(value) self.__to_RGB = value
@property def transfer_function(self): """ Property for **self.__transfer_function** private attribute. Returns ------- object self.__transfer_function. """ return self.__transfer_function @transfer_function.setter
[docs] def transfer_function(self, value): """ Setter for **self.__transfer_function** private attribute. Parameters ---------- value : object Attribute value. """ if value is not None: assert hasattr(value, '__call__'), ( '"{0}" attribute: "{1}" is not callable!'.format( 'transfer_function', value)) self.__transfer_function = value
@property def inverse_transfer_function(self): """ Property for **self.__inverse_transfer_function** private attribute. Returns ------- object self.__inverse_transfer_function. """ return self.__inverse_transfer_function @inverse_transfer_function.setter
[docs] def inverse_transfer_function(self, value): """ Setter for **self.__inverse_transfer_function** private attribute. Parameters ---------- value : object Attribute value. """ if value is not None: assert hasattr(value, '__call__'), ( '"{0}" attribute: "{1}" is not callable!'.format( 'inverse_transfer_function', value)) self.__inverse_transfer_function = value