react-native-mask-segment-c.../dist/components/MaskSegmentCanvas.js

2 lines
39 KiB
JavaScript
Raw Permalink Normal View History

"use strict";var zo=Object.create;var Cr=Object.defineProperty;var $o=Object.getOwnPropertyDescriptor;var Uo=Object.getOwnPropertyNames;var Go=Object.getPrototypeOf,Jo=Object.prototype.hasOwnProperty;var qo=(x,v)=>{for(var E in v)Cr(x,E,{get:v[E],enumerable:!0})},ao=(x,v,E,H)=>{if(v&&typeof v=="object"||typeof v=="function")for(let N of Uo(v))!Jo.call(x,N)&&N!==E&&Cr(x,N,{get:()=>v[N],enumerable:!(H=$o(v,N))||H.enumerable});return x};var Xo=(x,v,E)=>(E=x!=null?zo(Go(x)):{},ao(v||!x||!x.__esModule?Cr(E,"default",{value:x,enumerable:!0}):E,x)),Ko=x=>ao(Cr({},"__esModule",{value:!0}),x);var ns={};qo(ns,{default:()=>es});module.exports=Ko(ns);var I=require("react/jsx-runtime"),e=require("react"),Je=require("react-native"),ve=require("react-native-gesture-handler"),fe=require("react-native-reanimated"),uo=Xo(require("../utils/opencvAdapter")),de=require("../utils/maskSegmentation"),J=require("../utils/wallTextureSplit"),$=require("../utils/magneticLasso"),fo=require("../utils/activeContour"),_e=require("../utils/pngImage"),In=require("../utils/resolveImageUrl"),mo=require("../utils/compositePaintedImage"),Zn=require("../utils/exportUtils"),Lr=require("../utils/freqLayerPrep"),Ln=require("../utils/paintShaderRuntime"),F=require("../utils/maskSegmentRuntime"),S=require("@shopify/react-native-skia"),f=require("../utils/canvasGeometry");function at(x,v,E,H,N,T,X,K){const Q=(0,f.getContainRect)(N,T,X,K),cn=Q.x+E*Q.w,Pe=Q.y+H*Q.h;return Math.hypot(x-cn,v-Pe)}function Zo(x,v,E,H,N,T,X,K){if(!X||X.length<3)return!1;const Q=X[0];return at(x,v,Q.x,Q.y,E,H,N,T)<K}function Yo(x,v,E,H,N,T,X,K,Q,cn){const Pe=(0,f.getContainRect)(E,H,N,T);let un=1/0,fn=null;const mn=(re,qe,Ie,Xe,Wr)=>{const Wn=Pe.x+re*Pe.w,En=Pe.y+qe*Pe.h,Ke=Math.hypot(x-Wn,v-En);Ke<=X&&Ke<un&&(un=Ke,fn={kind:Ie,polyId:Wr,vertexIndex:Xe})};if(K)for(let re=0;re<K.length;re++)mn(K[re].x,K[re].y,"open",re);if(!cn?.openOnly)for(const[re,qe]of Q)for(let Ie=0;Ie<qe.vertices.length;Ie++)mn(qe.vertices[Ie].x,qe.vertices[Ie].y,"closed",Ie,re);return fn}function lo(x){if(!x)return null;const v=(0,F.getMaskSegmentRuntimeConfig)().mask.semanticColors,E=x.wallSemanticIdx??v.findIndex(H=>H.name==="wall");return E<0?null:{labels:x.labels,baseboardBinary:x.baseboardBinary,cols:x.cols,rows:x.rows,wallSemanticIdx:E}}function vr(x,v,E){if(!E?.wallSubLabels||E.cols<=0||E.rows<=0)return!1;const{wallSubLabels:H,cols:N,rows:T}=E,X=Math.min(N-1,Math.max(0,Math.floor(x*N))),K=Math.min(T-1,Math.max(0,Math.floor(v*T)));return H[K*N+X]!==J.WALL_SUB_LABEL_NONE}function Ir(x,v,E,H,N){for(const T of E)if(T.vertices.length>=3&&(0,f.pointInPolygon)(x,v,T.vertices))return!0;for(const[T,X]of H)if(!(T===N||!X.isClosed||X.vertices.length<3)&&(0,f.pointInPolygon)(x,v,X.vertices))return!0;return!1}function co(x,v,E,H,N,T){return!H||!(0,$.isNormPointOnWallMask)(x,v,H)||vr(x,v,E)?!1:!Ir(x,v,N,T)}function jo(x,v,E,H,N){for(const T of x)if(vr(T.x,T.y,v)||Ir(T.x,T.y,E,H,N))return!0;if(x.length>=3){const T=x.reduce((K,Q)=>K+Q.x,0)/x.length,X=x.reduce((K,Q)=>K+Q.y,0)/x.length;if(vr(T,X,v)||Ir(T,X,E,H,N))return!0}return!1}const Qo=(0,e.forwardRef)(function(v,E){const{originUrl:H,maskUrl:N,originImgPath:T,maskImgPath:X,maskConfig:K,pipelinePreset:Q,pipelineConfig:cn,paintConfig:Pe,interactionConfig:un,semanticColors:fn,regionOutlineColor:mn,initialSession:re,initialPaintColor:qe,initialPaintConfigJson:Ie,disabled:Xe=!1,style:Wr,onWatch:Wn,onPaintCallback:En,onError:Ke,autoExportOnReady:lt,onExported:Er}=v,Ze=H??T??"",Ye=N??X??"",Ar=(0,e.useMemo)(()=>fn?{...K,semanticColors:fn}:K,[K,fn]),Yn=(0,e.useMemo)(()=>mn?{...Pe,regionOverlayFill:mn}:Pe,[Pe,mn]),[An,ct]=(0,e.useState)(""),[Bn,it]=(0,e.useState)(""),[xe,go]=(0,e.useState)(An),[Re,po]=(0,e.useState)(Bn),ut=(0,e.useRef)(""),ft=(0,e.useRef)(""),jn=(0,e.useMemo)(()=>(0,F.resolvePipelineConfig)(Q,cn),[Q,cn]),Br=(0,e.useRef)((0,F.createRuntimeConfig)({maskConfig:Ar,pipelineConfig:jn,paintConfig:Yn,interactionConfig:un})),mt=(0,e.useRef)(null),gt=(0,e.useRef)(null);(0,e.useEffect)(()=>{const n=mt.current,t=Yn||{},r=!n||["colorBaseOpacity","lLightOpacity","textureOpacity","