@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 2.1 kB
JavaScript
import e from"../../request.js";import r from"../../core/Error.js";import o from"../../core/ItemCache.js";import{isSome as t,unwrapOrThrow as n}from"../../core/maybe.js";import{size as i,create as s}from"../../geometry/support/aaBoundingBox.js";import{objectSymbolLayerSizeWithResourceSize as u,objectSymbolLayerPrimitiveBoundingBox as c}from"./symbolLayerUtils3D.js";let a=m();function m(){return new o(50)}function y(){a=m()}function f(e,o){if("icon"===e.type)return p(e,o);if("object"===e.type)return d(e,o);throw new r("symbol3d:unsupported-symbol-layer","computeLayerSize only works with symbol layers of type Icon and Object")}async function l(e,o){if("icon"===e.type)return h(e,o);if("object"===e.type)return w(e,o);throw new r("symbol3d:unsupported-symbol-layer","computeLayerSize only works with symbol layers of type Icon and Object")}async function p(e,o){if(e.resource?.href)return b(e.resource.href).then((e=>[e.width,e.height]));if(e.resource?.primitive)return t(o)?[o,o]:[256,256];throw new r("symbol3d:invalid-symbol-layer","symbol layers of type Icon must have either an href or a primitive resource")}function h(e,r){return p(e,r).then((r=>{if(null==e.size)return r;const o=r[0]/r[1];return o>1?[e.size,e.size/o]:[e.size*o,e.size]}))}function b(r){return e(r,{responseType:"image"}).then((e=>e.data))}function d(e,r){return j(e,r).then((e=>i(e)))}async function w(e,r){const o=await d(e,r);return u(o,e)}async function j(e,o){if(!e.isPrimitive){const r=n(e.resource?.href),o=a.get(r);if(void 0!==o)return o;const t=await import("../../views/3d/layers/graphics/objectResourceUtils.js"),i=await t.fetch(r,{disableTextures:!0});return a.put(r,i.referenceBoundingBox),i.referenceBoundingBox}let i=null;if(e.resource&&e.resource.primitive&&(i=s(c(e.resource.primitive)),t(o)))for(let r=0;r<i.length;r++)i[r]*=o;return i?Promise.resolve(i):Promise.reject(new r("symbol:invalid-resource","The symbol does not have a valid resource"))}export{y as clearBoundingBoxCache,p as computeIconLayerResourceSize,f as computeLayerResourceSize,l as computeLayerSize,d as computeObjectLayerResourceSize};