var inherit = require('./inherit');
var renderer = require('./renderer');
var registerRenderer = require('./registry').registerRenderer;
/**
* Create a new instance of class domRenderer.
*
* @class
* @alias geo.domRenderer
* @extends geo.renderer
* @param {object} arg Options for the renderer.
* @param {geo.layer} [arg.layer] Layer associated with the renderer.
* @param {HTMLElement} [arg.canvas] Canvas element associated with the
* renderer.
* @returns {geo.domRenderer}
*/
var domRenderer = function (arg) {
'use strict';
if (!(this instanceof domRenderer)) {
return new domRenderer(arg);
}
renderer.call(this, arg);
arg = arg || {};
var m_this = this;
/**
* Get API used by the renderer.
*
* @returns {string} 'dom'.
*/
this.api = function () {
return 'dom';
};
/**
* Initialize.
*
* @param {object} [arg] Optional arguments.
* @returns {this}
*/
this._init = function (arg) {
var layer = m_this.layer().node();
if (!m_this.canvas() && layer && layer.length) {
// The renderer and the UI Layer share the same canvas
// at least for now. This renderer is essentially a noop renderer
// designed for backwards compatibility
m_this.canvas(layer[0]);
}
return m_this;
};
this._init(arg);
return this;
};
inherit(domRenderer, renderer);
registerRenderer('dom', domRenderer);
module.exports = domRenderer;