UNPKG

trtc-sdk-v5

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