code: func (dc *Context) StrokePreserve() {
  	var painter raster.Painter
  	if dc.mask == nil {
  		if pattern, ok := dc.strokePattern.(*solidPattern); ok {
  			// with a nil mask and a solid color pattern, we can be more efficient
  			// TODO: refactor so we don't have to do this type assertion stuff?
  			p := raster.NewRGBAPainter(dc.im)
  			p.SetColor(pattern.color)
  			painter = p
  		}
  	}
  	if painter == nil {
  		painter = newPatternPainter(dc.im, dc.mask, dc.strokePattern)
  	}
  	dc.stroke(painter)
  }
docs: // StrokePreserve strokes the current path with the current color, line width,
  // line cap, line join and dash settings. The path is preserved after this
  // operation.