Esempio n. 1
0
        private static bool TrySnapPoint(Vector2 pos, List <Ruler> rulers, RulerOrientation orientationFilter, out Vector2 snappedPoint)
        {
            var sceneZoom = SceneView.Instance.Scene.Scale.X;

            foreach (var ruler in rulers)
            {
                foreach (var line in ruler.Lines)
                {
                    if (line.RulerOrientation != orientationFilter)
                    {
                        continue;
                    }
                    var mask = orientationFilter == RulerOrientation.Vertical ? Vector2.Right : Vector2.Down;
                    var transformedPosition = pos * SceneView.Instance.Scene.CalcTransitionToSpaceOf(Document.Current.RootNode.AsWidget);
                    var lineVector          = LineToVector(line, ruler.AnchorToRoot);
                    if ((transformedPosition * mask - lineVector).Length < Threshold / sceneZoom)
                    {
                        snappedPoint = transformedPosition * (Vector2.One - mask) + lineVector;
                        return(true);
                    }
                }
            }
            snappedPoint = default;
            return(false);
        }
Esempio n. 2
0
 public Ruler(RulerOrientation orientation)
 {
     this.posstart = 0;
     this.posend   = 0;
     this.Init();
     this.orientation = orientation;
 }
Esempio n. 3
0
        public Guideline CreateGuide(Point p, RulerOrientation typ)
        {
            Guideline local;

            switch (typ)
            {
            case RulerOrientation.Horizontal:
                local = new GuidelineVertical(this);
                break;

            case RulerOrientation.Vertical:
                local = new GuidelineHorizontal(this);
                break;

            case RulerOrientation.Diagonal:
                local            = new GuidelineDiagonal(this);
                local.Info.Angle = 45;
                break;

            default:
                return(null);
            }

            if (!oldShowMousePosition.HasValue)
            {
                oldShowMousePosition = ShowMousePosition;
                ShowMousePosition    = false;
            }

            local.SetPixel(p);
            GuideManager.Guides.Add(local);
            RefreshGuides();

            return(local);
        }
Esempio n. 4
0
 public RulerData(Vector2 origin, float leftStoper, float rightStoper, float offset, RulerOrientation rulerOrientation)
 {
     Origin           = origin;
     LeftStoper       = leftStoper;
     RightStoper      = rightStoper;
     Offset           = offset;
     RulerOrientation = rulerOrientation;
 }
Esempio n. 5
0
 private static Vector2 SnapPointToRulers(Vector2 point, List <Ruler> rulers, RulerOrientation orientationFilter)
 {
     if (TrySnapPoint(point, rulers, orientationFilter, out var snappedPoint))
     {
         return(snappedPoint * Document.Current.RootNode.AsWidget.CalcTransitionToSpaceOf(SceneView.Instance.Scene));
     }
     return(point);
 }
Esempio n. 6
0
        public Cursor HitTestGuide(Point p, RulerOrientation mode)
        {
            if (_Guides.Exists(g => (int)g.Info.Orientation == (int)mode && g.HitTest(p)))
            {
                return(_Guides.First(g => (int)g.Info.Orientation == (int)mode && g.HitTest(p)).Cursor);
            }

            return(Cursors.Arrow);
        }
Esempio n. 7
0
        public Guideline GetGuide(Point p, RulerOrientation mode)
        {
            if (_Guides.Exists(g => (int)g.Info.Orientation == (int)mode && g.HitTest(p)))
            {
                return(_Guides.First(g => (int)g.Info.Orientation == (int)mode && g.HitTest(p)));
            }

            return(_Container.CreateGuide(p, mode));
        }
Esempio n. 8
0
 private void Init()
 {
     this.orientation    = RulerOrientation.Horizontal;
     this.escala         = Units.Centimetro;
     this.tickporunidade = 0;
     this.tick           = 0;
     this.tickfator      = 0.0;
     this.Font           = new Font("Small Fonts", 7f);
     this.InitializeDevive();
     this.InternalSetUnits();
 }
Esempio n. 9
0
            private static void DrawLine(Vector2 containerSize, Vector2 value, RulerOrientation orientation, Color4 color)
            {
                if (value.Y <= RulerHeight && orientation == RulerOrientation.Horizontal ||
                    value.X <= RulerHeight && orientation == RulerOrientation.Vertical
                    )
                {
                    return;
                }
                var mask = orientation.GetDirection();
                var a    = (Vector2.One - mask) * RulerHeight + mask * value;
                var b    = (Vector2.One - mask) * containerSize + mask * value;

                Renderer.DrawLine(a, b, color);
            }
Esempio n. 10
0
 private static IEnumerator <object> CreateLineTask(Widget widget, RulerOrientation lineRulerOrientation = RulerOrientation.Horizontal)
 {
     while (true)
     {
         if (widget.Input.WasMousePressed() && !Document.Current.PreviewScene)
         {
             var rect = new Rectangle(Vector2.Zero, widget.Size);
             sv.Components.Add(new CreateLineRequestComponent {
                 Orientation = lineRulerOrientation,
                 IsHovered   = () => rect.Contains(widget.LocalMousePosition())
             });
         }
         yield return(null);
     }
 }
Esempio n. 11
0
 //Constructors
 public Ruler()
 {
     InitializeComponent();
     Component.Instance.GetLicense(typeof(Ruler), this);
     mFont            = new Font("Microsoft Sans Serif", 7.0F);
     mUnit            = RulerUnit.Pixel;
     mMajor           = 100;
     mMinor           = 10;
     mMid             = 50;
     mStart           = 0;
     mZoom            = 100;
     mScaleFactor     = 1;
     mUnitScaleFactor = new PointF(1, 1);
     mOrientation     = RulerOrientation.Top;
     mBorderStyle     = RulerBorderStyle.Edge;
     mDrawGuides      = true;
     mGradientColor   = BackColor;
 }
Esempio n. 12
0
		//Constructors
		public Ruler()
		{
			InitializeComponent();
			Component.Instance.GetLicense(typeof(Ruler), this);
			mFont = new Font("Microsoft Sans Serif",7.0F);
			mUnit = RulerUnit.Pixel;
			mMajor = 100;
			mMinor = 10;
			mMid = 50;
			mStart = 0;
			mZoom = 100;
			mScaleFactor = 1;
			mUnitScaleFactor = new PointF(1,1);
			mOrientation = RulerOrientation.Top;
			mBorderStyle = RulerBorderStyle.Edge;
			mDrawGuides = true;
			mGradientColor = BackColor;
		}
Esempio n. 13
0
        //Constructors
        public Ruler()
        {
            InitializeComponent();

            _font            = new Font("Microsoft Sans Serif", 7.0F);
            _unit            = RulerUnit.Pixel;
            _major           = 100;
            _minor           = 10;
            _mid             = 50;
            _start           = 0;
            _zoom            = 100;
            _scaleFactor     = 1;
            _unitScaleFactor = new PointF(1, 1);
            _orientation     = RulerOrientation.Top;
            _borderStyle     = RulerBorderStyle.Edge;
            _drawGuides      = true;
            _gradientColor   = BackColor;
        }
Esempio n. 14
0
 private static IEnumerator <object> CreateLineTask(Widget widget, RulerOrientation lineRulerOrientation = RulerOrientation.Horizontal)
 {
     while (true)
     {
         var rect = new Rectangle(Vector2.Zero, widget.Size);
         if (rect.Contains(widget.LocalMousePosition()) &&
             !Document.Current.PreviewAnimation &&
             !Document.Current.ExpositionMode
             )
         {
             if (widget.Input.WasMousePressed())
             {
                 SceneView.Instance.Components.Add(new CreateLineRequestComponent {
                     Orientation = lineRulerOrientation,
                 });
             }
         }
         yield return(null);
     }
 }
Esempio n. 15
0
 public static float GetComponentFor(this RulerOrientation orientation, Vector2 value)
 {
     return(orientation == RulerOrientation.Horizontal ? value.Y : value.X);
 }
Esempio n. 16
0
 public static Vector2 GetDirection(this RulerOrientation orientation)
 {
     return(orientation == RulerOrientation.Horizontal ? Vector2.Down : Vector2.Right);
 }
Esempio n. 17
0
 public static bool IsRulerContainLine(float value, RulerOrientation orientation) =>
 Ruler.Lines.Any(l => l.RulerOrientation == orientation && Math.Abs(l.Value - value) < Mathf.ZeroTolerance);
Esempio n. 18
0
 private static float GetVectorComponentForOrientation(Vector2 value, RulerOrientation orientation)
 {
     return(orientation == RulerOrientation.Horizontal ? value.X : value.Y);
 }
Esempio n. 19
0
 public RulerLine(float value = 0, RulerOrientation rulerOrientation = RulerOrientation.Horizontal)
 {
     RulerOrientation = rulerOrientation;
     Value            = value;
 }
Esempio n. 20
0
 public RulerLine(Vector2 value, RulerOrientation rulerOrientation = RulerOrientation.Horizontal)
 {
     RulerOrientation = rulerOrientation;
     MakePassingThroughPoint(value);
 }
Esempio n. 21
0
 public RulerBarPresenter(RulerOrientation rulerOrientation)
 {
     RulerOrientation = rulerOrientation;
 }