public static XElement ToXml(this ISequenceDiagram sequenceDiagram)
 {
     return(new XElement("SequenceDiagram",
                         new XElement("Lifelines", sequenceDiagram.Lifelines.Select(ToXml)),
                         new XElement("Signals", sequenceDiagram.AllSignals().Select(ToXml)),
                         sequenceDiagram.Root.ToXml(),
                         new XElement("RowCount", sequenceDiagram.RowCount)));
 }
        public SequenceDiagramVisual(IStyle style, ISequenceDiagram sequenceDiagram)
            : base(style)
        {
            m_SequenceDiagram = sequenceDiagram;
            m_GridLayout      = new GridLayout(Style, sequenceDiagram.LifelineCount, sequenceDiagram.RowCount);

            Initialize();
        }
        private static Bitmap GenerateBitmap(DiagramArguments arguments, ISequenceDiagram sequenceDiagram)
        {
            IStyle style;

            switch (arguments.Style)
            {
            case DiagramStyle.Sketchy:
                style = new SketchyStyle();
                break;

            case DiagramStyle.Classic:
                style = new ClassicStyle();
                break;

            default:
                throw new ArgumentOutOfRangeException("style");
            }

            if (arguments.Debug)
            {
                style = new DebugStyle(style);
            }

            var sequenceDiagramVisual = new SequenceDiagramVisual(style, sequenceDiagram);

            using (var measureBitmap = new Bitmap(1, 1))
                using (var measureGraphics = System.Drawing.Graphics.FromImage(measureBitmap))
                {
                    var graphicContext = new GdiPlusGraphicContext(measureGraphics);

                    sequenceDiagramVisual.Layout(graphicContext);

                    var renderBitmap = new Bitmap(
                        (int)Math.Ceiling(sequenceDiagramVisual.Width + 1),
                        (int)Math.Ceiling(sequenceDiagramVisual.Height + 1));

                    using (var renderGraphics = System.Drawing.Graphics.FromImage(renderBitmap))
                    {
                        renderGraphics.Clear(Color.White);
                        renderGraphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
                        renderGraphics.InterpolationMode  = System.Drawing.Drawing2D.InterpolationMode.High;
                        renderGraphics.SmoothingMode      = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

                        graphicContext = new GdiPlusGraphicContext(renderGraphics);

                        sequenceDiagramVisual.Draw(graphicContext);
                    }

                    return(renderBitmap);
                }
        }
Exemple #4
0
        public static IEnumerable <ISignal> AllSignals(this ISequenceDiagram sequenceDiagram)
        {
            if (sequenceDiagram == null)
            {
                throw new ArgumentNullException("sequenceDiagram");
            }

            return
                (sequenceDiagram
                 .Lifelines
                 .SelectMany(InSignals)
                 .Union(
                     sequenceDiagram
                     .Lifelines
                     .SelectMany(OutSignals)));
        }
        private static DiagramResult CreateSequenceDiagram(DiagramArguments arguments)
        {
            ModelErrorsCollection modelErrors     = new ModelErrorsCollection();
            ISequenceDiagram      sequenceDiagram = DiagramCreator.CreateFrom(arguments.Source, modelErrors);

            var diagramErrors = new List <DiagramError>();

            foreach (ModelError modelError in modelErrors)
            {
                diagramErrors.Add(new DiagramError(modelError.Message, modelError.Token.Line, modelError.Token.Start, modelError.Token.Length, modelError.Token.Value));
            }

            return(new DiagramResult(
                       arguments,
                       GenerateBitmap(arguments, sequenceDiagram),
                       diagramErrors.ToArray(),
                       sequenceDiagram.Root.Title));
        }