Beispiel #1
0
        protected override void Render(ContentWriter cw, Vector2D offset)
        {
            var top = offset + new Vector2D(Size.X / 2, Size.Y);

            var left_topleft = offset + new Vector2D(Vector1D.Zero, Size.Y * 3 / 4);
            var left_bottomleft = offset + new Vector2D(Vector1D.Zero, Size.Y * 1 / 4);

            var right_topright = offset + new Vector2D(Size.X, Size.Y * 3 / 4);
            var right_bottomright = offset + new Vector2D(Size.X, Size.Y * 1 / 4);

            var bottomright = offset + new Vector2D(Size.X, Vector1D.Zero);

            var indent = Size.X / 5;

            var bMidR = offset + new Vector2D(Size.X - indent, Size.Y / 10);
            var bottommid = offset + new Vector2D(Size.X / 2, Size.Y / 10);
            var bMidL = offset + new Vector2D(indent, Size.Y / 10);

            cw.MoveTo(offset);
            cw.LineTo(left_bottomleft);
            cw.CurveFromTo(left_topleft, top);
            cw.CurveFromTo(right_topright, right_bottomright);
            cw.LineTo(bottomright);
            cw.CurveTo(bMidR, bottommid);
            cw.CurveFromTo(bMidL, offset);

            cw.CloseShape = true;
        }
Beispiel #2
0
        protected override void Render(ContentWriter cw, Vector2D offset)
        {
            var topleft = offset + new Vector2D(Vector1D.Zero, Size.Y);
            var topright = offset + Size;

            var left = offset + new Vector2D(Vector1D.Zero, Size.Y / 2);
            var right = offset + new Vector2D(Size.X, Size.Y / 2);

            var top = offset + new Vector2D(Size.X / 2, Size.Y);
            var bottomright = offset + new Vector2D(Size.X, Vector1D.Zero);

            cw.MoveTo(offset);
            cw.LineTo(left);
            cw.CurveTo(topleft, top, top);
            cw.CurveTo(topright, right);
            cw.LineTo(bottomright);
            cw.LineTo(offset);

            cw.CloseShape = true;
        }
Beispiel #3
0
        protected override void Render(ContentWriter cw, Vector2D offset)
        {
            var size = Size;
            var width = Math.Abs(size.X.Value(UnitsOfMeasure.Centimeters));
            if (width < 1)
                size.X = Vector1D.Zero;

            var p1 = offset + new Vector2D(Vector1D.Zero, size.Y);
            var p2 = offset + new Vector2D(Vector1D.Zero, size.Y / 2);
            var p3 = offset + new Vector2D(size.X, size.Y / 2);
            var p4 = offset + new Vector2D(size.X, Vector1D.Zero);

            cw.MoveTo(centerX, offset.Y + size.Y + Node.GateHeight + Node.Margin);
            cw.LineTo(centerX, offset.Y + size.Y + Node.GateHeight / 2);

            cw.MoveTo(offset.X, offset.Y + size.Y + Node.GateHeight / 2);
            cw.LineTo(p1);
            cw.LineTo(p2);
            cw.LineTo(p3);
            cw.LineTo(p4);
        }
Beispiel #4
0
        /// <summary>
        /// Renders the object in a document using a <see cref="PdfContentByte"/> by invoking the <see cref="Render(ContentWriter, Vector2D)"/> method.
        /// This method can be overridden in derived classes to specify rendering.
        /// </summary>
        /// <param name="cb">The <see cref="PdfContentByte"/> used for rendering.</param>
        /// <param name="offset">The calculated offset for the rendered item.</param>
        protected internal virtual void Render(PdfContentByte cb, Vector2D offset)
        {
            using (var writer = new ContentWriter(cb))
            {
                var stroke = this as StrokeObject;
                var fill = this as FillObject;

                bool hasstroke = stroke?.BorderColor.HasValue ?? false;
                bool hasfill = fill?.FillColor.HasValue ?? false;

                if (hasstroke)
                {
                    cb.SetLineWidth((float)stroke.BorderWidth.Value(UnitsOfMeasure.Points));
                    cb.SetColorStroke(new Color(stroke.BorderColor.Value));
                }
                if (hasfill)
                    cb.SetColorFill(new Color(fill.FillColor.Value));

                Render(writer, offset);

                if (hasstroke && hasfill)
                {
                    if (writer.CloseShape)
                        cb.ClosePathFillStroke();
                    else
                        cb.FillStroke();
                }
                else if (hasstroke)
                {
                    if (writer.CloseShape)
                        cb.ClosePathStroke();
                    else
                        cb.Stroke();
                }
                else if (hasfill)
                    cb.Fill();
            }
        }
Beispiel #5
0
 /// <summary>
 /// Renders the object in a document using a <see cref="ContentWriter"/>.
 /// This method can be overridden in derived classes to specify rendering.
 /// </summary>
 /// <param name="cw">The <see cref="ContentWriter"/> used for rendering.</param>
 /// <param name="offset">The calculated offset for the rendered item.</param>
 protected virtual void Render(ContentWriter cw, Vector2D offset)
 {
 }
Beispiel #6
0
 /// <summary>
 /// Renders the object in a document using a <see cref="ContentWriter"/>.
 /// This method can be overridden in derived classes to specify rendering.
 /// </summary>
 /// <param name="cw">The <see cref="ContentWriter"/> used for rendering.</param>
 /// <param name="offset">The calculated offset for the rendered item.</param>
 protected virtual void Render(ContentWriter cw, Vector2D offset)
 {
 }