# 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 VideoComponentTypeAllOf(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 = {
        'drop_frame': 'bool',
        'bit_depth': 'int',
        'colr_primaries': 'int',
        'display_y_offset': 'RationalType',
        'display_width': 'RationalType',
        'color_primaries': 'str',
        'average_frame_rate': 'TimeBaseType',
        'bits_per_pixel': 'int',
        'pixel_aspect_ratio': 'AspectRatioType',
        'start_timecode': 'int',
        'real_base_frame_rate': 'TimeBaseType',
        'field_order': 'str',
        'display_x_offset': 'RationalType',
        'colr_matrix': 'int',
        'media_info': 'VideoMediaInfoType',
        'pixel_format': 'str',
        'codec_time_base': 'TimeBaseType',
        'max_packet_size': 'int',
        'ticks_per_frame': 'int',
        'max_b_frames': 'int',
        'container_sar': 'AspectRatioType',
        'video_standard': 'VideoComponentTypeAllOfVideoStandard',
        'colr_transfer_function': 'int',
        'display_height': 'RationalType',
        'resolution': 'ResolutionType'
    }

    attribute_map = {
        'drop_frame': 'dropFrame',
        'bit_depth': 'bitDepth',
        'colr_primaries': 'colr_primaries',
        'display_y_offset': 'displayYOffset',
        'display_width': 'displayWidth',
        'color_primaries': 'colorPrimaries',
        'average_frame_rate': 'averageFrameRate',
        'bits_per_pixel': 'bitsPerPixel',
        'pixel_aspect_ratio': 'pixelAspectRatio',
        'start_timecode': 'startTimecode',
        'real_base_frame_rate': 'realBaseFrameRate',
        'field_order': 'fieldOrder',
        'display_x_offset': 'displayXOffset',
        'colr_matrix': 'colr_matrix',
        'media_info': 'mediaInfo',
        'pixel_format': 'pixelFormat',
        'codec_time_base': 'codecTimeBase',
        'max_packet_size': 'max_packet_size',
        'ticks_per_frame': 'ticks_per_frame',
        'max_b_frames': 'maxBFrames',
        'container_sar': 'containerSAR',
        'video_standard': 'videoStandard',
        'colr_transfer_function': 'colr_transfer_function',
        'display_height': 'displayHeight',
        'resolution': 'resolution'
    }

    def __init__(self, drop_frame=None, bit_depth=None, colr_primaries=None, display_y_offset=None, display_width=None, color_primaries=None, average_frame_rate=None, bits_per_pixel=None, pixel_aspect_ratio=None, start_timecode=None, real_base_frame_rate=None, field_order=None, display_x_offset=None, colr_matrix=None, media_info=None, pixel_format=None, codec_time_base=None, max_packet_size=None, ticks_per_frame=None, max_b_frames=None, container_sar=None, video_standard=None, colr_transfer_function=None, display_height=None, resolution=None):  # noqa: E501
        """VideoComponentTypeAllOf - a model defined in OpenAPI"""  # noqa: E501

        self._drop_frame = None
        self._bit_depth = None
        self._colr_primaries = None
        self._display_y_offset = None
        self._display_width = None
        self._color_primaries = None
        self._average_frame_rate = None
        self._bits_per_pixel = None
        self._pixel_aspect_ratio = None
        self._start_timecode = None
        self._real_base_frame_rate = None
        self._field_order = None
        self._display_x_offset = None
        self._colr_matrix = None
        self._media_info = None
        self._pixel_format = None
        self._codec_time_base = None
        self._max_packet_size = None
        self._ticks_per_frame = None
        self._max_b_frames = None
        self._container_sar = None
        self._video_standard = None
        self._colr_transfer_function = None
        self._display_height = None
        self._resolution = None
        self.discriminator = None

        if drop_frame is not None:
            self.drop_frame = drop_frame
        if bit_depth is not None:
            self.bit_depth = bit_depth
        if colr_primaries is not None:
            self.colr_primaries = colr_primaries
        if display_y_offset is not None:
            self.display_y_offset = display_y_offset
        if display_width is not None:
            self.display_width = display_width
        if color_primaries is not None:
            self.color_primaries = color_primaries
        if average_frame_rate is not None:
            self.average_frame_rate = average_frame_rate
        if bits_per_pixel is not None:
            self.bits_per_pixel = bits_per_pixel
        if pixel_aspect_ratio is not None:
            self.pixel_aspect_ratio = pixel_aspect_ratio
        if start_timecode is not None:
            self.start_timecode = start_timecode
        if real_base_frame_rate is not None:
            self.real_base_frame_rate = real_base_frame_rate
        if field_order is not None:
            self.field_order = field_order
        if display_x_offset is not None:
            self.display_x_offset = display_x_offset
        if colr_matrix is not None:
            self.colr_matrix = colr_matrix
        if media_info is not None:
            self.media_info = media_info
        if pixel_format is not None:
            self.pixel_format = pixel_format
        if codec_time_base is not None:
            self.codec_time_base = codec_time_base
        if max_packet_size is not None:
            self.max_packet_size = max_packet_size
        if ticks_per_frame is not None:
            self.ticks_per_frame = ticks_per_frame
        if max_b_frames is not None:
            self.max_b_frames = max_b_frames
        if container_sar is not None:
            self.container_sar = container_sar
        if video_standard is not None:
            self.video_standard = video_standard
        if colr_transfer_function is not None:
            self.colr_transfer_function = colr_transfer_function
        if display_height is not None:
            self.display_height = display_height
        if resolution is not None:
            self.resolution = resolution

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


        :return: The drop_frame of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: bool
        """
        return self._drop_frame

    @drop_frame.setter
    def drop_frame(self, drop_frame):
        """Sets the drop_frame of this VideoComponentTypeAllOf.


        :param drop_frame: The drop_frame of this VideoComponentTypeAllOf.  # noqa: E501
        :type: bool
        """

        self._drop_frame = drop_frame

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


        :return: The bit_depth of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._bit_depth

    @bit_depth.setter
    def bit_depth(self, bit_depth):
        """Sets the bit_depth of this VideoComponentTypeAllOf.


        :param bit_depth: The bit_depth of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._bit_depth = bit_depth

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


        :return: The colr_primaries of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._colr_primaries

    @colr_primaries.setter
    def colr_primaries(self, colr_primaries):
        """Sets the colr_primaries of this VideoComponentTypeAllOf.


        :param colr_primaries: The colr_primaries of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._colr_primaries = colr_primaries

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


        :return: The display_y_offset of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: RationalType
        """
        return self._display_y_offset

    @display_y_offset.setter
    def display_y_offset(self, display_y_offset):
        """Sets the display_y_offset of this VideoComponentTypeAllOf.


        :param display_y_offset: The display_y_offset of this VideoComponentTypeAllOf.  # noqa: E501
        :type: RationalType
        """

        self._display_y_offset = display_y_offset

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


        :return: The display_width of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: RationalType
        """
        return self._display_width

    @display_width.setter
    def display_width(self, display_width):
        """Sets the display_width of this VideoComponentTypeAllOf.


        :param display_width: The display_width of this VideoComponentTypeAllOf.  # noqa: E501
        :type: RationalType
        """

        self._display_width = display_width

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


        :return: The color_primaries of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: str
        """
        return self._color_primaries

    @color_primaries.setter
    def color_primaries(self, color_primaries):
        """Sets the color_primaries of this VideoComponentTypeAllOf.


        :param color_primaries: The color_primaries of this VideoComponentTypeAllOf.  # noqa: E501
        :type: str
        """

        self._color_primaries = color_primaries

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


        :return: The average_frame_rate of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: TimeBaseType
        """
        return self._average_frame_rate

    @average_frame_rate.setter
    def average_frame_rate(self, average_frame_rate):
        """Sets the average_frame_rate of this VideoComponentTypeAllOf.


        :param average_frame_rate: The average_frame_rate of this VideoComponentTypeAllOf.  # noqa: E501
        :type: TimeBaseType
        """

        self._average_frame_rate = average_frame_rate

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


        :return: The bits_per_pixel of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._bits_per_pixel

    @bits_per_pixel.setter
    def bits_per_pixel(self, bits_per_pixel):
        """Sets the bits_per_pixel of this VideoComponentTypeAllOf.


        :param bits_per_pixel: The bits_per_pixel of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._bits_per_pixel = bits_per_pixel

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


        :return: The pixel_aspect_ratio of this VideoComponentTypeAllOf.  # 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 VideoComponentTypeAllOf.


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

        self._pixel_aspect_ratio = pixel_aspect_ratio

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


        :return: The start_timecode of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._start_timecode

    @start_timecode.setter
    def start_timecode(self, start_timecode):
        """Sets the start_timecode of this VideoComponentTypeAllOf.


        :param start_timecode: The start_timecode of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._start_timecode = start_timecode

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


        :return: The real_base_frame_rate of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: TimeBaseType
        """
        return self._real_base_frame_rate

    @real_base_frame_rate.setter
    def real_base_frame_rate(self, real_base_frame_rate):
        """Sets the real_base_frame_rate of this VideoComponentTypeAllOf.


        :param real_base_frame_rate: The real_base_frame_rate of this VideoComponentTypeAllOf.  # noqa: E501
        :type: TimeBaseType
        """

        self._real_base_frame_rate = real_base_frame_rate

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


        :return: The field_order of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: str
        """
        return self._field_order

    @field_order.setter
    def field_order(self, field_order):
        """Sets the field_order of this VideoComponentTypeAllOf.


        :param field_order: The field_order of this VideoComponentTypeAllOf.  # noqa: E501
        :type: str
        """

        self._field_order = field_order

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


        :return: The display_x_offset of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: RationalType
        """
        return self._display_x_offset

    @display_x_offset.setter
    def display_x_offset(self, display_x_offset):
        """Sets the display_x_offset of this VideoComponentTypeAllOf.


        :param display_x_offset: The display_x_offset of this VideoComponentTypeAllOf.  # noqa: E501
        :type: RationalType
        """

        self._display_x_offset = display_x_offset

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


        :return: The colr_matrix of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._colr_matrix

    @colr_matrix.setter
    def colr_matrix(self, colr_matrix):
        """Sets the colr_matrix of this VideoComponentTypeAllOf.


        :param colr_matrix: The colr_matrix of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._colr_matrix = colr_matrix

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


        :return: The media_info of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: VideoMediaInfoType
        """
        return self._media_info

    @media_info.setter
    def media_info(self, media_info):
        """Sets the media_info of this VideoComponentTypeAllOf.


        :param media_info: The media_info of this VideoComponentTypeAllOf.  # noqa: E501
        :type: VideoMediaInfoType
        """

        self._media_info = media_info

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


        :return: The pixel_format of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: str
        """
        return self._pixel_format

    @pixel_format.setter
    def pixel_format(self, pixel_format):
        """Sets the pixel_format of this VideoComponentTypeAllOf.


        :param pixel_format: The pixel_format of this VideoComponentTypeAllOf.  # noqa: E501
        :type: str
        """

        self._pixel_format = pixel_format

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


        :return: The codec_time_base of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: TimeBaseType
        """
        return self._codec_time_base

    @codec_time_base.setter
    def codec_time_base(self, codec_time_base):
        """Sets the codec_time_base of this VideoComponentTypeAllOf.


        :param codec_time_base: The codec_time_base of this VideoComponentTypeAllOf.  # noqa: E501
        :type: TimeBaseType
        """

        self._codec_time_base = codec_time_base

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


        :return: The max_packet_size of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._max_packet_size

    @max_packet_size.setter
    def max_packet_size(self, max_packet_size):
        """Sets the max_packet_size of this VideoComponentTypeAllOf.


        :param max_packet_size: The max_packet_size of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._max_packet_size = max_packet_size

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


        :return: The ticks_per_frame of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._ticks_per_frame

    @ticks_per_frame.setter
    def ticks_per_frame(self, ticks_per_frame):
        """Sets the ticks_per_frame of this VideoComponentTypeAllOf.


        :param ticks_per_frame: The ticks_per_frame of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._ticks_per_frame = ticks_per_frame

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


        :return: The max_b_frames of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._max_b_frames

    @max_b_frames.setter
    def max_b_frames(self, max_b_frames):
        """Sets the max_b_frames of this VideoComponentTypeAllOf.


        :param max_b_frames: The max_b_frames of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._max_b_frames = max_b_frames

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


        :return: The container_sar of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: AspectRatioType
        """
        return self._container_sar

    @container_sar.setter
    def container_sar(self, container_sar):
        """Sets the container_sar of this VideoComponentTypeAllOf.


        :param container_sar: The container_sar of this VideoComponentTypeAllOf.  # noqa: E501
        :type: AspectRatioType
        """

        self._container_sar = container_sar

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


        :return: The video_standard of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: VideoComponentTypeAllOfVideoStandard
        """
        return self._video_standard

    @video_standard.setter
    def video_standard(self, video_standard):
        """Sets the video_standard of this VideoComponentTypeAllOf.


        :param video_standard: The video_standard of this VideoComponentTypeAllOf.  # noqa: E501
        :type: VideoComponentTypeAllOfVideoStandard
        """

        self._video_standard = video_standard

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


        :return: The colr_transfer_function of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: int
        """
        return self._colr_transfer_function

    @colr_transfer_function.setter
    def colr_transfer_function(self, colr_transfer_function):
        """Sets the colr_transfer_function of this VideoComponentTypeAllOf.


        :param colr_transfer_function: The colr_transfer_function of this VideoComponentTypeAllOf.  # noqa: E501
        :type: int
        """

        self._colr_transfer_function = colr_transfer_function

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


        :return: The display_height of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: RationalType
        """
        return self._display_height

    @display_height.setter
    def display_height(self, display_height):
        """Sets the display_height of this VideoComponentTypeAllOf.


        :param display_height: The display_height of this VideoComponentTypeAllOf.  # noqa: E501
        :type: RationalType
        """

        self._display_height = display_height

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


        :return: The resolution of this VideoComponentTypeAllOf.  # noqa: E501
        :rtype: ResolutionType
        """
        return self._resolution

    @resolution.setter
    def resolution(self, resolution):
        """Sets the resolution of this VideoComponentTypeAllOf.


        :param resolution: The resolution of this VideoComponentTypeAllOf.  # noqa: E501
        :type: ResolutionType
        """

        self._resolution = resolution

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

        return self.__dict__ == other.__dict__

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