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); }
/// <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); } }
/// <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); }
/// <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); } } }
/// <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; }
/// <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(); }
/// <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; }