1、这是 这个小工具的代码
ZC:我的文件放在 "E:\Project_JS\String2Hex.html"
2、代码(20180921)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" > <!-- function Char2Hex(_iCharCode) { return _iCharCode.toString(16); } function String2HexArr(_strIn) { var strHuanHang_ConsoleLog = "\n"; var strKongGe_ConsoleLog = " "; var strHuanHang_DocWrite = "<br/>"; var strKongGe_DocWrite = " "; var strArrOut = ""; for (var i=0; i<_strIn.length; i++) { var iCharCode = _strIn.charCodeAt(i); var strHex = Char2Hex(iCharCode); if (i != 0) { // ZC: 下面要先判断 除16的余数,再判断 除8的余数。∵如果反过来的话,能被16整除肯定能被8整除 就进不到整除16的里面了... // ZC: HuanHang : 换行 if ((i % 16) == 0) strArrOut += strHuanHang_DocWrite; else if ((i % 8) == 0) strArrOut += strKongGe_DocWrite; } strArrOut += "0x"+strHex+", "; } //document.write(_strArrOut + "<br />"); return strArrOut; } // *** window.onload = function() { JsStr_Init(); var strOut = String2HexArr(str0501); document.write("str0501 [ PointTransformed ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); //console.log(strOut); strOut = String2HexArr(str0503); document.write("str0503 [ PointMove ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0504); document.write("str0504 [ Add_FindById ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0602); document.write("str0602 [ Forward ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0603); document.write("str0603 [ Inverse ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0604_1); document.write("str0604_1 [ RotateQt ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0604_2); document.write("str0604_2 [ TranslateQt ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0604_3); document.write("str0604_3 [ ScaleQt ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); document.write("<br /><br />"); strOut = String2HexArr(strText_1); document.write("strText_1 [ strText_1 ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(strText_H); document.write("strText_H [ strText_H ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(strText_V); document.write("strText_V [ strText_V ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); document.write("<br /><br />"); strOut = String2HexArr(strComputedStyle); document.write("strComputedStyle [ strComputedStyle ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(strXiangJiao); document.write("strXiangJiao [ strXiangJiao ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); }; var str0501 = ""; var str0502 = "";// ZC: 等于 str0501 var str0503 = ""; var str0504 = ""; var str0601 = "";// ZC: 等于 str0501 var str0602 = ""; var str0603 = ""; var str0604_1 = ""; var str0604_2 = ""; var str0604_3 = ""; var strText_1 = ""; var strText_H = ""; var strText_V = ""; var strComputedStyle = ""; var strXiangJiao = ""; function JsStr_Init() { str0501 = "var eleThis = this;"; str0501 += "function PointTransformed(_dX, _dY)"; str0501 += "{"; str0501 += " var svg = document.rootElement;"; str0501 += " var ctmSVG = svg.getScreenCTM();"; str0501 += " var ctmEle = eleThis.getScreenCTM();"; str0501 += " var pt = svg.createSVGPoint();"; str0501 += " pt.x = _dX;"; str0501 += " pt.y = _dY;"; str0501 += " pt = pt.matrixTransform(ctmSVG.inverse().multiply(ctmEle));"; str0501 += " return pt;"; str0501 += "}"; //str0501 += "PointTransformed("+QString::number(_dptIn->dX)+", "+QString::number(_dptIn->dY)+");"; str0502 = str0501; str0503 = "var eleThis = this;"; str0503 += "function PointMove(_dX, _dY)" str0503 += "{"; str0503 += " var svg = document.rootElement;"; str0503 += " var tfm = svg.createSVGTransform();"; str0503 += " tfm.setTranslate(_dX, _dY);"; str0503 += " var baseTfm = eleThis.transform.baseVal;"; str0503 += " baseTfm.consolidate();"; str0503 += " baseTfm.insertItemBefore(tfm, 0);"; str0503 += "}"; //str0503 += "PointMove("+QString::number(_x)+", "+QString::number(_y)+");"; str0504 = "function Add_FindById(_strId)"; str0504 += "{"; str0504 += " var doceleFind = document.getElementById(_strId);"; str0504 += " if (doceleFind)"; str0504 += " return true;"; str0504 += " return false;"; str0504 += "}"; //str0504 += "Add_FindById('"+strId+"');"; str0601 = str0501; str0602 = "function Forward(_SVGElement, _dX, _dY)"; str0602 += "{"; str0602 += " var svgPoint = g_svg.createSVGPoint();"; str0602 += " svgPoint.x = _dX;"; str0602 += " svgPoint.y = _dY;"; str0602 += " var svgMatrix_Root = g_svg.getScreenCTM();"; str0602 += " var svgMatrix = _SVGElement.getScreenCTM();"; str0602 += " svgPoint = svgPoint.matrixTransform(svgMatrix_Root.inverse().multiply(svgMatrix));"; str0602 += " return svgPoint;"; str0602 += "}"; //str0602 += "Forward(this, "+QString::number(_dXin)+", "+QString::number(_dYin)+");"; str0603 = "function Inverse(_SVGElement, _dX, _dY)"; str0603 += "{"; str0603 += " var svgPoint = g_svg.createSVGPoint();"; str0603 += " svgPoint.x = _dX;"; str0603 += " svgPoint.y = _dY;"; str0603 += " var svgMatrix_Root = g_svg.getScreenCTM();"; str0603 += " var svgMatrix = _SVGElement.getScreenCTM();"; str0603 += " svgPoint = svgPoint.matrixTransform(svgMatrix.inverse().multiply(svgMatrix_Root));"; str0603 += " return svgPoint;"; str0603 += "}"; //str0603 += "Inverse(this, "+QString::number(_dXin)+", "+QString::number(_dYin)+");"; str0604_1 = "function RotateQt(_svgElement, _angle)"; str0604_1 += "{"; str0604_1 += " var rt = _svgElement.getBBox();"; str0604_1 += " var fXcenter = rt.x + rt.width / 2;"; str0604_1 += " var fYcenter = rt.y + rt.height / 2;"; // ZC: 现在 <use/>的x/y属性都是 0,下面这个应该就不需要了 // str0604_1 += " if (_svgElement.tagName.toLowerCase() == 'use')"; // str0604_1 += " {"; // str0604_1 += " var strX = _svgElement.getAttribute('x');"; // str0604_1 += " var strY = _svgElement.getAttribute('y');"; // str0604_1 += " var fX = parseFloat(strX);"; // str0604_1 += " var fY = parseFloat(strY);"; // str0604_1 += " fXcenter += fX;"; // str0604_1 += " fYcenter += fY;"; // str0604_1 += " }"; // ZC: 中心点的坐标的转换 str0604_1 += "var svgPoint = g_svg.createSVGPoint();"; str0604_1 += "svgPoint.x = fXcenter;"; str0604_1 += "svgPoint.y = fYcenter;"; str0604_1 += "var svgMatrix_Root = g_svg.getScreenCTM();"; str0604_1 += "var svgMatrix = _svgElement.getScreenCTM();"; str0604_1 += "svgPoint = svgPoint.matrixTransform(svgMatrix_Root.inverse().multiply(svgMatrix));"; // ZC: 根据变换之后的中心点的坐标来 旋转角度 str0604_1 += " var new01 = g_svg.createSVGTransform();"; str0604_1 += " new01.setRotate(_angle, svgPoint.x, svgPoint.y);"; str0604_1 += " var list01 = _svgElement.transform;"; str0604_1 += " var list02 = list01.baseVal;"; str0604_1 += " list02.insertItemBefore(new01, 0);"; str0604_1 += " list02.consolidate();"; str0604_1 += "}"; //str0604_1 += "RotateQt(this, "+QString::number(_d0)+");"; str0604_2 = "function TranslateQt(_svgElement, _x, _y)"; str0604_2 += "{"; str0604_2 += " var new01 = g_svg.createSVGTransform();"; str0604_2 += " new01.setTranslate(_x, _y);"; str0604_2 += " var list01 = _svgElement.transform;"; str0604_2 += " var list02 = list01.baseVal;"; str0604_2 += " list02.insertItemBefore(new01, 0);"; str0604_2 += " list02.consolidate();"; str0604_2 += "}"; //str0604_2 += "TranslateQt(this, "+QString::number(_d0)+", "+QString::number(_d1)+");"; str0604_3 = "function ScaleQt(_svgElement, _x, _y)"; str0604_3 += "{"; str0604_3 += " var new01 = g_svg.createSVGTransform();"; str0604_3 += " new01.setScale(_x, _y);"; str0604_3 += " var list01 = _svgElement.transform;"; str0604_3 += " var list02 = list01.baseVal;"; str0604_3 += " list02.insertItemBefore(new01, 0);"; str0604_3 += " list02.consolidate();"; str0604_3 += "}"; //str0604_3 += "ScaleQt(this, "+QString::number(_d0)+", "+QString::number(_d1)+");"; /* QString str = "var eleThis = this;"; str += "var eleTextHide = document.getElementById('textCalcLength');"; str += "var eleSvg = document.getElementsByTagName('svg')[0];"; str += "var strNS = eleSvg.getAttribute('xmlns');"; */ strText_1 = 'function AttributeMap(_eleTextFrom, _eleTextTo)'; strText_1 += '{'; strText_1 += ' while (_eleTextTo.style.length > 0)'; strText_1 += ' _eleTextTo.style.removeProperty(_eleTextTo.style.item(0));'; strText_1 += ' var attrs = _eleTextFrom.attributes;'; strText_1 += ' for (var i=0; i<attrs.length; i++)'; strText_1 += ' _eleTextTo.style.setProperty(attrs[i].name, attrs[i].value);'; strText_1 += '}'; strText_H = "function TextWordwrap_Horizontal(_eleText, _eleText_hidden, _iWidth, _strNS, _strText)"; strText_H += "{"; strText_H += " if (_strText.length <= 0)"; strText_H += " return;"; strText_H += " _eleText.textContent = '';"; strText_H += " AttributeMap(_eleText, _eleText_hidden);"; strText_H += " _eleText_hidden.textContent = '';"; strText_H += " var nodeText_hidden = document.createTextNode(_strText[0]);"; strText_H += " _eleText_hidden.appendChild(nodeText_hidden);"; strText_H += " var iFirstSpanHeight = 0;"; strText_H += " var iPrevSpanWidth = 0;"; strText_H += " if (_strText.length > 1)"; strText_H += " {"; strText_H += " var iCntPrev = 0;"; strText_H += " var eleTspan = null;"; strText_H += " var nodeText = null;"; strText_H += " var bFirstTspan = true;"; strText_H += " for (var i=1; i<_strText.length; i++)"; strText_H += " {"; strText_H += " iCntPrev = _eleText_hidden.firstChild.data.length;"; strText_H += " _eleText_hidden.firstChild.data += _strText[i];"; strText_H += " var rtLong = _eleText_hidden.getBBox();"; strText_H += " var iWidth = rtLong.width;"; strText_H += " if (iWidth > _iWidth)"; strText_H += " {"; strText_H += " var rtLast = _eleText_hidden.getExtentOfChar(_eleText_hidden.getNumberOfChars() - 1);"; strText_H += " var iWidthPrev = rtLast.x - rtLong.x;"; strText_H += " _eleText_hidden.firstChild.data = _eleText_hidden.firstChild.data.slice(0, iCntPrev);"; strText_H += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_H += " _eleText.appendChild(eleTspan);"; strText_H += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_H += " eleTspan.appendChild(nodeText);"; strText_H += " if (bFirstTspan)"; strText_H += " {"; strText_H += " var rt = _eleText.getBBox();"; strText_H += " iFirstSpanHeight = rt.height;"; strText_H += " bFirstTspan = false;"; strText_H += " }"; strText_H += " else"; strText_H += " {"; strText_H += " eleTspan.setAttribute('dx', (-iPrevSpanWidth) + '');"; strText_H += " eleTspan.setAttribute('dy', (iFirstSpanHeight) + '');"; strText_H += " }"; strText_H += " _eleText_hidden.firstChild.data = _strText[i];"; strText_H += " iPrevSpanWidth = iWidthPrev;"; strText_H += " }";// if strText_H += " }";// for strText_H += " if (iCntPrev > 0)"; strText_H += " {"; strText_H += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_H += " _eleText.appendChild(eleTspan);"; strText_H += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_H += " eleTspan.appendChild(nodeText);"; strText_H += " eleTspan.setAttribute('dx', (-iPrevSpanWidth) + '');"; strText_H += " eleTspan.setAttribute('dy', (iFirstSpanHeight) + '');"; strText_H += " }"; strText_H += " }";// if strText_H += "}"; strText_V = "function TextWordwrap_Vertical(_eleText, _eleText_hidden, _iHeight, _strNS, _strText, _bLeft2Right)"; //strText_V += "{ console.log('--> A');"; strText_V += "{"; strText_V += " if (_strText.length <= 0)"; strText_V += " return;"; strText_V += " _eleText.textContent = '';"; strText_V += " AttributeMap(_eleText, _eleText_hidden);"; strText_V += " _eleText_hidden.textContent = '';"; strText_V += " var nodeText_hidden = document.createTextNode(_strText[0]);"; strText_V += " _eleText_hidden.appendChild(nodeText_hidden);"; strText_V += " var iFirstSpanWidth = 0;"; strText_V += " var iPrevSpanHeight = 0;"; strText_V += " if (_strText.length > 1)"; strText_V += " {"; strText_V += " var iCntPrev = 0;"; strText_V += " var eleTspan = null;"; strText_V += " var nodeText = null;"; strText_V += " var bFirstTspan = true;"; strText_V += " for (var i=1; i<_strText.length; i++)"; strText_V += " {"; strText_V += " iCntPrev = _eleText_hidden.firstChild.data.length;"; strText_V += " _eleText_hidden.firstChild.data += _strText[i];"; strText_V += " var rtLong = _eleText_hidden.getBBox();"; strText_V += " var iHeight = rtLong.height;"; strText_V += " if (iHeight > _iHeight)"; strText_V += " {"; strText_V += " var rtLast = _eleText_hidden.getExtentOfChar(_eleText_hidden.getNumberOfChars() - 1);"; strText_V += " var iHeightPrev = rtLast.y - rtLong.y;"; strText_V += " _eleText_hidden.firstChild.data = _eleText_hidden.firstChild.data.slice(0, iCntPrev);"; strText_V += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_V += " _eleText.appendChild(eleTspan);"; strText_V += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_V += " eleTspan.appendChild(nodeText);"; strText_V += " if (bFirstTspan)"; strText_V += " {"; strText_V += " var rt = _eleText.getBBox();"; strText_V += " iFirstSpanWidth = rt.width;"; strText_V += " bFirstTspan = false;"; strText_V += " }"; strText_V += " else"; strText_V += " {"; strText_V += " eleTspan.setAttribute('dy', (-iPrevSpanHeight) + '');"; strText_V += " if (_bLeft2Right)"; strText_V += " eleTspan.setAttribute('dx', (iFirstSpanWidth) + '');"; strText_V += " else"; strText_V += " eleTspan.setAttribute('dx', (-iFirstSpanWidth) + '');"; strText_V += " }"; strText_V += " _eleText_hidden.firstChild.data = _strText[i];"; strText_V += " iPrevSpanHeight = iHeightPrev;"; strText_V += " }";// if strText_V += " }";// for strText_V += " if (iCntPrev > 0)"; strText_V += " {"; strText_V += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_V += " _eleText.appendChild(eleTspan);"; strText_V += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_V += " eleTspan.appendChild(nodeText);"; strText_V += " eleTspan.setAttribute('dy', (-iPrevSpanHeight) + '');"; strText_V += " if (_bLeft2Right)"; strText_V += " eleTspan.setAttribute('dx', (iFirstSpanWidth) + '');"; strText_V += " else"; strText_V += " eleTspan.setAttribute('dx', (-iFirstSpanWidth) + '');"; strText_V += " }"; strText_V += " }";// if strText_V += "}"; // strComputedStyle = "var eleThis = this;"; // strComputedStyle += "function ComputedAttribute(_strAttrName)"; // strComputedStyle += "{ console.log('---> 1');"; // strComputedStyle += " var cs = window.getComputedStyle(eleThis); console.log('---> 2');"; // strComputedStyle += " for (var i=0; i<cs.length; i++)"; // strComputedStyle += " {"; // strComputedStyle += " var name = cs[i];"; // strComputedStyle += " if (name.toLowerCase() == _strAttrName.toLowerCase())"; // strComputedStyle += " return cs.getPropertyValue(name)"; // strComputedStyle += " }"; // strComputedStyle += " return '';"; // strComputedStyle += "}"; //strComputedStyle += "ComputedAttribute('"+QString::fromLocal8Bit(_pcAttrName, _iLen_AttrName)+"');"; strComputedStyle = "var eleThis = this;"; strComputedStyle += "function ComputedAttribute(_strAttrName)"; strComputedStyle += "{"; strComputedStyle += " var cs = window.getComputedStyle(eleThis);"; strComputedStyle += " return cs.getPropertyValue(_strAttrName);"; strComputedStyle += "}"; //strComputedStyle += "ComputedAttribute('"+QString::fromLocal8Bit(_pcAttrName, _iLen_AttrName)+"');"; strXiangJiao = "function XiangJiao(_dX, _dY, _dW, _dH, _dViewboxX, _dViewboxY, _dZoomFactor)"; strXiangJiao += "{"; strXiangJiao += " var eleSvg = document.getElementsByTagName('svg')[0];"; strXiangJiao += " var gPlane0 = document.getElementById('plane_0');"; strXiangJiao += " var rt = eleSvg.createSVGRect();"; strXiangJiao += " rt.x = (_dX - _dViewboxX) * _dZoomFactor;"; strXiangJiao += " rt.y = (_dY - _dViewboxY) * _dZoomFactor;"; strXiangJiao += " rt.width = _dW * _dZoomFactor;"; strXiangJiao += " rt.height = _dH * _dZoomFactor;"; strXiangJiao += " var list = eleSvg.getIntersectionList(rt, null);"; strXiangJiao += " var arr = [];"; strXiangJiao += " for (var i=0; i<list.length; i++)"; strXiangJiao += " {"; strXiangJiao += " var ele = list[i];"; strXiangJiao += " if (ele.nodeType == 1)"; //strXiangJiao += " if ( (ele.tagName.toLowerCase() != 'text') && (ele.tagName.toLowerCase() != 'rect') )"; strXiangJiao += " {"; strXiangJiao += " var parentA = ele.parentNode;"; strXiangJiao += " if ( (parentA) && (parentA.tagName.toLowerCase() == 'g') )"; strXiangJiao += " arr.push(parentA.getAttribute('id'));"; strXiangJiao += " else"; strXiangJiao += " {";// ZC: 可能选择到的是<tspan/>等的情况,它的父节点就是<text/>,再父节点才是<g/> strXiangJiao += " parentA = parentA.parentNode;"; strXiangJiao += " if ( (parentA) && (parentA.tagName.toLowerCase() == 'g') )"; strXiangJiao += " arr.push(parentA.getAttribute('id'));"; strXiangJiao += " }"; strXiangJiao += " }"; strXiangJiao += " }"; strXiangJiao += " return arr;"; strXiangJiao += "}"; //strXiangJiao += "XiangJiao("+strX+","+strY+","+strW+","+strH+","+strsViewbox.at(0)+","+strsViewbox.at(1)+","+QString::number(FpOwnerWebView->zoomFactor())+");"; } --> </script> </head> <body> </body> </html> <!-- -->
3、代码:(之前的)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script type="text/javascript" > <!-- function Char2Hex(_iCharCode) { return _iCharCode.toString(16); } function String2HexArr(_strIn) { var strHuanHang_ConsoleLog = "\n"; var strKongGe_ConsoleLog = " "; var strHuanHang_DocWrite = "<br/>"; var strKongGe_DocWrite = " "; var strArrOut = ""; for (var i=0; i<_strIn.length; i++) { var iCharCode = _strIn.charCodeAt(i); var strHex = Char2Hex(iCharCode); if (i != 0) { // ZC: 下面要先判断 除16的余数,再判断 除8的余数。∵如果反过来的话,能被16整除肯定能被8整除 就进不到整除16的里面了... if ((i % 16) == 0) strArrOut += strHuanHang_DocWrite; else if ((i % 8) == 0) strArrOut += strKongGe_DocWrite; } strArrOut += "0x"+strHex+", "; } //document.write(_strArrOut + "<br />"); return strArrOut; } // *** window.onload = function() { JsStr_Init(); var strOut = String2HexArr(str0501); document.write("str0501 [ PointTransformed ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); //console.log(strOut); strOut = String2HexArr(str0503); document.write("str0503 [ PointMove ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0504); document.write("str0504 [ Add_FindById ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0602); document.write("str0602 [ Forward ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0603); document.write("str0603 [ Inverse ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0604_1); document.write("str0604_1 [ RotateQt ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0604_2); document.write("str0604_2 [ TranslateQt ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(str0604_3); document.write("str0604_3 [ ScaleQt ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); document.write("<br /><br />"); strOut = String2HexArr(strText_1); document.write("strText_1 [ strText_1 ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(strText_H); document.write("strText_H [ strText_H ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(strText_V); document.write("strText_V [ strText_V ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); document.write("<br /><br />"); strOut = String2HexArr(strComputedStyle); document.write("strComputedStyle [ strComputedStyle ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); strOut = String2HexArr(strXiangJiao); document.write("strXiangJiao [ strXiangJiao ] : -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- <br/>") document.write(strOut + "<br /><br />"); }; var str0501 = ""; var str0502 = "";// ZC: 等于 str0501 var str0503 = ""; var str0504 = ""; var str0601 = "";// ZC: 等于 str0501 var str0602 = ""; var str0603 = ""; var str0604_1 = ""; var str0604_2 = ""; var str0604_3 = ""; var strText_1 = ""; var strText_H = ""; var strText_V = ""; var strComputedStyle = ""; var strXiangJiao = ""; function JsStr_Init() { str0501 = "var eleThis = this;"; str0501 += "function PointTransformed(_dX, _dY)"; str0501 += "{"; str0501 += " var svg = document.rootElement;"; str0501 += " var ctmSVG = svg.getScreenCTM();"; str0501 += " var ctmEle = eleThis.getScreenCTM();"; str0501 += " var pt = svg.createSVGPoint();"; str0501 += " pt.x = _dX;"; str0501 += " pt.y = _dY;"; str0501 += " pt = pt.matrixTransform(ctmSVG.inverse().multiply(ctmEle));"; str0501 += " return pt;"; str0501 += "}"; //str0501 += "PointTransformed("+QString::number(_dptIn->dX)+", "+QString::number(_dptIn->dY)+");"; str0502 = str0501; str0503 = "var eleThis = this;"; str0503 += "function PointMove(_dX, _dY)" str0503 += "{"; str0503 += " var svg = document.rootElement;"; str0503 += " var tfm = svg.createSVGTransform();"; str0503 += " tfm.setTranslate(_dX, _dY);"; str0503 += " var baseTfm = eleThis.transform.baseVal;"; str0503 += " baseTfm.consolidate();"; str0503 += " baseTfm.insertItemBefore(tfm, 0);"; str0503 += "}"; //str0503 += "PointMove("+QString::number(_x)+", "+QString::number(_y)+");"; str0504 = "function Add_FindById(_strId)"; str0504 += "{"; str0504 += " var doceleFind = document.getElementById(_strId);"; str0504 += " if (doceleFind)"; str0504 += " return true;"; str0504 += " return false;"; str0504 += "}"; //str0504 += "Add_FindById('"+strId+"');"; str0601 = str0501; str0602 = "function Forward(_SVGElement, _dX, _dY)"; str0602 += "{"; str0602 += " var svgPoint = g_svg.createSVGPoint();"; str0602 += " svgPoint.x = _dX;"; str0602 += " svgPoint.y = _dY;"; str0602 += " var svgMatrix_Root = g_svg.getScreenCTM();"; str0602 += " var svgMatrix = _SVGElement.getScreenCTM();"; str0602 += " svgPoint = svgPoint.matrixTransform(svgMatrix_Root.inverse().multiply(svgMatrix));"; str0602 += " return svgPoint;"; str0602 += "}"; //str0602 += "Forward(this, "+QString::number(_dXin)+", "+QString::number(_dYin)+");"; str0603 = "function Inverse(_SVGElement, _dX, _dY)"; str0603 += "{"; str0603 += " var svgPoint = g_svg.createSVGPoint();"; str0603 += " svgPoint.x = _dX;"; str0603 += " svgPoint.y = _dY;"; str0603 += " var svgMatrix_Root = g_svg.getScreenCTM();"; str0603 += " var svgMatrix = _SVGElement.getScreenCTM();"; str0603 += " svgPoint = svgPoint.matrixTransform(svgMatrix.inverse().multiply(svgMatrix_Root));"; str0603 += " return svgPoint;"; str0603 += "}"; //str0603 += "Inverse(this, "+QString::number(_dXin)+", "+QString::number(_dYin)+");"; str0604_1 = "function RotateQt(_svgElement, _angle)"; str0604_1 += "{"; str0604_1 += " var rt = _svgElement.getBBox();"; str0604_1 += " var fXcenter = rt.x + rt.width / 2;"; str0604_1 += " var fYcenter = rt.y + rt.height / 2;"; // ZC: 现在 <use/>的x/y属性都是 0,下面这个应该就不需要了 // str0604_1 += " if (_svgElement.tagName.toLowerCase() == 'use')"; // str0604_1 += " {"; // str0604_1 += " var strX = _svgElement.getAttribute('x');"; // str0604_1 += " var strY = _svgElement.getAttribute('y');"; // str0604_1 += " var fX = parseFloat(strX);"; // str0604_1 += " var fY = parseFloat(strY);"; // str0604_1 += " fXcenter += fX;"; // str0604_1 += " fYcenter += fY;"; // str0604_1 += " }"; // ZC: 中心点的坐标的转换 str0604_1 += "var svgPoint = g_svg.createSVGPoint();"; str0604_1 += "svgPoint.x = fXcenter;"; str0604_1 += "svgPoint.y = fYcenter;"; str0604_1 += "var svgMatrix_Root = g_svg.getScreenCTM();"; str0604_1 += "var svgMatrix = _svgElement.getScreenCTM();"; str0604_1 += "svgPoint = svgPoint.matrixTransform(svgMatrix_Root.inverse().multiply(svgMatrix));"; // ZC: 根据变换之后的中心点的坐标来 旋转角度 str0604_1 += " var new01 = g_svg.createSVGTransform();"; str0604_1 += " new01.setRotate(_angle, svgPoint.x, svgPoint.y);"; str0604_1 += " var list01 = _svgElement.transform;"; str0604_1 += " var list02 = list01.baseVal;"; str0604_1 += " list02.insertItemBefore(new01, 0);"; str0604_1 += " list02.consolidate();"; str0604_1 += "}"; //str0604_1 += "RotateQt(this, "+QString::number(_d0)+");"; str0604_2 = "function TranslateQt(_svgElement, _x, _y)"; str0604_2 += "{"; str0604_2 += " var new01 = g_svg.createSVGTransform();"; str0604_2 += " new01.setTranslate(_x, _y);"; str0604_2 += " var list01 = _svgElement.transform;"; str0604_2 += " var list02 = list01.baseVal;"; str0604_2 += " list02.insertItemBefore(new01, 0);"; str0604_2 += " list02.consolidate();"; str0604_2 += "}"; //str0604_2 += "TranslateQt(this, "+QString::number(_d0)+", "+QString::number(_d1)+");"; str0604_3 = "function ScaleQt(_svgElement, _x, _y)"; str0604_3 += "{"; str0604_3 += " var new01 = g_svg.createSVGTransform();"; str0604_3 += " new01.setScale(_x, _y);"; str0604_3 += " var list01 = _svgElement.transform;"; str0604_3 += " var list02 = list01.baseVal;"; str0604_3 += " list02.insertItemBefore(new01, 0);"; str0604_3 += " list02.consolidate();"; str0604_3 += "}"; //str0604_3 += "ScaleQt(this, "+QString::number(_d0)+", "+QString::number(_d1)+");"; /* QString str = "var eleThis = this;"; str += "var eleTextHide = document.getElementById('textCalcLength');"; str += "var eleSvg = document.getElementsByTagName('svg')[0];"; str += "var strNS = eleSvg.getAttribute('xmlns');"; */ strText_1 = 'function AttributeMap(_eleTextFrom, _eleTextTo)'; strText_1 += '{'; strText_1 += ' while (_eleTextTo.style.length > 0)'; strText_1 += ' _eleTextTo.style.removeProperty(_eleTextTo.style.item(0));'; strText_1 += ' var attrs = _eleTextFrom.attributes;'; strText_1 += ' for (var i=0; i<attrs.length; i++)'; strText_1 += ' _eleTextTo.style.setProperty(attrs[i].name, attrs[i].value);'; strText_1 += '}'; strText_H = "function TextWordwrap_Horizontal(_eleText, _eleText_hidden, _iWidth, _strNS, _strText)"; strText_H += "{"; strText_H += " if (_strText.length <= 0)"; strText_H += " return;"; strText_H += " _eleText.textContent = '';"; strText_H += " AttributeMap(_eleText, _eleText_hidden);"; strText_H += " _eleText_hidden.textContent = '';"; strText_H += " var nodeText_hidden = document.createTextNode(_strText[0]);"; strText_H += " _eleText_hidden.appendChild(nodeText_hidden);"; strText_H += " var iFirstSpanHeight = 0;"; strText_H += " var iPrevSpanWidth = 0;"; strText_H += " if (_strText.length > 1)"; strText_H += " {"; strText_H += " var iCntPrev = 0;"; strText_H += " var eleTspan = null;"; strText_H += " var nodeText = null;"; strText_H += " var bFirstTspan = true;"; strText_H += " for (var i=1; i<_strText.length; i++)"; strText_H += " {"; strText_H += " iCntPrev = _eleText_hidden.firstChild.data.length;"; strText_H += " _eleText_hidden.firstChild.data += _strText[i];"; strText_H += " var rtLong = _eleText_hidden.getBBox();"; strText_H += " var iWidth = rtLong.width;"; strText_H += " if (iWidth > _iWidth)"; strText_H += " {"; strText_H += " var rtLast = _eleText_hidden.getExtentOfChar(_eleText_hidden.getNumberOfChars() - 1);"; strText_H += " var iWidthPrev = rtLast.x - rtLong.x;"; strText_H += " _eleText_hidden.firstChild.data = _eleText_hidden.firstChild.data.slice(0, iCntPrev);"; strText_H += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_H += " _eleText.appendChild(eleTspan);"; strText_H += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_H += " eleTspan.appendChild(nodeText);"; strText_H += " if (bFirstTspan)"; strText_H += " {"; strText_H += " var rt = _eleText.getBBox();"; strText_H += " iFirstSpanHeight = rt.height;"; strText_H += " bFirstTspan = false;"; strText_H += " }"; strText_H += " else"; strText_H += " {"; strText_H += " eleTspan.setAttribute('dx', (-iPrevSpanWidth) + '');"; strText_H += " eleTspan.setAttribute('dy', (iFirstSpanHeight) + '');"; strText_H += " }"; strText_H += " _eleText_hidden.firstChild.data = _strText[i];"; strText_H += " iPrevSpanWidth = iWidthPrev;"; strText_H += " }";// if strText_H += " }";// for strText_H += " if (iCntPrev > 0)"; strText_H += " {"; strText_H += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_H += " _eleText.appendChild(eleTspan);"; strText_H += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_H += " eleTspan.appendChild(nodeText);"; strText_H += " eleTspan.setAttribute('dx', (-iPrevSpanWidth) + '');"; strText_H += " eleTspan.setAttribute('dy', (iFirstSpanHeight) + '');"; strText_H += " }"; strText_H += " }";// if strText_H += "}"; strText_V = "function TextWordwrap_Vertical(_eleText, _eleText_hidden, _iHeight, _strNS, _strText, _bLeft2Right)"; //strText_V += "{ console.log('--> A');"; strText_V += "{"; strText_V += " if (_strText.length <= 0)"; strText_V += " return;"; strText_V += " _eleText.textContent = '';"; strText_V += " AttributeMap(_eleText, _eleText_hidden);"; strText_V += " _eleText_hidden.textContent = '';"; strText_V += " var nodeText_hidden = document.createTextNode(_strText[0]);"; strText_V += " _eleText_hidden.appendChild(nodeText_hidden);"; strText_V += " var iFirstSpanWidth = 0;"; strText_V += " var iPrevSpanHeight = 0;"; strText_V += " if (_strText.length > 1)"; strText_V += " {"; strText_V += " var iCntPrev = 0;"; strText_V += " var eleTspan = null;"; strText_V += " var nodeText = null;"; strText_V += " var bFirstTspan = true;"; strText_V += " for (var i=1; i<_strText.length; i++)"; strText_V += " {"; strText_V += " iCntPrev = _eleText_hidden.firstChild.data.length;"; strText_V += " _eleText_hidden.firstChild.data += _strText[i];"; strText_V += " var rtLong = _eleText_hidden.getBBox();"; strText_V += " var iHeight = rtLong.height;"; strText_V += " if (iHeight > _iHeight)"; strText_V += " {"; strText_V += " var rtLast = _eleText_hidden.getExtentOfChar(_eleText_hidden.getNumberOfChars() - 1);"; strText_V += " var iHeightPrev = rtLast.y - rtLong.y;"; strText_V += " _eleText_hidden.firstChild.data = _eleText_hidden.firstChild.data.slice(0, iCntPrev);"; strText_V += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_V += " _eleText.appendChild(eleTspan);"; strText_V += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_V += " eleTspan.appendChild(nodeText);"; strText_V += " if (bFirstTspan)"; strText_V += " {"; strText_V += " var rt = _eleText.getBBox();"; strText_V += " iFirstSpanWidth = rt.width;"; strText_V += " bFirstTspan = false;"; strText_V += " }"; strText_V += " else"; strText_V += " {"; strText_V += " eleTspan.setAttribute('dy', (-iPrevSpanHeight) + '');"; strText_V += " if (_bLeft2Right)"; strText_V += " eleTspan.setAttribute('dx', (iFirstSpanWidth) + '');"; strText_V += " else"; strText_V += " eleTspan.setAttribute('dx', (-iFirstSpanWidth) + '');"; strText_V += " }"; strText_V += " _eleText_hidden.firstChild.data = _strText[i];"; strText_V += " iPrevSpanHeight = iHeightPrev;"; strText_V += " }";// if strText_V += " }";// for strText_V += " if (iCntPrev > 0)"; strText_V += " {"; strText_V += " eleTspan = document.createElementNS(_strNS, 'tspan');"; strText_V += " _eleText.appendChild(eleTspan);"; strText_V += " nodeText = document.createTextNode(_eleText_hidden.firstChild.data);"; strText_V += " eleTspan.appendChild(nodeText);"; strText_V += " eleTspan.setAttribute('dy', (-iPrevSpanHeight) + '');"; strText_V += " if (_bLeft2Right)"; strText_V += " eleTspan.setAttribute('dx', (iFirstSpanWidth) + '');"; strText_V += " else"; strText_V += " eleTspan.setAttribute('dx', (-iFirstSpanWidth) + '');"; strText_V += " }"; strText_V += " }";// if strText_V += "}"; // strComputedStyle = "var eleThis = this;"; // strComputedStyle += "function ComputedAttribute(_strAttrName)"; // strComputedStyle += "{ console.log('---> 1');"; // strComputedStyle += " var cs = window.getComputedStyle(eleThis); console.log('---> 2');"; // strComputedStyle += " for (var i=0; i<cs.length; i++)"; // strComputedStyle += " {"; // strComputedStyle += " var name = cs[i];"; // strComputedStyle += " if (name.toLowerCase() == _strAttrName.toLowerCase())"; // strComputedStyle += " return cs.getPropertyValue(name)"; // strComputedStyle += " }"; // strComputedStyle += " return '';"; // strComputedStyle += "}"; //strComputedStyle += "ComputedAttribute('"+QString::fromLocal8Bit(_pcAttrName, _iLen_AttrName)+"');"; strComputedStyle = "var eleThis = this;"; strComputedStyle += "function ComputedAttribute(_strAttrName)"; strComputedStyle += "{"; strComputedStyle += " var cs = window.getComputedStyle(eleThis);"; strComputedStyle += " return cs.getPropertyValue(_strAttrName);"; strComputedStyle += "}"; //strComputedStyle += "ComputedAttribute('"+QString::fromLocal8Bit(_pcAttrName, _iLen_AttrName)+"');"; strXiangJiao = "function XiangJiao(_dX, _dY, _dW, _dH, _dViewboxX, _dViewboxY, _dZoomFactor)"; strXiangJiao += "{"; strXiangJiao += " var eleSvg = document.getElementsByTagName('svg')[0];"; strXiangJiao += " var gPlane0 = document.getElementById('plane_0');"; strXiangJiao += " var rt = eleSvg.createSVGRect();"; strXiangJiao += " rt.x = (_dX - _dViewboxX) * _dZoomFactor;"; strXiangJiao += " rt.y = (_dY - _dViewboxY) * _dZoomFactor;"; strXiangJiao += " rt.width = _dW * _dZoomFactor;"; strXiangJiao += " rt.height = _dH * _dZoomFactor;"; strXiangJiao += " var list = eleSvg.getIntersectionList(rt, null);"; strXiangJiao += " var arr = [];"; strXiangJiao += " for (var i=0; i<list.length; i++)"; strXiangJiao += " {"; strXiangJiao += " var ele = list[i];"; strXiangJiao += " if (ele.nodeType == 1)"; //strXiangJiao += " if ( (ele.tagName.toLowerCase() != 'text') && (ele.tagName.toLowerCase() != 'rect') )"; strXiangJiao += " {"; strXiangJiao += " var parentA = ele.parentNode;"; strXiangJiao += " if (parentA)"; strXiangJiao += " arr.push(parentA.getAttribute('id'));"; strXiangJiao += " }"; strXiangJiao += " }"; strXiangJiao += " return arr;"; strXiangJiao += "}"; //strXiangJiao += "XiangJiao("+strX+","+strY+","+strW+","+strH+","+strsViewbox.at(0)+","+strsViewbox.at(1)+","+QString::number(FpOwnerWebView->zoomFactor())+");"; } --> </script> </head> <body> </body> </html>
3、
4、
5、