UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3 kB
import{px2pt as e}from"../../core/screenUtils.js";import{getSize as r,getColor as t,getOpacity as i,getRotationAngle as n}from"../../renderers/visualVariables/support/visualVariableUtils.js";const o="simple-marker",a="picture-marker",l="simple-line",s="simple-fill",u="shield-label-symbol",f="text";function y(y,c){const{graphic:p,renderer:m,symbol:d}=c,g=d.type;if(g===f||g===u||!("visualVariables"in m)||!m.visualVariables)return;const b=m.getVisualVariablesForType("size"),h=m.getVisualVariablesForType("color"),V=m.getVisualVariablesForType("opacity"),w=m.getVisualVariablesForType("rotation"),T=b[0],v=h[0],G=V[0],S=w[0];if(T){const t=g===o?d.style:null,i=r(T,p,{shape:t});null!=i&&(g===o?y.size=e(i):g===a?(y.width=e(i),y.height=e(i)):g===l?y.width=e(i):y.outline&&(y.outline.width=e(i)))}if(v){const e=t(v,p);(e&&g===o||g===l||g===s)&&(y.color=e?e.toJSON():void 0)}if(G){const e=i(G,p);null!=e&&y.color&&(y.color[3]=Math.round(255*e))}S&&(y.angle=-n(m,p))}function c(){return{layerDefinition:{name:"multipointLayer",geometryType:"esriGeometryMultipoint",drawingInfo:{renderer:null}},featureSet:{geometryType:"esriGeometryMultipoint",features:[]}}}function p(){return{layerDefinition:{name:"polygonLayer",geometryType:"esriGeometryPolygon",drawingInfo:{renderer:null}},featureSet:{geometryType:"esriGeometryPolygon",features:[]}}}function m(){return{layerDefinition:{name:"pointLayer",geometryType:"esriGeometryPoint",drawingInfo:{renderer:null}},featureSet:{geometryType:"esriGeometryPoint",features:[]}}}function d(){return{layerDefinition:{name:"polylineLayer",geometryType:"esriGeometryPolyline",drawingInfo:{renderer:null}},featureSet:{geometryType:"esriGeometryPolyline",features:[]}}}function g(e,r=15){const t=e.canvas.width,i=e.canvas.height,n=e.getImageData(0,0,t,i).data;let o,a,l,s,u,f;e:for(a=i;a--;)for(o=t;o--;)if(n[4*(t*a+o)+3]>r){f=a;break e}if(!f)return null;e:for(o=t;o--;)for(a=f+1;a--;)if(n[4*(t*a+o)+3]>r){u=o;break e}e:for(o=0;o<=u;++o)for(a=f+1;a--;)if(n[4*(t*a+o)+3]>r){l=o;break e}e:for(a=0;a<=f;++a)for(o=l;o<=u;++o)if(n[4*(t*a+o)+3]>r){s=a;break e}return{x:l,y:s,width:u-l,height:f-s}}function b(e,r){const t=e.allLayerViews.items;if(r===e.scale)return t.filter((e=>!e.suspended));const i=new Array;for(const n of t)T(n.parent)&&!i.includes(n.parent)||!n.visible||r&&"isVisibleAtScale"in n&&!n.isVisibleAtScale(r)||i.push(n);return i}function h(e){return"bing-maps"===e?.type}function V(e){return e&&"blendMode"in e&&"effect"in e}function w(e){return"csv"===e?.type}function T(e){return"esri.views.2d.layers.GroupLayerView2D"===e?.declaredClass}function v(e){const r=e.layer;if(V(r)){const t=r.blendMode;if((!t||"normal"===t)&&(r.effect||"featureEffect"in e&&e.featureEffect))return!0}return!1}export{y as applyVisualVariables,c as createMultipointLayer,m as createPointLayer,p as createPolygonLayer,d as createPolylineLayer,g as getContextBoundingBox,b as getVisibleLayerViews,h as isBingMapsLayer,V as isBlendLayer,w as isCSVLayer,v as isScreenshotRequired};