svnno****@sourc*****
svnno****@sourc*****
2011年 3月 29日 (火) 22:39:52 JST
Revision: 2526 http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2526 Author: dhrname Date: 2011-03-29 22:39:52 +0900 (Tue, 29 Mar 2011) Log Message: ----------- GetSVGDocumentのメソッドを整理して軽量化 Modified Paths: -------------- branches/07x/074/org/w3c/dom/svg.js Modified: branches/07x/074/org/w3c/dom/svg.js =================================================================== --- branches/07x/074/org/w3c/dom/svg.js 2011-03-28 14:39:04 UTC (rev 2525) +++ branches/07x/074/org/w3c/dom/svg.js 2011-03-29 13:39:52 UTC (rev 2526) @@ -1684,18 +1684,19 @@ backr = document.createElement("v:rect"), style, fontSize, w, h, sw, sh, trstyle, tpstyle, backrs, viewWidth, viewHeight, bfl, bft, bl, backright, backdown, text, - _parseFloat = parseFloat; - NAIBU.doc.async = false; + _parseFloat = parseFloat, + ndoc = NAIBU.doc; + ndoc.async = false; /*下記のプロパティについては、Microsoftのサイトを参照 *ResolveExternals Property [Second-level DOM] * http://msdn.microsoft.com/en-us/library/ms761375%28VS.85%29.aspx *ValidateOnParse Property [Second-level DOM] * http://msdn.microsoft.com/en-us/library/ms760286%28VS.85%29.asp */ - NAIBU.doc.validateOnParse = false; - NAIBU.doc.resolveExternals = false; - NAIBU.doc.preserveWhiteSpace = true; - NAIBU.doc.loadXML(str); + ndoc.validateOnParse = false; + ndoc.resolveExternals = false; + ndoc.preserveWhiteSpace = true; + ndoc.loadXML(str); /*IE6-8のみで使えるupdateIntervalは、 *描画間隔の調整が可能。デフォルトは0。 *スクロール時にバグが起きるので、0に戻してやる必要がある。 @@ -1706,13 +1707,13 @@ *代替の処理を用いて、実体参照を処理するもの */ var tmp = str; - var enti = (NAIBU.doc.doctype)? NAIBU.doc.doctype.entities: { length:0 }; + var enti = (ndoc.doctype)? ndoc.doctype.entities: { length:0 }; for (var i=0; i<enti.length; i++) { var map = enti.item(i); var regex = new RegExp("&"+map.nodeName+";", "g"); tmp = tmp.replace(regex, map.firstChild.xml); } - NAIBU.doc.loadXML(tmp); + ndoc.loadXML(tmp); tmp = null; } tview.top = 0; @@ -1733,8 +1734,8 @@ if (objh) { tar.setAttributeNS(null, "height", objh); } - fi = NAIBU.doc.documentElement.firstChild; - attr = NAIBU.doc.documentElement.attributes; + fi = ndoc.documentElement.firstChild; + attr = ndoc.documentElement.attributes; /*ルート要素のNamedNodeMapを検索する*/ for (var i=0,atli=attr.length;i<atli;++i) { att = s.importNode(attr[i], false); @@ -1757,7 +1758,7 @@ *作り出す作業を行う。これは必須 */ style = tar.ownerDocument.defaultView.getComputedStyle(tar, ""); - fontSize = parseFloat(style.getPropertyValue("font-size")); + fontSize = _parseFloat(style.getPropertyValue("font-size")); tar.x.baseVal._emToUnit(fontSize); tar.y.baseVal._emToUnit(fontSize); tar.width.baseVal._emToUnit(fontSize); @@ -1783,8 +1784,8 @@ /*ウィンドウ枠の長さを決定する*/ viewWidth = w > sw ? sw : w; viewHeight = h > sh ? sh : h; - bfl = parseFloat(backrs.left); - bft = parseFloat(backrs.top); + bfl = _parseFloat(backrs.left); + bft = _parseFloat(backrs.top); bl = -tar._tx; bt = -tar._ty; if (bfl !== 0 && !isNaN(bfl)) { //内部の図形にずれが生じたとき(isNaNはIE8でautoがデフォルト値のため) @@ -1842,16 +1843,20 @@ /*以下はバッファリングにためておいた要素とイベントを、後から実行する*/ NAIBU._buff_num = 0; NAIBU._buff = setInterval(function(){ - if (DOMImplementation._buffer_.length === 0) { + var n = NAIBU._buff_num, + dbuf = DOMImplementation._buffer_, + dbufli = dbuf.length, + s, evt; + if (dufli === 0) { clearInterval(Event._buff); } else { - var n = NAIBU._buff_num; for (var i=0;i<50;++i) { - var s = DOMImplementation._buffer_[n], evt = DOMImplementation._buffer_[n+1]; + s = dbuf[n]; + evt = dbuf[n+1]; s.dispatchEvent(evt); n += 2; - s = evt = null; - if (n >= DOMImplementation._buffer_.length) { + dbuf = dbufli = s = evt = null; + if (n >= dbufli) { clearInterval(NAIBU._buff); DOMImplementation._buffer_ = null; NAIBU.Time.start();