public EditMenuViewModel(InferenceOptions inferenceOptions, SnapOptions snapOptions, IEventAggregator eventAggregator) : this() { this.eventAggregator = eventAggregator; InferenceOptions = inferenceOptions; SnapOptions = snapOptions; }
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); }
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)); }