Source code for highcharts_core.utility_classes.gradients

from typing import Optional

from validator_collection import validators

from highcharts_core.decorators import class_sensitive
from highcharts_core.metaclasses import HighchartsMeta


[docs]class LinearGradient(HighchartsMeta): """Configuration of a linear gradient pattern.""" def __init__(self, **kwargs): self._x1 = None self._x2 = None self._y1 = None self._y2 = None self.x1 = kwargs.get('x1', None) self.x2 = kwargs.get('x2', None) self.y1 = kwargs.get('y1', None) self.y2 = kwargs.get('y2', None) @property def x1(self) -> Optional[float]: """Start horizontal position for the gradient. Expects a value between 0 - 1. :rtype: :class:`float <python:float>` or :obj:`None <python:None>` """ return self._x1 @x1.setter def x1(self, value): self._x1 = validators.float(value, allow_empty = True, minimum = 0, maximum = 1) @property def x2(self) -> Optional[float]: """End horizontal position for the gradient. Expects a value between 0 - 1. :rtype: :class:`float <python:float>` or :obj:`None <python:None>` """ return self._x2 @x2.setter def x2(self, value): self._x2 = validators.float(value, allow_empty = True, minimum = 0, maximum = 1) @property def y1(self) -> Optional[float]: """Start vertical position for the gradient. Expects a value between 0 - 1. :rtype: :class:`float <python:float>` or :obj:`None <python:None>` """ return self._y1 @y1.setter def y1(self, value): self._y1 = validators.float(value, allow_empty = True, minimum = 0, maximum = 1) @property def y2(self) -> Optional[float]: """End vertical position for the gradient. Expects a value between 0 - 1. :rtype: :class:`float <python:float>` or :obj:`None <python:None>` """ return self._y2 @y2.setter def y2(self, value): self._y2 = validators.float(value, allow_empty = True, minimum = 0, maximum = 1) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'x1': as_dict.get('x1', None), 'x2': as_dict.get('x2', None), 'y1': as_dict.get('y1', None), 'y2': as_dict.get('y2', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'x1': self.x1, 'x2': self.x2, 'y1': self.y1, 'y2': self.y2 } return untrimmed
[docs]class RadialGradient(HighchartsMeta): """Configuration of a radial gradient pattern.""" def __init__(self, **kwargs): self._cx = None self._cy = None self._r = None self.cx = kwargs.get('cx', None) self.cy = kwargs.get('cy', None) self.r = kwargs.get('r', None) @property def cx(self) -> Optional[float]: """Center position for the gradient along the horizontal axis. Expects a value between 0 - 1, relative to the shape. :rtype: :class:`float <python:float>` or :obj:`None <python:None>` """ return self._cx @cx.setter def cx(self, value): self._cx = validators.float(value, allow_empty = True, minimum = 0, maximum = 1) @property def cy(self) -> Optional[float]: """Center position for the gradient along the vertical axis. Expects a value between 0 - 1, relative to the shape. :rtype: :class:`float <python:float>` or :obj:`None <python:None>` """ return self._cy @cy.setter def cy(self, value): self._cy = validators.float(value, allow_empty = True, minimum = 0, maximum = 1) @property def r(self) -> Optional[float]: """Radius of the gradient relative to the shape. Expects a value between 0 - 1. :rtype: :class:`float <python:float>` or :obj:`None <python:None>` """ return self._r @r.setter def r(self, value): self._r = validators.float(value, allow_empty = True, minimum = 0, maximum = 1) @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'cx': as_dict.get('cx', None), 'cy': as_dict.get('cy', None), 'r': as_dict.get('r', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'cx': self.cx, 'cy': self.cy, 'r': self.r } return untrimmed
[docs]class Gradient(HighchartsMeta): """Configuration of a gradient color pattern.""" def __init__(self, **kwargs): self._linear_gradient = None self._radial_gradient = None self._stops = None self.linear_gradient = kwargs.get('linear_gradient', None) self.radial_gradient = kwargs.get('radial_gradient', None) self.stops = kwargs.get('stops', None) @property def linear_gradient(self) -> Optional[LinearGradient]: """Holds an object that defines the start position and end position of the gradient relative to the shape. :rtype: :class:`LinearGradient` or :obj:`None <python:None>` """ return self._linear_gradient @linear_gradient.setter @class_sensitive(LinearGradient) def linear_gradient(self, value): self._linear_gradient = value @property def radial_gradient(self) -> Optional[RadialGradient]: """Holds an object that defines the center and radius of a radial gradient relative to the shape. :rtype: :class:`RadialGradient` or :obj:`None <python:None>` """ return self._radial_gradient @radial_gradient.setter @class_sensitive(RadialGradient) def radial_gradient(self, value): self._radial_gradient = value @property def stops(self): """Definition of the stop points within the color gradient. The value expected is an iterable of two-value iterables, where the first value is the start position of the gradient, the second is the color to apply to this section of the gradient. :rtype: :class:`list <python:list>` of 2-item :class:`list <python:list>` where item 1 is a numeric, and item 2 is a :class:`str <python:str>` """ return self._stops @stops.setter def stops(self, value): value = validators.iterable(value, allow_empty = True) if not value: self._stops = None else: stops = [] for item in value: stop = validators.iterable(item, allow_empty = False, minimum_length = 2, maximum_length = 2) stop[0] = validators.numeric(stop[0], allow_empty = False) stop[1] = validators.string(stop[1], allow_empty = False) stops.append(stop) self._stops = stops @classmethod def _get_kwargs_from_dict(cls, as_dict): kwargs = { 'linear_gradient': as_dict.get('linearGradient', None), 'radial_gradient': as_dict.get('radialGradient', None), 'stops': as_dict.get('stops', None) } return kwargs def _to_untrimmed_dict(self, in_cls = None) -> dict: untrimmed = { 'linearGradient': self.linear_gradient, 'radialGradient': self.radial_gradient, 'stops': self.stops } return untrimmed