Ejemplo n.º 1
0
        internal void DrawGraph(Graphics g)
        {
            #region drawing of database for debugging only

#if DEBUGGLEE
            Pen          myPen = new Pen(System.Drawing.Color.Blue, (float)(1 / 1000.0));
            DrawingGraph dg    = this.DrawingGraph;
            if (dg.DataBase != null)
            {
                Draw.DrawDataBase(g, myPen, dg);
            }

            bool debugDrawing = Draw.DrawDebugStuff(g, this, myPen);
            if (debugDrawing)
            {
                return;
            }
#endif
            #endregion

            if (this.drawingGraph.Attr.Border > 0)
            {
                DrawGraphBorder(this.drawingGraph.Attr.Border, g);
            }

            bool renderEdgeLabels = this.EdgeLabelsAreRendered;

            //we need to draw the edited edges last
            DEdge dEdgeSelectedForEditing = null;

            foreach (DEdge dEdge in Edges)
            {
                if (!dEdge.SelectedForEditing)
                {
                    DrawEdge(g, dEdge, renderEdgeLabels);
                }
                else //there must be no more than one edge selected for editing
                {
                    dEdgeSelectedForEditing = dEdge;
                }
            }

            foreach (DNode dnode in nodeMap.Values)
            {
                DrawNode(g, dnode);
            }


            //draw the selected edge
            if (dEdgeSelectedForEditing != null)
            {
                DrawEdge(g, dEdgeSelectedForEditing, renderEdgeLabels);
                DrawUnderlyingPolyline(g, dEdgeSelectedForEditing);
            }
        }
Ejemplo n.º 2
0
        internal void DrawGraph(Graphics g)
        {
            #region drawing of database for debugging only

#if TEST_MSAGL
            Graph dg = DrawingGraph;

            if (dg.DataBase != null)
            {
                var myPen = new Pen(Color.Blue, (float)(1 / 1000.0));
                Draw.DrawDataBase(g, myPen, dg);
            }

            if (NeedToDrawDebugStuff())
            {
                var myPen = new Pen(Color.Blue, (float)(1 / 1000.0));
                Draw.DrawDebugStuff(g, this, myPen);
            }
#endif

            #endregion

            if (drawingGraph.Attr.Border > 0)
            {
                DrawGraphBorder(drawingGraph.Attr.Border, g);
            }

            //we need to draw the edited edges last
            DEdge dEdgeSelectedForEditing = null;

            foreach (var subgraph in drawingGraph.RootSubgraph.AllSubgraphsWidthFirstExcludingSelf())
            {
                DrawNode(g, nodeMap[subgraph.Id]);
            }


            foreach (DEdge dEdge in Edges)
            {
                if (!dEdge.SelectedForEditing)
                {
                    DrawEdge(g, dEdge);
                }
                else                 //there must be no more than one edge selected for editing
                {
                    dEdgeSelectedForEditing = dEdge;
                }
            }


            foreach (DNode dnode in nodeMap.Values)
            {
                if (!(dnode.DrawingNode is Subgraph))
                {
                    DrawNode(g, dnode);
                }
            }

            //draw the selected edge
            if (dEdgeSelectedForEditing != null)
            {
                DrawEdge(g, dEdgeSelectedForEditing);
                DrawUnderlyingPolyline(g, dEdgeSelectedForEditing);
            }

            if (Viewer.SourcePortIsPresent)
            {
                DrawPortAtLocation(g, Viewer.SourcePortLocation);
            }
            if (Viewer.TargetPortIsPresent)
            {
                DrawPortAtLocation(g, Viewer.TargetPortLocation);
            }
        }