# coding: utf-8

"""
    huetainment API

    huetainment API  # noqa: E501

    OpenAPI spec version: 1.0.0
    Contact: cbro@semperpax.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six

from huetainment_api.models.setting_capture_device import SettingCaptureDevice  # noqa: F401,E501
from huetainment_api.models.setting_capture_interval import SettingCaptureInterval  # noqa: F401,E501
from huetainment_api.models.setting_capture_margins import SettingCaptureMargins  # noqa: F401,E501
from huetainment_api.models.setting_capture_multiplier import SettingCaptureMultiplier  # noqa: F401,E501
from huetainment_api.models.setting_capture_video_standard import SettingCaptureVideoStandard  # noqa: F401,E501
from huetainment_api.models.setting_center_slowness import SettingCenterSlowness  # noqa: F401,E501
from huetainment_api.models.setting_chroma_boost import SettingChromaBoost  # noqa: F401,E501
from huetainment_api.models.setting_color_bias import SettingColorBias  # noqa: F401,E501
from huetainment_api.models.setting_luma_boost import SettingLumaBoost  # noqa: F401,E501
from huetainment_api.models.setting_max_luminance import SettingMaxLuminance  # noqa: F401,E501
from huetainment_api.models.setting_min_luminance import SettingMinLuminance  # noqa: F401,E501
from huetainment_api.models.setting_side_slowness import SettingSideSlowness  # noqa: F401,E501
from huetainment_api.models.setting_syncing_group import SettingSyncingGroup  # noqa: F401,E501


class Settings(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'capture_device': 'SettingCaptureDevice',
        'capture_interval': 'SettingCaptureInterval',
        'capture_multiplier': 'SettingCaptureMultiplier',
        'capture_video_standard': 'SettingCaptureVideoStandard',
        'center_slowness': 'SettingCenterSlowness',
        'side_slowness': 'SettingSideSlowness',
        'chroma_boost': 'SettingChromaBoost',
        'luma_boost': 'SettingLumaBoost',
        'color_bias': 'SettingColorBias',
        'min_luminance': 'SettingMinLuminance',
        'max_luminance': 'SettingMaxLuminance',
        'syncing_group': 'SettingSyncingGroup',
        'capture_margins': 'SettingCaptureMargins'
    }

    attribute_map = {
        'capture_device': 'captureDevice',
        'capture_interval': 'captureInterval',
        'capture_multiplier': 'captureMultiplier',
        'capture_video_standard': 'captureVideoStandard',
        'center_slowness': 'centerSlowness',
        'side_slowness': 'sideSlowness',
        'chroma_boost': 'chromaBoost',
        'luma_boost': 'lumaBoost',
        'color_bias': 'colorBias',
        'min_luminance': 'minLuminance',
        'max_luminance': 'maxLuminance',
        'syncing_group': 'syncingGroup',
        'capture_margins': 'captureMargins'
    }

    def __init__(self, capture_device=None, capture_interval=None, capture_multiplier=None, capture_video_standard=None, center_slowness=None, side_slowness=None, chroma_boost=None, luma_boost=None, color_bias=None, min_luminance=None, max_luminance=None, syncing_group=None, capture_margins=None):  # noqa: E501
        """Settings - a model defined in Swagger"""  # noqa: E501

        self._capture_device = None
        self._capture_interval = None
        self._capture_multiplier = None
        self._capture_video_standard = None
        self._center_slowness = None
        self._side_slowness = None
        self._chroma_boost = None
        self._luma_boost = None
        self._color_bias = None
        self._min_luminance = None
        self._max_luminance = None
        self._syncing_group = None
        self._capture_margins = None
        self.discriminator = None

        if capture_device is not None:
            self.capture_device = capture_device
        if capture_interval is not None:
            self.capture_interval = capture_interval
        if capture_multiplier is not None:
            self.capture_multiplier = capture_multiplier
        if capture_video_standard is not None:
            self.capture_video_standard = capture_video_standard
        if center_slowness is not None:
            self.center_slowness = center_slowness
        if side_slowness is not None:
            self.side_slowness = side_slowness
        if chroma_boost is not None:
            self.chroma_boost = chroma_boost
        if luma_boost is not None:
            self.luma_boost = luma_boost
        if color_bias is not None:
            self.color_bias = color_bias
        if min_luminance is not None:
            self.min_luminance = min_luminance
        if max_luminance is not None:
            self.max_luminance = max_luminance
        if syncing_group is not None:
            self.syncing_group = syncing_group
        if capture_margins is not None:
            self.capture_margins = capture_margins

    @property
    def capture_device(self):
        """Gets the capture_device of this Settings.  # noqa: E501


        :return: The capture_device of this Settings.  # noqa: E501
        :rtype: SettingCaptureDevice
        """
        return self._capture_device

    @capture_device.setter
    def capture_device(self, capture_device):
        """Sets the capture_device of this Settings.


        :param capture_device: The capture_device of this Settings.  # noqa: E501
        :type: SettingCaptureDevice
        """

        self._capture_device = capture_device

    @property
    def capture_interval(self):
        """Gets the capture_interval of this Settings.  # noqa: E501


        :return: The capture_interval of this Settings.  # noqa: E501
        :rtype: SettingCaptureInterval
        """
        return self._capture_interval

    @capture_interval.setter
    def capture_interval(self, capture_interval):
        """Sets the capture_interval of this Settings.


        :param capture_interval: The capture_interval of this Settings.  # noqa: E501
        :type: SettingCaptureInterval
        """

        self._capture_interval = capture_interval

    @property
    def capture_multiplier(self):
        """Gets the capture_multiplier of this Settings.  # noqa: E501


        :return: The capture_multiplier of this Settings.  # noqa: E501
        :rtype: SettingCaptureMultiplier
        """
        return self._capture_multiplier

    @capture_multiplier.setter
    def capture_multiplier(self, capture_multiplier):
        """Sets the capture_multiplier of this Settings.


        :param capture_multiplier: The capture_multiplier of this Settings.  # noqa: E501
        :type: SettingCaptureMultiplier
        """

        self._capture_multiplier = capture_multiplier

    @property
    def capture_video_standard(self):
        """Gets the capture_video_standard of this Settings.  # noqa: E501


        :return: The capture_video_standard of this Settings.  # noqa: E501
        :rtype: SettingCaptureVideoStandard
        """
        return self._capture_video_standard

    @capture_video_standard.setter
    def capture_video_standard(self, capture_video_standard):
        """Sets the capture_video_standard of this Settings.


        :param capture_video_standard: The capture_video_standard of this Settings.  # noqa: E501
        :type: SettingCaptureVideoStandard
        """

        self._capture_video_standard = capture_video_standard

    @property
    def center_slowness(self):
        """Gets the center_slowness of this Settings.  # noqa: E501


        :return: The center_slowness of this Settings.  # noqa: E501
        :rtype: SettingCenterSlowness
        """
        return self._center_slowness

    @center_slowness.setter
    def center_slowness(self, center_slowness):
        """Sets the center_slowness of this Settings.


        :param center_slowness: The center_slowness of this Settings.  # noqa: E501
        :type: SettingCenterSlowness
        """

        self._center_slowness = center_slowness

    @property
    def side_slowness(self):
        """Gets the side_slowness of this Settings.  # noqa: E501


        :return: The side_slowness of this Settings.  # noqa: E501
        :rtype: SettingSideSlowness
        """
        return self._side_slowness

    @side_slowness.setter
    def side_slowness(self, side_slowness):
        """Sets the side_slowness of this Settings.


        :param side_slowness: The side_slowness of this Settings.  # noqa: E501
        :type: SettingSideSlowness
        """

        self._side_slowness = side_slowness

    @property
    def chroma_boost(self):
        """Gets the chroma_boost of this Settings.  # noqa: E501


        :return: The chroma_boost of this Settings.  # noqa: E501
        :rtype: SettingChromaBoost
        """
        return self._chroma_boost

    @chroma_boost.setter
    def chroma_boost(self, chroma_boost):
        """Sets the chroma_boost of this Settings.


        :param chroma_boost: The chroma_boost of this Settings.  # noqa: E501
        :type: SettingChromaBoost
        """

        self._chroma_boost = chroma_boost

    @property
    def luma_boost(self):
        """Gets the luma_boost of this Settings.  # noqa: E501


        :return: The luma_boost of this Settings.  # noqa: E501
        :rtype: SettingLumaBoost
        """
        return self._luma_boost

    @luma_boost.setter
    def luma_boost(self, luma_boost):
        """Sets the luma_boost of this Settings.


        :param luma_boost: The luma_boost of this Settings.  # noqa: E501
        :type: SettingLumaBoost
        """

        self._luma_boost = luma_boost

    @property
    def color_bias(self):
        """Gets the color_bias of this Settings.  # noqa: E501


        :return: The color_bias of this Settings.  # noqa: E501
        :rtype: SettingColorBias
        """
        return self._color_bias

    @color_bias.setter
    def color_bias(self, color_bias):
        """Sets the color_bias of this Settings.


        :param color_bias: The color_bias of this Settings.  # noqa: E501
        :type: SettingColorBias
        """

        self._color_bias = color_bias

    @property
    def min_luminance(self):
        """Gets the min_luminance of this Settings.  # noqa: E501


        :return: The min_luminance of this Settings.  # noqa: E501
        :rtype: SettingMinLuminance
        """
        return self._min_luminance

    @min_luminance.setter
    def min_luminance(self, min_luminance):
        """Sets the min_luminance of this Settings.


        :param min_luminance: The min_luminance of this Settings.  # noqa: E501
        :type: SettingMinLuminance
        """

        self._min_luminance = min_luminance

    @property
    def max_luminance(self):
        """Gets the max_luminance of this Settings.  # noqa: E501


        :return: The max_luminance of this Settings.  # noqa: E501
        :rtype: SettingMaxLuminance
        """
        return self._max_luminance

    @max_luminance.setter
    def max_luminance(self, max_luminance):
        """Sets the max_luminance of this Settings.


        :param max_luminance: The max_luminance of this Settings.  # noqa: E501
        :type: SettingMaxLuminance
        """

        self._max_luminance = max_luminance

    @property
    def syncing_group(self):
        """Gets the syncing_group of this Settings.  # noqa: E501


        :return: The syncing_group of this Settings.  # noqa: E501
        :rtype: SettingSyncingGroup
        """
        return self._syncing_group

    @syncing_group.setter
    def syncing_group(self, syncing_group):
        """Sets the syncing_group of this Settings.


        :param syncing_group: The syncing_group of this Settings.  # noqa: E501
        :type: SettingSyncingGroup
        """

        self._syncing_group = syncing_group

    @property
    def capture_margins(self):
        """Gets the capture_margins of this Settings.  # noqa: E501


        :return: The capture_margins of this Settings.  # noqa: E501
        :rtype: SettingCaptureMargins
        """
        return self._capture_margins

    @capture_margins.setter
    def capture_margins(self, capture_margins):
        """Sets the capture_margins of this Settings.


        :param capture_margins: The capture_margins of this Settings.  # noqa: E501
        :type: SettingCaptureMargins
        """

        self._capture_margins = capture_margins

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(Settings, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, Settings):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
