void INCustomRequestCallback.OnCustomRequestCallback(NAspNetThinWebControl control, NRequestContext context, string argument)
            {
                NThinDiagramControl diagramControl = (NThinDiagramControl)control;
                NDrawingDocument    document       = diagramControl.Document;

                NDrawingDocumentHelper      helper   = new NDrawingDocumentHelper(document);
                Dictionary <string, string> settings = helper.ParseSettings(argument);

                DiagramRenderer renderer = new DiagramRenderer();

                switch (settings["command"])
                {
                case "RandomTree6Levels":
                    renderer.CreateTree(document, 6, 3);
                    break;

                case "RandomTree8Levels":
                    renderer.CreateTree(document, 8, 2);
                    break;
                }

                // Layout the diagram
                renderer.ApplyLayout(document, settings);

                // Resize document to fit all shapes
                document.SizeToContent();

                // Update the view
                diagramControl.UpdateView();
            }
Esempio n. 2
0
        private void InitDocument(NDrawingDocument document)
        {
            // Remove the standard frame
            document.BackgroundStyle.FrameStyle.Visible = false;

            // Adjust the graphics quality
            document.GraphicsSettings.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

            // Set up visual formatting
            document.Style.FillStyle   = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant3, Color.FromArgb(251, 203, 156), Color.FromArgb(247, 150, 56));
            document.Style.StrokeStyle = new NStrokeStyle(1, Color.FromArgb(68, 90, 108));

            NStyleSheet sheet = new NStyleSheet("edges");

            sheet.Style.StartArrowheadStyle = new NArrowheadStyle(ArrowheadShape.None, "", NSizeL.Empty,
                                                                  document.Style.FillStyle, document.Style.StrokeStyle);
            sheet.Style.EndArrowheadStyle = new NArrowheadStyle(ArrowheadShape.None, "", NSizeL.Empty,
                                                                document.Style.FillStyle, document.Style.StrokeStyle);
            document.StyleSheets.AddChild(sheet);

            // Create the initial diagram
            DiagramRenderer renderer = new DiagramRenderer();

            renderer.CreateRandomDiagram(document, 15, 15);

            // Layout the diagram
            renderer.ApplyLayout(document, null);

            // Resize document to fit all shapes
            document.SizeToContent();
        }
        protected void InitDocument(NDrawingDocument document)
        {
            // Remove the standard frame
            document.BackgroundStyle.FrameStyle.Visible = false;

            // Adjust the graphics quality
            document.GraphicsSettings.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;

            // Set up visual formatting
            document.Style.FillStyle   = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant3, Color.FromArgb(192, 194, 194), Color.FromArgb(129, 133, 133));
            document.Style.StrokeStyle = new NStrokeStyle(1, Color.FromArgb(68, 90, 108));

            NStyleSheet sheet = new NStyleSheet("edges");

            sheet.Style.StartArrowheadStyle = new NArrowheadStyle(ArrowheadShape.None, "", NSizeL.Empty,
                                                                  document.Style.FillStyle, document.Style.StrokeStyle);
            sheet.Style.EndArrowheadStyle = new NArrowheadStyle(ArrowheadShape.None, "", NSizeL.Empty,
                                                                document.Style.FillStyle, document.Style.StrokeStyle);
            document.StyleSheets.AddChild(sheet);

            // Create a tree
            DiagramRenderer renderer = new DiagramRenderer();

            renderer.CreateTree(document, 6, 3);

            // Apply the layout
            renderer.ApplyLayout(document, null);

            // Resize document to fit all shapes
            document.SizeToContent();
        }
Esempio n. 4
0
    void Draw(Context cr, int width, int height)
    {
        cr.LineWidth = 1.0;
        cr.Color = new Color(1.0, 1.0, 1.0);
        cr.Rectangle(0, 0, width, height);
        cr.Fill();

        cr.Save();
        cr.Scale(scale_factor, scale_factor);
        try
        {
            if(diagram != null)
            {
                DiagramRenderer dr = new DiagramRenderer(cr, width, height, diagram);
                cr.Color = new Color(0.0, 0.0, 0.0);
                dr.Render();
                dr.Draw();
            }
        }
        catch
        {
            error_counter++;
        }
        cr.Restore();
    }
Esempio n. 5
0
    public static void Write(string fileName)
    {
        Diagram diagram = Program.Load(fileName);
        string pdfName = System.IO.Path.ChangeExtension(fileName, "pdf");

        if(diagram != null)
        {
            try
            {
                using(PdfSurface pdfs = new PdfSurface(pdfName, 595, 842))
                {
                    using(Context cr = new Context(pdfs))
                    {
                        DiagramRenderer dr = new DiagramRenderer(cr, 0, 0, diagram);

                        cr.LineWidth = 1.0;
                        cr.Color = new Color(0.0, 0.0, 0.0);
                        dr.Render();
                        pdfs.SetSize(dr.width, dr.height);
                        dr.Draw();

                        cr.ShowPage();
                    }
                }

                Console.WriteLine("Wrote {0}", pdfName);
            }
            catch
            {
                Console.WriteLine("Error writing {0}", pdfName);
            }
        }
    }
Esempio n. 6
0
        /// <summary>
        /// Retrieves the data to be plotted for the edge.</summary>
        /// <param name="render">The render to retrieve the data for.</param>
        /// <param name="worldOffset">Current world offset of the render when drawing this edge.</param>
        /// <param name="g">Graphics object</param>
        /// <returns>The data to plot for the edge.</returns>
        /// <remarks>The data is returned in world space</remarks>
        IEnumerable <EdgeStyleData> IEdgeStyleProvider.GetData(DiagramRenderer render, Point worldOffset, D2dGraphics g)
        {
            var circuitRender = render as D2dCircuitRenderer <TElement, TWire, TPin>;
            var dataPoints    = GetGroupPinChainData(circuitRender, worldOffset, g);
            IEnumerable <EdgeStyleData> result = EmptyEnumerable <EdgeStyleData> .Instance;

            if (EdgeStyle == EdgeStyle.DirectCurve)
            {
                // skip group pin positions where group pins are hidden
                var visiblePoints = dataPoints.Where(
                    pt => pt.Group == null || !pt.Group.Expanded || pt.Group.Info.ShowExpandedGroupPins).ToArray();
                var curves = new EdgeStyleData[visiblePoints.Length - 1];
                for (int i = 0; i < visiblePoints.Length - 1; ++i)
                {
                    var bezier   = SetupBezierCurve(visiblePoints[i].Pos, visiblePoints[i + 1].Pos);
                    var edgeData = new EdgeStyleData
                    {
                        ShapeType = EdgeStyleData.EdgeShape.Bezier,
                        EdgeData  = bezier,
                    };
                    curves[i] = edgeData;
                }
                result = curves;
            }
            else if (EdgeStyle == EdgeStyle.Default)
            {
                var curves = new EdgeStyleData[dataPoints.Count - 1];
                for (int i = 0; i < dataPoints.Count - 1; ++i)
                {
                    var bezier   = SetupBezierCurve(dataPoints[i].Pos, dataPoints[i + 1].Pos);
                    var edgeData = new EdgeStyleData
                    {
                        ShapeType = EdgeStyleData.EdgeShape.Bezier,
                        EdgeData  = bezier,
                    };
                    curves[i] = edgeData;
                }
                result = curves;
            }
            else if (EdgeStyle == EdgeStyle.Polyline)
            {
                var polyline = new EdgeStyleData();
                var lines    = new PointF[dataPoints.Count];
                for (int v = 0; v < dataPoints.Count; ++v)
                {
                    lines[v] = dataPoints[v].Pos;
                }
                polyline.ShapeType = EdgeStyleData.EdgeShape.Polyline;
                polyline.EdgeData  = lines;
                result             = new[] { polyline };
            }

            return(result);
        }
Esempio n. 7
0
        private void InitDocument(NDrawingDocument document)
        {
            // Remove the standard frame
            document.BackgroundStyle.FrameStyle.Visible = false;

            // Adjust the graphics quality
            document.GraphicsSettings.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed;

            // Set up visual formatting
            document.Style.FillStyle   = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant3, Color.FromArgb(192, 194, 194), Color.FromArgb(129, 133, 133));
            document.Style.StrokeStyle = new NStrokeStyle(1, Color.FromArgb(68, 90, 108));

            NStyleSheet styleSheet = new NStyleSheet("orange");

            styleSheet.Style.FillStyle   = new NGradientFillStyle(GradientStyle.Horizontal, GradientVariant.Variant3, Color.FromArgb(251, 203, 156), Color.FromArgb(247, 150, 56));
            styleSheet.Style.StrokeStyle = new NStrokeStyle(1, Color.FromArgb(68, 90, 108));
            document.StyleSheets.AddChild(styleSheet);

            NStyleSheet sheet = new NStyleSheet("edges");

            sheet.Style.StartArrowheadStyle = new NArrowheadStyle(ArrowheadShape.None, "", NSizeL.Empty,
                                                                  document.Style.FillStyle, document.Style.StrokeStyle);
            sheet.Style.EndArrowheadStyle = new NArrowheadStyle(ArrowheadShape.None, "", NSizeL.Empty,
                                                                document.Style.FillStyle, document.Style.StrokeStyle);
            document.StyleSheets.AddChild(sheet);

            // Adjust the text properties
            document.Style.TextStyle.FontStyle = new NFontStyle("arial", 13f);

            // Create the predefined org chart
            DiagramRenderer renderer = new DiagramRenderer();

            renderer.CreatePredefinedOrgChart(document);

            // Apply the layout
            renderer.ApplyLayout(document, null);

            // Resize document to fit all shapes
            document.SizeToContent();
        }
Esempio n. 8
0
        public static void Main(string[] args)
        {
            CommandLineArguments cla = CommandLineArguments.Parse(args);

            string[] files = Directory.GetFiles(Environment.CurrentDirectory, cla.FileFilter);

            DiagramParser   parser   = new DiagramParser();
            DiagramRenderer renderer = new DiagramRenderer();

            foreach (string file in files)
            {
                using (Stream fileStream = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))
                    using (StreamReader reader = new StreamReader(fileStream))
                    {
                        MarbleDiagram diagram = parser.Parse(reader);

                        string outputImage = Path.ChangeExtension(file, ".png");

                        renderer.RenderImage(diagram, outputImage);
                    }
            }
        }
Esempio n. 9
0
    public static void Write(string fileName)
    {
        Diagram diagram = Program.Load(fileName);
        string psName = System.IO.Path.ChangeExtension(fileName, "ps");

        if(diagram != null)
        {
            try
            {
                // It seems the page size cannot be made smaller
                // using SetSize(), only larger. Start with a
                // small surface and enlarge it after layout.
                using(PSSurface pss = new PSSurface(psName, 10, 10))
                {
                    using(Context cr = new Context(pss))
                    {
                        DiagramRenderer dr = new DiagramRenderer(cr, 0, 0, diagram);

                        cr.LineWidth = 1.0;
                        cr.Color = new Color(0.0, 0.0, 0.0);
                        dr.Render();
                        pss.SetSize(dr.width, dr.height);
                        dr.Draw();

                        cr.ShowPage();
                    }
                }

                Console.WriteLine("Wrote {0}", psName);
            }
            catch
            {
                Console.WriteLine("Error writing {0}", psName);
            }
        }
    }
Esempio n. 10
0
 public LifeLine(string label, DiagramRenderer dr, double x, double y0)
 {
     this.label = label;
     this.dr = dr;
     this.x = x;
     this.y0 = y0;
     boxes = new List<CanvasItem>();
     activeBoxes = new Stack<Box>();
 }