@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 3 kB
JavaScript
import{isSome as e}from"../../../../core/maybe.js";import{pt2px as t}from"../../../../core/screenUtils.js";function n(e){const n=i(a(e)),o=n,s=!0,r=Math.max(n/2,5),l=Math.round(t(e.maxPathLength)/r)+1,u=10,{density:c}=e;return{smoothing:t(e.smoothing),interpolate:!0,velocityScale:"flow-from"===e.flowRepresentation?1:-1,verticesPerLine:l,minSpeedThreshold:.001,segmentLength:r,maxTurnAngle:1,collisions:s,lineCollisionWidth:o,lineSpacing:u,density:c}}function i(e){return"constant"===e.kind?e.value[0]:e.values[e.values.length-1]}function o(e){const t=e.toRgba();return[t[0]/255,t[1]/255,t[2]/255,t[3]]}function s(e){return{kind:"constant",value:[.1,.1,.1,1]}}function a(e){if(!e.hasVisualVariables("size"))return{kind:"constant",value:[t(e.trailWidth)]};const n=e.getVisualVariablesForType("size")[0],i=[],o=[];let s;if(n.stops){for(const e of n.stops)i.push(e.value),o.push(t(e.size));s=n.stops.length}else i.push(n.minDataValue,n.maxDataValue),o.push(t(n.minSize),t(n.maxSize)),s=2;return{kind:"ramp",stops:i,values:o,count:s}}function r(e){if(!e.hasVisualVariables("color"))return{kind:"constant",value:o(e.color)};const t=e.getVisualVariablesForType("color")[0],n=[],i=[];for(const s of t.stops)n.push(s.value),Array.prototype.push.apply(i,o(s.color));return{kind:"ramp",stops:n,values:i,count:t.stops.length}}function l(e){if(!e.hasVisualVariables("opacity"))return{kind:"constant",value:[1]};const t=e.getVisualVariablesForType("opacity")[0],n=[],i=[];for(const o of t.stops)n.push(o.value),i.push(o.opacity);return{kind:"ramp",stops:n,values:i,count:t.stops.length}}function u(e,t,n,i){switch(t){case"int":e.setUniform1iv(n,i);break;case"float":e.setUniform1fv(n,i);break;case"vec2":e.setUniform2fv(n,i);break;case"vec3":e.setUniform3fv(n,i);break;case"vec4":e.setUniform4fv(n,i)}}function c(e,t,n,i){"constant"===i.kind?u(e,n,`u_${t}`,i.value):(u(e,"float",`u_${t}_stops`,i.stops),u(e,n,`u_${t}_values`,i.values),e.setUniform1i(`u_${t}_count`,i.count))}function p(e,t){let n=!0;return n=n&&e.collisions===t.collisions,n=n&&e.density===t.density,n=n&&e.interpolate===t.interpolate,n=n&&e.lineCollisionWidth===t.lineCollisionWidth,n=n&&e.lineSpacing===t.lineSpacing,n=n&&e.maxTurnAngle===t.maxTurnAngle,n=n&&e.minSpeedThreshold===t.minSpeedThreshold,n=n&&e.segmentLength===t.segmentLength,n=n&&e.smoothing===t.smoothing,n=n&&e.velocityScale===t.velocityScale,n=n&&e.verticesPerLine===t.verticesPerLine,n}function f(t,n){return t===n||!(!e(t)||!e(n))&&t.equals(n)}function m(e,t){if(!p(e.simulationSettings,t.simulationSettings))return!1;if(!f(e.timeExtent,t.timeExtent))return!1;let n=!0;return n=n&&e.loadImagery===t.loadImagery,n=n&&e.createFlowMesh===t.createFlowMesh,n=n&&e.color.kind===t.color.kind,n=n&&e.opacity.kind===t.opacity.kind,n=n&&e.size.kind===t.size.kind,n}export{m as areStreamlinesCompatible,r as getColor,n as getFlowSimulationSettings,s as getForegroundColor,i as getMax,l as getOpacity,a as getSize,u as setUniform,c as setUniforms,f as timeExtentsEqual,o as toRgba};