コード例 #1
0
        static PluggableGuide()
        {
#if XBOX
            Provider = new RealGuideProvider();
#else
            Provider = new WindowsSafeGuideProvider();
#endif
        }
コード例 #2
0
ファイル: GuideLayer.cs プロジェクト: sunfom/DeXign
        public IEnumerable <Guideline> InvalidateSnappedGuidelines(IGuideProvider target)
        {
            SnapItems.Clear();

            foreach (Guideline gl in GetSnappedGuidelines(target))
            {
                if (gl.SnappedGuideline == null)
                {
                    continue;
                }

                yield return(gl);

                if (!gl.IsVisible)
                {
                    continue;
                }

                if (gl.IsVertical)
                {
                    SnapItems.Add(
                        new Guideline(
                            new Point(
                                gl.Point1.X,
                                Math.Min(gl.Point1.Y, gl.SnappedGuideline.Point1.Y)),
                            new Point(
                                gl.Point1.X,
                                Math.Max(gl.Point2.Y, gl.SnappedGuideline.Point2.Y))));
                }
                else
                {
                    SnapItems.Add(
                        new Guideline(
                            new Point(
                                Math.Min(gl.Point1.X, gl.SnappedGuideline.Point1.X),
                                gl.Point1.Y),
                            new Point(
                                Math.Max(gl.Point2.X, gl.SnappedGuideline.Point2.X),
                                gl.Point2.Y)));
                }
            }

            this.InvalidateVisual();
        }
コード例 #3
0
ファイル: GuideLayer.cs プロジェクト: sunfom/DeXign
        public IEnumerable <Guideline> GetSnappedGuidelines(IGuideProvider target)
        {
            foreach (IGuideProvider provider in Items.Except(new[] { target }))
            {
                if (provider is FrameworkElement frameworkElement &&
                    !frameworkElement.IsVisible)
                {
                    continue;
                }

                foreach (Guideline gl in provider.GetGuidableLines()
                         .Where(gl =>
                {
                    return(target.GetGuidableLines()
                           .Count(tGl =>
                    {
                        double length = Guideline.Distance(gl, tGl);

                        if (length == -1)
                        {
                            return false;
                        }

                        if (length <= this.Fit(SnapThreshold))
                        {
                            gl.SnappedGuideline = tGl;
                            return true;
                        }

                        return false;
                    }) > 0);
                }).
                         OrderBy(gl =>
                {
                    return(Guideline.Distance(gl, gl.SnappedGuideline));
                }))
                {
                    yield return(gl);
                }
            }
        }
コード例 #4
0
 public StandardVelocityProvider()
 {
     LocalGuiderProvider        = new PBestGuideProvider();
     NeighbourhoodGuideProvider = new NBestGuideProvider();
 }
コード例 #5
0
        static PluggableGuide () {
#if XBOX
            Provider = new RealGuideProvider();
#else
            Provider = new WindowsSafeGuideProvider();
#endif
        }
コード例 #6
0
 public ExtendedVelocityProvider()
 {
     LocalGuideProvider         = new PBestGuideProvider();
     NeighbourhoodGuideProvider = new NBestGuideProvider();
     AdditionalGuideProvider    = new CenterBasedGuideProvider();
 }
コード例 #7
0
ファイル: GuideLayer.cs プロジェクト: sunfom/DeXign
 public void Remove(IGuideProvider layer)
 {
     Items.Remove(layer);
 }
コード例 #8
0
ファイル: GuideLayer.cs プロジェクト: sunfom/DeXign
 public void Add(IGuideProvider layer)
 {
     Items.Add(layer);
 }