HImageElement.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {
  2. extendPrototype,
  3. } from '../../utils/functionExtensions';
  4. import createNS from '../../utils/helpers/svg_elements';
  5. import RenderableElement from '../helpers/RenderableElement';
  6. import BaseElement from '../BaseElement';
  7. import TransformElement from '../helpers/TransformElement';
  8. import HierarchyElement from '../helpers/HierarchyElement';
  9. import FrameElement from '../helpers/FrameElement';
  10. import HBaseElement from './HBaseElement';
  11. import HSolidElement from './HSolidElement';
  12. function HImageElement(data, globalData, comp) {
  13. this.assetData = globalData.getAssetData(data.refId);
  14. this.initElement(data, globalData, comp);
  15. }
  16. extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);
  17. HImageElement.prototype.createContent = function () {
  18. var assetPath = this.globalData.getAssetsPath(this.assetData);
  19. var img = new Image();
  20. if (this.data.hasMask) {
  21. this.imageElem = createNS('image');
  22. this.imageElem.setAttribute('width', this.assetData.w + 'px');
  23. this.imageElem.setAttribute('height', this.assetData.h + 'px');
  24. this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);
  25. this.layerElement.appendChild(this.imageElem);
  26. this.baseElement.setAttribute('width', this.assetData.w);
  27. this.baseElement.setAttribute('height', this.assetData.h);
  28. } else {
  29. this.layerElement.appendChild(img);
  30. }
  31. img.crossOrigin = 'anonymous';
  32. img.src = assetPath;
  33. if (this.data.ln) {
  34. this.baseElement.setAttribute('id', this.data.ln);
  35. }
  36. };
  37. export default HImageElement;