// Unity C# reference source
// Copyright (c) Unity Technologies. For terms of use, see
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License

/******************************************************************************/
//
//                             DO NOT MODIFY
//          This file has been generated by the UIElementsGenerator tool
//              See StyleGroupStructsGenerator class for details
//
/******************************************************************************/
using System;

namespace UnityEngine.UIElements
{
    internal struct InheritedData : IEquatable<InheritedData>
    {
        public StyleColor color;
        public StyleLength fontSize;
        public StyleFont unityFont;
        public StyleEnum<FontStyle> unityFontStyleAndWeight;
        public StyleEnum<TextAnchor> unityTextAlign;
        public StyleEnum<Visibility> visibility;
        public StyleEnum<WhiteSpace> whiteSpace;

        public static bool operator ==(InheritedData lhs, InheritedData rhs)
        {
            return lhs.color == rhs.color &&
                lhs.fontSize == rhs.fontSize &&
                lhs.unityFont == rhs.unityFont &&
                lhs.unityFontStyleAndWeight.value == rhs.unityFontStyleAndWeight.value &&
                lhs.unityFontStyleAndWeight.keyword == rhs.unityFontStyleAndWeight.keyword &&
                lhs.unityTextAlign.value == rhs.unityTextAlign.value &&
                lhs.unityTextAlign.keyword == rhs.unityTextAlign.keyword &&
                lhs.visibility.value == rhs.visibility.value &&
                lhs.visibility.keyword == rhs.visibility.keyword &&
                lhs.whiteSpace.value == rhs.whiteSpace.value &&
                lhs.whiteSpace.keyword == rhs.whiteSpace.keyword;
        }

        public static bool operator !=(InheritedData lhs, InheritedData rhs)
        {
            return !(lhs == rhs);
        }

        public bool Equals(InheritedData other)
        {
            return other == this;
        }

        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj))
                return false;
            return obj is InheritedData &&
                Equals((InheritedData)obj);
        }

        public override int GetHashCode()
        {
            unchecked
            {
                var hashCode = color.GetHashCode();
                hashCode = (hashCode * 397) ^ fontSize.GetHashCode();
                hashCode = (hashCode * 397) ^ unityFont.GetHashCode();
                hashCode = (hashCode * 397) ^ unityFontStyleAndWeight.GetHashCode();
                hashCode = (hashCode * 397) ^ unityTextAlign.GetHashCode();
                hashCode = (hashCode * 397) ^ visibility.GetHashCode();
                hashCode = (hashCode * 397) ^ whiteSpace.GetHashCode();
                return hashCode;
            }
        }
    }

    internal struct NonInheritedData : IEquatable<NonInheritedData>
    {
        public StyleEnum<Align> alignContent;
        public StyleEnum<Align> alignItems;
        public StyleEnum<Align> alignSelf;
        public StyleColor backgroundColor;
        public StyleBackground backgroundImage;
        public StyleColor borderBottomColor;
        public StyleLength borderBottomLeftRadius;
        public StyleLength borderBottomRightRadius;
        public StyleFloat borderBottomWidth;
        public StyleColor borderLeftColor;
        public StyleFloat borderLeftWidth;
        public StyleColor borderRightColor;
        public StyleFloat borderRightWidth;
        public StyleColor borderTopColor;
        public StyleLength borderTopLeftRadius;
        public StyleLength borderTopRightRadius;
        public StyleFloat borderTopWidth;
        public StyleLength bottom;
        public StyleCursor cursor;
        public StyleEnum<DisplayStyle> display;
        public StyleLength flexBasis;
        public StyleEnum<FlexDirection> flexDirection;
        public StyleFloat flexGrow;
        public StyleFloat flexShrink;
        public StyleEnum<Wrap> flexWrap;
        public StyleLength height;
        public StyleEnum<Justify> justifyContent;
        public StyleLength left;
        public StyleLength marginBottom;
        public StyleLength marginLeft;
        public StyleLength marginRight;
        public StyleLength marginTop;
        public StyleLength maxHeight;
        public StyleLength maxWidth;
        public StyleLength minHeight;
        public StyleLength minWidth;
        public StyleFloat opacity;
        public StyleEnum<OverflowInternal> overflow;
        public StyleLength paddingBottom;
        public StyleLength paddingLeft;
        public StyleLength paddingRight;
        public StyleLength paddingTop;
        public StyleEnum<Position> position;
        public StyleLength right;
        public StyleEnum<TextOverflow> textOverflow;
        public StyleLength top;
        public StyleColor unityBackgroundImageTintColor;
        public StyleEnum<ScaleMode> unityBackgroundScaleMode;
        public StyleEnum<OverflowClipBox> unityOverflowClipBox;
        public StyleInt unitySliceBottom;
        public StyleInt unitySliceLeft;
        public StyleInt unitySliceRight;
        public StyleInt unitySliceTop;
        public StyleEnum<TextOverflowPosition> unityTextOverflowPosition;
        public StyleLength width;

        public static bool operator ==(NonInheritedData lhs, NonInheritedData rhs)
        {
            return lhs.alignContent.value == rhs.alignContent.value &&
                lhs.alignContent.keyword == rhs.alignContent.keyword &&
                lhs.alignItems.value == rhs.alignItems.value &&
                lhs.alignItems.keyword == rhs.alignItems.keyword &&
                lhs.alignSelf.value == rhs.alignSelf.value &&
                lhs.alignSelf.keyword == rhs.alignSelf.keyword &&
                lhs.backgroundColor == rhs.backgroundColor &&
                lhs.backgroundImage == rhs.backgroundImage &&
                lhs.borderBottomColor == rhs.borderBottomColor &&
                lhs.borderBottomLeftRadius == rhs.borderBottomLeftRadius &&
                lhs.borderBottomRightRadius == rhs.borderBottomRightRadius &&
                lhs.borderBottomWidth == rhs.borderBottomWidth &&
                lhs.borderLeftColor == rhs.borderLeftColor &&
                lhs.borderLeftWidth == rhs.borderLeftWidth &&
                lhs.borderRightColor == rhs.borderRightColor &&
                lhs.borderRightWidth == rhs.borderRightWidth &&
                lhs.borderTopColor == rhs.borderTopColor &&
                lhs.borderTopLeftRadius == rhs.borderTopLeftRadius &&
                lhs.borderTopRightRadius == rhs.borderTopRightRadius &&
                lhs.borderTopWidth == rhs.borderTopWidth &&
                lhs.bottom == rhs.bottom &&
                lhs.cursor == rhs.cursor &&
                lhs.display.value == rhs.display.value &&
                lhs.display.keyword == rhs.display.keyword &&
                lhs.flexBasis == rhs.flexBasis &&
                lhs.flexDirection.value == rhs.flexDirection.value &&
                lhs.flexDirection.keyword == rhs.flexDirection.keyword &&
                lhs.flexGrow == rhs.flexGrow &&
                lhs.flexShrink == rhs.flexShrink &&
                lhs.flexWrap.value == rhs.flexWrap.value &&
                lhs.flexWrap.keyword == rhs.flexWrap.keyword &&
                lhs.height == rhs.height &&
                lhs.justifyContent.value == rhs.justifyContent.value &&
                lhs.justifyContent.keyword == rhs.justifyContent.keyword &&
                lhs.left == rhs.left &&
                lhs.marginBottom == rhs.marginBottom &&
                lhs.marginLeft == rhs.marginLeft &&
                lhs.marginRight == rhs.marginRight &&
                lhs.marginTop == rhs.marginTop &&
                lhs.maxHeight == rhs.maxHeight &&
                lhs.maxWidth == rhs.maxWidth &&
                lhs.minHeight == rhs.minHeight &&
                lhs.minWidth == rhs.minWidth &&
                lhs.opacity == rhs.opacity &&
                lhs.overflow.value == rhs.overflow.value &&
                lhs.overflow.keyword == rhs.overflow.keyword &&
                lhs.paddingBottom == rhs.paddingBottom &&
                lhs.paddingLeft == rhs.paddingLeft &&
                lhs.paddingRight == rhs.paddingRight &&
                lhs.paddingTop == rhs.paddingTop &&
                lhs.position.value == rhs.position.value &&
                lhs.position.keyword == rhs.position.keyword &&
                lhs.right == rhs.right &&
                lhs.textOverflow.value == rhs.textOverflow.value &&
                lhs.textOverflow.keyword == rhs.textOverflow.keyword &&
                lhs.top == rhs.top &&
                lhs.unityBackgroundImageTintColor == rhs.unityBackgroundImageTintColor &&
                lhs.unityBackgroundScaleMode.value == rhs.unityBackgroundScaleMode.value &&
                lhs.unityBackgroundScaleMode.keyword == rhs.unityBackgroundScaleMode.keyword &&
                lhs.unityOverflowClipBox.value == rhs.unityOverflowClipBox.value &&
                lhs.unityOverflowClipBox.keyword == rhs.unityOverflowClipBox.keyword &&
                lhs.unitySliceBottom == rhs.unitySliceBottom &&
                lhs.unitySliceLeft == rhs.unitySliceLeft &&
                lhs.unitySliceRight == rhs.unitySliceRight &&
                lhs.unitySliceTop == rhs.unitySliceTop &&
                lhs.unityTextOverflowPosition.value == rhs.unityTextOverflowPosition.value &&
                lhs.unityTextOverflowPosition.keyword == rhs.unityTextOverflowPosition.keyword &&
                lhs.width == rhs.width;
        }

        public static bool operator !=(NonInheritedData lhs, NonInheritedData rhs)
        {
            return !(lhs == rhs);
        }

        public bool Equals(NonInheritedData other)
        {
            return other == this;
        }

        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj))
                return false;
            return obj is NonInheritedData &&
                Equals((NonInheritedData)obj);
        }

        public override int GetHashCode()
        {
            unchecked
            {
                var hashCode = alignContent.GetHashCode();
                hashCode = (hashCode * 397) ^ alignItems.GetHashCode();
                hashCode = (hashCode * 397) ^ alignSelf.GetHashCode();
                hashCode = (hashCode * 397) ^ backgroundColor.GetHashCode();
                hashCode = (hashCode * 397) ^ backgroundImage.GetHashCode();
                hashCode = (hashCode * 397) ^ borderBottomColor.GetHashCode();
                hashCode = (hashCode * 397) ^ borderBottomLeftRadius.GetHashCode();
                hashCode = (hashCode * 397) ^ borderBottomRightRadius.GetHashCode();
                hashCode = (hashCode * 397) ^ borderBottomWidth.GetHashCode();
                hashCode = (hashCode * 397) ^ borderLeftColor.GetHashCode();
                hashCode = (hashCode * 397) ^ borderLeftWidth.GetHashCode();
                hashCode = (hashCode * 397) ^ borderRightColor.GetHashCode();
                hashCode = (hashCode * 397) ^ borderRightWidth.GetHashCode();
                hashCode = (hashCode * 397) ^ borderTopColor.GetHashCode();
                hashCode = (hashCode * 397) ^ borderTopLeftRadius.GetHashCode();
                hashCode = (hashCode * 397) ^ borderTopRightRadius.GetHashCode();
                hashCode = (hashCode * 397) ^ borderTopWidth.GetHashCode();
                hashCode = (hashCode * 397) ^ bottom.GetHashCode();
                hashCode = (hashCode * 397) ^ cursor.GetHashCode();
                hashCode = (hashCode * 397) ^ display.GetHashCode();
                hashCode = (hashCode * 397) ^ flexBasis.GetHashCode();
                hashCode = (hashCode * 397) ^ flexDirection.GetHashCode();
                hashCode = (hashCode * 397) ^ flexGrow.GetHashCode();
                hashCode = (hashCode * 397) ^ flexShrink.GetHashCode();
                hashCode = (hashCode * 397) ^ flexWrap.GetHashCode();
                hashCode = (hashCode * 397) ^ height.GetHashCode();
                hashCode = (hashCode * 397) ^ justifyContent.GetHashCode();
                hashCode = (hashCode * 397) ^ left.GetHashCode();
                hashCode = (hashCode * 397) ^ marginBottom.GetHashCode();
                hashCode = (hashCode * 397) ^ marginLeft.GetHashCode();
                hashCode = (hashCode * 397) ^ marginRight.GetHashCode();
                hashCode = (hashCode * 397) ^ marginTop.GetHashCode();
                hashCode = (hashCode * 397) ^ maxHeight.GetHashCode();
                hashCode = (hashCode * 397) ^ maxWidth.GetHashCode();
                hashCode = (hashCode * 397) ^ minHeight.GetHashCode();
                hashCode = (hashCode * 397) ^ minWidth.GetHashCode();
                hashCode = (hashCode * 397) ^ opacity.GetHashCode();
                hashCode = (hashCode * 397) ^ overflow.GetHashCode();
                hashCode = (hashCode * 397) ^ paddingBottom.GetHashCode();
                hashCode = (hashCode * 397) ^ paddingLeft.GetHashCode();
                hashCode = (hashCode * 397) ^ paddingRight.GetHashCode();
                hashCode = (hashCode * 397) ^ paddingTop.GetHashCode();
                hashCode = (hashCode * 397) ^ position.GetHashCode();
                hashCode = (hashCode * 397) ^ right.GetHashCode();
                hashCode = (hashCode * 397) ^ textOverflow.GetHashCode();
                hashCode = (hashCode * 397) ^ top.GetHashCode();
                hashCode = (hashCode * 397) ^ unityBackgroundImageTintColor.GetHashCode();
                hashCode = (hashCode * 397) ^ unityBackgroundScaleMode.GetHashCode();
                hashCode = (hashCode * 397) ^ unityOverflowClipBox.GetHashCode();
                hashCode = (hashCode * 397) ^ unitySliceBottom.GetHashCode();
                hashCode = (hashCode * 397) ^ unitySliceLeft.GetHashCode();
                hashCode = (hashCode * 397) ^ unitySliceRight.GetHashCode();
                hashCode = (hashCode * 397) ^ unitySliceTop.GetHashCode();
                hashCode = (hashCode * 397) ^ unityTextOverflowPosition.GetHashCode();
                hashCode = (hashCode * 397) ^ width.GetHashCode();
                return hashCode;
            }
        }
    }
}
