コード例 #1
0
        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();
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }