示例#1
0
        public void CanSetProjectDeviceMappingsTwice()
        {
            using (var dbFactory = new TestDbConnectionFactory())
                using (var conn = dbFactory.Database())
                {
                    var project = new Project {
                        Name = "Test"
                    };
                    var device = new Device {
                        IpAddress = "192.168.1.1", Name = "MyTestDevice"
                    };

                    project = ProjectActions.CreateProject(project).Function(conn);
                    var projectDevice        = DeviceActions.AddDeviceToProject(project.Id, device).Function(conn);
                    var projectDeviceVersion = ProjectDeviceActions.SetLatestProjectDeviceVersion(new ProjectDeviceVersion
                    {
                        ProjectDeviceId             = projectDevice.Id,
                        HorizontalPercentage        = 100,
                        VerticalPercentage          = 100,
                        NumberOfHorizontalPixels    = 50,
                        NumberOfVerticalPixels      = 50,
                        StartAtHorizontalPercentage = 0,
                        StartAtVerticalPercentage   = 0
                    }).Function(conn);

                    var firstMappings = new List <ProjectDeviceVersionMapping>
                    {
                        new ProjectDeviceVersionMapping
                        {
                            HorizontalPosition = 1,
                            VerticalPosition   = 1,
                            MappingOrder       = 1
                        }
                    };

                    var secondMappings = new List <ProjectDeviceVersionMapping>
                    {
                        new ProjectDeviceVersionMapping
                        {
                            HorizontalPosition = 1,
                            VerticalPosition   = 1,
                            MappingOrder       = 1,
                        },
                        new ProjectDeviceVersionMapping
                        {
                            HorizontalPosition = 2,
                            VerticalPosition   = 1,
                            MappingOrder       = 2
                        }
                    };

                    ProjectDeviceActions.SetProjectDeviceMappings(projectDeviceVersion.Id, firstMappings).Function(conn);
                    ProjectDeviceActions.SetProjectDeviceMappings(projectDeviceVersion.Id, secondMappings).Function(conn);

                    var result = ProjectDeviceActions.GetProjectDeviceMappings(projectDeviceVersion.Id).Function(conn);

                    Assert.Equal(2, result.Count());
                }
        }
        public byte[] ProcessBitmap(Bitmap bitmap, ProjectDeviceVersion projectDeviceVersion)
        {
            Guard.This(bitmap).AgainstDefaultValue("Bitmap cannot be null");

            var mappings = dispatcher.Dispatch(ProjectDeviceActions.GetProjectDeviceMappings(projectDeviceVersion.Id));

            var data = new List <byte>
            {
                0, 0, 0, 0
            };

            var xPercentagePixelGap = (double)(projectDeviceVersion.HorizontalPercentage) / (double)(projectDeviceVersion.NumberOfHorizontalPixels - 1);
            var yPercentagePixelGap = (double)(projectDeviceVersion.VerticalPercentage) / (double)(projectDeviceVersion.NumberOfVerticalPixels - 1);

            foreach (var mapping in mappings.OrderBy(m => m.MappingOrder))
            {
                var xPercent = projectDeviceVersion.StartAtHorizontalPercentage + (mapping.HorizontalPosition - 1) * xPercentagePixelGap;
                var yPercent = projectDeviceVersion.StartAtVerticalPercentage + (mapping.VerticalPosition - 1) * yPercentagePixelGap;

                var x = (int)Math.Round(xPercent * bitmap.Width / 100, 0);
                var y = (int)Math.Round(yPercent * bitmap.Height / 100, 0);

                x = x >= bitmap.Width ? bitmap.Width - 1 : x;
                y = y >= bitmap.Height ? bitmap.Height - 1 : y;

                try
                {
                    var pixelColor = bitmap.GetPixel(x, y);

                    data.Add(pixelColor.R);
                    data.Add(pixelColor.G);
                    data.Add(pixelColor.B);
                }
                catch
                {
                    throw;
                }
            }

            return(data.ToArray());
        }
示例#3
0
        public GlobalJsonResult <IEnumerable <ProjectDeviceVersionMapping> > GetProjectDeviceMappings(int projectDeviceVersionId)
        {
            var result = dispatcher.Dispatch(ProjectDeviceActions.GetProjectDeviceMappings(projectDeviceVersionId));

            return(GlobalJsonResult <IEnumerable <ProjectDeviceVersionMapping> > .Success(System.Net.HttpStatusCode.OK, result));
        }