title: Drawing on NSView
body: <p>I am trying to draw on a view with the mouse events but xcode is giving me "invalid context". Could anyone tell when I'm doing wrong?</p>
  
  <pre><code>class DrawingView: NSView {
  
  var gContext:CGContextRef?
  
  var lastPoint = NSPoint(x:0, y:0)
  var red: CGFloat = 0.0
  var green: CGFloat = 0.0
  var blue: CGFloat = 0.0
  var brushWidth: CGFloat = 10.0
  var opacity: CGFloat = 1.0
  var swiped = false
  
  func drawLineFrom(p1:NSPoint, p2:NSPoint){
  
      // CGContextBeginPath(gContext)
      // CGContextSetRGBStrokeColor(gContext, 0, 0, 0, 1)
      NSColor.redColor().set() // choose color
      CGContextSetLineWidth(gContext, 10.0)
  
      CGContextMoveToPoint(gContext, p1.x, p1.y)
      CGContextAddLineToPoint(gContext, p2.x, p2.y)
  
      CGContextStrokePath(gContext)
  
      // self.setNeedsDisplayInRect(self.bounds)
      needsDisplay = true
  
  }
  
  override func mouseUp(theEvent: NSEvent) {
      swiped = true
  
      let droppings = theEvent.locationInWindow
      let currentPoint:NSPoint = self.convertPoint(droppings, fromView: nil)
      self.drawLineFrom(lastPoint, p2: currentPoint)
  
      Swift.print("Up \(currentPoint)")
      lastPoint = currentPoint
  }
  
  override func mouseDown(theEvent: NSEvent) {
      // let position = theEvent.locationInWindow
      // Swift.print("Mouse Down: \(position.x) - \(position.y)")
  
      if theEvent.clickCount == 1{
          let point:NSPoint = self.convertPoint(theEvent.locationInWindow, fromView: self)
          Swift.print("Point &gt;&gt; \(point)")
          lastPoint = point
      }
  
  }
  
  override func drawRect(dirtyRect: NSRect) {
      super.drawRect(dirtyRect)
  
      // Drawing code here.
      let context = NSGraphicsContext.currentContext()?.CGContext
  
      let rawContext = NSGraphicsContext.currentContext()
      rawContext?.saveGraphicsState()
  
      self.gContext = context
  
      CGContextSetRGBStrokeColor(context, 0, 0, 0, 1)
      CGContextSetLineWidth(context, 10.0)
  
      CGContextMoveToPoint(context, 0, 0)
      CGContextAddLineToPoint(context, 200, 200)
  
      CGContextStrokePath(context)
  }
  </code></pre>
  
  <p>And here is my debug output...</p>
  
  <blockquote>
    <p>Point >> (247.71484375, 108.34375)
    Oct 25 15:40:07  OSX Basics[17113] : CGContextSetFillColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
    Oct 25 15:40:07  OSX Basics[17113] : CGContextSetStrokeColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
    Up (394.96484375, 220.5078125)</p>
  </blockquote>