コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="style"></param>
        /// <param name="scale"></param>
        /// <returns></returns>
        private Pen ToPen(BaseStyle style, Func <double, float> scale)
        {
            var pen = new Pen(ToColor(style.Stroke), (float)(style.Thickness / _state.Zoom));

            switch (style.LineCap)
            {
            case Test2d.LineCap.Flat:
                pen.StartCap = System.Drawing.Drawing2D.LineCap.Flat;
                pen.EndCap   = System.Drawing.Drawing2D.LineCap.Flat;
                pen.DashCap  = System.Drawing.Drawing2D.DashCap.Flat;
                break;

            case Test2d.LineCap.Square:
                pen.StartCap = System.Drawing.Drawing2D.LineCap.Square;
                pen.EndCap   = System.Drawing.Drawing2D.LineCap.Square;
                pen.DashCap  = System.Drawing.Drawing2D.DashCap.Flat;
                break;

            case Test2d.LineCap.Round:
                pen.StartCap = System.Drawing.Drawing2D.LineCap.Round;
                pen.EndCap   = System.Drawing.Drawing2D.LineCap.Round;
                pen.DashCap  = System.Drawing.Drawing2D.DashCap.Round;
                break;
            }
            if (style.Dashes != null)
            {
                // TODO: Convert to correct dash values.
                pen.DashPattern = style.Dashes.Select(x => (float)x).ToArray();
            }
            pen.DashOffset = (float)style.DashOffset;
            return(pen);
        }
コード例 #2
0
ファイル: ArrowStyle.cs プロジェクト: gitter-badger/Test2d
 /// <summary>
 /// Copy base style from BaseStyle source.
 /// </summary>
 /// <param name="source">The BaseStyle source object.</param>
 public ArrowStyle(BaseStyle source)
 {
     Stroke = ArgbColor.Create
         (source.Stroke.A,
          source.Stroke.R,
          source.Stroke.G,
          source.Stroke.B);
     Fill = ArgbColor.Create
         (source.Fill.A,
          source.Fill.R,
          source.Fill.G,
          source.Fill.B);
     Thickness = source.Thickness;
     LineCap = source.LineCap;
     Dashes = source.Dashes != null ? source.Dashes.ToArray() : default(double[]);
     DashOffset = source.DashOffset;
 }
コード例 #3
0
ファイル: ArrowStyle.cs プロジェクト: gitter-badger/Test2d
        /// <summary>
        /// Copy base style from BaseStyle source.
        /// </summary>
        /// <param name="source">The BaseStyle source object.</param>
        public ArrowStyle(BaseStyle source)
        {
            Stroke = ArgbColor.Create
                         (source.Stroke.A,
                         source.Stroke.R,
                         source.Stroke.G,
                         source.Stroke.B);
            Fill = ArgbColor.Create
                       (source.Fill.A,
                       source.Fill.R,
                       source.Fill.G,
                       source.Fill.B);
            Thickness = source.Thickness;
            LineCap   = source.LineCap;
            Dashes    = source.Dashes != null?source.Dashes.ToArray() : default(double[]);

            DashOffset = source.DashOffset;
        }
コード例 #4
0
ファイル: ArrowStyle.cs プロジェクト: gitter-badger/Test2d
 /// <summary>
 /// Creates a new instance of the ArrowStyle class.
 /// </summary>
 /// <param name="name">The arrow style name.</param>
 /// <param name="source">The BaseStyle source object.</param>
 /// <param name="arrowType">The arrow type.</param>
 /// <param name="isStroked">The arow shape stroke flag.</param>
 /// <param name="isFilled">The arow shape fill flag.</param>
 /// <param name="radiusX">The arrow X axis radius.</param>
 /// <param name="radiusY">The arrow Y axis radius.</param>
 /// <returns>The new instance of the ArrowStyle class.</returns>
 public static ArrowStyle Create(
     string name,
     BaseStyle source,
     ArrowType arrowType = ArrowType.None,
     bool isStroked      = true,
     bool isFilled       = false,
     double radiusX      = 5.0,
     double radiusY      = 5.0)
 {
     return(new ArrowStyle(source)
     {
         Name = name,
         ArrowType = arrowType,
         IsStroked = isStroked,
         IsFilled = isFilled,
         RadiusX = radiusX,
         RadiusY = radiusY
     });
 }
コード例 #5
0
ファイル: EmfRenderer.cs プロジェクト: monocraft/Test2d
 /// <summary>
 /// 
 /// </summary>
 /// <param name="style"></param>
 /// <param name="scale"></param>
 /// <returns></returns>
 private Pen ToPen(BaseStyle style, Func<double, float> scale)
 {
     var pen = new Pen(ToColor(style.Stroke), (float)(style.Thickness / _state.Zoom));
     switch (style.LineCap)
     {
         case Test2d.LineCap.Flat:
             pen.StartCap = System.Drawing.Drawing2D.LineCap.Flat;
             pen.EndCap = System.Drawing.Drawing2D.LineCap.Flat;
             pen.DashCap = System.Drawing.Drawing2D.DashCap.Flat;
             break;
         case Test2d.LineCap.Square:
             pen.StartCap = System.Drawing.Drawing2D.LineCap.Square;
             pen.EndCap = System.Drawing.Drawing2D.LineCap.Square;
             pen.DashCap = System.Drawing.Drawing2D.DashCap.Flat;
             break;
         case Test2d.LineCap.Round:
             pen.StartCap = System.Drawing.Drawing2D.LineCap.Round;
             pen.EndCap = System.Drawing.Drawing2D.LineCap.Round;
             pen.DashCap = System.Drawing.Drawing2D.DashCap.Round;
             break;
     }
     if (style.Dashes != null)
     {
         // TODO: Convert to correct dash values.
         pen.DashPattern = style.Dashes.Select(x => (float)x).ToArray();
     }
     pen.DashOffset = (float)style.DashOffset;
     return pen;
 }
コード例 #6
0
ファイル: EtoRenderer.cs プロジェクト: gitter-badger/Test2d
        /// <summary>
        /// 
        /// </summary>
        /// <param name="style"></param>
        /// <param name="scale"></param>
        /// <returns></returns>
        private Pen ToPen(BaseStyle style, Func<double, float> scale)
        {
            var pen = new Pen(
                ToColor(style.Stroke),
                scale(style.Thickness / _state.Zoom));

            switch (style.LineCap)
            {
                case Test2d.LineCap.Flat:
                    pen.LineCap = PenLineCap.Butt;
                    break;
                case Test2d.LineCap.Square:
                    pen.LineCap = PenLineCap.Square;
                    break;
                case Test2d.LineCap.Round:
                    pen.LineCap = PenLineCap.Round;
                    break;
            }
            if (style.Dashes != null)
            {
                pen.DashStyle = new DashStyle(
                    (float)style.DashOffset,
                    style.Dashes.Select(x => (float)x).ToArray());
            }
            return pen;
        }
コード例 #7
0
ファイル: ArrowStyle.cs プロジェクト: gitter-badger/Test2d
 /// <summary>
 /// Creates a new instance of the ArrowStyle class.
 /// </summary>
 /// <param name="name">The arrow style name.</param>
 /// <param name="source">The BaseStyle source object.</param>
 /// <param name="arrowType">The arrow type.</param>
 /// <param name="isStroked">The arow shape stroke flag.</param>
 /// <param name="isFilled">The arow shape fill flag.</param>
 /// <param name="radiusX">The arrow X axis radius.</param>
 /// <param name="radiusY">The arrow Y axis radius.</param>
 /// <returns>The new instance of the ArrowStyle class.</returns>
 public static ArrowStyle Create(
     string name,
     BaseStyle source,
     ArrowType arrowType = ArrowType.None,
     bool isStroked = true,
     bool isFilled = false,
     double radiusX = 5.0,
     double radiusY = 5.0)
 {
     return new ArrowStyle(source)
     {
         Name = name,
         ArrowType = arrowType,
         IsStroked = isStroked,
         IsFilled = isFilled,
         RadiusX = radiusX,
         RadiusY = radiusY
     };
 }
コード例 #8
0
ファイル: Win2dRenderer.cs プロジェクト: monocraft/Test2d
 private static CanvasStrokeStyle CreateStrokeStyle(BaseStyle style)
 {
     var ss = new CanvasStrokeStyle();
     switch (style.LineCap)
     {
         case LineCap.Flat:
             ss.StartCap = CanvasCapStyle.Flat;
             ss.EndCap = CanvasCapStyle.Flat;
             ss.DashCap = CanvasCapStyle.Flat;
             break;
         case LineCap.Square:
             ss.StartCap = CanvasCapStyle.Square;
             ss.EndCap = CanvasCapStyle.Square;
             ss.DashCap = CanvasCapStyle.Square;
             break;
         case LineCap.Round:
             ss.StartCap = CanvasCapStyle.Round;
             ss.EndCap = CanvasCapStyle.Round;
             ss.DashCap = CanvasCapStyle.Round;
             break;
     }
     if (style.Dashes != null)
     {
         ss.CustomDashStyle = style.Dashes.Select(x => (float)x).ToArray();
     }
     ss.DashOffset = (float)style.DashOffset;
     return ss;
 }
コード例 #9
0
ファイル: PerspexRenderer.cs プロジェクト: monocraft/Test2d
        /// <summary>
        /// 
        /// </summary>
        /// <param name="style"></param>
        /// <param name="scale"></param>
        /// <returns></returns>
        private Pen ToPen(BaseStyle style, Func<double, float> scale)
        {
            var lineCap = default(PenLineCap);
            var dashStyle = default(DashStyle);

            switch (style.LineCap)
            {
                case LineCap.Flat:
                    lineCap = PenLineCap.Flat;
                    break;
                case LineCap.Square:
                    lineCap = PenLineCap.Square;
                    break;
                case LineCap.Round:
                    lineCap = PenLineCap.Round;
                    break;
            }

            if (style.Dashes != null)
            {
                dashStyle = new DashStyle(
                    style.Dashes,
                    style.DashOffset);
            }

            var pen = new Pen(
                ToSolidBrush(style.Stroke),
                scale(style.Thickness / _state.Zoom),
                dashStyle, lineCap,
                lineCap, lineCap);

            return pen;
        }
コード例 #10
0
ファイル: WpfRenderer.cs プロジェクト: monocraft/Test2d
 /// <summary>
 /// 
 /// </summary>
 /// <param name="style"></param>
 /// <param name="thickness"></param>
 /// <returns></returns>
 private static Pen CreatePen(BaseStyle style, double thickness)
 {
     var brush = CreateBrush(style.Stroke);
     var pen = new Pen(brush, thickness);
     switch (style.LineCap)
     {
         case LineCap.Flat:
             pen.StartLineCap = PenLineCap.Flat;
             pen.EndLineCap = PenLineCap.Flat;
             pen.DashCap = PenLineCap.Flat;
             break;
         case LineCap.Square:
             pen.StartLineCap = PenLineCap.Square;
             pen.EndLineCap = PenLineCap.Square;
             pen.DashCap = PenLineCap.Square;
             break;
         case LineCap.Round:
             pen.StartLineCap = PenLineCap.Round;
             pen.EndLineCap = PenLineCap.Round;
             pen.DashCap = PenLineCap.Round;
             break;
     }
     pen.DashStyle = new DashStyle(style.Dashes, style.DashOffset);
     pen.DashStyle.Offset = style.DashOffset;
     pen.Freeze();
     return pen;
 }