PDFDocument = require 'pdfkit'
fs = require 'fs'

make = (doc) -> 
   doc.moveTo(0, 20)
      .lineTo(100, 160)
      .quadraticCurveTo(130, 200, 150, 120)
      .bezierCurveTo(190, -40, 200, 200, 300, 150) # draw a bezier curve
      .lineTo(400, 90)                             # draw another line
      .stroke()                                    # stroke the path

   doc.translate(0, 200)

   doc.polygon [100, 0], [50, 100], [150, 100]
   doc.stroke()

   doc.save()
   doc.translate(200, 0)
   doc.circle(100, 50, 50)
      .dash(5, space: 10)
      .stroke()
   doc.restore()

   doc.save()
   doc.translate(400, 0)
   doc.circle(100, 50, 50)
      .lineWidth(3)
      .fillOpacity(0.8)
      .fillAndStroke("red", "#900")
   doc.restore()

   doc.translate(0, 200)


   # these examples are easier to see with a large line width
   doc.lineWidth(25)
   # line cap settings
   doc.lineCap('butt')
      .moveTo(50, 20)
      .lineTo(100, 20)
      .stroke()
   doc.lineCap('round')
      .moveTo(150, 20)
      .lineTo(200, 20)
      .stroke()
   # square line cap shown with a circle instead of a line so you can see it
   doc.lineCap('square')
      .moveTo(250, 20)
      .circle(275, 30, 15)
      .stroke()
   # line join settings
   doc.lineJoin('miter')
      .rect(50, 100, 50, 50)
      .stroke()
   doc.lineJoin('round')
      .rect(150, 100, 50, 50)
      .stroke()
   doc.lineJoin('bevel')
      .rect(250, 100, 50, 50)
      .stroke()


   doc.end()


doc = new PDFDocument({compress: no})
doc.pipe(fs.createWriteStream('test2.pdf'))
make doc

doc = new PDFDocument({compress: yes})
doc.pipe(fs.createWriteStream('test2c.pdf'))
make doc


