Esempio n. 1
0
        private bool SetFrame(float left, float top, float right, float bottom)
        {
            bool changed = false;

            if (_layoutPositionData.Left != left ||
                _layoutPositionData.Right != right ||
                _layoutPositionData.Top != top ||
                _layoutPositionData.Bottom != bottom)
            {
                changed = true;

                float oldWidth    = _layoutPositionData.Right - _layoutPositionData.Left;
                float oldHeight   = _layoutPositionData.Bottom - _layoutPositionData.Top;
                float newWidth    = right - left;
                float newHeight   = bottom - top;
                bool  sizeChanged = (newWidth != oldWidth) || (newHeight != oldHeight);

                // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition.
                if (ConditionForAnimation.HasFlag(TransitionCondition.Unspecified))
                {
                    ConditionForAnimation = TransitionCondition.LayoutChanged;
                }

                // Store new layout position data
                _layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom);

                Window.Instance.LayoutController.AddTransitionDataEntry(_layoutPositionData);

                // Reset condition for animation ready for next transition when required.
                ConditionForAnimation = TransitionCondition.Unspecified;
            }

            return(changed);
        }
Esempio n. 2
0
        private bool SetFrame(float left, float top, float right, float bottom, bool independent)
        {
            bool changed = false;

            if (layoutPositionData.Left != left ||
                layoutPositionData.Right != right ||
                layoutPositionData.Top != top ||
                layoutPositionData.Bottom != bottom)
            {
                changed = true;

                // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition.
                if (ConditionForAnimation.Equals(TransitionCondition.Unspecified))
                {
                    ConditionForAnimation = TransitionCondition.LayoutChanged;
                }

                // Store new layout position data
                layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom);

                NUILog.Debug("LayoutItem FramePositionData View:" + layoutPositionData.Item.Owner.Name +
                             " left:" + layoutPositionData.Left +
                             " top:" + layoutPositionData.Top +
                             " right:" + layoutPositionData.Right +
                             " bottom:" + layoutPositionData.Bottom);

                View ownerView = Owner.GetParent() as View;

                if (ownerView?.Layout?.LayoutWithTransition ?? false)
                {
                    NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(layoutPositionData);
                }
                else
                {
                    if (independent)
                    {
                        // If height or width specification is not explicitly defined,
                        // the size of the owner view must be reset even the ExcludeLayouting is true.
                        if (Owner.HeightSpecification < 0 || Owner.WidthSpecification < 0)
                        {
                            Owner.SetSize(right - left, bottom - top);
                        }
                    }
                    else
                    {
                        Owner.SetSize(right - left, bottom - top);
                        Owner.SetPosition(left, top);
                    }
                }

                // Reset condition for animation ready for next transition when required.
                ConditionForAnimation = TransitionCondition.Unspecified;
            }

            return(changed);
        }
Esempio n. 3
0
        private bool SetFrame(float left, float top, float right, float bottom)
        {
            bool changed = false;

            if (_layoutPositionData.Left != left ||
                _layoutPositionData.Right != right ||
                _layoutPositionData.Top != top ||
                _layoutPositionData.Bottom != bottom)
            {
                changed = true;

                float oldWidth    = _layoutPositionData.Right - _layoutPositionData.Left;
                float oldHeight   = _layoutPositionData.Bottom - _layoutPositionData.Top;
                float newWidth    = right - left;
                float newHeight   = bottom - top;
                bool  sizeChanged = (newWidth != oldWidth) || (newHeight != oldHeight);

                // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition.
                if (ConditionForAnimation.Equals(TransitionCondition.Unspecified))
                {
                    ConditionForAnimation = TransitionCondition.LayoutChanged;
                }

                // Store new layout position data
                _layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom);

                Debug.WriteLineIf(LayoutDebugFrameData, "LayoutItem FramePositionData View:" + _layoutPositionData.Item.Owner.Name +
                                  " left:" + _layoutPositionData.Left +
                                  " top:" + _layoutPositionData.Top +
                                  " right:" + _layoutPositionData.Right +
                                  " bottom:" + _layoutPositionData.Bottom);

                if (Owner.Parent != null && Owner.Parent.Layout != null && Owner.Parent.Layout.LayoutWithTransition)
                {
                    Window.Instance.LayoutController.AddTransitionDataEntry(_layoutPositionData);
                }
                else
                {
                    Owner.Size = new Size(right - left, bottom - top, Owner.Position.Z);
                    if (SetPositionByLayout)
                    {
                        Owner.Position = new Position(left, top, Owner.Position.Z);
                    }
                }


                // Reset condition for animation ready for next transition when required.
                ConditionForAnimation = TransitionCondition.Unspecified;
            }

            return(changed);
        }
Esempio n. 4
0
        /// <summary>
        /// Initialize the layout and allow derived classes to also perform any operations
        /// </summary>
        /// <param name="owner">Owner of this Layout.</param>
        internal void AttachToOwner(View owner)
        {
            // Assign the layout owner.
            Owner = owner;
            OnAttachedToOwner();
            // Add layout to parent layout if a layout container
            View parent = Owner.GetParent() as View;

            (parent?.Layout as LayoutGroup)?.Add(this);

            // If Add or ChangeOnAdd then do not update condition
            if (ConditionForAnimation.Equals(TransitionCondition.Unspecified))
            {
                ConditionForAnimation = TransitionCondition.LayoutChanged;
            }
        }
Esempio n. 5
0
        private bool SetFrame(float left, float top, float right, float bottom, bool independent)
        {
            bool changed = false;

            if (_layoutPositionData.Left != left ||
                _layoutPositionData.Right != right ||
                _layoutPositionData.Top != top ||
                _layoutPositionData.Bottom != bottom)
            {
                changed = true;

                float oldWidth    = _layoutPositionData.Right - _layoutPositionData.Left;
                float oldHeight   = _layoutPositionData.Bottom - _layoutPositionData.Top;
                float newWidth    = right - left;
                float newHeight   = bottom - top;
                bool  sizeChanged = (newWidth != oldWidth) || (newHeight != oldHeight);

                // Set condition to layout changed as currently unspecified. Add, Remove would have specified a condition.
                if (ConditionForAnimation.Equals(TransitionCondition.Unspecified))
                {
                    ConditionForAnimation = TransitionCondition.LayoutChanged;
                }

                // Store new layout position data
                _layoutPositionData = new LayoutData(this, ConditionForAnimation, left, top, right, bottom);

                Debug.WriteLineIf(LayoutDebugFrameData, "LayoutItem FramePositionData View:" + _layoutPositionData.Item.Owner.Name +
                                  " left:" + _layoutPositionData.Left +
                                  " top:" + _layoutPositionData.Top +
                                  " right:" + _layoutPositionData.Right +
                                  " bottom:" + _layoutPositionData.Bottom);

                Container onwerContainer = Owner.GetParent();
                View      onwerView      = onwerContainer is Layer ? new View(Layer.getCPtr(onwerContainer).Handle, false) : onwerContainer as View;

                if (onwerView != null && onwerView.Layout != null && onwerView.Layout.LayoutWithTransition)
                {
                    NUIApplication.GetDefaultWindow().LayoutController.AddTransitionDataEntry(_layoutPositionData);
                }
                else
                {
                    if (Owner.Position != null)
                    {
                        if (independent)
                        {
                            // If height or width specification is not explicitly defined,
                            // the size of the owner view must be reset even the ExcludeLayouting is true.
                            if (Owner.HeightSpecification < 0 || Owner.WidthSpecification < 0)
                            {
                                Owner.SetSize(right - left, bottom - top);
                            }
                        }
                        else
                        {
                            Owner.SetSize(right - left, bottom - top);
                            Owner.SetPosition(left, top);
                        }
                    }
                }

                // Reset condition for animation ready for next transition when required.
                ConditionForAnimation = TransitionCondition.Unspecified;
            }

            return(changed);
        }