[Sie-announce] SIEコード [2029]

Zurück zum Archiv-Index

svnno****@sourc***** svnno****@sourc*****
2010年 9月 30日 (木) 19:33:58 JST


Revision: 2029
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2029
Author:   dhrname
Date:     2010-09-30 19:33:58 +0900 (Thu, 30 Sep 2010)

Log Message:
-----------


Modified Paths:
--------------
    branches/06x/061/org/w3c/dom/svg.js

Modified: branches/06x/061/org/w3c/dom/svg.js
===================================================================
--- branches/06x/061/org/w3c/dom/svg.js	2010-09-29 14:13:27 UTC (rev 2028)
+++ branches/06x/061/org/w3c/dom/svg.js	2010-09-30 10:33:58 UTC (rev 2029)
@@ -3247,40 +3247,31 @@
 
 function SVGTextContentElement() { 
   SVGElement.apply(this);
-  this._list = []; //文字の位置を格納しておくリスト
+  this._list = [];  //文字の位置を格納しておくリスト
+  this._length = 0; //全文字数
   /*readonly SVGAnimatedLength*/      this.textLength = new SVGAnimatedLength();
   /*readonly SVGAnimatedEnumeration*/ this.lengthAdjust = new SVGAnimatedEnumeration(SVGTextContentElement.LENGTHADJUST_UNKNOWN);
   this._isYokogaki = true;
   this.addEventListener("DOMNodeInserted", function(evt){
     var tar = evt.target, cur = evt.currentTarget;
     if ((evt.eventPhase === Event.CAPTURING_PHASE) && (tar.nodeType === Node.TEXT_NODE) && !!!tar._tar) {
-        /*Textノードにdiv要素を格納したリストをプロパティとして蓄えておく*/
-        tar._tar = [];
-        for (var i=0, tdli=tar.data.length;i<tdli;++i) {
-          var d = document.createElement("div"), dstyle = d.style;
-          dstyle.position = "absolute";
-          dstyle.marginLeft = "0px";
-          dstyle.marginTop = "0px";
-          dstyle.paddingTop = "0px";
-          dstyle.paddingLeft = "0px";
-          dstyle.whiteSpace = "nowrap";
-          dstyle.textIndent = "0px";
-          d.appendChild(document.createTextNode(tar.data.charAt(i)));
-          tar._tar[tar._tar.length] = d;
-        }
-        if (cur.parentNode) {
-          var evtt = cur.ownerDocument.createEvent("MutationEvents");
-          evtt.initMutationEvent("DOMNodeInsertedIntoDocument", false, false, null, null, null, null, null);
-          evtt.target = cur;
-          evtt.eventPhase = Event.AT_TARGET;
-          var tce = cur._capter; //tceは登録しておいたリスナーのリスト
-          for (var j=0,tcli=tce.length;j<tcli;++j){
-            if (tce[j]) {
-              tce[j].handleEvent(evtt);
-            }
-          }
-          evtt = null;
-        }
+      /*Textノードにdiv要素を格納したリストをプロパティとして蓄えておく*/
+      tar._tar = [];
+      for (var i=0, tdli=tar.data.length;i<tdli;++i) {
+        var d = document.createElement("div"), dstyle = d.style;
+        dstyle.position = "absolute";
+        dstyle.marginLeft = "0px";
+        dstyle.marginTop = "0px";
+        dstyle.paddingTop = "0px";
+        dstyle.paddingLeft = "0px";
+        dstyle.whiteSpace = "nowrap";
+        dstyle.textIndent = "0px";
+        d.appendChild(document.createTextNode(tar.data.charAt(i)));
+        tar._tar[tar._tar.length] = d;
+      }
+      this._length += tar._tar.length;
+    } else if ((evt.eventPhase === Event.CAPTURING_PHASE) && (tar.localName === "tspan")) {
+      cur._length += tar.getNumberOfChars();
     }
     evt = tar = null;
   }, true);
@@ -3293,7 +3284,7 @@
   /*unsigned short*/ SVGTextContentElement.LENGTHADJUST_SPACING           = 1;
   /*unsigned short*/ SVGTextContentElement.LENGTHADJUST_SPACINGANDGLYPHS  = 2;
 /*long*/     SVGTextContentElement.prototype.getNumberOfChars = function() {
-  return (this._list.length/3);
+  return (this._list.length / 3);
 };
 /*float*/    SVGTextContentElement.prototype.getComputedTextLength = function() {
   var l = this.textLength.baseVal;
@@ -3441,25 +3432,6 @@
       } else {
         var ptx = pty = ptdx = ptdy = {numberOfItems : 0};
       }
-      if (tar.localName === "tspan") {
-        /*現在のテキスト位置を、前のノードによって、
-         *変更する(tspan要素のみ)
-         */
-        var d = 0, tpre = tar.previousSibling;
-        while (tpre) {
-          if (tpre.nodeType === Node.TEXT_NODE) {
-            d += tpre.length;
-          } else if (tpre.localName === "tspan") {
-            d += tpre.getNumberOfChars();
-          }
-          tpre = tpre.previousSibling;
-        }
-        if (isYokogaki) {
-          x = tp.getSubStringLength(0, d);
-        } else {
-          y = tp.getSubStringLength(0, d);
-        }
-      }
       var kern = "f ijltIr.,:;'-\"()", akern = "1234567890abcdeghknopquvxyz";
       if (isYokogaki) {
         y += fontSize * 0.2;




Sie-announce メーリングリストの案内
Zurück zum Archiv-Index