canvas.js 2.1 KB
Newer Older
1 2 3 4 5 6 7 8
function getInt (method) {
  return function (value, params) {
    if (value) {
      params[method] = Math.round(value)
    }
  }
}

9 10 11 12 13 14 15
export const canvasGetImageData = {
  canvasId: {
    type: String,
    required: true
  },
  x: {
    type: Number,
16 17
    required: true,
    validator: getInt('x')
18 19 20
  },
  y: {
    type: Number,
21 22
    required: true,
    validator: getInt('y')
23 24 25
  },
  width: {
    type: Number,
26 27
    required: true,
    validator: getInt('width')
28 29 30
  },
  height: {
    type: Number,
31 32
    required: true,
    validator: getInt('height')
33 34 35 36 37 38 39 40 41 42 43 44 45 46
  }
}

export const canvasPutImageData = {
  canvasId: {
    type: String,
    required: true
  },
  data: {
    type: Uint8ClampedArray,
    required: true
  },
  x: {
    type: Number,
47 48
    required: true,
    validator: getInt('x')
49 50 51
  },
  y: {
    type: Number,
52 53
    required: true,
    validator: getInt('y')
54 55 56
  },
  width: {
    type: Number,
57 58
    required: true,
    validator: getInt('width')
59 60
  },
  height: {
61 62
    type: Number,
    validator: getInt('height')
63 64 65 66 67 68 69 70 71 72 73
  }
}

const fileType = {
  PNG: 'PNG',
  JPG: 'JPG'
}

export const canvasToTempFilePath = {
  x: {
    type: Number,
74 75
    default: 0,
    validator: getInt('x')
76 77 78
  },
  y: {
    type: Number,
79 80
    default: 0,
    validator: getInt('y')
81 82
  },
  width: {
83 84
    type: Number,
    validator: getInt('width')
85 86
  },
  height: {
87 88
    type: Number,
    validator: getInt('height')
89 90
  },
  destWidth: {
91 92
    type: Number,
    validator: getInt('destWidth')
93 94
  },
  destHeight: {
95 96
    type: Number,
    validator: getInt('destHeight')
97 98 99 100 101 102 103 104 105 106 107 108 109
  },
  canvasId: {
    type: String,
    require: true
  },
  fileType: {
    type: String,
    validator (value, params) {
      value = (value || '').toUpperCase()
      params.fileType = Object.values(fileType).indexOf(value) < 0 ? fileType.PNG : value
    }
  },
  quality: {
110
    type: Number,
111 112 113 114
    validator (value, params) {
      value = Math.floor(value)
      params.quality = value > 0 && value < 1 ? value : 1
    }
115 116
  }
}
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131

export const drawCanvas = {
  canvasId: {
    type: String,
    require: true
  },
  actions: {
    type: Array,
    require: true
  },
  reserve: {
    type: Boolean,
    default: false
  }
}