pattern.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. "use strict";
  2. /**
  3. * @fileoverview pattern
  4. * @author dengfuping_develop@163.com
  5. */
  6. Object.defineProperty(exports, "__esModule", { value: true });
  7. var util_1 = require("@antv/util");
  8. var dom_1 = require("../util/dom");
  9. var regexPR = /^p\s*\(\s*([axyn])\s*\)\s*(.*)/i;
  10. var Pattern = /** @class */ (function () {
  11. function Pattern(cfg) {
  12. this.cfg = {};
  13. var el = dom_1.createSVGElement('pattern');
  14. el.setAttribute('patternUnits', 'userSpaceOnUse');
  15. var child = dom_1.createSVGElement('image');
  16. el.appendChild(child);
  17. var id = util_1.uniqueId('pattern_');
  18. el.id = id;
  19. this.el = el;
  20. this.id = id;
  21. this.cfg = cfg;
  22. var arr = regexPR.exec(cfg);
  23. var source = arr[2];
  24. child.setAttribute('href', source);
  25. var img = new Image();
  26. if (!source.match(/^data:/i)) {
  27. img.crossOrigin = 'Anonymous';
  28. }
  29. img.src = source;
  30. function onload() {
  31. el.setAttribute('width', "" + img.width);
  32. el.setAttribute('height', "" + img.height);
  33. }
  34. if (img.complete) {
  35. onload();
  36. }
  37. else {
  38. img.onload = onload;
  39. // Fix onload() bug in IE9
  40. img.src = img.src;
  41. }
  42. return this;
  43. }
  44. Pattern.prototype.match = function (type, attr) {
  45. return this.cfg === attr;
  46. };
  47. return Pattern;
  48. }());
  49. exports.default = Pattern;
  50. //# sourceMappingURL=pattern.js.map