JS小工具_字符串转16进制数组_02

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 = "&nbsp;";

            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 = "&nbsp;";

            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、

 

posted @ 2018-09-06 17:13  Html5Skill  阅读(630)  评论(0编辑  收藏  举报