Files
fad_oa/ruoyi-ui/public/file-viewer/assets/VTKLoader-BfnzBXsa.js

3 lines
9.8 KiB
JavaScript

import{C as e,K as t,l as n,p as r,u as i,w as a,wt as o}from"./three.module-BFsVh7r1.js";import{n as s}from"./fflate.module-BIQmJeC9.js";var c=class extends t{constructor(e){super(e),console.warn(`THREE.VTKLoader: The loader has been deprecated and will be removed with r194. Export your VTK files to glTF before using them on the web.`)}load(t,n,r,i){let a=this,o=new e(a.manager);o.setPath(a.path),o.setResponseType(`arraybuffer`),o.setRequestHeader(a.requestHeader),o.setWithCredentials(a.withCredentials),o.load(t,function(e){try{n(a.parse(e))}catch(e){i?i(e):console.error(e),a.manager.itemError(t)}},r,i)}parse(e){function t(e){let t=[],n=[],s=[],c=[],l,u=/^[^\d.\s-]+/;function d(e){let t=[],n=e.split(/\s+/);for(let e=0;e<n.length;e++)n[e]!==``&&t.push(parseFloat(n[e]));return t}let f=/^(\d+)\s+([\s\d]*)/,p=/^POINTS /,m=/^POLYGONS /,h=/^TRIANGLE_STRIPS /,g=/^POINT_DATA[ ]+(\d+)/,_=/^CELL_DATA[ ]+(\d+)/,v=/^COLOR_SCALARS[ ]+(\w+)[ ]+3/,y=/^NORMALS[ ]+(\w+)[ ]+(\w+)/,b=!1,x=!1,S=!1,C=!1,w=!1,T=!1,E=!1,D=new r,O=e.split(`
`);for(let e in O){let r=O[e].trim();if(r.indexOf(`DATASET`)===0){let e=r.split(` `)[1];if(e!==`POLYDATA`)throw Error(`Unsupported DATASET type: `+e)}else if(b){if(u.exec(r)===null){let e=d(r);for(let t=0;t+2<e.length;t+=3)n.push(e[t],e[t+1],e[t+2])}}else if(x){if((l=f.exec(r))!==null){let e=parseInt(l[1]),n=l[2].split(/\s+/);if(e>=3){let r=parseInt(n[0]),i=1;for(let a=0;a<e-2;++a){let e=parseInt(n[i]),a=parseInt(n[i+1]);t.push(r,e,a),i++}}}}else if(S){if((l=f.exec(r))!==null){let e=parseInt(l[1]),n=l[2].split(/\s+/);if(e>=3)for(let r=0;r<e-2;r++)if(r%2==1){let e=parseInt(n[r]),i=parseInt(n[r+2]),a=parseInt(n[r+1]);t.push(e,i,a)}else{let e=parseInt(n[r]),i=parseInt(n[r+1]),a=parseInt(n[r+2]);t.push(e,i,a)}}}else if(C||w){if(T){if(u.exec(r)===null){let e=d(r);for(let t=0;t+2<e.length;t+=3)D.setRGB(e[t],e[t+1],e[t+2],o),s.push(D.r,D.g,D.b)}}else if(E&&u.exec(r)===null){let e=d(r);for(let t=0;t+2<e.length;t+=3)c.push(e[t],e[t+1],e[t+2])}}m.exec(r)===null?p.exec(r)===null?h.exec(r)===null?g.exec(r)===null?_.exec(r)===null?v.exec(r)===null?y.exec(r)!==null&&(E=!0,T=!1,b=!1,x=!1,S=!1):(T=!0,E=!1,b=!1,x=!1,S=!1):(w=!0,b=!1,x=!1,S=!1):(C=!0,b=!1,x=!1,S=!1):(x=!1,b=!1,S=!0):(x=!1,b=!0,S=!1):(x=!0,b=!1,S=!1)}let k=new i;if(k.setIndex(t),k.setAttribute(`position`,new a(n,3)),c.length===n.length&&k.setAttribute(`normal`,new a(c,3)),s.length!==t.length)s.length===n.length&&k.setAttribute(`color`,new a(s,3));else{k=k.toNonIndexed();let e=k.attributes.position.count/3;if(s.length===e*3){let t=[];for(let n=0;n<e;n++){let e=s[3*n+0],r=s[3*n+1],i=s[3*n+2];D.setRGB(e,r,i,o),t.push(D.r,D.g,D.b),t.push(D.r,D.g,D.b),t.push(D.r,D.g,D.b)}k.setAttribute(`color`,new a(t,3))}}return k}function c(e){let t=new Uint8Array(e),r=new DataView(e),a=[],o=[],s=[],c=0;function l(e,t){let n=t,r=e[n],i=[];for(;r!==10&&n<e.length;)i.push(String.fromCharCode(r)),n++,r=e[n];return{start:t,end:n,next:n+1,parsedString:i.join(``)}}let u,d;for(;;){if(u=l(t,c),d=u.parsedString,d.indexOf(`DATASET`)===0){let e=d.split(` `)[1];if(e!==`POLYDATA`)throw Error(`Unsupported DATASET type: `+e)}else if(d.indexOf(`POINTS`)===0){let e=parseInt(d.split(` `)[1],10),t=e*4*3;a=new Float32Array(e*3);let n=u.next;for(let t=0;t<e;t++)a[3*t]=r.getFloat32(n,!1),a[3*t+1]=r.getFloat32(n+4,!1),a[3*t+2]=r.getFloat32(n+8,!1),n+=12;u.next=u.next+t+1}else if(d.indexOf(`TRIANGLE_STRIPS`)===0){let e=parseInt(d.split(` `)[1],10),t=parseInt(d.split(` `)[2],10),n=t*4;s=new Uint32Array(3*t-9*e);let i=0,a=u.next;for(let t=0;t<e;t++){let e=r.getInt32(a,!1),t=[];a+=4;for(let n=0;n<e;n++)t.push(r.getInt32(a,!1)),a+=4;for(let n=0;n<e-2;n++)n%2?(s[i++]=t[n],s[i++]=t[n+2],s[i++]=t[n+1]):(s[i++]=t[n],s[i++]=t[n+1],s[i++]=t[n+2])}u.next=u.next+n+1}else if(d.indexOf(`POLYGONS`)===0){let e=parseInt(d.split(` `)[1],10),t=parseInt(d.split(` `)[2],10),n=t*4;s=new Uint32Array(3*t-9*e);let i=0,a=u.next;for(let t=0;t<e;t++){let e=r.getInt32(a,!1),t=[];a+=4;for(let n=0;n<e;n++)t.push(r.getInt32(a,!1)),a+=4;for(let n=1;n<e-1;n++)s[i++]=t[0],s[i++]=t[n],s[i++]=t[n+1]}u.next=u.next+n+1}else if(d.indexOf(`POINT_DATA`)===0){let e=parseInt(d.split(` `)[1],10);u=l(t,u.next);let n=e*4*3;o=new Float32Array(e*3);let i=u.next;for(let t=0;t<e;t++)o[3*t]=r.getFloat32(i,!1),o[3*t+1]=r.getFloat32(i+4,!1),o[3*t+2]=r.getFloat32(i+8,!1),i+=12;u.next+=n}if(c=u.next,c>=t.byteLength)break}let f=new i;return f.setIndex(new n(s,1)),f.setAttribute(`position`,new n(a,3)),o.length===a.length&&f.setAttribute(`normal`,new n(o,3)),f}function l(e,t){let n=e.length,r=new Float32Array(n+t.length);return r.set(e),r.set(t,n),r}function u(e,t){let n=e.length,r=new Int32Array(n+t.length);return r.set(e),r.set(t,n),r}function d(e){function t(e){let n={};if(e.nodeType===1){if(e.attributes&&e.attributes.length>0){n.attributes={};for(let t=0;t<e.attributes.length;t++){let r=e.attributes.item(t);n.attributes[r.nodeName]=r.nodeValue.trim()}}}else e.nodeType===3&&(n=e.nodeValue.trim());if(e.hasChildNodes())for(let r=0;r<e.childNodes.length;r++){let i=e.childNodes.item(r),a=i.nodeName;if(n[a]===void 0){let e=t(i);e!==``&&(Array.isArray(e[`#text`])&&(e[`#text`]=e[`#text`][0]),n[a]=e)}else{if(n[a].push===void 0){let e=n[a];n[a]=[e]}let e=t(i);e!==``&&(Array.isArray(e[`#text`])&&(e[`#text`]=e[`#text`][0]),n[a].push(e))}}return n}function r(e){let t=typeof Uint8Array<`u`?Uint8Array:Array,n=[];for(let e=0;e<64;++e)n[`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`.charCodeAt(e)]=e;n[45]=62,n[95]=63;let r=e.length;if(r%4>0)throw Error(`Invalid string. Length must be a multiple of 4`);let i=e[r-2]===`=`?2:+(e[r-1]===`=`),a=new t(r*3/4-i),o=i>0?r-4:r,s=0,c,l;for(c=0,l=0;c<o;c+=4,l+=3){let t=n[e.charCodeAt(c)]<<18|n[e.charCodeAt(c+1)]<<12|n[e.charCodeAt(c+2)]<<6|n[e.charCodeAt(c+3)];a[s++]=(t&16711680)>>16,a[s++]=(t&65280)>>8,a[s++]=t&255}if(i===2){let t=n[e.charCodeAt(c)]<<2|n[e.charCodeAt(c+1)]>>4;a[s++]=t&255}else if(i===1){let t=n[e.charCodeAt(c)]<<10|n[e.charCodeAt(c+1)]<<4|n[e.charCodeAt(c+2)]>>2;a[s++]=t>>8&255,a[s++]=t&255}return a}function a(e,t){let n=0;c.attributes.header_type===`UInt64`?n=8:c.attributes.header_type===`UInt32`&&(n=4);let i,a;if(e.attributes.format===`binary`&&t){e.attributes.type===`Float32`?i=new Float32Array:(e.attributes.type===`Int32`||e.attributes.type===`Int64`)&&(i=new Int32Array);let t=e[`#text`],o=r(Array.isArray(t)?t[0]:t),c=o[0];for(let e=1;e<n-1;e++)c|=o[e]<<e*8;let d=(c+3)*n,f=d%3>0?3-d%3:0;d+=f;let p=[],m=d;p.push(m);let h=3*n;for(let e=0;e<c;e++){let t=o[e*n+h];for(let r=1;r<n-1;r++)t|=o[e*n+h+r]<<r*8;m+=t,p.push(m)}for(let t=0;t<p.length-1;t++)a=s(o.slice(p[t],p[t+1])).buffer,e.attributes.type===`Float32`?(a=new Float32Array(a),i=l(i,a)):(e.attributes.type===`Int32`||e.attributes.type===`Int64`)&&(a=new Int32Array(a),i=u(i,a));delete e[`#text`],e.attributes.type===`Int64`&&e.attributes.format===`binary`&&(i=i.filter(function(e,t){if(t%2!=1)return!0}))}else e.attributes.format===`binary`&&!t?(a=r(e[`#text`]),a=a.slice(n).buffer):a=e[`#text`]?e[`#text`].split(/\s+/).filter(function(e){if(e!==``)return e}):new Int32Array().buffer,delete e[`#text`],e.attributes.type===`Float32`?i=new Float32Array(a):e.attributes.type===`Int32`?i=new Int32Array(a):e.attributes.type===`Int64`&&(i=new Int32Array(a),e.attributes.format===`binary`&&(i=i.filter(function(e,t){if(t%2!=1)return!0})));return i}let o=new DOMParser().parseFromString(e,`application/xml`).documentElement,c=t(o),d=[],f=[],p=[];if(c.AppendedData){let e=c.AppendedData[`#text`].slice(1),t=c.PolyData.Piece,n=[`PointData`,`CellData`,`Points`,`Verts`,`Lines`,`Strips`,`Polys`],r=0,i=n.map(e=>{let n=t[e];return n&&n.DataArray?(Array.isArray(n.DataArray)?n.DataArray:[n.DataArray]).map(e=>e.attributes.offset):[]}).flat();for(let a of n){let n=t[a];if(n&&n.DataArray)if(Array.isArray(n.DataArray))for(let t of n.DataArray)t[`#text`]=e.slice(i[r],i[r+1]),t.attributes.format=`binary`,r++;else n.DataArray[`#text`]=e.slice(i[r],i[r+1]),n.DataArray.attributes.format=`binary`,r++}}if(c.PolyData){let e=c.PolyData.Piece,t=c.attributes.hasOwnProperty(`compressor`),r=[`PointData`,`Points`,`Strips`,`Polys`],o=0,s=r.length;for(;o<s;){let n=e[r[o]];if(n&&n.DataArray){let i;i=Array.isArray(n.DataArray)?n.DataArray:[n.DataArray];let s=0,c=i.length;for(;s<c;)`#text`in i[s]&&i[s][`#text`].length>0&&(i[s].text=a(i[s],t)),s++;switch(r[o]){case`PointData`:{let t=parseInt(e.attributes.NumberOfPoints),r=n.attributes.Normals;if(t>0){for(let e=0,n=i.length;e<n;e++)if(r===i[e].attributes.Name){let n=i[e].attributes.NumberOfComponents;f=new Float32Array(t*n),f.set(i[e].text,0)}}}break;case`Points`:{let t=parseInt(e.attributes.NumberOfPoints);if(t>0){let e=n.DataArray.attributes.NumberOfComponents;d=new Float32Array(t*e),d.set(n.DataArray.text,0)}}break;case`Strips`:{let t=parseInt(e.attributes.NumberOfStrips);if(t>0){let e=new Int32Array(n.DataArray[0].text.length),r=new Int32Array(n.DataArray[1].text.length);e.set(n.DataArray[0].text,0),r.set(n.DataArray[1].text,0);let i=t+e.length;p=new Uint32Array(3*i-9*t);let a=0;for(let n=0,i=t;n<i;n++){let t=[];for(let i=0,a=r[n],o=0;i<a-o;i++)t.push(e[i]),n>0&&(o=r[n-1]);for(let e=0,i=r[n],o=0;e<i-o-2;e++)e%2?(p[a++]=t[e],p[a++]=t[e+2],p[a++]=t[e+1]):(p[a++]=t[e],p[a++]=t[e+1],p[a++]=t[e+2]),n>0&&(o=r[n-1])}}}break;case`Polys`:{let t=parseInt(e.attributes.NumberOfPolys);if(t>0){let e=new Int32Array(n.DataArray[0].text.length),r=new Int32Array(n.DataArray[1].text.length);e.set(n.DataArray[0].text,0),r.set(n.DataArray[1].text,0);let i=t+e.length;p=new Uint32Array(3*i-9*t);let a=0,o=0,s=0,c=0,l=t;for(;s<l;){let t=[],n=0,i=r[s];for(;n<i-c;)t.push(e[o++]),n++;let l=1;for(;l<i-c-1;)p[a++]=t[0],p[a++]=t[l],p[a++]=t[l+1],l++;s++,c=r[s-1]}}}break;default:break}}o++}let l=new i;return l.setIndex(new n(p,1)),l.setAttribute(`position`,new n(d,3)),f.length===d.length&&l.setAttribute(`normal`,new n(f,3)),l}else throw Error(`Unsupported DATASET type`)}let f=new TextDecoder,p=f.decode(new Uint8Array(e,0,250)).split(`
`);return p[0].indexOf(`xml`)===-1?p[2].includes(`ASCII`)?t(f.decode(e)):c(e):d(f.decode(e))}};export{c as VTKLoader};