public DisplayInteractionManager(IWorkspace workspace, ProjectionStyle uiProjectionStyle) { _workspace = workspace; UIProjectionStyle = uiProjectionStyle; rubberBandGenerator = _workspace.RubberBandGenerator; panCommand = (PanCommand)_workspace.GetCommand("View.Pan").Item1; _workspace.WorkspaceChanged += Workspace_WorkspaceChanged; _workspace.CommandExecuted += Workspace_CommandExecuted; _workspace.RubberBandGeneratorChanged += Workspace_RubberBandGeneratorChanged; _workspace.SelectedEntities.CollectionChanged += SelectedEntities_CollectionChanged; _workspace.InputService.ValueRequested += InputService_ValueRequested; _workspace.InputService.ValueReceived += InputService_ValueReceived; _workspace.InputService.InputCanceled += InputService_InputCanceled; _workspace.Update(viewControl: this, isDirty: _workspace.IsDirty); SetCursorVisibility(); }
public static IEnumerable <ProjectedEntity> ProjectTo2D(Drawing drawing, ViewPort viewPort, double width, double height, ProjectionStyle projectionStyle) { // create transform Matrix4 transform; switch (projectionStyle) { case ProjectionStyle.OriginTopLeft: transform = viewPort.GetTransformationMatrixWindowsStyle(width, height); break; case ProjectionStyle.OriginBottomLeft: transform = viewPort.GetTransformationMatrixCartesianStyle(width, height); break; case ProjectionStyle.OriginCenter: transform = viewPort.GetTransformationMatrixDirect3DStyle(width, height); break; default: throw new NotSupportedException(); } // project all entities var entities = new List <ProjectedEntity>(); foreach (var layer in from l in drawing.GetLayers() where l.EntityCount > 0 orderby l.Name select l) { foreach (var entity in layer.GetEntities().OrderBy(x => x.Id)) { var projected = Project(entity, layer, transform); if (projected != null) { entities.Add(projected); } } } return(entities); }
public static IEnumerable <ProjectedEntity> ProjectTo2D(Drawing drawing, ViewPort viewPort, double width, double height, ProjectionStyle projectionStyle) { // create transform var transform = viewPort.GetProjectionMatrix(width, height, projectionStyle); // project all entities var entities = new List <ProjectedEntity>(); foreach (var layer in from l in drawing.GetLayers() where l.EntityCount > 0 orderby l.Name select l) { foreach (var entity in layer.GetEntities().OrderBy(x => x.Id)) { var projected = Project(entity, layer, transform); if (projected != null) { entities.Add(projected); } } } return(entities); }
public static Matrix4 GetProjectionMatrix(this ViewPort viewPort, double width, double height, ProjectionStyle projectionStyle) { // create transform Matrix4 transform; switch (projectionStyle) { case ProjectionStyle.OriginTopLeft: transform = viewPort.GetTransformationMatrixWindowsStyle(width, height); break; case ProjectionStyle.OriginBottomLeft: transform = viewPort.GetTransformationMatrixCartesianStyle(width, height); break; case ProjectionStyle.OriginCenter: transform = viewPort.GetTransformationMatrixDirect3DStyle(width, height); break; default: throw new NotSupportedException(); } return(transform); }