Mars3D-screen_web/dist/niuniuJS/js/niuniucapture.js
2023-10-10 09:36:22 +08:00

723 lines
23 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
牛牛截图的JS部分的核心流程封装在此文件中绝大部分情况下您不需要修改此文件中的JS内容它已经包含了在所有浏览器上应用
牛牛截图所需要的所有代码您只需要去修改capturewrapper.js将相应的函数修改成与您的UI匹配的即可
*******************************************************************************/
/*******************************************************************************/
//设置截图的参数
var emPensize = 1; //设置画笔大小
var emDrawType = 2; //设置是腾讯风格还是360风格 0 腾讯风格 1 360风格
var emTrackColor = 3; //自动识别的边框的颜色
var emEditBorderColor = 4; //文本输入的边框颜色
var emTransparent = 5; //工具栏的透明度
var emWindowAware = 6; //设置是否禁用随着DPI放大
var emSetSaveName = 8; //设置保存时的开始文字 免费版本无效
var emSetMagnifierBkColor = 9; //设置放大镜的背景色,不设置则透明
var emSetMagnifierLogoText = 10; //设置放大镜上的LOGO字符可提示快捷键 牛牛截图(CTRL + SHIFT + A) 免费版本无效
var emSetWatermarkPictureType = 20; //设置水印的类型
var emSetWatermarkPicturePath = 21; //设置水印的路径
var emSetWatermarkTextType = 22; //设置水印文字的类型
var emSetWatermarkTextValue = 23; //设置水印文字的字符串
var emSetMosaicType = 24; //指定马赛克的类型1为矩形2为画线
var emSetTooltipText = 25; //用于设置工具栏图标的TOOLTIP文字
var emSetMoreInfo = 26; //设置额外的信息,用于特殊需求
/*******************************************************************************/
var emClosed = 1;
var emConnected = 2;
var emConnecting = 3;
var emCaptureSuccess = 0;
var emCaptureFailed = 1;
var emCaptureUnknown = 2;
var emCmdReady = -1;
var emCmdCapture = 0;
var emCmdSaveFile = 1;
function isMacintosh() {
return navigator.platform.indexOf('Mac') > -1;
}
function isLinux() {
return navigator.platform.indexOf('Linux') > -1;
}
function isMips() {
return navigator.platform.indexOf('mips') > -1;
}
function isaarch() {
return navigator.platform.indexOf('aarch') > -1;
}
function rgb2value(r, g, b)
{
return r | g << 8 | b << 16;
}
var captureObjSelf = null;
function onpluginLoaded()
{
captureObjSelf.pluginLoaded(false);
}
function NiuniuCaptureObject()
{
var self = this;
captureObjSelf = this;
this.PenSize = 2;
this.DrawType = 0;
this.TrackColor = rgb2value(255, 0, 0);
this.EditBorderColor = rgb2value(255, 0, 0);
this.Transparent = 255;
this.WindowAware = 1;
this.MosaicType = 1;
this.SaveName = "测试保存";
this.MagnifierLogoText = "测试截图";
this.WatermarkPictureType = "2|100|100|400|400|20";
this.WatermarkPicturePath = "";
this.WatermarkTextType = "2|100|100|100|40|20|0|150|30|80,55,55,55";
this.WatermarkTextValue = "";
this.NiuniuAuthKey = "";
this.ToolTipText = ""; //tipRectangle|tipCircle|tipArrow|tipBrush|tipGlitter|tipMosaic|tipText|tipUndo|tipSave|tipCancel|tipFinish|txtFinish
this.MoreInfo = "1,100|300|600";
this.More_Ext_Params = new Array();
this.useCustomizedProtoco = true; //是否使用浏览器自定义协议加websocket
this.IsWaitCustomizedCallBack = false;
this.autoConnectAfterPageLoad = true;
this.IsFirstConnect = true;
this.IsEverConnected = false;
this.reconnectTryTime = 0;
this.TimeIntervalID = -1;
this.ReceivedEchoBack = false;
this.Version = "1.0.0.0";
this.hostPort = "30101,30102";
this.hostPortIndex = 0;
this.CaptureName = "NiuniuCapture";
this.NiuniuSocket = null;
this.connectState = emClosed;
this.SocketTimeStamp = new Date().getTime();
this.TimeOutID = -1;
this.FinishedCallback = null;
this.PluginLoadedCallback = null;
this.VersionCallback = null;
this.OnConnectFailed = function(isReconnect)
{
self.WriteLog(isReconnect ? "reconnect failed, the capture control process is exit." : "connect failed at the first time.");
}
this.LoadPlugin = function()
{
var obj = $('#capturecontainer');
if(obj.length < 1)
{
$("body").append('<div id="capturecontainer" style="height:0px;width:0px;"></div>');
obj = $('#capturecontainer');
}
obj.html('');
obj.html('<object id="niuniuCapture" type="application/x-niuniuwebcapture" width="0" height="0"><param name="onload" value="onpluginLoaded" /></object>');
var iframeObj = $('startCaptureFrame');
if(iframeObj.length < 1)
{
$("body").append('<iframe id="startCaptureFrame" style="display:none;"></iframe>');
}
}
this.niuniuCapture = function ()
{
return document.getElementById('niuniuCapture');
}
this.addEvent = function(obj, name, func)
{
if (obj.attachEvent) {
obj.attachEvent("on"+name, func);
} else {
obj.addEventListener(name, func, false);
}
}
this.pluginValid = function()
{
try
{
if(self.niuniuCapture().valid)
{
return true;
}
}
catch(e)
{
}
return false;
}
this.OnCaptureFinished = function(x, y, width, height, content,localpath)
{
self.OnCaptureFinishedEx(1, x, y, width, height, "", content,localpath);
}
this.OnCaptureFinishedEx = function(type, x, y, width, height, info, content,localpath)
{
//交给上层去处理截图完成后的事项
if(self.FinishedCallback != null)
{
self.FinishedCallback(type, x, y, width, height, info, content,localpath);
}
else
{
alert("截图完成的事件未绑定将不能对图片进行处理请指定FinishedCallback回调函数");
}
}
this.pluginLoaded = function(fromWebsocket)
{
if(!fromWebsocket && !self.pluginValid())
{
if(self.PluginLoadedCallback != null)
{
self.PluginLoadedCallback(false);
}
return false;
}
self.GetVersion();
if(self.PluginLoadedCallback != null)
{
self.PluginLoadedCallback(true);
}
if(!self.pluginValid())
{
return false;
}
//此函数必需调用,传递正确的参数,且必需先于其他函数调用
self.niuniuCapture().InitCapture(self.NiuniuAuthKey);
self.niuniuCapture().InitParam(emPensize, self.PenSize);
self.niuniuCapture().InitParam(emDrawType, self.DrawType);
self.niuniuCapture().InitParam(emTrackColor, self.TrackColor);
self.niuniuCapture().InitParam(emEditBorderColor, self.EditBorderColor);
self.niuniuCapture().InitParam(emTransparent, self.Transparent);
self.niuniuCapture().InitParam(emSetSaveName, self.SaveName);
self.niuniuCapture().InitParam(emSetMagnifierLogoText, self.MagnifierLogoText);
self.niuniuCapture().InitParam(emSetMosaicType, self.MosaicType);
//设置工具栏上的按钮TOOLTIP
self.niuniuCapture().InitParam(emSetTooltipText, self.ToolTipText);
//self.niuniuCapture().InitParam(emSetMoreInfo, self.MoreInfo);
for (i=0; i<self.More_Ext_Params.length; i++)
{
self.niuniuCapture().InitParam(emSetMoreInfo, self.More_Ext_Params[i]);
}
//niuniuCapture().InitParam(23, "测试文字.");
//此BASE64字符串表示牛牛默认的水印图片可以替换
// niuniuCapture().InitParam(21, "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");
//注以上设置LOGO及保存名的接口免费版本无效
//添加控件的事件监听
self.addEvent(self.niuniuCapture(), 'CaptureFinishedEx', self.OnCaptureFinishedEx);
//以下这个事件主要是用于兼容旧的浏览器控件的事件通知
self.addEvent(self.niuniuCapture(), 'CaptureFinished', self.OnCaptureFinished);
}
this.SetWatermarkPicture = function(watermarPicData)
{
self.WatermarkPicturePath = watermarPicData;
//设置测试的水印图片的Base64字符串此操作应该是在页面加载中处理比较合适
if(!self.pluginValid())
return;
self.niuniuCapture().InitParam(emSetWatermarkPicturePath, self.WatermarkPicturePath);
self.niuniuCapture().InitParam(emSetWatermarkPictureType, self.WatermarkPictureType);
}
this.SetWatermarkText = function(watermarkText)
{
self.WatermarkTextValue = watermarkText;
//设置测试的水印文字,此操作应该是在页面加载中处理比较合适
if(!self.pluginValid())
return;
//nShowType|nMinWidth|nMinHeight|nVerticalInterval|nOffset|nFontSize|nIsBold|nTextWidth|nTextHeight|colorText
self.niuniuCapture().InitParam(emSetWatermarkTextValue, self.WatermarkTextValue);
self.niuniuCapture().InitParam(emSetWatermarkTextType, self.WatermarkTextType);
}
this.SavePicture = function(savename)
{
if(self.pluginValid())
{
self.niuniuCapture().SavePicture(savename);
}
}
this.GetCursorPosition = function()
{
if(self.pluginValid())
{
var val = self.niuniuCapture().GetCursorPosition();
return val;
}
return "";
}
this.NewCaptureParamObject = function(defaultpath, hideCurrWindow, autoCaptureFlag, x, y, width, height)
{
var obj = new Object();
obj.CmdType = 1;
obj.IsGBK = 0; //是否是GBK编码这样会涉及到编码转换
obj.AuthKey = self.NiuniuAuthKey; //
obj.Pensize = self.PenSize; //设置画笔大小
obj.DrawType = self.DrawType; //设置是腾讯风格还是360风格
obj.TrackColor= self.TrackColor; //自动识别的边框的颜色
obj.EditBorderColor= self.EditBorderColor; //文本输入的边框颜色
obj.Transparent = self.Transparent; //工具栏的透明度
obj.SetSaveName = self.SaveName; //设置保存时的开始文字
obj.SetMagnifierLogoText = self.MagnifierLogoText; //设置放大镜上的LOGO字符
obj.SetWatermarkPictureTypeEx = self.WatermarkPictureType; //设置水印的类型
obj.SetWatermarkPicturePath = self.WatermarkPicturePath; //设置水印的路径
obj.SetWatermarkTextTypeEx=self.WatermarkTextType; //设置水印文字的类型
obj.SetWatermarkTextValue= self.WatermarkTextValue; //设置水印文字
obj.MosaicType = self.MosaicType; //设置马赛克的类型
obj.SetToolbarText = self.ToolTipText;
obj.MoreInfo = this.MoreInfo;
if(self.More_Ext_Params.length > 0)
{
obj.more_ext_count = self.More_Ext_Params.length;
for (i=0; i<self.More_Ext_Params.length; i++)
{
switch(i)
{
case 0:
obj.more_ext0 = self.More_Ext_Params[i];
break;
case 1:
obj.more_ext1 = self.More_Ext_Params[i];
break;
case 2:
obj.more_ext2 = self.More_Ext_Params[i];
break;
case 3:
obj.more_ext3 = self.More_Ext_Params[i];
break;
case 4:
obj.more_ext4 = self.More_Ext_Params[i];
break;
case 5:
obj.more_ext5 = self.More_Ext_Params[i];
break;
case 6:
obj.more_ext6 = self.More_Ext_Params[i];
break;
case 7:
obj.more_ext7 = self.More_Ext_Params[i];
break;
case 8:
obj.more_ext8 = self.More_Ext_Params[i];
break;
case 9:
obj.more_ext9 = self.More_Ext_Params[i];
break;
}
}
}
//以下是截图时传递的参数
obj.DefaultPath = defaultpath;
obj.HideCurrentWindow = hideCurrWindow;
obj.AutoCaptureFlag = autoCaptureFlag;
obj.x = x;
obj.y = y;
obj.Width = width;
obj.Height = height;
return obj;
}
this.DoCapture = function(name, hide, AutoCapture, x, y, width, height)
{
if(self.IsNeedCustomizedProtocol())
{
return self.DoCaptureForCustomize(name, hide, AutoCapture, parseInt(x), parseInt(y), parseInt(width), parseInt(height));
}
if(!self.pluginValid())
{
return emCaptureFailed;
}
self.niuniuCapture().Capture(name, hide, AutoCapture, x, y, width, height);
return emCaptureSuccess;
}
this.InitNiuniuCapture = function()
{
self.LoadPlugin();
setTimeout("captureObjSelf.InitWebSocketAndBindCallback();", 200);
}
this.InitWebSocketAndBindCallback = function()
{
if(!self.autoConnectAfterPageLoad || !self.IsNeedCustomizedProtocol())
{
return;
}
self.connectHost();
}
this.getNextPort = function()
{
//init port params flag
//进行拆分处理 self.hostPort;
var portArray = self.hostPort.split(",");
if(portArray.length < 1)
{
alert("服务端口为空");
return 30101;
}
if(self.hostPortIndex < 0)
{
self.hostPortIndex = 0;
}
if(self.hostPortIndex > portArray.length - 1)
{
self.hostPortIndex = portArray.length - 1;
}
var nPort = parseInt(portArray[self.hostPortIndex]);
self.hostPortIndex++;
if(self.hostPortIndex > portArray.length - 1)
{
self.hostPortIndex = 0;
}
return nPort;
}
this.connectHost = function()
{
if(self.NiuniuSocket != null)
{
self.WriteLog("connectHost NiuniuSocket is not null, return.");
return;
}
clearTimeout(self.TimeOutID);
self.connectState = emConnecting;
try{
var wshosts = ['127.0.0.1', 'localhost'];
for (var i in wshosts) {
try{
var host = "ws://127.0.0.1:" + self.getNextPort() + "/" + self.CaptureName;
self.NiuniuSocket = new WebSocket(host);
break;
}
catch(ee){
var ggg= 0;
}
}
//OutputLog('Socket Status: '+socket.readyState);
self.NiuniuSocket.onopen = function(evt){
self.NiuniuSocket.send('0' + self.SocketTimeStamp);
self.WriteLog("NiuniuSocket.onopen.");
clearTimeout(self.TimeOutID);
}
self.NiuniuSocket.onmessage = function(msg){
var str = "";
str = msg.data;
var id = str.substr(0, 1);
var arg1 = str.substr(1);
clearTimeout(self.TimeOutID);
if(id == "0"){
self.hostPortIndex--;
//表示连接成功,此时应该提示可以截图了
self.connectState = emConnected;
self.pluginLoaded(true);
self.IsEverConnected = true;
self.IsFirstConnect = false;
if(self.IsWaitCustomizedCallBack)
{
setTimeout("captureObjSelf.SendReadyRecvData();", 3);
}
self.WriteLog("connect sucess.");
self.ReceivedEchoBack = true;
clearInterval(self.TimeIntervalID);
self.TimeIntervalID = setInterval("captureObjSelf.LoopEchoMessage()", 3000);
}
if(id == "1"){
//解析消息
var _aoResult = eval("(" + arg1 + ")");
self.ReceivedEchoBack = true;
if(_aoResult.command == "echo")
{
self.WriteLog("received echo");
return;
}
self.WriteLog("received capturedata.");
if(_aoResult.command == "version")
{
self.WriteLog(_aoResult.Ver);
self.VersionCallback(_aoResult.Ver);
}
else{
self.OnCaptureFinishedEx(_aoResult.Type, _aoResult.x, _aoResult.y, _aoResult.Width, _aoResult.Height, _aoResult.Info, _aoResult.Content, _aoResult.LocalPath);
}
}
}
self.NiuniuSocket.onclose = function(evt){
self.OnWebSocketError("self.NiuniuSocket.onclose." + evt.data);
}
self.NiuniuSocket.onerror = function (evt) {
//self.OnWebSocketError("self.NiuniuSocket.onerror." + evt.data);
};
} catch(e){
self.OnWebSocketError("connect exception." + e.message);
}
}
this.WriteLog = function(txt)
{
//写日志
try{
console.log(txt);
}
catch(e)
{
}
}
this.OnWebSocketError = function(type)
{
//如果不处于连接成功状态,说明不是断开连接,而是连接失败
var isConnectedFailed = false;
if(self.connectState != emConnected)
{
isConnectedFailed = true;
}
self.WriteLog(type);
self.ReceivedEchoBack = false;
self.connectState = emClosed;
if(self.NiuniuSocket != null)
{
self.NiuniuSocket.close();
}
self.NiuniuSocket = null;
clearTimeout(self.TimeOutID);
clearInterval(self.TimeIntervalID);
if(isConnectedFailed)
{
if(self.IsFirstConnect)
{
self.IsFirstConnect = false;
if(self.OnConnectFailed != null)
{
self.OnConnectFailed(false);
}
return;
}
if(self.IsEverConnected)
{
self.reconnectTryTime++;
//通知连接连接断开
if(self.reconnectTryTime > 3)
{
self.IsEverConnected = false;
self.reconnectTryTime = 0;
if(self.OnConnectFailed != null)
{
self.OnConnectFailed(true);
}
return;
}
}
}
self.TimeOutID = setTimeout("captureObjSelf.connectHost();", 800);
}
this.LoopEchoMessage = function()
{
if(!self.ReceivedEchoBack)
{
self.OnWebSocketError("this.LoopEchoMessage, !self.ReceivedEchoBack");
self.ReceivedEchoBack = false;
clearInterval(self.TimeIntervalID);
self.TimeIntervalID = setInterval("captureObjSelf.LoopEchoMessage()", 3000);
return;
}
self.ReceivedEchoBack = false;
clearTimeout(self.TimeOutID);
if(self.connectState != emConnected)
{
clearInterval(self.TimeIntervalID);
return;
}
var obj = new Object();
obj.command = "echo";
self.NiuniuSocket.send("1" + encodeURIComponent( $.toJSON(obj)) );
}
this.SendReadyRecvData = function()
{
self.WriteLog("SendReadyRecvData.");
var obj = self.NewCaptureParamObject("", 0, 0, 0, 0, 0, 0);
obj.CmdType = -1;
self.NiuniuSocket.send("1" + encodeURIComponent( $.toJSON(obj)) );
}
this.DoCaptureForCustomize = function(name, hide, AutoCapture, x, y, width, height)
{
var obj = self.NewCaptureParamObject(name, hide, AutoCapture, x, y, width, height);
try
{
//启动客户端或者通过websocket去发送数据
if(self.connectState == emConnected)
{
var json = $.toJSON(obj);
self.NiuniuSocket.send('1' + encodeURIComponent(json) );
}
else
{
//首次启动时,不支持水印,否则会过长
obj.SetWatermarkPicturePath = "";
//obj.SetWatermarkTextValue = "";
var json = $.toJSON(obj);
self.WriteLog(json.length);
var newUrl = self.CaptureName + "://" + encodeURIComponent(json);
if(isLinux())
{
newUrl = self.CaptureName + "://xxxx";
}
self.WriteLog(newUrl.length);
//启动客户端
$('#startCaptureFrame').attr('src', newUrl);
self.IsWaitCustomizedCallBack = true;
self.connectHost();
return emCaptureUnknown;
}
return emCaptureSuccess;
}
catch(e)
{
alert(e.message);
}
return emCaptureUnknown;
}
this.IsNeedCustomizedProtocol = function()
{
if(isMacintosh())
{
return true;
}
if(!self.useCustomizedProtoco)
{
return false;
}
if(self.pluginValid())
{
return false;
}
try
{
var agent = window.navigator.userAgent.toLowerCase();
var isIE = agent.indexOf("compatible") > -1 && agent.indexOf("msie") > -1;
if(isIE)
{
return false;
}
var isIE11 = agent.indexOf('trident') > -1 && agent.indexOf("rv:11.0") > -1;
if(isIE11)
{
return false;
}
var isQQBrowser = agent.indexOf("qqbrowser") != -1;
//if(isQQBrowser)
//{
// return false;
//}
var isUBrowser = agent.indexOf("ubrowser") != -1;
if(isUBrowser)
{
return false;
}
//如果是firefox 且在50版本以上则需要
var isFirefox = agent.indexOf("firefox") != -1;
if(isFirefox)
{
return true;
}
var isEdge = agent.indexOf("edge") != -1;
if(isEdge)
{
return true;
}
var isChrome = agent.indexOf("chrome") != -1;
if(isChrome)
{
return true;
}
return false;
}
catch(e)
{
self.WriteLog("IsNeedCustomizedProtocol exception: " + e.message);
}
return true;
}
this.GetVersion = function()
{
if(self.IsNeedCustomizedProtocol())
{
if(self.connectState != emConnected)
{
return;
}
var obj = new Object();
obj.command = "version";
self.NiuniuSocket.send("1" + encodeURIComponent( $.toJSON(obj)) );
return;
}
if(!self.pluginValid())
{
return;
}
var verSion = self.niuniuCapture().GetVersion();
self.VersionCallback(verSion);
self.WriteLog(verSion);
}
}