Esempio n. 1
0
 public EditMenuViewModel(InferenceOptions inferenceOptions, SnapOptions snapOptions, IEventAggregator eventAggregator)
     : this()
 {
     this.eventAggregator = eventAggregator;
     InferenceOptions     = inferenceOptions;
     SnapOptions          = snapOptions;
 }
Esempio n. 2
0
        public Snapper(
            SessionData sessionData,
            UiState uiState,
            ILoggerFacade logger,
            IEventAggregator eventAggregator,
            IAnnotationInference annotationInference,
            IConstrainedOptimizer constrainedOptimizer,
            SnapOptions snapOptions)
        {
            this.sessionData          = sessionData;
            this.eventAggregator      = eventAggregator;
            this.annotationInference  = annotationInference;
            this.constrainedOptimizer = constrainedOptimizer;
            this.snapOptions          = snapOptions;

            primitivesReaderWriterFactory = new PrimitivesReaderWriterFactory();
            var annotationConstraintsExtractor = new AnnotationConstraintsExtractor();

            snappersManager = new SnappersManager(uiState, sessionData);
            snappersManager.RegisterSnapper(new ConeSnapper());
            snappersManager.RegisterSnapper(new CylinderSnapper());
            snappersManager.RegisterSnapper(new SphereSnapper());
            snappersManager.RegisterSnapper(new SgcSnapper());
            snappersManager.RegisterSnapper(new BgcSnapper());
            snappersManager.RegisterSnapper(new CuboidSnapper());

            wholeShapeOptimizationModel = new WholeShapeOptimizationModel(sessionData, snappersManager, annotationConstraintsExtractor, primitivesReaderWriterFactory);

            eventAggregator.GetEvent <GlobalShortcutEvent>().Subscribe(OnGlobalShortcut);

            logger.Log("NewSnapper created", Category.Debug, Priority.None);
        }
Esempio n. 3
0
        internal static Rect Constraint(Rect bounds, Rect finalRect, SnapOptions snapOptions)
        {
            var actualHostBounds = bounds;

            if (actualHostBounds.Width == 0 && actualHostBounds.Height == 0)
            {
                return(finalRect);
            }

            if ((snapOptions & SnapOptions.Move) == 0)
            {
                return(actualHostBounds.IntersectionWith(finalRect));
            }

            if (finalRect.Width > actualHostBounds.Width)
            {
                finalRect.X = 0;
            }
            else
            {
                if (finalRect.Left < actualHostBounds.Left)
                {
                    finalRect.X = actualHostBounds.X;
                }
                else if (finalRect.Right > actualHostBounds.Right)
                {
                    finalRect.X += actualHostBounds.Right - finalRect.Right;
                }
            }

            if (finalRect.Height > actualHostBounds.Height)
            {
                finalRect.Y = 0;
            }
            else
            {
                if (finalRect.Top < actualHostBounds.Top)
                {
                    finalRect.Y = actualHostBounds.Top;
                }
                else if (finalRect.Bottom > actualHostBounds.Bottom)
                {
                    finalRect.Y += actualHostBounds.Bottom - finalRect.Bottom;
                }
            }

            return(actualHostBounds.IntersectionWith(finalRect));
        }