12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- var canPromise = require('./can-promise')
- var QRCode = require('./core/qrcode')
- var CanvasRenderer = require('./renderer/canvas')
- var SvgRenderer = require('./renderer/svg-tag.js')
- function renderCanvas (renderFunc, canvas, text, opts, cb) {
- var args = [].slice.call(arguments, 1)
- var argsNum = args.length
- var isLastArgCb = typeof args[argsNum - 1] === 'function'
- if (!isLastArgCb && !canPromise()) {
- throw new Error('Callback required as last argument')
- }
- if (isLastArgCb) {
- if (argsNum < 2) {
- throw new Error('Too few arguments provided')
- }
- if (argsNum === 2) {
- cb = text
- text = canvas
- canvas = opts = undefined
- } else if (argsNum === 3) {
- if (canvas.getContext && typeof cb === 'undefined') {
- cb = opts
- opts = undefined
- } else {
- cb = opts
- opts = text
- text = canvas
- canvas = undefined
- }
- }
- } else {
- if (argsNum < 1) {
- throw new Error('Too few arguments provided')
- }
- if (argsNum === 1) {
- text = canvas
- canvas = opts = undefined
- } else if (argsNum === 2 && !canvas.getContext) {
- opts = text
- text = canvas
- canvas = undefined
- }
- return new Promise(function (resolve, reject) {
- try {
- var data = QRCode.create(text, opts)
- resolve(renderFunc(data, canvas, opts))
- } catch (e) {
- reject(e)
- }
- })
- }
- try {
- var data = QRCode.create(text, opts)
- cb(null, renderFunc(data, canvas, opts))
- } catch (e) {
- cb(e)
- }
- }
- exports.create = QRCode.create
- exports.toCanvas = renderCanvas.bind(null, CanvasRenderer.render)
- exports.toDataURL = renderCanvas.bind(null, CanvasRenderer.renderToDataURL)
- // only svg for now.
- exports.toString = renderCanvas.bind(null, function (data, _, opts) {
- return SvgRenderer.render(data, opts)
- })
|