UNPKG

trtc-sdk-v5

Version:
2 lines (1 loc) 3.29 kB
var x=Object.defineProperty;var O=(a,e,t)=>e in a?x(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var u=(a,e,t)=>O(a,typeof e!="symbol"?e+"":e,t);function R(a){return{name:"WatermarkOptions",type:"object",required:!0,allowEmpty:!1,properties:{imageUrl:{required:!0,type:"string"},x:{required:!1,type:"number"},y:{required:!1,type:"number"},size:{required:!1,type:["string","object","number"]}},validate(e,t,o,T){var b;let{RtcError:r,ErrorCode:d,ErrorCodeDictionary:i}=a.errorModule;if(!e)return;let{imageUrl:m}=e,l=m.split("?")[0].split(".").pop();if((l==="jpg"||l==="jpeg")&&a.log.warn("The image format is not recommended to be jpg/jpeg, because the format does not support transparency."),!((b=a.room.videoManager.cameraTrack)!=null&&b.mediaTrack))throw new r({code:d.INVALID_OPERATION,extraCode:i.INVALID_OPERATION_NEED_VIDEO,fnName:o});if(a.utils.isString(e.size)&&e.size!=="contain"&&e.size!=="cover")throw new r({code:d.INVALID_PARAMETER,extraCode:i.INVALID_PARAMETER_TYPE,message:"The size parameter must be 'contain' or 'cover'",fnName:o});if(a.utils.isNumber(e.size)&&(e.size<=0||e.size>1))throw new r({code:d.INVALID_PARAMETER,extraCode:i.INVALID_PARAMETER_RANGE,message:"The size parameter must be greater than 0",fnName:o});if(a.utils.isObject(e.size)){if(!e.size.width||!e.size.height)throw new r({code:d.INVALID_PARAMETER,extraCode:i.INVALID_PARAMETER_TYPE,message:"The size parameter must be an object with width and height properties",fnName:o});if(e.size.width<=0||e.size.height<=0)throw new r({code:d.INVALID_PARAMETER,extraCode:i.INVALID_PARAMETER_RANGE,message:"The size parameter must be greater than 0",fnName:o})}}}}function h(a){return{name:"StopWatermarkOptions",required:!1}}var S=0,A=class A{constructor(e){this.core=e;u(this,"seq");u(this,"_core");u(this,"log");u(this,"startResolve");u(this,"startReject");S=S+1,this.seq=S,this._core=e,this.log=e.log.createChild({id:`${this.getAlias()}${S}`}),this.log.info("created")}getName(){return A.Name}getAlias(){return"w"}getValidateRule(e){switch(e){case"start":return R(this._core);case"update":return R(this._core);case"stop":return h(this._core)}}getGroup(){return"w"}async start(e){return this.doStart(e)}async update(e){this.doStart(e)}async stop(){return this._core.room.videoManager.deleteWatermark()}async doStart(e){let{x:t=0,y:o=0}=e,T=await this.processWatermark(e);return this._core.room.videoManager.setWatermark({x:t,y:o,imageUrl:T})}async processWatermark(e){let{imageUrl:t,x:o=0,y:T=0,size:r="cover"}=e,{settings:d}=this._core.room.videoManager.cameraTrack,i;try{i=await this._core.utils.loadImage(t)}catch(D){let{RtcError:_,ErrorCode:P}=this.core.errorModule;throw new _({code:P.INVALID_PARAMETER,message:`load image failed, url: ${t}`})}let{width:m,height:c}=d,{width:l,height:b}=i,s=l,n=b;this._core.utils.isObject(r)&&(s=(r==null?void 0:r.width)||s,n=(r==null?void 0:r.height)||n),this._core.utils.isNumber(r)&&(s=l*r,n=b*r);let p=l/b,U=m/c,N=p>U;r==="contain"&&(N?(s=m,n=m/p):(s=c*p,n=c)),r==="cover"&&(N?(n=c,s=c*p):(s=m,n=m/p));let g=document.createElement("canvas"),I=g.getContext("2d");return g.width=Math.min(m-o,s),g.height=Math.min(c-T,n),I==null||I.drawImage(i,0,0,s,n),g.toDataURL("image/png")}};u(A,"Name","Watermark");var E=A;var G=E;export{E as Watermark,G as default};