public void SetLayout(LayoutAlignment vertical, LayoutAlignment horizontal, int offset = 0)
 {
     VerticalLayoutAlignment   = vertical;
     HorizontalLayoutAlignment = horizontal;
     OffsetX = offset;
     OffsetY = offset;
 }
Exemple #2
0
        public static VerticalAlignment ToXamlVerticalAlignment(
            this LayoutAlignment layoutAlignment)
        {
            VerticalAlignment alignment;

            if (layoutAlignment == LayoutAlignment.Start)
            {
                alignment = VerticalAlignment.Top;
            }
            else if (layoutAlignment == LayoutAlignment.End)
            {
                alignment = VerticalAlignment.Bottom;
            }
            else if (layoutAlignment == LayoutAlignment.Center)
            {
                alignment = VerticalAlignment.Center;
            }
            else if (layoutAlignment == LayoutAlignment.Fill)
            {
                alignment = VerticalAlignment.Stretch;
            }
            else
            {
                throw new ArgumentOutOfRangeException(nameof(layoutAlignment), layoutAlignment, "Unsupported alignment.");
            }

            return(alignment);
        }
Exemple #3
0
        public static CanvasHorizontalAlignment ToCanvasHorizontalAlignment(
            this LayoutAlignment layoutAlignment)
        {
            CanvasHorizontalAlignment alignment;

            if (layoutAlignment == LayoutAlignment.Start)
            {
                alignment = CanvasHorizontalAlignment.Left;
            }
            else if (layoutAlignment == LayoutAlignment.End)
            {
                alignment = CanvasHorizontalAlignment.Right;
            }
            else if (layoutAlignment == LayoutAlignment.Center)
            {
                alignment = CanvasHorizontalAlignment.Center;
            }
            else if (layoutAlignment == LayoutAlignment.Fill)
            {
                alignment = CanvasHorizontalAlignment.Justified;
            }
            else
            {
                throw new ArgumentOutOfRangeException(nameof(layoutAlignment), layoutAlignment, "Unsupported alignment.");
            }

            return(alignment);
        }
Exemple #4
0
        static double AlignHorizontal(double startX, double startMargin, double endMargin, double boundsWidth,
                                      double desiredWidth, LayoutAlignment horizontalLayoutAlignment)
        {
            double frameX = 0;

            switch (horizontalLayoutAlignment)
            {
            case LayoutAlignment.Fill:
            case LayoutAlignment.Start:
                frameX = startX + startMargin;
                break;

            case LayoutAlignment.Center:

                frameX = (boundsWidth - desiredWidth) / 2;
                var marginOffset = (startMargin - endMargin) / 2;
                frameX += marginOffset;

                break;

            case LayoutAlignment.End:

                frameX = boundsWidth - endMargin - desiredWidth;
                break;
            }

            return(frameX);
        }
Exemple #5
0
		public LayoutOptions(LayoutAlignment alignment, bool expands)
		{
			var a = (int)alignment;
			if (a < 0 || a > 3)
				throw new ArgumentOutOfRangeException();
			_flags = (int)alignment | (expands ? (int)LayoutExpandFlag.Expand : 0);
		}
Exemple #6
0
        public static global::Android.Views.GravityFlags ToAndroidHorizontalLayoutGravityFlags(
            this LayoutAlignment layoutAlignment)
        {
            global::Android.Views.GravityFlags gravityFlags;

            if (layoutAlignment == LayoutAlignment.Start)
            {
                gravityFlags = global::Android.Views.GravityFlags.Left;
            }
            else if (layoutAlignment == LayoutAlignment.End)
            {
                gravityFlags = global::Android.Views.GravityFlags.Right;
            }
            else if (layoutAlignment == LayoutAlignment.Center)
            {
                gravityFlags = global::Android.Views.GravityFlags.CenterHorizontal;
            }
            else if (layoutAlignment == LayoutAlignment.Fill)
            {
                gravityFlags = global::Android.Views.GravityFlags.FillHorizontal;
            }
            else
            {
                throw new ArgumentOutOfRangeException(nameof(layoutAlignment), layoutAlignment, "Unsupported alignment.");
            }

            return(gravityFlags);
        }
            public HeaderView(UIEdgeInsets padding, LayoutAlignment align)
            {
                Label               = new UILabel();
                Label.Lines         = 1;
                Label.LineBreakMode = UILineBreakMode.TailTruncation;
                Label.TranslatesAutoresizingMaskIntoConstraints = false;

                this.AddSubview(Label);

                Label.LeftAnchor.ConstraintEqualTo(this.LeftAnchor, padding.Left).Active     = true;
                Label.RightAnchor.ConstraintEqualTo(this.RightAnchor, -padding.Right).Active = true;

                if (align == LayoutAlignment.Start)
                {
                    Label.TopAnchor.ConstraintEqualTo(this.TopAnchor, padding.Top).Active = true;
                }
                else if (align == LayoutAlignment.End)
                {
                    Label.BottomAnchor.ConstraintEqualTo(this.BottomAnchor, -padding.Bottom).Active = true;
                }
                else
                {
                    Label.CenterYAnchor.ConstraintEqualTo(this.CenterYAnchor, 0).Active = true;
                }
            }
Exemple #8
0
 public static GravityFlags ToNativeVertical(this LayoutAlignment forms)
 {
     return(forms switch
     {
         LayoutAlignment.Start => GravityFlags.Top,
         LayoutAlignment.Center => GravityFlags.CenterVertical,
         LayoutAlignment.End => GravityFlags.Bottom,
         _ => GravityFlags.FillHorizontal
     });
Exemple #9
0
 public static UIStackViewAlignment ToNativeVertical(this LayoutAlignment forms)
 {
     return(forms switch
     {
         LayoutAlignment.Start => UIStackViewAlignment.Leading,
         LayoutAlignment.Center => UIStackViewAlignment.Center,
         LayoutAlignment.End => UIStackViewAlignment.Trailing,
         _ => UIStackViewAlignment.Fill
     });
        public LayoutOptions(LayoutAlignment alignment, bool expands)
        {
            var a = (int)alignment;

            if (a < 0 || a > 3)
            {
                throw new ArgumentOutOfRangeException();
            }
            _flags = (int)alignment | (expands ? (int)LayoutExpandFlag.Expand : 0);
        }
Exemple #11
0
 public LayoutParams(
     float width,
     float height,
     LayoutAlignment horizontalAlignment,
     LayoutAlignment verticalAlignment)
 {
     this.Width  = width;
     this.Height = height;
     this.HorizontalAlignment = horizontalAlignment;
     this.VerticalAlignment   = verticalAlignment;
 }
        public static double ToDouble(this LayoutAlignment align)
        {
            switch (align)
            {
            case LayoutAlignment.Start:
                return(0);

            case LayoutAlignment.Center:
                return(0.5);

            case LayoutAlignment.End:
                return(1);
            }
            throw new ArgumentOutOfRangeException("align");
        }
        public static double LayoutAlignmentToDouble(this LayoutAlignment alignment)
        {
            double alignValue = 0.5;

            switch (alignment)
            {
            case LayoutAlignment.Start:
                alignValue = 0.0;
                break;

            case LayoutAlignment.End:
                alignValue = 1.0;
                break;
            }
            return(alignValue);
        }
Exemple #14
0
        public static GravityFlags ToGravityFlags(this LayoutAlignment forms, bool expand)
        {
            GravityFlags result = forms switch
            {
                LayoutAlignment.Start => GravityFlags.Start | GravityFlags.CenterVertical,
                LayoutAlignment.Center => GravityFlags.CenterHorizontal | GravityFlags.CenterVertical,
                LayoutAlignment.End => GravityFlags.End | GravityFlags.CenterVertical,
                _ => GravityFlags.Fill
            };

            if (expand)
            {
                result |= GravityFlags.Fill;
            }
            return(result);
        }
Exemple #15
0
        /// <summary>
        /// Tos the native horizontal.
        /// </summary>
        /// <returns>The native horizontal.</returns>
        /// <param name="forms">Forms.</param>
        public static UIStackViewAlignment ToNativeHorizontal(this LayoutAlignment forms)
        {
            switch (forms)
            {
            case LayoutAlignment.Start:
                return(UIStackViewAlignment.Top);

            case LayoutAlignment.Center:
                return(UIStackViewAlignment.Center);

            case LayoutAlignment.End:
                return(UIStackViewAlignment.Bottom);

            default:
                return(UIStackViewAlignment.Fill);
            }
        }
Exemple #16
0
        /// <summary>
        /// Tos the native vertical.
        /// </summary>
        /// <returns>The native vertical.</returns>
        /// <param name="forms">Forms.</param>
        public static UIStackViewAlignment ToNativeVertical(this LayoutAlignment forms)
        {
            switch (forms)
            {
            case LayoutAlignment.Start:
                return(UIStackViewAlignment.Leading);

            case LayoutAlignment.Center:
                return(UIStackViewAlignment.Center);

            case LayoutAlignment.End:
                return(UIStackViewAlignment.Trailing);

            default:
                return(UIStackViewAlignment.Fill);
            }
        }
Exemple #17
0
        public static GravityFlags ToAndroidVertical(this LayoutAlignment formsAlignment)
        {
            switch (formsAlignment)
            {
            case LayoutAlignment.Start:
                return(GravityFlags.Top);

            case LayoutAlignment.Center:
                return(GravityFlags.CenterVertical);

            case LayoutAlignment.End:
                return(GravityFlags.Bottom);

            default:
                return(GravityFlags.FillHorizontal);
            }
        }
        /// <summary>
        /// Tos the native horizontal.
        /// </summary>
        /// <returns>The native horizontal.</returns>
        /// <param name="forms">Forms.</param>
        public static GravityFlags ToNativeHorizontal(this LayoutAlignment forms)
        {
            switch (forms)
            {
            case LayoutAlignment.Start:
                return(GravityFlags.Start);

            case LayoutAlignment.Center:
                return(GravityFlags.CenterHorizontal);

            case LayoutAlignment.End:
                return(GravityFlags.End);

            default:
                return(GravityFlags.FillVertical);
            }
        }
        public void FrameSizeGoesToZeroWhenMarginsExceedBounds(LayoutAlignment layoutAlignment)
        {
            var element = Substitute.For <IView>();
            var margin  = new Thickness(200);

            element.Margin.Returns(margin);
            element.HorizontalLayoutAlignment.Returns(layoutAlignment);
            element.VerticalLayoutAlignment.Returns(layoutAlignment);

            var bounds = new Rectangle(0, 0, 100, 100);
            var frame  = element.ComputeFrame(bounds);

            // The margin is simply too large for the bounds; since negative widths/heights on a frame don't make sense,
            // we expect them to collapse to zero

            Assert.Equal(0, frame.Height);
            Assert.Equal(0, frame.Width);
        }
        public static void Show(String popupAutomationId, Rect rect, LayoutAlignment horizontalLayoutAlignment = LayoutAlignment.Start, Boolean outsideRectHorizontally = false, LayoutAlignment verticalLayoutAlignment = LayoutAlignment.End, Boolean outsideRectVertically = true, Point translation = default, int delay = -1)
        {
            // NOT NECESSARY TO BE ON MAIN THREAD
            PopupAction popupAction = new PopupAction
            {
                PopupAutomationId    = popupAutomationId,
                LinkedToAutomationId = null,
                Rect = rect,
                OutsideRectHorizontally   = outsideRectHorizontally,
                OutsideRectVertically     = outsideRectVertically,
                HorizontalLayoutAlignment = horizontalLayoutAlignment,
                VerticalLayoutAlignment   = verticalLayoutAlignment,
                Translation = translation,
                Delay       = delay
            };

            PrepareToShow(popupAction);
        }
Exemple #21
0
        static double AlignHorizontal(double startX, double startMargin, double endMargin, double boundsWidth,
                                      double desiredWidth, LayoutAlignment horizontalLayoutAlignment)
        {
            double frameX = startX + startMargin;

            switch (horizontalLayoutAlignment)
            {
            case LayoutAlignment.Center:
                frameX += (boundsWidth - desiredWidth) / 2;
                break;

            case LayoutAlignment.End:
                frameX += boundsWidth - desiredWidth;
                break;
            }

            return(frameX);
        }
Exemple #22
0
        private int DimensionToAndroidDimension(
            LayoutAlignment alignment,
            Dimension dimension)
        {
            if (dimension == Dimension.Auto)
            {
                if (alignment == LayoutAlignment.Fill)
                {
                    return(global::Android.Views.ViewGroup.LayoutParams.MatchParent);
                }
                else
                {
                    return(global::Android.Views.ViewGroup.LayoutParams.WrapContent);
                }
            }

            return((int)DevicePixelsToPixels(dimension));
        }
Exemple #23
0
        public void FrameAccountsForVerticalLayoutAlignment(LayoutAlignment layoutAlignment, Thickness margin,
                                                            double expectedY, double expectedHeight)
        {
            var widthConstraint  = 50;
            var heightConstraint = 300;
            var viewSize         = new Size(50, 100);

            var element = Substitute.For <IView>();

            element.Margin.Returns(margin);
            element.DesiredSize.Returns(viewSize);
            element.VerticalLayoutAlignment.Returns(layoutAlignment);

            var frame = element.ComputeFrame(new Rectangle(0, 0, widthConstraint, heightConstraint));

            Assert.Equal(expectedY, frame.Top);
            Assert.Equal(expectedHeight, frame.Height);
        }
Exemple #24
0
        public void FrameAccountsForHorizontalLayoutAlignment(LayoutAlignment layoutAlignment, Thickness margin,
                                                              double expectedX, double expectedWidth)
        {
            var widthConstraint  = 300;
            var heightConstraint = 50;
            var viewSize         = new Size(100, 50);

            var element = Substitute.For <IView>();

            element.Margin.Returns(margin);
            element.DesiredSize.Returns(viewSize);
            element.HorizontalLayoutAlignment.Returns(layoutAlignment);

            var frame = element.ComputeFrame(new Rectangle(0, 0, widthConstraint, heightConstraint));

            Assert.Equal(expectedX, frame.Left);
            Assert.Equal(expectedWidth, frame.Width);
        }
Exemple #25
0
 public CustomPage(bool showTopMargin = false, LayoutAlignment footerLogoHorizontalOptions = LayoutAlignment.Start, bool showMinimumContents = false, double topMargin = -1, int cornersRadius = 0)
 {
     Animation = new CustomPageAnimation();
     if (!showTopMargin)
     {
         BackgroundColor = Color.Transparent;
     }
     ShowTopMargin = showTopMargin;
     FooterLogoHorizontalOptions = footerLogoHorizontalOptions;
     ShowMinimumContents         = showMinimumContents;
     CornersRadius = cornersRadius;
     if (topMargin > 0)
     {
         TopMargin = topMargin;
     }
     if (Device.RuntimePlatform == Device.iOS)
     {
         HasSystemPadding = false;
     }
 }
Exemple #26
0
        public void SetVerticalAlignment(LayoutAlignment align)
        {
            if (_isInitialized && align == _curAlignment)
            {
                return;
            }

            foreach (NSLayoutConstraint c in _constraints)
            {
                c.Active = false;
                c.Dispose();
            }

            _constraints.Clear();

            _constraints.Add(Label.LeftAnchor.ConstraintEqualTo(ContentView.LeftAnchor, 0));
            _constraints.Add(Label.RightAnchor.ConstraintEqualTo(ContentView.RightAnchor, 0));

            if (align == LayoutAlignment.Start)
            {
                _constraints.Add(Label.TopAnchor.ConstraintEqualTo(ContentView.TopAnchor, 0));
            }
            else if (align == LayoutAlignment.End)
            {
                _constraints.Add(Label.BottomAnchor.ConstraintEqualTo(ContentView.BottomAnchor, 0));
            }
            else
            {
                _constraints.Add(Label.CenterYAnchor.ConstraintEqualTo(ContentView.CenterYAnchor, 0));
            }

            _constraints.ForEach(c =>
            {
                c.Priority = 999f;                                                          // fix warning-log:Unable to simultaneously satisfy constraints.
                c.Active   = true;
            }
                                 );

            _curAlignment  = align;
            _isInitialized = true;
        }
        public void FrameAccountsForHorizontalLayoutAlignmentRtl(LayoutAlignment layoutAlignment, Point offset, Thickness margin,
                                                                 double expectedX, double expectedWidth)
        {
            var widthConstraint          = 300;
            var heightConstraint         = 50;
            var viewSizeIncludingMargins = new Size(100, 50);

            var element = Substitute.For <IView>();

            element.Margin.Returns(margin);
            element.DesiredSize.Returns(viewSizeIncludingMargins);
            element.FlowDirection.Returns(FlowDirection.RightToLeft);
            element.HorizontalLayoutAlignment.Returns(layoutAlignment);
            element.Width.Returns(Dimension.Unset);
            element.Height.Returns(Dimension.Unset);

            var frame = element.ComputeFrame(new Rectangle(offset.X, offset.Y, widthConstraint, heightConstraint));

            Assert.Equal(expectedX, frame.Left);
            Assert.Equal(expectedWidth, frame.Width);
        }
        public void LayoutExpansion(StackOrientation orientation, LayoutAlignment align, bool expand, double x1, double y1, double w1, double h1, double x2, double y2, double w2, double h2)
        {
            var options = new LayoutOptions(align, expand);
            var stack   = new StackLayout
            {
                IsPlatformEnabled = true,
                Spacing           = 0,
                Orientation       = orientation
            };

            View child1, child2;

            stack.Children.Add(child1 = new View
            {
                IsPlatformEnabled = true,
                WidthRequest      = 100,
                HeightRequest     = 100
            });

            if (orientation == StackOrientation.Vertical)
            {
                child1.VerticalOptions = options;
            }
            else
            {
                child1.HorizontalOptions = options;
            }

            stack.Children.Add(child2 = new View
            {
                IsPlatformEnabled = true,
                WidthRequest      = 10,
                HeightRequest     = 10
            });

            stack.Layout(new Rectangle(0, 0, 200, 200));

            Assert.AreEqual(new Rectangle(x1, y1, w1, h1), child1.Bounds);
            Assert.AreEqual(new Rectangle(x2, y2, w2, h2), child2.Bounds);
        }
Exemple #29
0
        public void FrameAccountsForVerticalLayoutAlignment(LayoutAlignment layoutAlignment, Point offset, Thickness margin,
                                                            double expectedY, double expectedHeight)
        {
            var widthConstraint          = 50;
            var heightConstraint         = 300;
            var viewSize                 = new Size(50, 100);
            var viewSizeIncludingMargins = new Size(viewSize.Width + margin.HorizontalThickness, viewSize.Height + margin.VerticalThickness);

            var element = Substitute.For <IView>();

            element.Margin.Returns(margin);
            element.DesiredSize.Returns(viewSizeIncludingMargins);
            element.VerticalLayoutAlignment.Returns(layoutAlignment);
            element.Width.Returns(Dimension.Unset);
            element.Height.Returns(Dimension.Unset);
            element.FlowDirection.Returns(FlowDirection.LeftToRight);

            var frame = element.ComputeFrame(new Rect(offset.X, offset.Y, widthConstraint, heightConstraint));

            Assert.Equal(expectedY, frame.Top);
            Assert.Equal(expectedHeight, frame.Height);
        }
Exemple #30
0
        private static float DimensionToSize(
            LayoutAlignment alignment,
            Dimension dimension)
        {
            float value;

            if (dimension == Dimension.Auto)
            {
                if (alignment == LayoutAlignment.Fill)
                {
                    value = NativeLayout.LayoutParams.MatchParent;
                }
                else
                {
                    value = NativeLayout.LayoutParams.WrapContent;
                }
            }
            else
            {
                value = dimension;
            }

            return(value);
        }
        private static double GetYPosition(ContentPage contentPage, View view, LayoutAlignment layoutAlignment, Rect rect, bool outsideRect, double translateY)
        {
            double Y = 0;

            double viewHeight = view.HeightRequest;

            if (viewHeight == -1)
            {
                viewHeight = view.Height;
            }

            // Do we want the popup outside or inside
            if (outsideRect)
            {
                switch (layoutAlignment)
                {
                case LayoutAlignment.Start:
                case LayoutAlignment.Fill:
                    Y = rect.Y - viewHeight;
                    break;

                case LayoutAlignment.End:
                    Y = rect.Y + rect.Height;
                    break;

                case LayoutAlignment.Center:
                    Y = rect.Y + (rect.Height - viewHeight) / 2;
                    break;
                }

                Y += translateY;

                // Sanity check
                if (Y + viewHeight + MINIMAL_MARGIN > contentPage.Height)
                {
                    if (layoutAlignment == LayoutAlignment.End)
                    {
                        Y = GetYPosition(contentPage, view, LayoutAlignment.Start, rect, outsideRect, translateY);
                    }
                }
            }
            else // We want the popup inside
            {
                switch (layoutAlignment)
                {
                case LayoutAlignment.Start:
                case LayoutAlignment.Fill:
                    Y = rect.Y;
                    break;

                case LayoutAlignment.End:
                    Y = rect.Y + rect.Height - viewHeight;
                    break;

                case LayoutAlignment.Center:
                    Y = rect.Y + (rect.Height - viewHeight) / 2;
                    break;
                }
            }

            // Fianl Sanity check on Y
            if (Y + viewHeight + MINIMAL_MARGIN > contentPage.Height)
            {
                Y = contentPage.Height - viewHeight - MINIMAL_MARGIN;
            }
            if (Y < MINIMAL_MARGIN)
            {
                Y = MINIMAL_MARGIN;
            }

            return(Y);
        }
		public static Button CreateButton(
			string text, 
			ButtonStyle style,
			LayoutAlignment alignment,
			bool stretch,
			string img = "blank.png")
		{
			bool isBlank = img.Equals ("blank.jpg");

			var imageSource = ImageSource.FromResource ("BeatFitApp.Icons." + img);

			Button button = null;

			Device.OnPlatform (

				// iOS -- plain button
				() => {
					button = new Button()
					{
						Text = text,
						FontSize = Device.GetNamedSize (NamedSize.Micro, typeof(Button)),
						HorizontalOptions = new LayoutOptions () { 
							Alignment = alignment, 
							Expands = stretch
						}
					};
				},

				// Android -- image button
				() => {
					button = new ImageButton () {
						Text = text,
						FontSize = Device.GetNamedSize (NamedSize.Micro, typeof(Button)),
						Orientation = (isBlank ? ImageOrientation.ImageToRight : ImageOrientation.ImageToLeft),
						Source = imageSource,
						DisabledSource = imageSource,
						ImageHeightRequest = 16,
						ImageWidthRequest = isBlank ? 1 : 16,
						HorizontalOptions = new LayoutOptions () { 
							Alignment = alignment, 
							Expands = stretch
						},
						HeightRequest = 32
					};
				});
			
			switch (style) {
			case ButtonStyle.Positive:
				button.BackgroundColor = PoliceBlue;
				button.TextColor = Color.White;
				break;

			case ButtonStyle.Negative:
				button.BackgroundColor = DarkPoliceBlue;
				button.TextColor = Color.White;
				break;

			case ButtonStyle.Neutral:
				button.BackgroundColor = Color.FromRgb (220, 220, 220);
				button.BorderColor = Color.FromRgb (175, 175, 175);
				button.TextColor = Color.Black;
				break;

			case ButtonStyle.Warning:
				button.BackgroundColor = WarningRed;
				button.TextColor = LightWarningRed;
				break;
			}

			return button;
		}
Exemple #33
0
        /// <summary>
        /// 指定した矩形のレイアウト
        /// </summary>
        /// <param s="region">配置する矩形</param>
        /// <param s="horizontalMargin">垂直方向のマージン</param>
        /// <param s="verticalMargine">水平方向のマージン</param>
        /// <param s="alignment">アライメント</param>
        /// <returns>配置された矩形</returns>
        public Rectangle Place(Rectangle region, float horizontalMargin, float verticalMargine, LayoutAlignment alignment)
        {
            // horizontal
            if ((alignment & LayoutAlignment.Left) != 0)
            {
                region.X = ClientArea.X + (int) (ClientArea.Width * horizontalMargin);
            }
            else if ((alignment & LayoutAlignment.Right) != 0)
            {
                region.X = ClientArea.X +
                            (int) (ClientArea.Width * (1.0f - horizontalMargin)) - region.Width;
            }
            else if ((alignment & LayoutAlignment.HorizontalCenter) != 0)
            {
                region.X = ClientArea.X + (ClientArea.Width - region.Width) / 2 +
                            (int) (horizontalMargin * ClientArea.Width);
            }
            else
            {
                // no layout
            }

            // vertical
            if ((alignment & LayoutAlignment.Top) != 0)
            {
                region.Y = ClientArea.Y + (int) (ClientArea.Height * verticalMargine);
            }
            else if ((alignment & LayoutAlignment.Bottom) != 0)
            {
                region.Y = ClientArea.Y +
                            (int) (ClientArea.Height * (1.0f - verticalMargine)) - region.Height;
            }
            else if ((alignment & LayoutAlignment.VerticalCenter) != 0)
            {
                region.Y = ClientArea.Y + (ClientArea.Height - region.Height) / 2 +
                            (int) (verticalMargine * ClientArea.Height);
            }
            else
            {
                // no layout
            }

            // check if the layout region is in the title safe area
            if (region.Left < TitleSafeArea.Left)
            {
                region.X = TitleSafeArea.Left;
            }

            if (region.Right > TitleSafeArea.Right)
            {
                region.X = TitleSafeArea.Right - region.Width;
            }

            if (region.Top < TitleSafeArea.Top)
            {
                region.Y = TitleSafeArea.Top;
            }

            if (region.Bottom > TitleSafeArea.Bottom)
            {
                region.Y = TitleSafeArea.Bottom - region.Height;
            }

            return region;
        }
Exemple #34
0
 /// <summary>
 /// 指定したサイズ矩形のレイアウト
 /// </summary>
 /// <param s="region">配置する矩形</param>
 /// <param s="horizontalMargin">垂直方向のマージン</param>
 /// <param s="verticalMargine">水平方向のマージン</param>
 /// <param s="alignment">アライメント</param>
 /// <returns>配置された矩形</returns>
 public Vector2 Place(Vector2 size, float horizontalMargin, float verticalMargine, LayoutAlignment alignment)
 {
     Rectangle rc = new Rectangle(0, 0, (int) size.X, (int) size.Y);
     rc = Place(rc, horizontalMargin, verticalMargine, alignment);
     return new Vector2(rc.X, rc.Y);
 }