// 生成并渲染出验证码图形
// 参数canvaswidth验证码宽度 canvasheight验证码高度 refidentifying是获取到验证码所在的dom元素====》document.getElementById('canvas')
function draw (canvaswidth, canvasheight, refidentifying) {
  var showNum = []
  var canvas = refidentifying // 获取到canvas的对象，演员
  var context = canvas.getContext('2d') // 获取到canvas画图的环境，演员表演的舞台
  canvas.width = canvaswidth
  canvas.height = canvasheight
  var sCode = 'a,b,c,d,e,f,g,h,i,j,k,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,W,X,Y,Z,1,2,3,4,5,6,7,8,9,0'
  var aCode = sCode.split(',')
  var aLength = aCode.length // 获取到数组的长度

  for (var i = 0; i < 4; i++) { // 这里的for循环可以控制验证码位数（如果想显示6位数，4改成6即可）
    var j = Math.floor(Math.random() * aLength) // 获取到随机的索引值
    // var deg = Math.random() * 30 * Math.PI / 180;//产生0~30之间的随机弧度
    var deg = Math.random() - 0.5 // 产生一个随机弧度
    var txt = aCode[j] // 得到随机的一个内容
    showNum[i] = txt.toLowerCase()
    var x = 10 + i * 20 // 文字在canvas上的x坐标
    var y = 20 + Math.random() * 8 // 文字在canvas上的y坐标
    context.font = 'bold 23px 微软雅黑'

    context.translate(x, y)
    context.rotate(deg)

    context.fillStyle = randomColor()
    context.fillText(txt, 0, 0)

    context.rotate(-deg)
    context.translate(-x, -y)
  }
  for (var i1 = 0; i1 <= 5; i1++) { // 验证码上显示线条
    context.strokeStyle = randomColor()
    context.beginPath()
    context.moveTo(Math.random() * canvaswidth, Math.random() * canvasheight)
    context.lineTo(Math.random() * canvaswidth, Math.random() * canvasheight)
    context.stroke()
  }
  for (var i2 = 0; i2 <= 30; i2++) { // 验证码上显示小点
    context.strokeStyle = randomColor()
    context.beginPath()
    var x2 = Math.random() * canvaswidth
    var y2 = Math.random() * canvasheight
    context.moveTo(x2, y2)
    context.lineTo(x2 + 1, y2 + 1)
    context.stroke()
  }
  // 返回验证码内容
  return showNum
}

// 得到随机的颜色值
function randomColor () {
  var r = Math.floor(Math.random() * 256)
  var g = Math.floor(Math.random() * 256)
  var b = Math.floor(Math.random() * 256)
  return 'rgb(' + r + ',' + g + ',' + b + ')'
}
exports.default = draw
