Carga
Carga
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
/* *
|
||||
*
|
||||
* Imports
|
||||
*
|
||||
* */
|
||||
import RendererRegistry from '../../Core/Renderer/RendererRegistry.js';
|
||||
import SVGRenderer from '../../Core/Renderer/SVG/SVGRenderer.js';
|
||||
var symbols = SVGRenderer.prototype.symbols;
|
||||
/* *
|
||||
*
|
||||
* Symbols
|
||||
*
|
||||
* */
|
||||
// create the flag icon with anchor
|
||||
symbols.flag = function (x, y, w, h, options) {
|
||||
var anchorX = (options && options.anchorX) || x, anchorY = (options && options.anchorY) || y;
|
||||
// To do: unwanted any cast because symbols.circle has wrong type, it
|
||||
// actually returns an SVGPathArray
|
||||
var path = symbols.circle(anchorX - 1, anchorY - 1, 2, 2);
|
||||
path.push(['M', anchorX, anchorY], ['L', x, y + h], ['L', x, y], ['L', x + w, y], ['L', x + w, y + h], ['L', x, y + h], ['Z']);
|
||||
return path;
|
||||
};
|
||||
/**
|
||||
* Create the circlepin and squarepin icons with anchor.
|
||||
* @private
|
||||
* @param {string} shape
|
||||
* circle or square
|
||||
*/
|
||||
function createPinSymbol(shape) {
|
||||
symbols[(shape + 'pin')] = function (x, y, w, h, options) {
|
||||
var anchorX = options && options.anchorX, anchorY = options && options.anchorY;
|
||||
var path;
|
||||
// For single-letter flags, make sure circular flags are not taller
|
||||
// than their width
|
||||
if (shape === 'circle' && h > w) {
|
||||
x -= Math.round((h - w) / 2);
|
||||
w = h;
|
||||
}
|
||||
path = (symbols[shape])(x, y, w, h);
|
||||
if (anchorX && anchorY) {
|
||||
/**
|
||||
* If the label is below the anchor, draw the connecting line from
|
||||
* the top edge of the label, otherwise start drawing from the
|
||||
* bottom edge
|
||||
*/
|
||||
var labelX = anchorX;
|
||||
if (shape === 'circle') {
|
||||
labelX = x + w / 2;
|
||||
}
|
||||
else {
|
||||
var startSeg = path[0];
|
||||
var endSeg = path[1];
|
||||
if (startSeg[0] === 'M' && endSeg[0] === 'L') {
|
||||
labelX = (startSeg[1] + endSeg[1]) / 2;
|
||||
}
|
||||
}
|
||||
var labelY = (y > anchorY) ? y : y + h;
|
||||
path.push([
|
||||
'M',
|
||||
labelX,
|
||||
labelY
|
||||
], [
|
||||
'L',
|
||||
anchorX,
|
||||
anchorY
|
||||
]);
|
||||
path = path.concat(symbols.circle(anchorX - 1, anchorY - 1, 2, 2));
|
||||
}
|
||||
return path;
|
||||
};
|
||||
}
|
||||
createPinSymbol('circle');
|
||||
createPinSymbol('square');
|
||||
/**
|
||||
* The symbol callbacks are generated on the SVGRenderer object in all browsers.
|
||||
* Even VML browsers need this in order to generate shapes in export. Now share
|
||||
* them with the VMLRenderer.
|
||||
*/
|
||||
var Renderer = RendererRegistry.getRendererType();
|
||||
if (Renderer !== SVGRenderer) {
|
||||
Renderer.prototype.symbols.circlepin = symbols.circlepin;
|
||||
Renderer.prototype.symbols.flag = symbols.flag;
|
||||
Renderer.prototype.symbols.squarepin = symbols.squarepin;
|
||||
}
|
||||
/* *
|
||||
*
|
||||
* Default Export
|
||||
*
|
||||
* */
|
||||
export default symbols;
|
||||
Reference in New Issue
Block a user