public static void CreatePDF(string path, IRenderableNet n, LayoutProvider layout, NetworkColorizer colorizer = null)
        {
            PdfSharp.Pdf.PdfDocument doc = new PdfDocument();
            doc.Info.Title   = "Network";
            doc.Info.Subject = "Created by NETVisualizer";

            PdfPage page = doc.AddPage();

            x_offset    = Renderer.Origin.X;
            y_offset    = Renderer.Origin.Y;
            page.Width  = Renderer.Bottomright.X - Renderer.Origin.X;
            page.Height = Renderer.Bottomright.Y - Renderer.Origin.Y;


            if (colorizer != null)
            {
                // Draw the network to the xgraphics object
                Draw(XGraphics.FromPdfPage(page), n, layout, colorizer);
            }
            else
            {
                Draw(XGraphics.FromPdfPage(page), n, layout, new NetworkColorizer());
            }

            // Save the s_document...
            doc.Save(path);
        }
Example #2
0
        /// <summary>
        /// Initializes the data structures needed to compute the layout
        /// </summary>
        /// <param name="width">the width of the layout area</param>
        /// <param name="height">the height of the layout area</param>
        /// <param name="network">The network to layout</param>
        public override void Init(double width, double height, IRenderableNet network)
        {
            base.Init(width, height, network);

            CreateRandomState();

            network.OnVertexChanged += new VertexChangedHandler(network_OnVertexChanged);
        }
 private static void Draw(XGraphics g, IRenderableNet n, LayoutProvider layout, NetworkColorizer colorizer)
 {
     lock (n)
     {
         if (g == null)
             return;
         g.SmoothingMode = PdfSharp.Drawing.XSmoothingMode.HighQuality;
         g.Clear(Color.White);
         foreach (var e in n.GetEdgeArray())
             if (string.Compare(e.Item1, e.Item2) >= 0)
                 DrawEdge(g, e, layout, colorizer);
         foreach (string v in n.GetVertexArray())
             DrawVertex(g, v, layout, colorizer);
     }
 }
Example #4
0
        /// <summary>
        /// Creates a new instance of a Networkvisualizer which renders the specified network in real-time
        /// </summary>
        /// <param name="network">The network to render</param>
        /// <param name="layout">The layout algorithm to use</param>
        /// <param name="colorizer">The colorizer to apply. Default colors will be used if this is set to null (which is the default)</param>
        /// <param name="width">The width of the rendering window. 800 pixels by default</param>
        /// <param name="height">The height of the rendering window. 600 pixels by default</param>
        public static void Start(IRenderableNet network, LayoutProvider layout, NetworkColorizer colorizer = null, int width = 800, int height = 600)
        {
            // The actual rendering needs to be done in a separate thread placed in the single thread appartment state
            _mainThread = new Thread(new ThreadStart(new Action(delegate() {
                Instance = new Renderer(network, layout, colorizer, width, height);
                _initialized.Set();
                Instance.Run(80f);
            })));

            // Set single thread appartment
            _mainThread.SetApartmentState(ApartmentState.STA);
            _mainThread.Name = "STA Thread for NETVisualizer";

            // Fire up the thread and wait until initialization has been completed
            _mainThread.Start();
            _initialized.WaitOne();
        }
        public static void CreatePDF(string path, IRenderableNet n, LayoutProvider layout, NetworkColorizer colorizer = null)
        {
            PdfSharp.Pdf.PdfDocument doc = new PdfDocument();
            doc.Info.Title = "Network";
            doc.Info.Subject = "Created by NETVisualizer";

            PdfPage page = doc.AddPage();
            x_offset = Renderer.Origin.X;
            y_offset = Renderer.Origin.Y;
            page.Width = Renderer.Bottomright.X - Renderer.Origin.X;
            page.Height = Renderer.Bottomright.Y - Renderer.Origin.Y;

            if (colorizer != null)
                // Draw the network to the xgraphics object
                Draw(XGraphics.FromPdfPage(page), n, layout, colorizer);
            else
                Draw(XGraphics.FromPdfPage(page), n, layout, new NetworkColorizer());

            // Save the s_document...
            doc.Save(path);
        }
Example #6
0
        /// <summary>
        /// Basic constructor that initializes all events, default values and fields
        /// </summary>
        /// <param name="network"></param>
        /// <param name="layout"></param>
        /// <param name="colorizer"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        internal Renderer(IRenderableNet network, LayoutProvider layout, NetworkColorizer colorizer, int width, int height)
            : base(width, height, OpenTK.Graphics.GraphicsMode.Default, "NETVisualizer")
        {
            // Register key and mouse events
            Keyboard.KeyDown   += new EventHandler <KeyboardKeyEventArgs>(Keyboard_KeyDown);
            Mouse.ButtonDown   += new EventHandler <MouseButtonEventArgs>(Mouse_ButtonDown);
            Mouse.ButtonUp     += new EventHandler <MouseButtonEventArgs>(Mouse_ButtonUp);
            Mouse.Move         += new EventHandler <MouseMoveEventArgs>(Mouse_Move);
            Mouse.WheelChanged += new EventHandler <MouseWheelEventArgs>(Mouse_WheelChanged);

            // Set default node size
            ComputeNodeSize = new Func <string, float>(v => {
                return(2f);
            });

            MarkerSize = 2f;

            // Set default edge thickness
            ComputeEdgeThickness = new Func <Tuple <string, string>, float>(e => {
                return(0.05f);
            });

            EdgeCurvatureGamma    = (float)Math.PI / 3f;
            EdgeCurvatureSegments = 15;

            // Set network and initialize layout algorithm
            _network = network;
            _layout  = layout;
            _layout.Init(Width, Height, network);

            // Initialize colorizer
            if (colorizer == null)
            {
                _colorizer = new NetworkColorizer();
            }
            else
            {
                _colorizer = colorizer;
            }
        }
 private static void Draw(XGraphics g, IRenderableNet n, LayoutProvider layout, NetworkColorizer colorizer)
 {
     lock (n)
     {
         if (g == null)
         {
             return;
         }
         g.SmoothingMode = PdfSharp.Drawing.XSmoothingMode.HighQuality;
         g.Clear(Color.White);
         foreach (var e in n.GetEdgeArray())
         {
             if (string.Compare(e.Item1, e.Item2) >= 0)
             {
                 DrawEdge(g, e, layout, colorizer);
             }
         }
         foreach (string v in n.GetVertexArray())
         {
             DrawVertex(g, v, layout, colorizer);
         }
     }
 }
Example #8
0
 /// <summary>
 /// Initializes the layout area and the network to render
 /// </summary>
 /// <param name="width"></param>
 /// <param name="height"></param>
 /// <param name="network"></param>
 public virtual void Init(double width, double height, IRenderableNet network)
 {
     Width   = width;
     Height  = height;
     Network = network;
 }
Example #9
0
        /// <summary>
        /// Creates a new instance of a Networkvisualizer which renders the specified network in real-time
        /// </summary>
        /// <param name="network">The network to render</param>
        /// <param name="layout">The layout algorithm to use</param>
        /// <param name="colorizer">The colorizer to apply. Default colors will be used if this is set to null (which is the default)</param>
        /// <param name="width">The width of the rendering window. 800 pixels by default</param>
        /// <param name="height">The height of the rendering window. 600 pixels by default</param>
        public static void Start(IRenderableNet network, LayoutProvider layout, NetworkColorizer colorizer = null, int width=800, int height=600)
        {
            // The actual rendering needs to be done in a separate thread placed in the single thread appartment state
            _mainThread = new Thread(new ThreadStart(new Action(delegate() {
                    Instance =  new Renderer(network, layout, colorizer, width, height);
                    _initialized.Set();
                    Instance.Run(80f);
            })));

            // Set single thread appartment
            _mainThread.SetApartmentState(ApartmentState.STA);
            _mainThread.Name = "STA Thread for NETVisualizer";

            // Fire up the thread and wait until initialization has been completed
            _mainThread.Start();
            _initialized.WaitOne();
        }
Example #10
0
        /// <summary>
        /// Basic constructor that initializes all events, default values and fields
        /// </summary>
        /// <param name="network"></param>
        /// <param name="layout"></param>
        /// <param name="colorizer"></param>
        /// <param name="width"></param>
        /// <param name="height"></param>
        internal Renderer(IRenderableNet network, LayoutProvider layout, NetworkColorizer colorizer, int width, int height)
            : base(width, height, OpenTK.Graphics.GraphicsMode.Default, "NETVisualizer")
        {
            // Register key and mouse events
            Keyboard.KeyDown += new EventHandler<KeyboardKeyEventArgs>(Keyboard_KeyDown);
            Mouse.ButtonDown += new EventHandler<MouseButtonEventArgs>(Mouse_ButtonDown);
            Mouse.ButtonUp += new EventHandler<MouseButtonEventArgs>(Mouse_ButtonUp);
            Mouse.Move += new EventHandler<MouseMoveEventArgs>(Mouse_Move);
            Mouse.WheelChanged += new EventHandler<MouseWheelEventArgs>(Mouse_WheelChanged);

            // Set default node size
            ComputeNodeSize = new Func<string, float>(v => {
                return 2f;
            });

            MarkerSize = 2f;

            // Set default edge thickness
            ComputeEdgeThickness = new Func<Tuple<string,string>, float>( e => {
                return 0.05f;
            });

            EdgeCurvatureGamma = (float)Math.PI / 3f;
            EdgeCurvatureSegments = 15;

            // Set network and initialize layout algorithm
            _network = network;
            _layout = layout;
            _layout.Init(Width, Height, network);

            // Initialize colorizer
            if (colorizer == null)
                _colorizer = new NetworkColorizer();
            else
                _colorizer = colorizer;
        }
 /// <summary>
 /// Initializes the layout area and the network to render
 /// </summary>
 /// <param name="width"></param>
 /// <param name="height"></param>
 /// <param name="network"></param>
 public virtual void Init(double width, double height, IRenderableNet network)
 {
     Width = width;
     Height = height;
     Network = network;
 }