FairyGUI.RelationItem.ApplyOnSizeChanged C# (CSharp) Method

ApplyOnSizeChanged() private method

private ApplyOnSizeChanged ( RelationDef info ) : void
info RelationDef
return void
        void ApplyOnSizeChanged(RelationDef info)
        {
            float targetX, targetY;
            if (_target != _owner.parent)
            {
                targetX = _target.x;
                targetY = _target.y;
            }
            else
            {
                targetX = 0;
                targetY = 0;
            }
            float v, tmp;

            switch (info.type)
            {
                case RelationType.Left_Left:
                    break;
                case RelationType.Left_Center:
                    v = _owner.x - (targetX + _targetData.z / 2);
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    _owner.x = targetX + _target._rawWidth / 2 + v;
                    break;
                case RelationType.Left_Right:
                    v = _owner.x - (targetX + _targetData.z);
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    _owner.x = targetX + _target._rawWidth + v;
                    break;
                case RelationType.Center_Center:
                    v = _owner.x + _owner._rawWidth / 2 - (targetX + _targetData.z / 2);
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    _owner.x = targetX + _target._rawWidth / 2 + v - _owner._rawWidth / 2;
                    break;
                case RelationType.Right_Left:
                    v = _owner.x + _owner._rawWidth - targetX;
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    _owner.x = targetX + v - _owner._rawWidth;
                    break;
                case RelationType.Right_Center:
                    v = _owner.x + _owner._rawWidth - (targetX + _targetData.z / 2);
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    _owner.x = targetX + _target._rawWidth / 2 + v - _owner._rawWidth;
                    break;
                case RelationType.Right_Right:
                    v = _owner.x + _owner._rawWidth - (targetX + _targetData.z);
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    _owner.x = targetX + _target._rawWidth + v - _owner._rawWidth;
                    break;

                case RelationType.Top_Top:
                    break;
                case RelationType.Top_Middle:
                    v = _owner.y - (targetY + _targetData.w / 2);
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    _owner.y = targetY + _target._rawHeight / 2 + v;
                    break;
                case RelationType.Top_Bottom:
                    v = _owner.y - (targetY + _targetData.w);
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    _owner.y = targetY + _target._rawHeight + v;
                    break;
                case RelationType.Middle_Middle:
                    v = _owner.y + _owner._rawHeight / 2 - (targetY + _targetData.w / 2);
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    _owner.y = targetY + _target._rawHeight / 2 + v - _owner._rawHeight / 2;
                    break;
                case RelationType.Bottom_Top:
                    v = _owner.y + _owner._rawHeight - targetY;
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    _owner.y = targetY + v - _owner._rawHeight;
                    break;
                case RelationType.Bottom_Middle:
                    v = _owner.y + _owner._rawHeight - (targetY + _targetData.w / 2);
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    _owner.y = targetY + _target._rawHeight / 2 + v - _owner._rawHeight;
                    break;
                case RelationType.Bottom_Bottom:
                    v = _owner.y + _owner._rawHeight - (targetY + _targetData.w);
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    _owner.y = targetY + _target._rawHeight + v - _owner._rawHeight;
                    break;

                case RelationType.Width:
                    if (_owner.underConstruct && _owner == _target.parent)
                        v = _owner.sourceWidth - _target.initWidth;
                    else
                        v = _owner._rawWidth - _targetData.z;
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    if (_target == _owner.parent)
                        _owner.SetSize(_target._rawWidth + v, _owner._rawHeight, true);
                    else
                        _owner.width = _target._rawWidth + v;
                    break;
                case RelationType.Height:
                    if (_owner.underConstruct && _owner == _target.parent)
                        v = _owner.sourceHeight - _target.initHeight;
                    else
                        v = _owner._rawHeight - _targetData.w;
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    if (_target == _owner.parent)
                        _owner.SetSize(_owner._rawWidth, _target._rawHeight + v, true);
                    else
                        _owner.height = _target._rawHeight + v;
                    break;

                case RelationType.LeftExt_Left:
                    break;
                case RelationType.LeftExt_Right:
                    v = _owner.x - (targetX + _targetData.z);
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    tmp = _owner.x;
                    _owner.x = targetX + _target._rawWidth + v;
                    _owner.width = _owner._rawWidth - (_owner.x - tmp);
                    break;
                case RelationType.RightExt_Left:
                    break;
                case RelationType.RightExt_Right:
                    if (_owner.underConstruct && _owner == _target.parent)
                        v = _owner.sourceWidth - (targetX + _target.initWidth);
                    else
                        v = _owner._rawWidth - (targetX + _targetData.z);
                    if (_owner != _target.parent)
                        v += _owner.x;
                    if (info.percent)
                        v = v / _targetData.z * _target._rawWidth;
                    if (_owner != _target.parent)
                        _owner.width = targetX + _target._rawWidth + v - _owner.x;
                    else
                        _owner.width = targetX + _target._rawWidth + v;
                    break;
                case RelationType.TopExt_Top:
                    break;
                case RelationType.TopExt_Bottom:
                    v = _owner.y - (targetY + _targetData.w);
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    tmp = _owner.y;
                    _owner.y = targetY + _target._rawHeight + v;
                    _owner.height = _owner._rawHeight - (_owner.y - tmp);
                    break;
                case RelationType.BottomExt_Top:
                    break;
                case RelationType.BottomExt_Bottom:
                    if (_owner.underConstruct && _owner == _target.parent)
                        v = _owner.sourceHeight - (targetY + _target.initHeight);
                    else
                        v = _owner._rawHeight - (targetY + _targetData.w);
                    if (_owner != _target.parent)
                        v += _owner.y;
                    if (info.percent)
                        v = v / _targetData.w * _target._rawHeight;
                    if (_owner != _target.parent)
                        _owner.height = targetY + _target._rawHeight + v - _owner.y;
                    else
                        _owner.height = targetY + _target._rawHeight + v;
                    break;
            }
        }