# coding: utf-8

"""
    Vidispine API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 5.x
    Contact: info@vidispine.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six
from . import *

class ScalingType(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'pad_color': 'str',
        'right': 'int',
        'bottom': 'int',
        'pixel_aspect_ratio': 'AspectRatioType',
        'top': 'int',
        'height': 'int',
        'width': 'int',
        'rotate': 'str',
        'target_dar': 'AspectRatioType',
        'left': 'int'
    }

    attribute_map = {
        'pad_color': 'padColor',
        'right': 'right',
        'bottom': 'bottom',
        'pixel_aspect_ratio': 'pixelAspectRatio',
        'top': 'top',
        'height': 'height',
        'width': 'width',
        'rotate': 'rotate',
        'target_dar': 'targetDAR',
        'left': 'left'
    }

    def __init__(self, pad_color=None, right=None, bottom=None, pixel_aspect_ratio=None, top=None, height=None, width=None, rotate=None, target_dar=None, left=None):  # noqa: E501
        """ScalingType - a model defined in OpenAPI"""  # noqa: E501

        self._pad_color = None
        self._right = None
        self._bottom = None
        self._pixel_aspect_ratio = None
        self._top = None
        self._height = None
        self._width = None
        self._rotate = None
        self._target_dar = None
        self._left = None
        self.discriminator = None

        if pad_color is not None:
            self.pad_color = pad_color
        if right is not None:
            self.right = right
        if bottom is not None:
            self.bottom = bottom
        if pixel_aspect_ratio is not None:
            self.pixel_aspect_ratio = pixel_aspect_ratio
        if top is not None:
            self.top = top
        if height is not None:
            self.height = height
        if width is not None:
            self.width = width
        if rotate is not None:
            self.rotate = rotate
        if target_dar is not None:
            self.target_dar = target_dar
        if left is not None:
            self.left = left

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


        :return: The pad_color of this ScalingType.  # noqa: E501
        :rtype: str
        """
        return self._pad_color

    @pad_color.setter
    def pad_color(self, pad_color):
        """Sets the pad_color of this ScalingType.


        :param pad_color: The pad_color of this ScalingType.  # noqa: E501
        :type: str
        """

        self._pad_color = pad_color

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


        :return: The right of this ScalingType.  # noqa: E501
        :rtype: int
        """
        return self._right

    @right.setter
    def right(self, right):
        """Sets the right of this ScalingType.


        :param right: The right of this ScalingType.  # noqa: E501
        :type: int
        """

        self._right = right

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


        :return: The bottom of this ScalingType.  # noqa: E501
        :rtype: int
        """
        return self._bottom

    @bottom.setter
    def bottom(self, bottom):
        """Sets the bottom of this ScalingType.


        :param bottom: The bottom of this ScalingType.  # noqa: E501
        :type: int
        """

        self._bottom = bottom

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


        :return: The pixel_aspect_ratio of this ScalingType.  # noqa: E501
        :rtype: AspectRatioType
        """
        return self._pixel_aspect_ratio

    @pixel_aspect_ratio.setter
    def pixel_aspect_ratio(self, pixel_aspect_ratio):
        """Sets the pixel_aspect_ratio of this ScalingType.


        :param pixel_aspect_ratio: The pixel_aspect_ratio of this ScalingType.  # noqa: E501
        :type: AspectRatioType
        """

        self._pixel_aspect_ratio = pixel_aspect_ratio

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


        :return: The top of this ScalingType.  # noqa: E501
        :rtype: int
        """
        return self._top

    @top.setter
    def top(self, top):
        """Sets the top of this ScalingType.


        :param top: The top of this ScalingType.  # noqa: E501
        :type: int
        """

        self._top = top

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


        :return: The height of this ScalingType.  # noqa: E501
        :rtype: int
        """
        return self._height

    @height.setter
    def height(self, height):
        """Sets the height of this ScalingType.


        :param height: The height of this ScalingType.  # noqa: E501
        :type: int
        """

        self._height = height

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


        :return: The width of this ScalingType.  # noqa: E501
        :rtype: int
        """
        return self._width

    @width.setter
    def width(self, width):
        """Sets the width of this ScalingType.


        :param width: The width of this ScalingType.  # noqa: E501
        :type: int
        """

        self._width = width

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


        :return: The rotate of this ScalingType.  # noqa: E501
        :rtype: str
        """
        return self._rotate

    @rotate.setter
    def rotate(self, rotate):
        """Sets the rotate of this ScalingType.


        :param rotate: The rotate of this ScalingType.  # noqa: E501
        :type: str
        """

        self._rotate = rotate

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


        :return: The target_dar of this ScalingType.  # noqa: E501
        :rtype: AspectRatioType
        """
        return self._target_dar

    @target_dar.setter
    def target_dar(self, target_dar):
        """Sets the target_dar of this ScalingType.


        :param target_dar: The target_dar of this ScalingType.  # noqa: E501
        :type: AspectRatioType
        """

        self._target_dar = target_dar

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


        :return: The left of this ScalingType.  # noqa: E501
        :rtype: int
        """
        return self._left

    @left.setter
    def left(self, left):
        """Sets the left of this ScalingType.


        :param left: The left of this ScalingType.  # noqa: E501
        :type: int
        """

        self._left = left

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

        for attr, _ in six.iteritems(self.openapi_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

        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, ScalingType):
            return False

        return self.__dict__ == other.__dict__

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