Ejemplo n.º 1
0
        public Point GetEdge(HorizontalArrangementPosition horizontalPosition, VerticalArrangementPosition verticalPosition)
        {
            List <ArtemisDevice> devices = SurfaceArrangement.ArrangedDevices.Where(d => d.RgbDevice.DeviceInfo.DeviceType == DeviceType || DeviceType == RGBDeviceType.All).ToList();

            if (!devices.Any())
            {
                return(new Point());
            }

            float x = horizontalPosition switch
            {
                HorizontalArrangementPosition.Left => devices.Min(d => d.RgbDevice.Location.X) - (AppliedConfiguration?.MarginLeft ?? 0.0f),
                HorizontalArrangementPosition.Right => devices.Max(d => d.RgbDevice.Location.X + d.RgbDevice.Size.Width) + (AppliedConfiguration?.MarginRight ?? 0.0f),
                HorizontalArrangementPosition.Center => devices.First().RgbDevice.Boundary.Center.X,
                HorizontalArrangementPosition.Equal => devices.First().RgbDevice.Location.X,
                _ => throw new ArgumentOutOfRangeException(nameof(horizontalPosition), horizontalPosition, null)
            };
            float y = verticalPosition switch
            {
                VerticalArrangementPosition.Top => devices.Min(d => d.RgbDevice.Location.Y) - (AppliedConfiguration?.MarginTop ?? 0.0f),
                VerticalArrangementPosition.Bottom => devices.Max(d => d.RgbDevice.Location.Y + d.RgbDevice.Size.Height) + (AppliedConfiguration?.MarginBottom ?? 0.0f),
                VerticalArrangementPosition.Center => devices.First().RgbDevice.Boundary.Center.Y,
                VerticalArrangementPosition.Equal => devices.First().RgbDevice.Location.Y,
                _ => throw new ArgumentOutOfRangeException(nameof(verticalPosition), verticalPosition, null)
            };

            return(new Point(x, y));
        }
        public SurfaceArrangementConfiguration(SurfaceArrangementType?anchor, HorizontalArrangementPosition horizontalPosition, VerticalArrangementPosition verticalPosition,
                                               int margin)
        {
            Anchor             = anchor;
            HorizontalPosition = horizontalPosition;
            VerticalPosition   = verticalPosition;

            MarginLeft   = margin;
            MarginTop    = margin;
            MarginRight  = margin;
            MarginBottom = margin;

            SurfaceArrangement = null !;
        }