protected LineGraphic GetLine(Graphic @from, Graphic to, bool dashed = false)
        {
            var line = new Omnigraffle.LineGraphic (NextId);
            line.Head = new Omnigraffle.LineEndInfo (to.ID);
            line.Tail = new Omnigraffle.LineEndInfo (@from.ID);

            if (to is ShapedGraphic) {
                line.Points.Add ((to as ShapedGraphic).Bounds.TopLeft);
            } else if (to is Omnigraffle.Group) {
                line.Points.Add (new Point(25,25));
            }

            if (@from is ShapedGraphic) {
                line.Points.Add ((@from as ShapedGraphic).Bounds.BottomRight);
            } else if (@from is Omnigraffle.Group) {
                line.Points.Add (new Point(30,30));
            }

            line.Style.Shadow.Draws = false;

            if (dashed)
                line.Style.Stroke.Pattern = StrokePattern.Dashed;

            return line;
        }
        protected void AddText(LineGraphic graphic, string text, float position = 0.5f)
        {
            var labelBox = new Omnigraffle.ShapedGraphic (NextId, Omnigraffle.Shape.Rectangle, 50, 50, 100, 100);
            labelBox.Text = new Omnigraffle.TextInfo (text) {
                Alignement = KAOSTools.OmnigraffleExport.Omnigraffle.TextAlignement.Center,
                SideMargin = 0, TopBottomMargin = 0
            };
            labelBox.FontInfo.Size = 8;
            labelBox.Style.Shadow.Draws = false;
            labelBox.FitText = KAOSTools.OmnigraffleExport.Omnigraffle.FitText.Yes;
            // labelBox.Wrap = false;
            labelBox.Flow = KAOSTools.OmnigraffleExport.Omnigraffle.Flow.Resize;
            labelBox.Style.Fill.Color = new KAOSTools.OmnigraffleExport.Omnigraffle.Color (1, 1, 1);
            labelBox.Style.Stroke.Draws = false;
            labelBox.Line = new LineInfo (graphic.ID) { Position = position };

            sheet.GraphicsList.Add (labelBox);
        }