react-native-mask-segment-c.../dist/utils/maskSegmentation.js

2 lines
16 KiB
JavaScript
Raw Normal View History

"use strict";var Rn=Object.create;var v=Object.defineProperty;var Pn=Object.getOwnPropertyDescriptor;var Sn=Object.getOwnPropertyNames;var kn=Object.getPrototypeOf,Un=Object.prototype.hasOwnProperty;var wn=(t,n)=>{for(var e in n)v(t,e,{get:n[e],enumerable:!0})},on=(t,n,e,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let r of Sn(n))!Un.call(t,r)&&r!==e&&v(t,r,{get:()=>n[r],enumerable:!(o=Pn(n,r))||o.enumerable});return t};var Bn=(t,n,e)=>(e=t!=null?Rn(kn(t)):{},on(n||!t||!t.__esModule?v(e,"default",{value:t,enumerable:!0}):e,t)),Cn=t=>on(v({},"__esModule",{value:!0}),t);var mt={};wn(mt,{appendLabelMaskToPathBuilder:()=>Fn,appendMaskBinaryToPathBuilder:()=>On,buildAllRegionMaskPaths:()=>Wn,buildAllRegionOutlinePaths:()=>L.buildAllRegionOutlinePaths,buildBaseboardBinaryFromMask:()=>Kn,buildRegionOutlinePathForRegion:()=>L.buildRegionOutlinePathForRegion,buildRegionOutlinePolygons:()=>Tn,downsampleMaskDataForPaths:()=>Qn,extractRegionsFromMask:()=>st,extractRegionsFromMaskBuffer:()=>ut,extractRegionsFromMaskBufferSync:()=>Z,getMaskQuantKey:()=>zn,isBaseboardMaskPixel:()=>$n,isBaseboardPixel:()=>An.isStrictBaseboardPixel,isKickPlatePixel:()=>Gn,upscaleBinaryMask:()=>Jn});module.exports=Cn(mt);var k=Bn(require("./opencvAdapter")),Mn=require("@shopify/react-native-skia"),P=require("./maskSemanticPalette"),U=require("./maskSegmentRuntime"),L=require("./maskOutlinePaths"),An=require("./maskSemanticPalette");function p(){return(0,U.getMaskSegmentRuntimeConfig)().mask}const an=5,In=10;function un(t){return[{x:t.x,y:t.y},{x:t.x+t.w,y:t.y},{x:t.x+t.w,y:t.y+t.h},{x:t.x,y:t.y+t.h}]}function Tn(t){return t.outlinePolygons&&t.outlinePolygons.length>0?t.outlinePolygons:t.thinStrip||t.polygons.length<=In?t.polygons:[un(t.bbox)]}function Nn(t){return t.name===P.BASEBOARD_SEMANTIC_NAME}function En(t,n,e){const o=new Uint8Array(t),r=p().kickBridgeHalfWPx;for(let i=0;i<e;i++)for(let u=0;u<n;u++)if(t[i*n+u])for(let a=-r;a<=r;a++){const s=u+a;s<0||s>=n||(o[i*n+s]=255)}return o}function H(t,n,e){return t.map(o=>[{x:o.minX/n,y:o.y/e},{x:(o.maxX+1)/n,y:o.y/e},{x:(o.maxX+1)/n,y:(o.y+1)/e},{x:o.minX/n,y:(o.y+1)/e}])}function q(t){const n=Math.min(255,Math.round(t/p().quantStep)*p().quantStep);return n>=192?n===255?4:3:n>=128?2:n>=64?1:0}function sn(t,n,e){return q(t)*25+q(n)*5+q(e)}function Ln(){const t=(0,U.getMaskRuntimeRevision)();return mn===t&&j||(j=new Set([...(0,P.getBaseboardStripQuantKeys)()].map(n=>{const[e,o,r]=n.split(",").map(i=>Number(i));return sn(e,o,r)})),mn=t),j}let mn=-1,j=null,ln=-1,O=null;function Yn(t){const n=new Uint8Array(256);for(let e=0;e<256;e++){const o=Math.min(255,Math.round(e/t)*t);o>=192?n[e]=o===255?4:3:o>=128?n[e]=2:o>=64?n[e]=1:n[e]=0}return n}function _n(){const t=(0,U.getMaskRuntimeRevision)();return ln===t&&O||(O=Yn(p().quantStep),ln=t),O}function V(t){return t>=4?255:t>=3?192:t>=2?128:t>=1?64:0}function Xn(t){const n=t/25|0,e=t%25/5|0,o=t%5;return[V(n),V(e),V(o)]}let cn=-1,K=null,J=null,bn=-1;function vn(){const t=(0,U.getMaskRuntimeRevision)();if(bn===t&&J)return J;const n=new Uint8Array(125);for(const e of Ln())n[e]=1;return J=n,bn=t,n}function jn(t,n,e){let o=n,r=e,i=-1,u=-1;for(let a=0;a<e;a++){const s=a*n;for(let m=0;m<n;m++)t[s+m]&&(m<o&&(o=m),m>i&&(i=m),a<r&&(r=a),a>u&&(u=a))}return i<0?null:{x:o/n,y:r/e,w:(i-o+1)/n,h:(u-r+1)/e}}function On(t,n,e,o,r,i=p().baseboardMinRunPx){for(let u=0;u<e;u++){let a=-1;const s=u/e,m=(u+1)/e,l=o.y+s*o.h,c=o.y+m*o.h;for(let b=0;b<=n;b++){const y=b<n&&t[u*n+b]>0;if(y&&a<0&&(a=b),!y&&a>=0){if(b-a>=i){const f=a/n,g=b/n;r.moveTo(o.x+f*o.w,l),r.lineTo(o.x+g*o.w,l),r.lineTo(o.x+g*o.w,c),r.lineTo(o.x+f*o.w,c),r.close()}a=-1}}}}function Fn(t,n,e,o,r,i,u=p().baseboardMinRunPx){for(let a=0;a<o;a++){let s=-1;const m=a*e,l=a/o,c=(a+1)/o,b=r.y+l*r.h,y=r.y+c*r.h;for(let f=0;f<=e;f++){const g=f<e&&t[m+f]===n;if(g&&s<0&&(s=f),!g&&s>=0){if(f-s>=u){const M=s/e,A=f/e;i.moveTo(r.x+M*r.w,b),i.lineTo(r.x+A*r.w,b),i.lineTo(r.x+A*r.w,y),i.lineTo(r.x+M*r.w,y),i.close()}s=-1}}}}function fn(t,n,e,o,r,i,u,a){if(n-t<a)return;const s=e/r,m=(e+1)/r,l=i.y+s*i.h,c=i.y+m*i.h,b=t/o,y=n/o;u.move