Exemple #1
0
        public override IEnumerable<PointF> GetValues(Files.LocatorFile file, Point p)
        {
            int fromInclusive;
            int toInclusive;
            var coordPairList = new List<PointF>();

            if (Math.Abs(InitialPoint.X - p.X) > Math.Abs(InitialPoint.Y - p.Y))
            {
                fromInclusive = InitialPoint.X > p.X ? p.X : InitialPoint.X;
                toInclusive = InitialPoint.X > p.X ? InitialPoint.X : p.X;

                fromInclusive = fromInclusive > file.Width ? file.Width : fromInclusive;
                fromInclusive = fromInclusive < 0 ? 0 : fromInclusive;

                toInclusive = toInclusive > file.Width ? file.Width : toInclusive;
                toInclusive = toInclusive < 0 ? 0 : toInclusive;

                for (int i = fromInclusive; i < toInclusive; i++)
                {
                    var pointToGetSample = new Point(i, GeometryHelper.GetY(InitialPoint, p, i));
                    if (pointToGetSample.X < 0 || pointToGetSample.X > file.Width ||
                        pointToGetSample.Y < 0 || pointToGetSample.Y > file.Height)
                    {
                        continue;
                    }

                    try
                    {
                        coordPairList.Add(new PointF(i, (float)file.GetSample(pointToGetSample).ToFileSample(file.Properties.Type, file.Header.BytesPerSample)));
                    }
                    catch (Exception)
                    {
                        throw;
                    }
                }


            }
            else
            {
                fromInclusive = InitialPoint.Y > p.Y ? p.Y : InitialPoint.Y;
                toInclusive = InitialPoint.Y > p.Y ? InitialPoint.Y : p.Y;

                fromInclusive = fromInclusive > file.Height ? file.Height : fromInclusive;
                fromInclusive = fromInclusive < 0 ? 0 : fromInclusive;

                toInclusive = toInclusive > file.Height ? file.Height : toInclusive;
                toInclusive = toInclusive < 0 ? 0 : toInclusive;

                for (int i = fromInclusive; i < toInclusive; i++)
                {
                    var pointToGetSample = new Point(GeometryHelper.GetX(InitialPoint, p, i), i);
                    if (pointToGetSample.X < 0 || pointToGetSample.X >= file.Width ||
                        pointToGetSample.Y < 0 || pointToGetSample.Y >= file.Height)
                    {
                        continue;
                    }

                    coordPairList.Add(new PointF(i, file.GetSample(pointToGetSample).ToFileSample(file.Properties.Type, file.Header.BytesPerSample)));
                }

            }          
           
            return coordPairList;
        }