-/*!SIE-SVG without Plugin under LGPL2.1 & GPL2.0 & Mozilla Public License\r
+/*SIE-SVG without Plugin under LGPL2.1 & GPL2.0 & Mozilla Public License\r
*http://sie.sourceforge.jp/\r
*Usage: <script defer="defer" type="text/javascript" src="sie.js"></script>\r
*/\r
-/*! ***** BEGIN LICENSE BLOCK *****\r
+/* ***** BEGIN LICENSE BLOCK *****\r
* Version: MPL 1.1/GPL 2.0/LGPL 2.1\r
*\r
* The contents of this file are subject to the Mozilla Public License Version\r
* the terms of any one of the MPL, the GPL or the LGPL.\r
*\r
* ***** END LICENSE BLOCK ***** */\r
-/*!\r
+/*\r
* Copyright (c) 2000 World Wide Web Consortium,\r
* (Massachusetts Institute of Technology, Institut National de\r
* Recherche en Informatique et en Automatique, Keio University). All\r
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR\r
* PURPOSE.\r
* See W3C License http://www.w3.org/Consortium/Legal/ for more details.\r
- */\r
+ */\r
/*!MIT License\r
See Also MIT-LICENSE.txt\r
Copyright (c) 2013 dhrname*/\r
\r
-base = function (name) {\r
- if (!arguments[0]) {\r
- throw new Error("No arguments error");\r
- } else if (this[name]) {\r
- /*登録されている場合は、登録されたオブジェクトを返す*/\r
- return this[name];\r
- } else {\r
- return (this[name] = base.obj.up(name));\r
- }\r
-};\r
-\r
-/*base.Fはbase関数で使うコンストラクタ関数*/\r
-base.F = function() {};\r
\r
(function(){\r
- /*mixメソッドで使うNGハッシュを作成*/\r
- var hash = {},\r
- proto = Object.prototype;\r
- for (var i in proto) {\r
- hash[i] = true;\r
- }\r
- hash.constructor = false; //constructorはNGハッシュに追加しない\r
- base.__ng_ = hash;\r
-})();\r
\r
-/*base.objはbase関数やupメソッドで呼び出されるオブジェクトの始祖となるオブジェクト*/\r
-base.obj = {\r
- /*upメソッド\r
- * 自身をプロトタイプとして、新たにオブジェクトを生成する\r
- */\r
- up: function(name) {\r
- if (!arguments[0]) {\r
- throw new Error("No arguments error");\r
- } else {\r
- var F = base.F,\r
- s;\r
- F.prototype = this;\r
- s = new F();\r
- this[name] = s;\r
- /*自身が値であるようなプロパティを設定する*/\r
- s[name] = s;\r
- F = void 0;\r
- return s;\r
- }\r
- },\r
-\r
- /*mixメソッド\r
- * 別のオブジェクトと合成ができるメソッド\r
- */\r
- mix: function(obj) {\r
- if (!arguments[0]) {\r
- throw new Error("No arguments error");\r
- }\r
- if (typeof obj !== "function") {\r
- var alias = base.__ng_;\r
- for (var i in obj) {\r
- if (!alias[i]) {\r
- /*hasOwnPropertyメソッドを使わないのは、プロトタイプチェーンをたどるようにするため\r
- *なお、Object.prototypeのプロパティなどは外した方がエラーがおきにくい\r
- */\r
- this[i] = obj[i];\r
+/*本体オブジェクト。base関数の裏に隠蔽されている*/\r
+var _base = {\r
+ \r
+ /*_base.Fはbase関数で使うコンストラクタ関数*/\r
+ F: function() {},\r
+ \r
+ /*_base.objはbase関数やupメソッドで呼び出されるオブジェクトの始祖となるオブジェクト*/\r
+ obj: {\r
+ /*upメソッド\r
+ * 自身をプロトタイプとして、新たにオブジェクトを生成する\r
+ */\r
+ up: function(name) {\r
+ if (!arguments[0]) {\r
+ throw new Error("No arguments error");\r
+ }\r
+ var F = _base.F,\r
+ s;\r
+ F.prototype = this;\r
+ s = new F();\r
+ this[name] = s;\r
+ /*自身が値であるようなプロパティを設定する*/\r
+ s[name] = s;\r
+ F = void 0;\r
+ return s;\r
+ },\r
+ \r
+ /*mixメソッド\r
+ * 別のオブジェクトと合成ができるメソッド\r
+ */\r
+ mix: function(obj) {\r
+ if (!arguments[0]) {\r
+ throw new Error("No arguments error");\r
+ }\r
+ if (typeof obj !== "function") {\r
+ var alias = _base.__ng_;\r
+ for (var i in obj) {\r
+ if (!alias[i]) {\r
+ /*hasOwnPropertyメソッドを使わないのは、プロトタイプチェーンをたどるようにするため\r
+ *なお、Object.prototypeのプロパティなどは外した方がエラーがおきにくい\r
+ */\r
+ this[i] = obj[i];\r
+ }\r
+ }\r
+ i = alias = void 0;\r
+ } else {\r
+ obj.call(this, this);\r
+ }\r
+ return this;\r
+ },\r
+ \r
+ /*onメソッド\r
+ * メソッドの合成ができるメソッド。\r
+ * 指定した名前nameのメソッドが呼び出された場合、便乗して指定関数funcをメソッドとして実行することができる\r
+ */\r
+ on: function(name, func) {\r
+ if (!arguments[0]) {\r
+ throw new Error("No arguments error");\r
+ } else if (/^(?:up|on|mix)$/.test(name)) {\r
+ throw new Error("Invalid method name error");\r
+ } else if (typeof arguments[1] !== "function") {\r
+ throw new Error("Not support arguments type");\r
+ }\r
+ var tev = this._eventList__,\r
+ tn = this[name];\r
+ if (!this._eventList__) {\r
+ tev = this._eventList__ = [];\r
+ } else if (!this.hasOwnProperty("_eventList__")) { //祖先がすでにonメソッドを呼び出していれば\r
+ var s = [];\r
+ s._parent = tev;\r
+ tev = this._eventList__ = s;\r
+ s = void 0;\r
+ }\r
+ if (!this[name] || !tn.isOn) { //まだ、onメソッドが呼び出されていなければ\r
+ /*nameで指定されたメソッドの初期化*/\r
+ if (typeof tn === "function") {\r
+ /*nameで指定されたメソッドがすでにある場合は、配列tevの親をたどれないようにしておく*/\r
+ tev.push({\r
+ name: name,\r
+ func: tn\r
+ });\r
+ tev._parent = null;\r
+ }\r
+ this[name] = function() {\r
+ var te = this._eventList__,\r
+ _name = name, //スコープチェーンのエイリアス\r
+ ts = null,\r
+ s = null,\r
+ isCalled = false;//返り値の制御で使う\r
+ te._child = null;\r
+ while (te._parent) { //親をさかのぼっていく\r
+ te._parent._child = te;\r
+ te = te._parent;\r
+ }\r
+ while (te) { //子をたどっていく\r
+ /*最初の返り値の結果はsとして記録して、後で返す*/\r
+ for (var i=0, tli=te.length;i<tli;++i) {\r
+ if(te[i].name === _name) {\r
+ ts = te[i].func.apply(this, arguments);\r
+ if (!isCalled) {\r
+ s = ts;\r
+ isCalled = true;\r
+ }\r
+ }\r
+ }\r
+ te = te._child;\r
+ }\r
+ te = ts = _name = isCalled = void 0;\r
+ return s;\r
+ };\r
+ this[name].isOn = true;\r
}\r
+ tev.push({\r
+ name: name,\r
+ func: func\r
+ });\r
+ tev = tn = func= void 0;\r
+ return this;\r
}\r
- i = alias = void 0;\r
- } else {\r
- obj.call(this, this);\r
}\r
- return this;\r
- },\r
+};\r
\r
- /*onメソッド\r
- * メソッドの合成ができるメソッド。\r
- * 指定した名前nameのメソッドが呼び出された場合、便乗して指定関数funcをメソッドとして実行することができる\r
- */\r
- on: function(name, func) {\r
+/*base関数で型のチェック用に使う*/\r
+_base.FF = function(){};\r
+_base.FF.prototype = _base.obj;\r
+\r
+base = function (name) {\r
if (!arguments[0]) {\r
throw new Error("No arguments error");\r
- } else if (typeof arguments[1] !== "function") {\r
- throw new Error("Not support arguments type");\r
- }\r
- var tev = this._eventList__,\r
- tn = this[name];\r
- if (!this._eventList__) {\r
- tev = this._eventList__ = [];\r
- } else if (!this.hasOwnProperty("_eventList__")) { //祖先がすでにonメソッドを呼び出していれば\r
- var s = [];\r
- s._parent = tev;\r
- tev = this._eventList__ = s;\r
- s = void 0;\r
- }\r
- if (!this[name] || !tn.isOn) { //まだ、onメソッドが呼び出されていなければ\r
- /*nameで指定されたメソッドの初期化*/\r
- if (typeof tn === "function") {\r
- /*nameで指定されたメソッドがすでにある場合は、配列tevの親をたどれないようにしておく*/\r
- tev.push({\r
- name: name,\r
- func: tn\r
- });\r
- tev._parent = null;\r
- }\r
- this[name] = function() {\r
- var te = this._eventList__,\r
- _name = name, //スコープチェーンのエイリアス\r
- ts = s = null,\r
- isCalled = false;//返り値の制御で使う\r
- te._child = null;\r
- while (te._parent) { //親をさかのぼっていく\r
- te._parent._child = te;\r
- te = te._parent;\r
- }\r
- while (te) { //子をたどっていく\r
- /*最初の返り値の結果はsとして記録して、後で返す*/\r
- for (var i=0, tli=te.length;i<tli;++i) {\r
- if(te[i].name === _name) {\r
- ts = te[i].func.apply(this, arguments);\r
- if (!isCalled) {\r
- s = ts;\r
- isCalled = true;\r
- }\r
- }\r
- }\r
- te = te._child;\r
- }\r
- te = ts = _name = isCalled = void 0;\r
- return s;\r
- };\r
- this[name].isOn = true;\r
+ } else if (this[name] && (this[name] instanceof _base.FF)) {\r
+ /*キャッシュに登録されている場合は、登録されたオブジェクトを返す*/\r
+ return this[name];\r
+ } else {\r
+ return (this[name] = _base.obj.up(name));\r
}\r
- tev.push({\r
- name: name,\r
- func: func\r
- });\r
- tev = tn = func= void 0;\r
- return this;\r
- }\r
};\r
+\r
+\r
+/*mixメソッドで使うNGハッシュを作成*/\r
+var hash = {},\r
+ proto = Object.prototype;\r
+for (var i in proto) {\r
+ hash[i] = true;\r
+}\r
+hash.constructor = false; //constructorはNGハッシュに追加しない\r
+_base.__ng_ = hash;\r
+hash = proto = void 0;\r
+\r
+})();\r
+\r
/*Function Object.create\r
*関数Object.createはオブジェクトを新規に作り出すときに使う。\r
*SIEでスーパークラスに引数が指定されているときの対策として使う。\r
/*DOMImplementation\r
*DOMの基本的な機能をつかさどる\r
*/\r
-DOMImplementation = {\r
+base("DOMImplementation").mix( {\r
/* hasFeature\r
*文字列によって、機能をサポートしているかどうかをチェックする。削除不可。\r
*/\r
} catch(e){}\r
},\r
"http://www.w3.org/2000/xmlns": {}\r
-};\r
+} );\r
\r
/* Node\r
*ノード(節)はすべての雛形となる重要なものである。削除不可。\r
});\r
\r
/*#endif // _DOM_IDL_*/\r
-\r
+\r
/*\r
\r
// File: http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.idl\r
base("$document").mix(function() {\r
/*void*/ this.addEventListener = function( /*string*/ type, /*EventListener*/ listener, /*boolean*/ useCapture) {\r
this.removeEventListener(type, listener, useCapture); //いったん、(あれば)リスナーを離す。\r
- var s = new EventListener(useCapture, type, listener), //リスナーを作成\r
+ var s = base("EventListener").up("$1").initialize(useCapture, type, listener), //リスナーを作成\r
t = type.charAt(0),\r
that;\r
this._capter.push(s); //このノードにリスナーを登録しておく\r
};\r
});\r
\r
-function EventListener(cap, type, listener) {\r
- this._cap = cap;\r
- this._type = type;\r
- this._listener = listener;\r
-};\r
+/*EventListenerオブジェクト\r
+ * Eventとイベントの型を結びつけるオブジェクト\r
+ */\r
\r
-EventListener.prototype = {\r
-/*void*/ handleEvent : function( /*Event*/ evt) {\r
+base("EventListener").mix( {\r
+ initialize: function (cap, type, listener) {\r
+ this._cap = cap;\r
+ this._type = type;\r
+ this._listener = listener;\r
+ return this;\r
+ },\r
+/*void*/ handleEvent: function( /*Event*/ evt) {\r
try {\r
var ph = evt.eventPhase,\r
cap = this._cap;\r
} catch (e) {\r
}\r
}\r
-};\r
+});\r
\r
-/*Eventクラス\r
+/*$eventオブジェクト\r
*イベントの雛形となる。プロパティもすべて含めて、必須\r
*/\r
-function Event() {\r
-};\r
// PhaseType\r
/*unsigned short Event.CAPTURING_PHASE = 1;\r
/*unsigned short Event.AT_TARGET = 2;\r
/*unsigned short Event.BUBBLING_PHASE = 3;*/\r
\r
-Event.prototype = {\r
+base("$event").mix( {\r
/*DOMTimeStamp*/ timeStamp : 0,\r
/*DOMString*/ type : null,\r
/*EventTarget*/ target : null,\r
this.cancelable = cancelableArg;\r
eventTypeArg = canBubbleArg = cancelableArg = void 0;\r
}\r
-};\r
+} );\r
/*Documentノードに直接結びつける\r
function DocumentEvent() {\r
}*/\r
/*Event*/ base("$document").createEvent = function( /*string*/ eventType) {\r
- var tc = this._cevent[eventType],\r
- evt = tc ? new tc()\r
- : (eventType === "SVGEvents") ? new SVGEvent()\r
- : (eventType === "TimeEvents") ? new TimeEvent()\r
- : new Event();\r
+ var evt = ( base("$event")[eventType] || base("$event") ).up("$1");\r
+ evt.initialize && evt.initialize();\r
evt.type = eventType;\r
evt.timeStamp = +(new Date());\r
- tc = eventType = void 0;\r
+ eventType = void 0;\r
return evt;\r
};\r
\r
-function UIEvent() {\r
-/*views::AbstractView*/ this.view;\r
-/*long*/ this.detail = 0;\r
-};\r
+/*UIEventオブジェクト\r
+ * UIEventsとsがついているのは、createEventで識別するための名前であるため\r
+ */\r
\r
-UIEvent.prototype = Object._create(Event);\r
-/*void*/ UIEvent.prototype.initUIEvent = function( /*string*/ typeArg, /*boolean*/ canBubbleArg, /*boolean*/ cancelableArg, /*views::AbstractView*/ viewArg, /*long*/ detailArg) {\r
- this.initEvent(typeArg, canBubbleArg, cancelableArg);\r
- this.detail = detailArg;\r
- this.view = viewArg;\r
-};\r
-function MouseEvent(evt) {\r
- UIEvent.apply(this, arguments);\r
-/*long*/ this.screenX;\r
-/*long*/ this.screenY;\r
-/*long*/ this.clientX = this.clientY = 0;\r
-/*boolean*/ this.ctrlKey = this.shiftKey = this.altKey = this.metaKey = false;\r
-/*unsigned short*/ this.button;\r
-/*EventTarget*/ this.relatedTarget;\r
-};\r
-MouseEvent.prototype = Object._create(UIEvent);\r
-/*void*/ MouseEvent.prototype.initMouseEvent = function( /*string*/ typeArg, /*boolean*/ canBubbleArg, /*boolean*/ cancelableArg, /*views::AbstractView*/ viewArg, /*long*/ detailArg, /*long*/ screenXArg, /*long*/ screenYArg, /*long*/ clientXArg, /*long*/ clientYArg, /*boolean*/ ctrlKeyArg, /*boolean*/ altKeyArg, /*boolean*/ shiftKeyArg, /*boolean*/ metaKeyArg, /*unsigned short*/ buttonArg, /*EventTarget*/ relatedTargetArg) {\r
+base("$event").up("UIEvents").mix( {\r
+ /*views::AbstractView this.view */\r
+ /*long*/ detail: 0,\r
+ initUIEvent: function( /*string*/ typeArg, /*boolean*/ canBubbleArg, /*boolean*/ cancelableArg, /*views::AbstractView*/ viewArg, /*long*/ detailArg) {\r
+ this.initEvent(typeArg, canBubbleArg, cancelableArg);\r
+ this.detail = detailArg;\r
+ this.view = viewArg;\r
+ }\r
+\r
+/*MouseEventsオブジェクト*/\r
+\r
+} ).up("MouseEvents").mix( {\r
+ /*long*/ screenX: 0,\r
+ /*long*/ screenY: 0,\r
+ /*long*/ clientX: 0,\r
+ /*long*/ clientY: 0,\r
+ /*boolean*/ ctrlKey: false,\r
+ shiftKey: false,\r
+ altKey: false,\r
+ metaKey: false,\r
+ /*unsigned short this.button;\r
+ /*EventTarget this.relatedTarget*/\r
+/*void*/ initMouseEvent: function( /*string*/ typeArg, /*boolean*/ canBubbleArg, /*boolean*/ cancelableArg, /*views::AbstractView*/ viewArg, /*long*/ detailArg, /*long*/ screenXArg, /*long*/ screenYArg, /*long*/ clientXArg, /*long*/ clientYArg, /*boolean*/ ctrlKeyArg, /*boolean*/ altKeyArg, /*boolean*/ shiftKeyArg, /*boolean*/ metaKeyArg, /*unsigned short*/ buttonArg, /*EventTarget*/ relatedTargetArg) {\r
this.initUIEvent(typeArg, canBubbleArg, cancelableArg, viewArg, detailArg);\r
this.screenX = screenXArg;\r
this.screenY = screenYArg;\r
this.metaKey = metaKeyArg;\r
this.button = buttonArg;\r
this.relatedTarget = relatedTargetArg;\r
-};\r
+}\r
+} ).mix( function() {\r
+ /*createEventメソッドのため*/\r
+ this.$event.MouseEvents = this;\r
+} );\r
\r
-function MutationEvent(){\r
-};\r
-MutationEvent.prototype = Object._create(Event);\r
-(function() {\r
-/*void*/ this.initMutationEvent = function(/*string*/ typeArg, /*boolean*/ canBubbleArg,\r
+\r
+\r
+base("$event").up("MutationEvents").mix( {\r
+/*void*/ initMutationEvent: function(/*string*/ typeArg, /*boolean*/ canBubbleArg,\r
/*boolean*/ cancelableArg, /*Node*/ relatedNodeArg, /*string*/ prevValueArg, /*string*/ newValueArg,\r
/*string*/ attrNameArg, /*unsigned short*/ attrChangeArg) {\r
this.initEvent(typeArg, canBubbleArg, cancelableArg);\r
this.attrName = attrNameArg;\r
this.attrChange = attrChangeArg;\r
typeArg = canBubbleArg = cancelableArg = relatedNodeArg = prevValueArg = newValueArg = attrNameArg = attrChangeArg = void 0;\r
- };\r
- /*Node*/ this.relatedNode = null;\r
- /*string*/ this.prevValue = this.newValue = this.attrName = null;\r
- /*unsigned short*/ this.attrChange = 2;\r
-}).apply(MutationEvent.prototype);\r
+ },\r
+ /*Node*/ relatedNode: null,\r
+ /*string*/ prevValue: null,\r
+ newValue: null,\r
+ attrName: null,\r
+ /*unsigned short*/ attrChange: 2,\r
+} );\r
// attrChangeType\r
/*unsigned short MutationEvent.MODIFICATION = 1;\r
/*unsigned short MutationEvent.ADDITION = 2;\r
};\r
});\r
\r
-/*_ceventプロパティはcreateEventメソッドで軽量化のために使う。*/\r
-base("$document")._cevent = {\r
- "MutationEvents" : MutationEvent,\r
- "MouseEvents" : MouseEvent,\r
- "UIEvents" : UIEvent\r
-};\r
-\r
\r
// _EVENTS_IDL_\r
-\r
+\r
/*\r
// File: http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/stylesheets.idl\r
\r
/*StyleSheet\r
*スタイルシート文書を示す。削除不可。\r
*/\r
-function StyleSheet() {\r
- this.type = "text/css";\r
- this.disabled = false;\r
- /*Node*/ this.ownerNode = null;\r
- /*StyleSheet*/ this.parentStyleSheet = null;\r
- this.href = null;\r
- this.title = "";\r
- /*MediaList*/ this.media = new MediaList();\r
-};\r
+base("$StyleSheet").mix( {\r
+ /*コンストラクタメソッドとして使う*/\r
+ _create: function() {\r
+ return this;\r
+ },\r
+ type: "text/css",\r
+ disabled: false,\r
+ /*Node*/ ownerNode: null,\r
+ /*StyleSheet*/ parentStyleSheet: null,\r
+ href: null,\r
+ title: ""\r
+} )\r
+ .on( "_create", function() {\r
+ /*MediaList*/ this.media = this.$MediaList.up("$1");\r
+} )\r
+ .mix( function(_) {\r
\r
/*StyleSheetList\r
*このインターフェースはArrayで代用する\r
};\r
*/\r
\r
-function MediaList() {\r
- this.mediaText = "";\r
- this.length = 0;\r
-};\r
-MediaList.prototype = {\r
+_.up("$MediaList").mix( {\r
+ mediaText: "",\r
+ length: 0,\r
/*string*/ item : function(/*long*/ index) {\r
return (this[index]);\r
},\r
this[this.length] = newMedium;\r
++this.length;\r
}\r
-};\r
+} );\r
\r
-function LinkStyle() {\r
- /*StyleSheet*/ this.sheet = new StyleSheet();\r
+_.LinkStyle = function() {\r
+ /*StyleSheet*/ this.sheet = _.up("$1");\r
};\r
\r
-function DocumentStyle() {\r
- /*StyleSheetList*/ this.styleSheets = [];\r
+_.DocumentStyle = function() {\r
+ /*StyleSheetList*/ this.styleSheets = [];\r
};\r
+} );\r
/*\r
#endif // _STYLESHEETS_IDL_\r
-*/\r
+*/\r
/*\r
// File: http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/css.idl\r
\r
};\r
*/\r
/*CSSRule\r
- *CSSのルールを表現する。基底クラスなので削除不可。\r
+ *CSSのルールを表現する。CSSStyleRuleと統合\r
*/\r
-function CSSRule() {\r
- this.cssText = "";\r
-/*CSSStyleSheet*/ this.parentStyleSheet;\r
-/*CSSRule*/ this.parentRule = null;\r
-};\r
+\r
/*// RuleType\r
CSSRule.UNKNOWN_RULE = 0;\r
CSSRule.STYLE_RULE = 1;\r
CSSRule.FONT_FACE_RULE = 5;\r
CSSRule.PAGE_RULE = 6;*/\r
\r
-function CSSStyleRule() {\r
- CSSRule.call(this);\r
- this.type = /*CSSRule.STYLE_RULE*/ 1;\r
- this.selectorText = "";\r
-/*CSSStyleDeclaration*/ this.style = new CSSStyleDeclaration();\r
- this.style.parentRule = null;\r
-};\r
-CSSStyleRule.prototype = Object._create(CSSRule);\r
-\r
-function CSSMediaRule() {\r
- CSSRule.call(this);\r
- this.type = /*CSSRule.MEDIA_RULE*/ 4;\r
-/*stylesheets::MediaList*/ this.media = new MediaList();\r
-/*CSSRuleList*/ this.cssRules = [];\r
-};\r
-CSSMediaRule.prototype = Object._create(CSSRule);\r
-/*long*/ CSSMediaRule.prototype.insertRule = function( /*string*/ rule, /*long*/ index) {\r
- this.cssRules.splice(index,rule,1);\r
- this.media.appendMedium(rule);\r
- return this;\r
-};\r
-/*void*/ CSSMediaRule.prototype.deleteRule = function( /*long*/ index) {\r
-};\r
-\r
-function CSSFontFaceRule() {\r
- CSSRule.call(this);\r
- this.type = /*CSSRule.FONT_FACE_RULE*/ 5;\r
-/*CSSStyleDeclaration*/ this.style;\r
-};\r
-CSSFontFaceRule.prototype = Object._create(CSSRule);\r
-\r
-function CSSPageRule() {\r
- CSSRule.call(this);\r
- this.type = /*CSSRule.PAGE_RULE*/ 6;\r
- this.selectorText = "";\r
-/*CSSStyleDeclaration*/ this.style;\r
-};\r
-CSSPageRule.prototype = Object._create(CSSRule);\r
-\r
-function CSSImportRule() {\r
- CSSRule.call(this);\r
- this.type = /*CSSRule.IMPORT_RULE*/ 3;\r
- this.href = "";\r
-/*stylesheets::MediaList*/ this.media = new MediaList();\r
-/*CSSStyleSheet*/ this.styleSheet = null;\r
-};\r
-CSSImportRule.prototype = Object._create(CSSRule);\r
-\r
-function CSSCharsetRule() {\r
- CSSRule.call(this);\r
- this.type = /*CSSRule.CHARSET_RULE*/ 2;\r
- this.encoding = "";\r
-};\r
-CSSCharsetRule.prototype = Object._create(CSSRule);\r
-\r
-function CSSUnknownRule() {\r
- CSSRule.call(this);\r
- this.type = /*CSSRule.UNKNOWN_RULE*/ 0;\r
-};\r
-CSSUnknownRule.prototype = Object._create(CSSRule);\r
+base("$CSSStyleRule").mix( {\r
+ cssText: "",\r
+/*CSSStyleSheet parentStyleSheet;*/\r
+/*CSSRule*/ parentRule: null,\r
+ type: /*CSSRule.STYLE_RULE*/ 1,\r
+ selectorText: "",\r
+/*CSSStyleDeclaration*/ style: (base("$CSSStyleDeclaration")),\r
+} ).mix( function() {\r
+ this.up("$CSSMediaRule").mix( {\r
+ type: /*CSSRule.MEDIA_RULE*/ 4,\r
+ /*stylesheets::MediaList*/ media: (base("$StyleSheet").$MediaList.up("$1")),\r
+ /*CSSRuleList*/ cssRules: [],\r
+ \r
+ /*long*/ insertRule: function( /*string*/ rule, /*long*/ index) {\r
+ this.cssRules.splice(index,rule,1);\r
+ this.media.appendMedium(rule);\r
+ return this;\r
+ },\r
+ /*void*/ deleteRule: function( /*long*/ index) {\r
+ }\r
+ } );\r
+ \r
+ this.up("$CSSFontFaceRule").mix( {\r
+ type: /*CSSRule.FONT_FACE_RULE*/ 5\r
+ /*CSSStyleDeclaration this.style;*/\r
+ } );\r
+ \r
+ this.up("$CSSPageRule").mix( {\r
+ type: /*CSSRule.PAGE_RULE*/ 6,\r
+ selectorText: "",\r
+ /*CSSStyleDeclaration this.style;*/\r
+ } );\r
+ \r
+ this.up("$CSSImportRule").mix( {\r
+ type: /*CSSRule.IMPORT_RULE*/ 3,\r
+ href: "",\r
+ /*stylesheets::MediaList*/ media: base("$StyleSheet").$MediaList.up("$1"),\r
+ /*CSSStyleSheet*/ styleSheet: null\r
+ } );\r
+ \r
+ this.up("$CSSCharsetRule").mix( {\r
+ type: /*CSSRule.CHARSET_RULE*/ 2,\r
+ encoding: ""\r
+ } );\r
+ \r
+ this.up("$CSSUnknownRule").type = /*CSSRule.UNKNOWN_RULE*/ 0;\r
+} );\r
\r
/*CSSStyleDeclaration\r
*CSSの宣言ブロックを表現。削除不可。\r
*/\r
-function CSSStyleDeclaration() {\r
- this._list = []; //内部のリスト\r
- this._list._fontSize = this._list._opacity = null;\r
-};\r
-CSSStyleDeclaration.prototype = {\r
+base("$CSSStyleDeclaration").mix( {\r
+ _new$: function() {\r
+ var s = this.up("$1");\r
+ s._list = []; //内部のリスト\r
+ s._list._fontSize = s._list._opacity = null;\r
+ return s;\r
+ },\r
cssText : "",\r
/*long*/ length : 0,\r
/*CSSRule*/ parentRule : null,\r
/*fill、strokeプロパティは別途、SVGPaintで処理(JavaScriptでは、型キャストを使えないため)\r
*CSSPrimitiveValueオブジェクトとSVGPaintオブジェクトを最後に置き換える\r
*/\r
- ti = tg ? tg : new SVGPaint();\r
+ ti = tg ? tg : base("$CSSValue").$SVGColor.$SVGPaint._new$();\r
paintType =\r
(this._isRS[value.charAt(0)] || ti._keywords[value]) ?\r
/*SVGPaint.SVG_PAINTTYPE_RGBCOLOR*/ 1\r
ti.setPaint(paintType, uri, color, null);\r
paintType = uri = color = void 0;\r
} else if (this._isStop[propertyName]) {\r
- ti = tg ? tg : new SVGColor();\r
+ ti = tg ? tg : base("$CSSValue").$SVGColor._new$();\r
if (value === "currentColor") {\r
ti.colorType = /*SVGColor.SVG_COLORTYPE_CURRENTCOLOR*/ 3;\r
} else {\r
ti.setRGBColor(value);\r
}\r
} else {\r
- ti = tg ? tg : new CSSPrimitiveValue();\r
+ ti = tg ? tg : base("$CSSValue").$CSSPrimitiveValue.up("$1");\r
}\r
ti._priority = priority;\r
ti.cssText = cssText;\r
}\r
return s;\r
}\r
-};\r
+});\r
\r
-function CSSValue() {\r
-};\r
+base("$CSSValue").mix( {\r
/* // UnitTypes\r
CSSValue.CSS_INHERIT = 0;\r
CSSValue.CSS_PRIMITIVE_VALUE = 1;\r
CSSValue.CSS_VALUE_LIST = 2;\r
CSSValue.CSS_CUSTOM = 3;*/\r
-CSSValue.prototype = {\r
cssText : "",\r
cssValueType : /*CSSValue.CSS_CUSTOM*/ 3,\r
_isDefault : 0 //デフォルトであるかどうか(独自のプロパティ)\r
-};\r
-\r
-function CSSPrimitiveValue() {\r
-};\r
+} )\r
+ .up("$CSSPrimitiveValue").mix( {\r
\r
-(function(t) {\r
-/*t.CSS_UNKNOWN = 0;\r
+/* var t = CSSPrimitiveValue;\r
+t.CSS_UNKNOWN = 0;\r
t.CSS_NUMBER = 1;\r
t.CSS_PERCENTAGE = 2;\r
t.CSS_EMS = 3;\r
t.CSS_COUNTER = 23;\r
t.CSS_RECT = 24;\r
t.CSS_RGBCOLOR = 25;*/\r
-t.prototype = Object._create(CSSValue);\r
-})(CSSPrimitiveValue);\r
\r
-(function(){\r
- this._n = [1, 0.01, 1, 1, 1, 35.43307, 3.543307, 90, 1.25, 15, 1, 180 / Math.PI, 90/100, 1, 1000, 1, 1000, 1]; //CSS_PX単位への変換値(なお、CSS_SはCSS_MSに、CSS_RADとCSS_GRADはCSS_DEGに、CSS_KHZはCSS_HZに統一)\r
- this.cssValueType = /*CSSValue.CSS_PRIMITIVE_VALUE*/ 1;\r
- this.primitiveType = /*CSSPrimitiveValue.CSS_UNKNOWN*/ 0;\r
- this._value = null;\r
- this._percent = 0; //単位に%が使われていた場合、このプロパティの数値を1%として使う\r
- this._empercent = 0;\r
- this._em = this._ex = this["_%"] = null; //emが単位の場合、getComputedStyleメソッドなどで使う\r
- /*void*/ this.setFloatValue = function(/*short*/ unitType, /*float*/ floatValue) {\r
+ _n: [1, \r
+ 0.01,\r
+ 1,\r
+ 1,\r
+ 1,\r
+ 35.43307,\r
+ 3.543307,\r
+ 90,\r
+ 1.25,\r
+ 15,\r
+ 1,\r
+ 180 / Math.PI, 90/100,\r
+ 1,\r
+ 1000,\r
+ 1,\r
+ 1000,\r
+ 1], //CSS_PX単位への変換値(なお、CSS_SはCSS_MSに、CSS_RADとCSS_GRADはCSS_DEGに、CSS_KHZはCSS_HZに統一)\r
+ cssValueType: /*CSSValue.CSS_PRIMITIVE_VALUE*/ 1,\r
+ primitiveType: /*CSSPrimitiveValue.CSS_UNKNOWN*/ 0,\r
+ _value: null,\r
+ _percent: 0, //単位に%が使われていた場合、このプロパティの数値を1%として使う\r
+ _empercent: 0,\r
+ _em: null,\r
+ _ex: null,\r
+ "_%": null, //emが単位の場合、getComputedStyleメソッドなどで使う\r
+ /*void*/ setFloatValue: function(/*short*/ unitType, /*float*/ floatValue) {\r
if ((/*CSSPrimitiveValue.CSS_UNKNOWN*/ 0 >= unitType) && (unitType >= /*CSSPrimitiveValue.CSS_STRING*/ 19)) { //浮動小数点数単位型をサポートしないCSS単位である場合\r
throw new DOMException(/*DOMException.INVALID_ACCESS_ERR*/ 15);\r
}\r
this.primitiveType = unitType;\r
this._value = floatValue * this._n[unitType-1]; //値はあらかじめ、利用しやすいように変換しておく\r
- };\r
+ },\r
/*getFloatValueメソッド\r
*別の単位に変換可能。\r
*/\r
- this._regd = /[\d\.]+/;\r
- /*float*/ this.getFloatValue = function(/*short*/ unitType) {\r
+ _regd: /[\d\.]+/,\r
+ /*float*/ getFloatValue: function(/*short*/ unitType) {\r
if ((/*CSSPrimitiveValue.CSS_UNKNOWN*/ 0 >= unitType) && (unitType >= /*CSSPrimitiveValue.CSS_STRING*/ 19)) { //浮動小数点数単位型をサポートしないCSS単位である場合\r
throw new DOMException(/*DOMException.INVALID_ACCESS_ERR*/ 15);\r
}\r
tc = n = type = unitType = void 0;\r
return s;\r
}\r
- };\r
- /*void*/ this.setStringValue = function(/*short*/ stringType, /*string*/ stringValue) {\r
+ },\r
+ /*void*/ setStringValue: function(/*short*/ stringType, /*string*/ stringValue) {\r
if (/*CSSPrimitiveValue.CSS_DIMENSION*/ 18 >= stringType && stringType >= /*CSSPrimitiveValue.CSS_COUNTER*/ 23) { //文字列型をサポートしないCSS単位である場合\r
throw new DOMException(/*DOMException.INVALID_ACCESS_ERR*/ 15);\r
}\r
this._value = stringValue;\r
- };\r
- /*string*/ this.getStringValue = function(/*short*/ stringType) {\r
+ },\r
+ /*string*/ getStringValue: function(/*short*/ stringType) {\r
if (/*CSSPrimitiveValue.CSS_DIMENSION*/ 18 >= stringType && stringType >= /*CSSPrimitiveValue.CSS_COUNTER*/ 23) { //文字列型をサポートしないCSS単位である場合\r
throw new DOMException(/*DOMException.INVALID_ACCESS_ERR*/ 15);\r
}\r
return (this._value);\r
- };\r
- /*Counter*/ this.getCounterValue = function() {\r
+ },\r
+ /*Counter*/ getCounterValue: function() {\r
if (this.primitiveType !== /*CSSPrimitiveValue.CSS_COUNTER*/ 23) { //Counter型ではないとき\r
throw new DOMException(/*DOMException.INVALID_ACCESS_ERR*/ 15);\r
}\r
return (new Counter());\r
- };\r
- /*Rect*/ this.getRectValue = function() {\r
+ },\r
+ /*Rect*/ getRectValue: function() {\r
if (this.primitiveType !== /*CSSPrimitiveValue.CSS_RECT*/ 24) { //Rect型ではないとき\r
throw new DOMException(/*DOMException.INVALID_ACCESS_ERR*/ 15);\r
}\r
return (new Rect());\r
- };\r
- /*RGBColor*/ this.getRGBColorValue = function() {\r
+ },\r
+ /*RGBColor*/ getRGBColorValue: function() {\r
if (this.primitiveType !== /*CSSPrimitiveValue.CSS_RGBCOLOR*/ 25) { //RGBColor型ではないとき\r
throw new DOMException(/*DOMException.INVALID_ACCESS_ERR*/ 15);\r
}\r
var s = new RGBColor(),\r
rgbColor = this.cssText,\r
- n = SVGColor.prototype._keywords[rgbColor];\r
+ n = base("$CSSValue").$SVGColor._keywords[rgbColor];\r
if (rgbColor.indexOf("%", 5) > 0) { // %を含むrgb形式の場合\r
rgbColor = rgbColor.replace(/[\d.]+%/g, function(t) {\r
return Math.round((2.55 * parseFloat(t)));\r
s.blue.setFloatValue(/*CSSPrimitiveValue.CSS_NUMBER*/ 1, parseFloat(n[2]));\r
n = rgbColor = void 0;\r
return (s);\r
- };\r
-}).apply(CSSPrimitiveValue.prototype);\r
+ }\r
+ } )\r
/*CSSValueList\r
*Arrayで代用する\r
*/\r
-function CSSValueList() {\r
- this.cssValueType = /*CSSValue.CSS_VALUE_LIST*/ 2;\r
- this.length = 0;\r
-};\r
-CSSValueList.prototype = Object._create(CSSValue);\r
-/*CSSValue*/ CSSValueList.prototype.item = function( /*long*/ index) {\r
- return (this[index]);\r
-};\r
+ .up("$CSSValueList").mix( {\r
+ cssValueType: /*CSSValue.CSS_VALUE_LIST*/ 2,\r
+ length: 0,\r
+/*CSSValue*/ item: function( /*long*/ index) {\r
+ return (this[index]);\r
+ }\r
+ } );\r
\r
function RGBColor() {\r
- var cs = CSSPrimitiveValue;\r
- this.red = new cs();\r
- this.green = new cs();\r
- this.blue = new cs();\r
+ var cs = base("$CSSValue").$CSSPrimitiveValue;\r
+ this.red = cs.up("$1");\r
+ this.green = cs.up("$1");\r
+ this.blue = cs.up("$1");\r
cs = void 0;\r
this.red.primitiveType = this.green.primitiveType = this.blue.primitiveType = /*CSSPrimitiveValue.CSS_NUMBER*/ 1;\r
};\r
\r
function Rect() {\r
- var cs = CSSPrimitiveValue;\r
- this.top = new cs();\r
- this.right = new cs();\r
- this.bottom = new cs();\r
- this.left = new cs();\r
+ var cs = base("$CSSValue").$CSSPrimitiveValue;\r
+ this.top = cs.up("$1");\r
+ this.right = cs.up("$1");\r
+ this.bottom = cs.up("$1");\r
+ this.left = cs.up("$1");\r
cs = void 0;\r
};\r
\r
};\r
\r
function ElementCSSInlineStyle() {\r
- var cs = CSSStyleDeclaration;\r
- this.style = new cs();\r
- this._attributeStyle = new cs(); //プレゼンテーション属性の値を格納する\r
+ var cs = base("$CSSStyleDeclaration");\r
+ this.style = cs._new$();\r
+ this._attributeStyle = cs._new$(); //プレゼンテーション属性の値を格納する\r
cs = void 0;\r
};\r
\r
n = m = a = void 0;\r
CSS2Properties.visibility._n = 1; //初期値の設定(_setPaintで使う)\r
\r
-function CSSStyleSheet() {\r
- StyleSheet.apply(this);\r
-/*CSSRule*/ this.ownerRule = null;\r
+/*$CSSStyleSheetオブジェクト*/\r
+\r
+base("$StyleSheet").up("$CSSStyleSheet").on("_create", function() {\r
/*CSSRuleList*/ this.cssRules = [];\r
-};\r
-CSSStyleSheet.prototype = Object._create(StyleSheet);\r
-/*long*/ CSSStyleSheet.prototype.insertRule = function( /*string*/ rule, /*long*/ index) {\r
+}).mix( {\r
+/*CSSRule*/ ownerRule: null,\r
+/*long*/ insertRule: function( /*string*/ rule, /*long*/ index) {\r
var s = new CSSStyleRule(), style = s.style, a, sc = rule.match(/\{[\s\S]+\}/), m;\r
s.parentStyleSheet = this;\r
style.cssText = rule;\r
}\r
a = sc = style = void 0;\r
this.cssRules.splice(index,s,1);\r
-};\r
-/*void*/ CSSStyleSheet.prototype.deleteRule = function(/*long*/ index) {\r
+},\r
+/*void*/ deleteRule: function(/*long*/ index) {\r
this.cssRules.splice(index, 1);\r
-};\r
-\r
+}\r
+} );\r
\r
/*getComputedStyle関数\r
*最近の計算値を取得する。Document.defaultViewはSafariがグローバル(window)にサポートしていないため付ける。\r
*/\r
/*interface ViewCSS : views::AbstractView {*/\r
base("$document").defaultView = base("$viewCSS").mix({\r
+ _cssstyle: base("$CSSStyleDeclaration"),\r
/*CSSStyleDeclaration*/ getComputedStyle: function( /*Element*/ elt, /*string*/ pseudoElt) {\r
- var s = new CSSStyleDeclaration(),\r
+ var s = this._cssstyle._new$(),\r
el, es,\r
eso = 1;\r
//クロージャを利用して、カスケーディングを実現する\r
*指定した要素の上書きスタイルシートを取得。\r
*/\r
/*function DocumentCSS : stylesheets::DocumentStyle {*/\r
+base("$document").mix( base("$StyleSheet").DocumentStyle);\r
/*CSSStyleDeclaration*/ base("$document").getOverrideStyle = function( /*Element*/ elt, /*string*/ pseudoElt) {\r
var tar = elt;\r
if (!!tar._runtimeStyle) {\r
return (tar._runtimeStyle);\r
} else {\r
- var s = new CSSStyleDeclaration(), setProp = s.setProperty;\r
+ var s = base("$CSSStyleDeclaration")._new$(),\r
+ setProp = s.setProperty;\r
tar._runtimeStyle = s;\r
}\r
s.setProperty = (function(setProp, s){\r
*文書のスタイルシートを作成\r
*/\r
/*interface DOMImplementationCSS : DOMImplementation {*/\r
-/*CSSStyleSheet*/ DOMImplementation.createCSSStyleSheet = function( /*string*/ title, /*string*/ media) {\r
- var s = new CSSStyleSheet();\r
+/*CSSStyleSheet*/ base("DOMImplementation").createCSSStyleSheet = function( /*string*/ title, /*string*/ media) {\r
+ var s = base("$StyleSheet").up("$CSSStyleSheet")._create();\r
s.title = title;\r
- var nm = new MediaList();\r
+ var nm = s.$MediaList.up("$1");\r
nm.mediaText = media;\r
if (media && (media !== "")) {\r
var mes = media.split(","); //文字列をコンマで区切って配列に\r
};\r
/*\r
#endif // _CSS_IDL_\r
-*/\r
+*/\r
// File: smil.idl\r
/*\r
#ifndef _SMIL_IDL_\r
}\r
};\r
\r
-function TimeEvent() {\r
- Event.apply(this);\r
- /*readonly attribute views::AbstractView*/ this.view;\r
- /*readonly attribute long*/ this.detail;\r
-};\r
-TimeEvent.counstructor = Event;\r
-TimeEvent.prototype = Object._create(Event);\r
-/*void*/ TimeEvent.prototype.initTimeEvent = function(/*DOMString*/ typeArg,\r
+base("$event").up("TimeEvents").mix( {\r
+ /*readonly attribute views::AbstractView this.view;*/\r
+ /*readonly attribute long*/ detail: 0,\r
+/*void*/ initTimeEvent: function(/*DOMString*/ typeArg,\r
/*views::AbstractView*/ viewArg,\r
/*long*/ detailArg) {\r
- this.type = typeArg;\r
- this.view = viewArg;\r
- this.detail = detailArg;\r
-};\r
+ this.type = typeArg;\r
+ this.view = viewArg;\r
+ this.detail = detailArg;\r
+ }\r
+} );\r
//#endif // _SMIL_IDL_\r
\r
\r
/*$svgelement\r
*すべてのSVG関連要素の雛形となるオブジェクト\r
*/\r
- function SVGElement(){};\r
base("$document").$element.up("$svgelement").mix( {\r
initialize: function () {\r
SVGStylable.call(this); //ElementCSSInlineStyleのインタフェースを継承\r
\r
/*interface SVGLocatable*/\r
/*SVGRect*/ getBBox: function(){\r
- var s = new SVGRect(),\r
+ var s = base("$SVGRect").up("$1"),\r
data = this._tar.path.value,\r
vi = this.ownerDocument.documentElement.viewport,\r
el = vi.width,\r
}\r
});\r
\r
-function SVGAnimatedBoolean() {\r
- /*boolean*/ this.animVal = this.baseVal = true;\r
-};\r
+base("$SVGAnimatedBoolean").mix( {\r
+ /*boolean*/ animVal: true,\r
+ baseVal: true\r
+} );\r
\r
-function SVGAnimatedString() {\r
- /*String*/ this.animVal = this.baseVal = "";\r
-};\r
+base("$SVGAnimatedString").mix( {\r
+ /*String*/ animVal: "",\r
+ baseVal: ""\r
+} );\r
\r
-function SVGStringList() {\r
-};\r
-SVGStringList.prototype = Object._create(Array);\r
-(function(){\r
- /*readonly unsigned long*/ this.numberOfItems = 0;\r
- /*void*/ this.clear = function(){\r
+base("$SVGStringList").mix(Array.prototype)\r
+ .mix( {\r
+ /*readonly unsigned long*/ numberOfItems: 0,\r
+ /*void*/ clear: function(){\r
for (var i=0, tli=this.length;i<tli;++i) {\r
this.pop();\r
}\r
this.numberOfItems = 0;\r
- };\r
- /*DOMString*/ this.initialize = function(/*DOMString*/ newItem ) {\r
+ },\r
+ /*DOMString*/ initialize: function(/*DOMString*/ newItem ) {\r
this.clear();\r
this[0] = newItem;\r
this.numberOfItems = 1;\r
return newItem;\r
- };\r
- /*DOMString*/ this.getItem = function(/*unsigned long*/ index ) {\r
+ },\r
+ /*DOMString*/ getItem: function(/*unsigned long*/ index ) {\r
if (index >= this.numberOfItems || index < 0) {\r
throw (new DOMException(/*DOMException.INDEX_SIZE_ERR*/ 1));\r
} else {\r
return (this[index]);\r
}\r
- };\r
- /*DOMString*/ this.insertItemBefore = function(/*DOMString*/ newItem, /*unsigned long*/ index ){\r
+ },\r
+ /*DOMString*/ insertItemBefore: function(/*DOMString*/ newItem, /*unsigned long*/ index ){\r
if (index >= this.numberOfItems) {\r
this.appendItem(newItem);\r
} else {\r
++this.numberOfItems;\r
}\r
return newItem;\r
- };\r
- /*DOMString*/ this.replaceItem = function(/*DOMString*/ newItem, /*unsigned long*/ index ){\r
+ },\r
+ /*DOMString*/ replaceItem: function(/*DOMString*/ newItem, /*unsigned long*/ index ){\r
if (index >= this.numberOfItems || index < 0) {\r
throw (new DOMException(/*DOMException.INDEX_SIZE_ERR*/ 1));\r
} else {\r
this.splice(index, 1, newItem);\r
}\r
return newItem;\r
- };\r
+ },\r
//raises( DOMException, SVGException );\r
- /*DOMString*/ this.removeItem = function(/*unsigned long*/ index ){\r
+ /*DOMString*/ removeItem: function(/*unsigned long*/ index ){\r
if (index >= this.numberOfItems || index < 0) {\r
throw (new DOMException(/*DOMException.INDEX_SIZE_ERR*/ 1));\r
} else {\r
--this.numberOfItems;\r
}\r
return newItem;\r
- };\r
- /*DOMString*/ this.appendItem = function(/*DOMString*/ newItem ){\r
+ },\r
+ /*DOMString*/ appendItem: function(/*DOMString*/ newItem ){\r
this[this.numberOfItems] = newItem;\r
++this.numberOfItems;\r
- };\r
-}).apply(SVGStringList.prototype);\r
-\r
-function SVGAnimatedEnumeration() {\r
- /*unsigned short*/ this.baseVal = 0;\r
+ }\r
+} )\r
+ .mix( function() { \r
+ this.up("$SVGNumberList");\r
+ this.up("$SVGLengthList");\r
+ this.up("$SVGPointList");\r
+ this.up("$SVGTransformList");\r
+ this.up("$SVGPathSegList");\r
+ } );\r
+\r
+base("$SVGAnimatedEnumeration").mix( {\r
+ /*unsigned short*/ baseVal: 0,\r
// raises DOMException on setting\r
- /*readonly unsigned short*/ this.animVal = 0;\r
-};\r
-function SVGAnimatedInteger() {\r
- /*long*/ this.baseVal = 0;\r
+ /*readonly unsigned short*/ animVal: 0\r
+} );\r
+base("$SVGAnimatedInteger").mix( {\r
+ /*long*/ baseVal: 0,\r
// raises DOMException on setting\r
- /*readonly long*/ this.animVal = 0;\r
-};\r
-function SVGNumber() {\r
- /*float*/ this.value = 0;\r
+ /*readonly long*/ animVal: 0\r
+} );\r
+base("$SVGNumber") \r
+ /*float*/ .value = 0;\r
// raises DOMException on setting\r
-};\r
-function SVGAnimatedNumber() {\r
- /*float*/ this.baseVal = this.animVal = 0;\r
-};\r
+base("$SVGAnimatedNumber").mix( {\r
+ /*float*/ baseVal: 0,\r
+ /*float*/ animVal: 0\r
+} );\r
\r
-function SVGNumberList() {\r
-};\r
-/*SVGUnmberListのメソッドはSVGPathSegListを参照*/\r
+/*SVGUnmberListのメソッドはSVGStringListを参照*/\r
\r
function SVGAnimatedNumberList() {\r
- /*readonly SVGNumberList*/ this.animVal = this.baseVal = new SVGNumberList();\r
+ /*readonly SVGNumberList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGNumberList.up("$1");\r
};\r
-/*SVGLengthクラス\r
+/*$SVGLengthオブジェクト\r
*長さを設定する(単位pxに統一する方便として使う)\r
*valueInSpecifiedUnitsプロパティはpxに統一する前の数値。valueプロパティはpxに統一した後の数値\r
*/\r
-function SVGLength() {\r
-};\r
+base("$SVGLength").mix( {\r
/*(function(t) {\r
// Length Unit Types\r
/*const unsigned short t.SVG_LENGTHTYPE_UNKNOWN = 0;\r
/*const unsigned short t.SVG_LENGTHTYPE_PC = 10;\r
})(SVGLength);*/\r
\r
-SVGLength.prototype = {\r
+\r
/*readonly attribute unsigned short*/ unitType : /*SVGLength.SVG_LENGTHTYPE_UNKNOWN*/ 0,\r
/*attribute float*/ value : 0, //利用単位における値\r
/*attribute float*/ valueInSpecifiedUnits : /*SVGLength.SVG_LENGTHTYPE_UNKNOWN*/ 0, //unitTypeにおける値\r
this.newValueSpecifiedUnits(this.unitType, this.valueInSpecifiedUnits);\r
}\r
}\r
-};\r
+} );\r
function SVGAnimatedLength() {\r
/*readonly SVGLength*/ this.animVal;\r
- this.baseVal = new SVGLength();\r
+ this.baseVal = base("$SVGLength").up("$1");\r
this.baseVal.unitType = 1;\r
};\r
-function SVGLengthList() {\r
-};\r
-/*SVGLengthListのメソッドはSVGPathSegListを参照*/\r
+\r
+/*SVGLengthListのメソッドはSVGStringListを参照*/\r
\r
function SVGAnimatedLengthList() {\r
- /*readonly SVGNumberList*/ this.animVal = this.baseVal = new SVGLengthList();\r
+ /*readonly SVGLengthList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGLengthList.up("$1");;\r
};\r
-function SVGAngle() {\r
-};\r
-SVGAngle.prototype = {\r
+\r
+base("$SVGAngle").mix( {\r
/*readonly attribute unsigned short*/ unitType : 0,\r
/*attribute float*/ value : 0,\r
// raises DOMException on setting\r
this.newValueSpecifiedUnits(unitType, v);\r
//raises( DOMException );\r
}\r
-};\r
+} );\r
// Angle Unit Types\r
/*const unsigned short SVGAngle.SVG_ANGLETYPE_UNKNOWN = 0;\r
/*const unsigned short SVGAngle.SVG_ANGLETYPE_UNSPECIFIED = 1;\r
/*const unsigned short SVGAngle.SVG_ANGLETYPE_RAD = 3;\r
/*const unsigned short SVGAngle.SVG_ANGLETYPE_GRAD = 4;*/\r
function SVGAnimatedAngle() {\r
- /*readonly attribute SVGAngle*/ this.baseVal = new SVGAngle();\r
- /*readonly attribute SVGAngle*/ this.animVal = this.baseVal;\r
-};\r
-function SVGColor() {\r
- CSSValue.apply(this);\r
- /*readonly css::RGBColor*/ this.rgbColor = new RGBColor();\r
+ /*readonly attribute SVGAngle*/ this.baseVal = base("$SVGAngle").up("$1");\r
+ /*readonly attribute SVGAngle*/ this.animVal = base("$SVGAngle").up("$1");\r
};\r
\r
+base("$CSSValue").up("$SVGColor").mix( {\r
+ _new$: function() {\r
+ /*readonly css::RGBColor*/ this.up("$1").rgbColor = new RGBColor();\r
+ return this.$1;\r
+ },\r
// Color Types\r
/*unsigned short SVGColor.SVG_COLORTYPE_UNKNOWN = 0;\r
/*unsigned short SVGColor.SVG_COLORTYPE_RGBCOLOR = 1;\r
/*unsigned short SVGColor.SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2;\r
/*unsigned short SVGColor.SVG_COLORTYPE_CURRENTCOLOR = 3;*/\r
-SVGColor.prototype = Object._create(CSSValue); //ノードのプロトタイプチェーンを作って、継承\r
-\r
-(function(){\r
- /*readonly unsigned short*/ this.colorType = /*SVGColor.SVG_COLORTYPE_UNKNOWN*/ 0;\r
- /*readonly SVGICCColor*/ this.iccColor = null;\r
- this._regD = /\d+/g;\r
- this._regDP = /[\d.]+%/g;\r
- this._exceptionsvg = /*SVGException.SVG_INVALID_VALUE_ERR*/ 1;\r
- /*void*/ this.setRGBColor = function(/*DOMString*/ rgbColor ){\r
+ /*readonly unsigned short*/ colorType: /*SVGColor.SVG_COLORTYPE_UNKNOWN*/ 0,\r
+ /*readonly SVGICCColor*/ iccColor: null,\r
+ _regD: /\d+/g,\r
+ _regDP: /[\d.]+%/g,\r
+ _exceptionsvg: /*SVGException.SVG_INVALID_VALUE_ERR*/ 1,\r
+ /*void*/ setRGBColor: function(/*DOMString*/ rgbColor ){\r
var s,\r
_parseInt,\r
r, g, b;\r
rgbColor.green.setFloatValue(1, s[1]);\r
rgbColor.blue.setFloatValue(1, s[2]);\r
rgbColor = s = _parseInt = void 0;\r
-};\r
+},\r
\r
// raises( SVGException );\r
-/*void*/ this.setColor =function(/*unsigned short*/ colorType, /*DOMString*/ rgbColor, /*DOMString*/ iccColor ){\r
+/*void*/ setColor: function(/*unsigned short*/ colorType, /*DOMString*/ rgbColor, /*DOMString*/ iccColor ){\r
this.colorType = colorType;\r
if ((colorType === /*SVGColor.SVG_COLORTYPE_RGBCOLOR*/ 1) && iccColor) {\r
throw new SVGException(this._exceptionsvg);\r
throw new SVGException(this._exceptionsvg);\r
}\r
colorType = rgbColor = void 0;\r
-};\r
+},\r
// raises( SVGException );\r
//色キーワード\r
-this._keywords = {\r
+_keywords: {\r
aliceblue: [240,248,255],\r
antiquewhite: [250,235,215],\r
aqua: [0,255,255],\r
whitesmoke: [245,245,245],\r
yellow: [255,255,0],\r
yellowgreen: [154,205,50]\r
-};\r
-}).apply(SVGColor.prototype);\r
+}\r
+} );\r
\r
-function SVGRect() {\r
- /*float*/ this.x = 0;\r
+base("$SVGRect").mix( {\r
+ /*float*/ x: 0,\r
// raises DOMException on setting\r
- /*float*/ this.y = 0;\r
+ /*float*/ y: 0,\r
// raises DOMException on setting\r
- /*float*/ this.width = 0;\r
+ /*float*/ width: 0,\r
// raises DOMException on setting\r
- /*float*/ this.height = 0;\r
+ /*float*/ height: 0\r
// raises DOMException on setting\r
-};\r
+} );\r
\r
function SVGAnimatedRect() {\r
- /*readonly SVGRect*/ this.animVal = this.baseVal = new SVGRect();\r
+ /*readonly SVGRect*/ this.baseVal = base("$SVGRect").up("$1");\r
+/*readonly SVGRect*/ this.animVal = base("$SVGRect").up("$1");\r
};\r
\r
/*SVGUnitTypes = {\r
/*unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX : 2\r
};*/\r
function SVGStylable() {\r
- /*readonly attribute SVGAnimatedString*/ this.className = new SVGAnimatedString();\r
- /*readonly attribute css::CSSStyleDeclaration*/ this.style = new CSSStyleDeclaration();\r
- this._attributeStyle = new CSSStyleDeclaration(); //プレゼンテーション属性の値を格納する\r
- //styleのcssTextプロパティを解析するリスナーを登録しておく\r
+ /*readonly attribute SVGAnimatedString*/ this.className = base("$SVGAnimatedString").up("$1");\r
+ ElementCSSInlineStyle.call(this);\r
};\r
/*getPresentationAttributeメソッド\r
*プレゼンテーション属性の値をCSSValueとして得る。これはCSSのスタイルの設定値を定めるときや、内部の動的処理に役立つ\r
*/\r
-/*css::CSSValue*/ SVGElement.prototype.getPresentationAttribute = function( /*DOMString*/ name ){\r
+/*css::CSSValue*/base("$document").$element.$svgelement.getPresentationAttribute = function( /*DOMString*/ name ){\r
var s = this._attributeStyle.getPropertyCSSValue(name);\r
if (s) {\r
return s;\r
*SIEでは、もっぱらXLink言語の処理を行う\r
*/\r
function SVGURIReference() {\r
- /*readonly SVGAnimatedString*/ this.href = new SVGAnimatedString();\r
+ /*readonly SVGAnimatedString*/ this.href = base("$SVGAnimatedString").up("$1");\r
this._instance = null; //埋め込みの場合に、読み込んだDOMツリーを結び付けておくプロパティ\r
this._text = "";\r
this.addEventListener("DOMAttrModified", function(evt){\r
*それら以外は、_instanceプロパティにDOMツリーを格納しておく\r
*/\r
if (tar.localName !== "script" && tar.localName !== "style") {\r
- doc = new ActiveXObject("MSXML2.DomDocument");\r
- str = xmlhttp.responseText.replace(/!DOCTYPE/,"!--").replace(/(dtd">|\]>)/,"-->");\r
- ndoc = NAIBU.doc;\r
- ndoc.async = ndoc.validateOnParse = ndoc.resolveExternals = ndoc.preserveWhiteSpace = false;\r
- doc.loadXML(str);\r
- ele = doc.documentElement;\r
- Sfunc = SVGURIReference;\r
- SVGURIReference = function(){};\r
- tar._instance = tar.ownerDocument.importNode(ele, true);\r
- SVGURIReference = Sfunc;\r
- if (id) {\r
- tar._instance = tar._instance.ownerDocument.getElementById(id);\r
- }\r
+ try {\r
+ doc = new ActiveXObject("MSXML2.DomDocument");\r
+ str = xmlhttp.responseText.replace(/!DOCTYPE/,"!--").replace(/(dtd">|\]>)/,"-->");\r
+ ndoc = NAIBU.doc;\r
+ ndoc.async = ndoc.validateOnParse = ndoc.resolveExternals = ndoc.preserveWhiteSpace = false;\r
+ doc.loadXML(str);\r
+ ele = doc.documentElement;\r
+ Sfunc = SVGURIReference;\r
+ SVGURIReference = function(){};\r
+ tar._instance = tar.ownerDocument.importNode(ele, true);\r
+ SVGURIReference = Sfunc;\r
+ if (id) {\r
+ tar._instance = tar._instance.ownerDocument.getElementById(id);\r
+ }\r
+ } catch (e) {}\r
} else {\r
tar._text = xmlhttp.responseText;\r
}\r
tar = evt = void 0;\r
}, false);\r
};\r
-function SVGCSSRule() {\r
- CSSRule.apply(this);\r
+base("$CSSStyleRule").up("$SVGCSSRule").mix( {\r
// Additional CSS RuleType to support ICC color specifications\r
- /*const unsigned short*/ this.COLOR_PROFILE_RULE = 7;\r
-};\r
-SVGCSSRule.prototype = Object._create(CSSRule); //ノードのプロトタイプチェーンを作って、継承\r
+ /*const unsigned short*/ COLOR_PROFILE_RULE: 7\r
+} );\r
\r
/*SVGDocument\r
*SVGの文書オブジェクトについては、DOMImplementationのcreateDocumentメソッドを上書きすることで実現\r
*/\r
-DOMImplementation._createDocument = DOMImplementation.createDocument;\r
-DOMImplementation.createDocument = function() {\r
+base("DOMImplementation").mix ( function(_) {\r
+_._createDocument = _.createDocument;\r
+_.createDocument = function() {\r
return this._createDocument.apply(this, arguments).mix(function() {\r
- DocumentStyle.call(this);\r
+ base("$StyleSheet").DocumentStyle.call(this);\r
SVGStylable.call(this);\r
/*readonly DOMString*/ this.title = "";\r
/*readonly DOMString*/ this.referrer = document.referrer;\r
tde = void 0;\r
});\r
};\r
+} );\r
\r
/*$svg\r
*svg要素をあらわすオブジェクト\r
this._currentTime = seconds;\r
},\r
/*SVGNumber*/ createSVGNumber: function(){\r
- var s = new SVGNumber();\r
- s.value = 0;\r
- return s;\r
+ return base("$SVGNumber").up("$1");\r
},\r
/*SVGAngle*/ createSVGAngle: function(){\r
- var s = new SVGAngle();\r
- s.value = 0;\r
+ var s = base("$SVGAngle").up("$1");\r
s.unitType = 1;\r
return s;\r
},\r
/*SVGLength*/ createSVGLength: function(){\r
- var s = new SVGLength();\r
+ var s = base("$SVGLength").up("$1");\r
s.unitType = /*SVG_LENGTHTYPE_NUMBER*/ 1;\r
return s;\r
},\r
/*SVGPoint*/ createSVGPoint: function(){\r
- return new SVGPoint();\r
+ return base("$SVGPoint").up("$1");\r
},\r
/*SVGMatrix*/ createSVGMatrix: function(){\r
//単位行列を作成\r
- return new SVGMatrix();\r
+ return base("$SVGMatrix").up("$1");\r
},\r
/*SVGRect*/ createSVGRect: function(){\r
- return new SVGRect();\r
+ return base("$SVGRect").up("$1");\r
},\r
/*SVGTransform*/ createSVGTransform: function(){\r
var s = this.createSVGTransformFromMatrix(this.createSVGMatrix());\r
};\r
function SVGViewSpec(ele) {\r
SVGFitToViewBox.apply(this, arguments);\r
- /*readonly SVGTransformList*/ this.transform = new SVGTransformList();\r
+ /*readonly SVGTransformList*/ this.transform = base("$SVGStringList").$SVGTransformList.up("$1");\r
/*readonly SVGElement*/ this.viewTarget = ele;\r
/*readonly DOMString*/ this.viewBoxString = this.preserveAspectRatioString = this.transformString = this.viewTargetString = "";\r
};\r
SVGViewSpec.prototype = Object._create(SVGFitToViewBox);\r
\r
function SVGGElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:group");\r
_doc = void 0;\r
/*以下の処理は、この子要素ノードがDOMツリーに追加されて初めて、\r
tnext = sar = spar = snext = void 0;\r
}, false);\r
};\r
-SVGGElement.prototype = Object._create(SVGElement);\r
\r
function SVGDefsElement() {\r
- SVGElement.apply(this);\r
this.style.setProperty("display", "none");\r
};\r
-SVGDefsElement.prototype = Object._create(SVGElement);\r
\r
function SVGDescElement() {\r
- SVGElement.apply(this);\r
}\r
-SVGDescElement.prototype = Object._create(SVGElement);\r
\r
function SVGTitleElement() {\r
- SVGElement.apply(this);\r
this.addEventListener("DOMCharacterDataModified", function(evt){\r
evt.target.ownerDocument.title = evt.target.firstChild.nodeValue;\r
}, false);\r
-}\r
-SVGTitleElement.prototype = Object._create(SVGElement);\r
+};\r
\r
function SVGSymbolElement(_doc) {\r
- SVGElement.apply(this, arguments);\r
-}\r
-SVGSymbolElement.prototype = Object._create(SVGElement);\r
+};\r
\r
function SVGUseElement() {\r
SVGGElement.apply(this, arguments);\r
/*readonly SVGAnimatedLength*/ this.width = new slen();\r
/*readonly SVGAnimatedLength*/ this.height = new slen();\r
slen = void 0;\r
- /*readonly SVGElementInstance*/ this.instanceRoot = new SVGElement(); //参照先インスタンスのルート\r
- /*readonly SVGElementInstance*/ this.animatedInstanceRoot = new SVGElement();//アニメの最中のインスタンス。静止中は通常\r
+ /*readonly SVGElementInstance*/ this.instanceRoot = this.up("$1"); //参照先インスタンスのルート\r
+ /*readonly SVGElementInstance*/ this.animatedInstanceRoot = this.up("$1");//アニメの最中のインスタンス。静止中は通常\r
this.addEventListener("DOMNodeInserted", function(evt){\r
if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
return; //強制終了させる\r
}, false);\r
SVGURIReference.apply(this);\r
};\r
-SVGUseElement.prototype = Object._create(SVGElement);\r
\r
/*function SVGElementInstance\r
*Nodeオブジェクトを継承させる\r
*SVGElementInstanceList*/\r
\r
function SVGImageElement(_doc) {\r
- SVGElement.apply(this, arguments);\r
this._tar = _doc.createElement("v:image");\r
//以下は、与えられた属性の値に対応する\r
var slen = SVGAnimatedLength;\r
}, false);\r
SVGURIReference.apply(this);\r
};\r
-SVGImageElement.prototype = Object._create(SVGElement);\r
/*_imageo関数は、SVGForeignObjectElementで再利用するので、切り離しておく*/\r
SVGImageElement.prototype._imageo = function(evt) {\r
var tar = evt.target,\r
};\r
\r
function SVGSwitchElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:group");\r
_doc = void 0;\r
this.addEventListener("DOMNodeInserted", function(evt){\r
evt = tar = void 0;\r
}, false);\r
};\r
-SVGSwitchElement.prototype = Object._create(SVGElement);\r
\r
//bookmarkletから呼び出されたらtrue\r
var sieb_s;\r
+ "v\\:shape{width:100%;height:100%;" +vmlUrl;\r
docn = st = vmlUrl = void 0;\r
}\r
- DOMImplementation._doc_ = _doc; //_doc_プロパティはcreateDocumentメソッドで使う\r
+ base("DOMImplementation")._doc_ = _doc; //_doc_プロパティはcreateDocumentメソッドで使う\r
var str = this.xmlhttp.responseText,\r
objei = this._tar,\r
- s = DOMImplementation.createDocument("http://www.w3.org/2000/svg", "svg"),\r
+ s = base("DOMImplementation").createDocument("http://www.w3.org/2000/svg", "svg"),\r
tar = s.documentElement,\r
tview = tar.viewport,\r
objw, objh, fi, attr, w, h,\r
tis.top = _parseFloat(tis.top) - bt + "px";\r
}\r
}\r
- //ビューポートの位置をスクロールで調整 (なお、_txプロパティは$svgsvgelementのSIEコードを参照)\r
+ //ビューポートの位置をスクロールで調整 (なお、_txプロパティはhttp://www.w3.org/2000/svgsvgオブジェクトのSIEコードを参照)\r
ifcw && ifcw.scroll(-s.documentElement._tx, -s.documentElement._ty);\r
s._isLoaded = 1; //_isLoadedプロパティはevents::dispatchEventメソッドで使う\r
s.defaultView._cache = s.defaultView._cache_ele = null;\r
NAIBU._buff_num = 0;\r
NAIBU._buff = setInterval(function(){\r
var n = NAIBU._buff_num,\r
- dbuf = DOMImplementation._buffer_,\r
+ dbuf = base("DOMImplementation")._buffer_,\r
dbufli = dbuf ? dbuf.length : 0, //極端な負荷がかかると、dbufはnullになる可能性あり\r
ts, evt;\r
if (dbufli === 0) {\r
if (n >= dbufli) {\r
clearInterval(NAIBU._buff);\r
svgload();\r
- DOMImplementation._buffer_ = null;\r
+ base("DOMImplementation")._buffer_ = null;\r
NAIBU.Time.start();\r
svgload = s = dbuf = n = dbufli = void 0;\r
return;\r
*style要素をあらわすオブジェクト\r
*/\r
function SVGStyleElement(_doc) {\r
- SVGElement.apply(this);\r
- LinkStyle.apply(this);\r
+ base("$StyleSheet").LinkStyle.apply(this);\r
/*LinkStyleに関しては、以下の仕様を参照のこと。なお、これはSVG DOMでは継承されていないので要注意。\r
*CSS2 1. Document Object Model Style Sheets\r
* 1.3. Document Extensions\r
style = _doc.createElement("style"),\r
ri, rsc, scri, rsi;\r
NAIBU._temp_doc = tod;\r
- sheet = tod.styleSheets[tod.styleSheets.length] = DOMImplementation.createCSSStyleSheet(tar.title, tar.media);\r
+ sheet = tod.styleSheets[tod.styleSheets.length] = base("DOMImplementation").createCSSStyleSheet(tar.title, tar.media);\r
sheet.ownerNode = tar;\r
/*以下は、IEのCSSパーサを使って、スタイルシートのルールを実装していく*/\r
_doc.documentElement.firstChild.appendChild(style);\r
}, false);\r
}, false);\r
};\r
-SVGStyleElement.prototype = Object._create(SVGElement);\r
\r
/*SVGPoint\r
*2次元座標の点(x,y)を表すオブジェクト\r
*/\r
-function SVGPoint() {\r
-};\r
-/*float*/SVGPoint.prototype.x = SVGPoint.prototype.y = 0;\r
-SVGPoint.prototype.matrixTransform = function(/*SVGMatrix*/ matrix ) {\r
- if (!isFinite(matrix.a) || !isFinite(matrix.b) || !isFinite(matrix.c) || !isFinite(matrix.d) || !isFinite(matrix.e) || !isFinite(matrix.f)) {\r
- throw (new Error("Type Error: 引数の値がNumber型ではありません"));\r
+base("$SVGPoint").mix( {\r
+ /*float*/ x: 0,\r
+ /*float*/ y: 0,\r
+ matrixTransform: function(/*SVGMatrix*/ matrix ) {\r
+ if (!isFinite(matrix.a) || !isFinite(matrix.b) || !isFinite(matrix.c) || !isFinite(matrix.d) || !isFinite(matrix.e) || !isFinite(matrix.f)) {\r
+ throw (new Error("Type Error: 引数の値がNumber型ではありません"));\r
+ }\r
+ var s = base("$SVGPoint").up("$1");\r
+ s.x = matrix.a * this.x + matrix.c * this.y + matrix.e;\r
+ s.y = matrix.b * this.x + matrix.d * this.y + matrix.f;\r
+ return s;\r
}\r
- var s = new SVGPoint();\r
- s.x = matrix.a * this.x + matrix.c * this.y + matrix.e;\r
- s.y = matrix.b * this.x + matrix.d * this.y + matrix.f;\r
- return s;\r
-};\r
+} );\r
\r
-function SVGPointList() {\r
-};\r
-/*SVGPointListのメソッドはSVGPathSegListを参照*/\r
+\r
+/*SVGPointListのメソッドはSVGStringListを参照*/\r
\r
/*SVGMatrix\r
*行列をあらわすオブジェクト。写像に用いる。以下のように表現できる\r
*[b d f]\r
*[0 0 1]\r
*/\r
-function SVGMatrix() {\r
-};\r
-SVGMatrix.prototype = {\r
+base("$SVGMatrix").mix( {\r
/*float*/ a : 1,\r
/*float*/ b : 0,\r
/*float*/ c : 0,\r
*行列の積を求めて返す\r
*/\r
/*SVGMatrix*/ multiply : function(/*SVGMatrix*/ secondMatrix ) {\r
- var s = new SVGMatrix(),\r
+ var s = base("$SVGMatrix").up("$1"),\r
m = secondMatrix,\r
isf = isFinite,\r
t = this;\r
*逆行列を返す\r
*/\r
/*SVGMatrix*/ inverse : function() {\r
- var s = new SVGMatrix(), n = this._determinant();\r
+ var s = base("$SVGMatrix").up("$1"), \r
+ n = this._determinant();\r
if (n !== 0) {\r
s.a = this.d / n;\r
s.b = -this.b / n;\r
}\r
},\r
/*SVGMatrix*/ translate : function(/*float*/ x, /*float*/ y ) {\r
- var m = new SVGMatrix();\r
+ var m = base("$SVGMatrix").up("$1");\r
m.e = x;\r
m.f = y;\r
var s = this.multiply(m);\r
return s;\r
},\r
/*SVGMatrix*/ scale : function(/*float*/ scaleFactor ) {\r
- var m = new SVGMatrix();\r
+ var m = base("$SVGMatrix").up("$1");\r
m.a = scaleFactor;\r
m.d = scaleFactor;\r
var s = this.multiply(m);\r
return s;\r
},\r
/*SVGMatrix*/ scaleNonUniform : function(/*float*/ scaleFactorX, /*float*/ scaleFactorY ) {\r
- var m = new SVGMatrix();\r
+ var m = base("$SVGMatrix").up("$1");\r
m.a = scaleFactorX;\r
m.d = scaleFactorY;\r
var s = this.multiply(m);\r
return s;\r
},\r
/*SVGMatrix*/ rotate : function(/*float*/ angle ) {\r
- var m = new SVGMatrix(), rad = angle / 180 * Math.PI; //ラジアン変換\r
+ var m = base("$SVGMatrix").up("$1"), rad = angle / 180 * Math.PI; //ラジアン変換\r
m.a = Math.cos(rad);\r
m.b = Math.sin(rad);\r
m.c = -m.b;\r
if ((x === 0) || (y === 0) || !isFinite(x) || !isFinite(y)) {\r
throw (new SVGException(/*SVGException.SVG_INVALID_VALUE_ERR*/ 1));\r
}\r
- var m = new SVGMatrix(), rad = Math.atan2(y, x);\r
+ var m = base("$SVGMatrix").up("$1"), rad = Math.atan2(y, x);\r
m.a = Math.cos(rad);\r
m.b = Math.sin(rad);\r
m.c = -m.b;\r
return s;\r
},\r
/*SVGMatrix*/ flipX : function() {\r
- var m = new SVGMatrix();\r
+ var m = base("$SVGMatrix").up("$1");\r
m.a = -m.a;\r
var s = this.multiply(m);\r
m = void 0;\r
return s;\r
},\r
/*SVGMatrix*/ flipY : function() {\r
- var m = new SVGMatrix();\r
+ var m = base("$SVGMatrix").up("$1");\r
m.d = -m.d;\r
var s = this.multiply(m);\r
m = void 0;\r
return s;\r
},\r
/*SVGMatrix*/ skewX : function(/*float*/ angle ){\r
- var m = new SVGMatrix(), rad = angle / 180 * Math.PI; //ラジアン変換\r
+ var m = base("$SVGMatrix").up("$1"), rad = angle / 180 * Math.PI; //ラジアン変換\r
m.c = Math.tan(rad);\r
var s = this.multiply(m);\r
m = void 0;\r
return s;\r
},\r
/*SVGMatrix*/ skewY : function(/*float*/ angle ){\r
- var m = new SVGMatrix(), rad = angle / 180 * Math.PI;\r
+ var m = base("$SVGMatrix").up("$1"), rad = angle / 180 * Math.PI;\r
m.b = Math.tan(rad);\r
var s = this.multiply(m);\r
m = void 0;\r
/*float*/ _determinant : function() {\r
return (this.a * this.d - this.b * this.c);\r
}\r
-};\r
+} );\r
\r
function SVGTransform() {\r
- /*readonly SVGMatrix*/ this.matrix = new SVGMatrix();\r
+ /*readonly SVGMatrix*/ this.matrix = base("$SVGMatrix").up("$1");\r
};\r
// Transform Types\r
/*unsigned short*/ SVGTransform.SVG_TRANSFORM_UNKNOWN = 0;\r
/*unsigned short*/ SVGTransform.SVG_TRANSFORM_SKEWY = 6;\r
SVGTransform.prototype = {\r
/*ダミーの単位行列。各メソッドで使う*/\r
- _matrix : (new SVGMatrix()),\r
+ _matrix : base("$SVGMatrix"),\r
/*readonly unsigned short*/ type : /*SVGTransform.SVG_TRANSFORM_UNKNOWN*/ 0,\r
/*readonly float*/ angle : 0,\r
/*void*/ setMatrix : function(/*SVGMatrix*/ matrix ) {\r
this.type = /*SVGTransform.SVG_TRANSFORM_MATRIX*/ 1;\r
- this.matrix = this._matrix.multiply(matrix);\r
+ var mat = this._matrix.up("$1");\r
+ mat.a = matrix.a;\r
+ mat.b = matrix.b;\r
+ mat.c = matrix.c;\r
+ mat.d = matrix.d;\r
+ mat.e = matrix.e;\r
+ mat.f = matrix.f;\r
+ this.matrix = mat;\r
+ matrix = mat = void 0;\r
},\r
/*void*/ setTranslate : function(/*float*/ tx, /*float*/ ty ) {\r
this.type = /*SVGTransform.SVG_TRANSFORM_TRANSLATE*/ 2;\r
}\r
};\r
\r
-function SVGTransformList() {\r
-};\r
-/*SVGTransformListのメソッドはSVGPathSegListを参照*/\r
\r
-/*SVGTransform*/ SVGTransformList.prototype.createSVGTransformFromMatrix = function(/*SVGMatrix*/ matrix ) {\r
+/*SVGTransformListのメソッドはSVGStringListを参照*/\r
+base("$SVGStringList").$SVGTransformList.mix( {\r
+/*SVGTransform*/ createSVGTransformFromMatrix: function(/*SVGMatrix*/ matrix ) {\r
var t = new SVGTransform();\r
t.setMatrix(matrix);\r
return t;\r
-};\r
-/*SVGTransform*/ SVGTransformList.prototype.consolidate = function() {\r
+},\r
+/*SVGTransform*/ consolidate: function() {\r
if(this.numberOfItems === 0) {\r
return null;\r
} else {\r
m = fm = void 0;\r
return s;\r
}\r
-};\r
+}\r
+} );\r
\r
function SVGAnimatedTransformList() {\r
- /*readonly SVGTransformList*/ this.animVal = this.baseVal = new SVGTransformList();\r
-};\r
-function SVGPreserveAspectRatio() {\r
- /*unsigned short*/ this.align = /*SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID*/ 6;\r
- /*unsigned short*/ this.meetOrSlice = /*SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET*/ 1;\r
+ /*readonly SVGTransformList*/ this.animVal = this.baseVal = base("$SVGStringList").$SVGTransformList.up("$1");\r
};\r
+\r
+base("SVGPreserveAspectRatio").mix( {\r
+ /*unsigned short*/ align: /*SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID*/ 6,\r
+ /*unsigned short*/ meetOrSlice: /*SVGPreserveAspectRatio.SVG_MEETORSLICE_MEET*/ 1\r
+} );\r
/*(function(t) {\r
// Alignment Types\r
/*unsigned short t.SVG_PRESERVEASPECTRATIO_UNKNOWN = 0;\r
/*unsigned short t.SVG_MEETORSLICE_UNKNOWN = 0;\r
/*unsigned short t.SVG_MEETORSLICE_MEET = 1;\r
/*unsigned short t.SVG_MEETORSLICE_SLICE = 2;\r
-})(SVGPreserveAspectRatio);*/\r
+})(base("SVGPreserveAspectRatio"));*/\r
\r
function SVGAnimatedPreserveAspectRatio() {\r
- /*readonly SVGPreserveAspectRatio*/ this.animVal = this.baseVal = new SVGPreserveAspectRatio();\r
+ /*readonly SVGPreserveAspectRatio*/ this.animVal = this.baseVal = base("SVGPreserveAspectRatio").up("$1");\r
};\r
\r
function SVGPathSeg() {\r
this.pathSegType = /*SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL*/ 19;\r
this.pathSegTypeAsLetter = "t";\r
};\r
-function SVGPathSegList() {\r
-};\r
-for (var prop in SVGStringList.prototype) { //prototypeのコピーで継承を行う\r
- SVGNumberList.prototype[prop] = SVGLengthList.prototype[prop] = SVGPointList.prototype[prop] = SVGTransformList.prototype[prop] = SVGPathSegList.prototype[prop] = SVGStringList.prototype[prop];\r
-};\r
-prop = void 0;\r
\r
/*documentは引数の変数として登録しておく*/\r
(function(_doc, _math) {\r
};\r
\r
function SVGPathElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:shape");\r
//interface SVGAnimatedPathData\r
- var sp = SVGPathSegList;\r
- /*readonly SVGPathSegList*/ this.pathSegList = new sp();\r
+ var sp = base("$SVGStringList").$SVGPathSegList;\r
+ /*readonly SVGPathSegList*/ this.pathSegList = sp.up("$1");\r
this.animatedPathSegList = this.pathSegList;\r
- /*readonly SVGPathSegList*/ this.normalizedPathSegList = new sp();\r
+ /*readonly SVGPathSegList*/ this.normalizedPathSegList = sp.up("$1");\r
sp = _doc = void 0;\r
this.animatedNormalizedPathSegList = this.normalizedPathSegList;\r
- /*readonly SVGAnimatedNumber*/ this.pathLength = new SVGAnimatedNumber();\r
+ /*readonly SVGAnimatedNumber*/ this.pathLength = base("$SVGAnimatedNumber").up("$1");\r
//以下は、d属性に変更があった場合の処理\r
this.addEventListener("DOMAttrModified", this._attrModi, false);\r
/*以下の処理は、このpath要素ノードがDOMツリーに追加されて初めて、\r
*/\r
this.addEventListener("DOMNodeInserted", this._nodeInsert, false);\r
};\r
-SVGPathElement.prototype = Object._create(SVGElement);\r
(function(_sproto) {\r
_sproto._attrModi = function(evt){\r
var tar = evt.target;\r
})(document, Math);\r
\r
function SVGRectElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:shape");\r
var slen = SVGAnimatedLength;\r
/*readonly SVGAnimatedLength*/ this.x = new slen();\r
evt = tar = void 0;\r
}, false);\r
};\r
-SVGRectElement.prototype = Object._create(SVGElement);\r
\r
function SVGCircleElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:shape");\r
var sl = SVGAnimatedLength;\r
/*readonly SVGAnimatedLength*/ this.cx = new sl();\r
evt = tar = void 0;\r
}, false);\r
};\r
-SVGCircleElement.prototype = Object._create(SVGElement);\r
\r
function SVGEllipseElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:shape");\r
var sl = SVGAnimatedLength;\r
/*readonly SVGAnimatedLength*/ this.cx = new sl();\r
evt = tar = void 0;\r
}, false);\r
};\r
-SVGEllipseElement.prototype = Object._create(SVGElement);\r
\r
function SVGLineElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:shape");\r
var sl = SVGAnimatedLength;\r
/*readonly SVGAnimatedLength*/ this.x1 = new sl();\r
evt = tar = void 0;\r
}, false);\r
};\r
-SVGLineElement.prototype = Object._create(SVGElement);\r
\r
/*_GenericSVGPolyElementインターフェース\r
* このインターフェースはpolygonとpolyline要素共通のインターフェースとして使用。\r
* ファイルサイズを軽量にすることができる\r
*/\r
NAIBU._GenericSVGPolyElement = function (_doc, xclose) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("v:shape");\r
_doc = void 0;\r
//interface SVGAnimatedPoints\r
- /*readonly SVGPointList*/ this.animatedPoints = this.points = new SVGPointList();\r
+ /*readonly SVGPointList*/ this.animatedPoints = this.points = base("$SVGStringList").$SVGPointList.up("$1");;\r
this.addEventListener("DOMAttrModified", function(evt){\r
var tar = evt.target;\r
if (evt.attrName === "points") {\r
NAIBU._GenericSVGPolyElement.call(this, _doc, "e");\r
_doc = void 0;\r
};\r
-SVGPolylineElement.prototype = Object._create(SVGElement);\r
\r
function SVGPolygonElement(_doc) {\r
NAIBU._GenericSVGPolyElement.call(this, _doc, "x e");\r
_doc = void 0;\r
};\r
-SVGPolygonElement.prototype = Object._create(SVGElement);\r
\r
function SVGTextContentElement(_doc) {\r
- SVGElement.apply(this);\r
/*readonly SVGAnimatedLength*/ this.textLength = new SVGAnimatedLength();\r
- /*readonly SVGAnimatedEnumeration*/ this.lengthAdjust = new SVGAnimatedEnumeration(/*SVGTextContentElement.LENGTHADJUST_UNKNOWN*/ 0);\r
+ /*readonly SVGAnimatedEnumeration*/ this.lengthAdjust = base("$SVGAnimatedEnumeration").up("$1");\r
this.addEventListener("DOMNodeInserted", function(evt){\r
var tar = evt.target,\r
cur = evt.currentTarget,\r
};\r
\r
(function(t) {\r
- var tproto;\r
- tproto = t.prototype = Object._create(SVGElement);\r
+ var tproto = t.prototype;\r
// lengthAdjust Types\r
/*unsigned short t.LENGTHADJUST_UNKNOWN = 0;\r
/*unsigned short t.LENGTHADJUST_SPACING = 1;\r
})(SVGTextPathElement);\r
\r
\r
-function SVGPaint() {\r
- SVGColor.apply(this);\r
-};\r
-\r
-(function(t){\r
- var tproto;\r
- tproto = t.prototype = Object._create(SVGColor);\r
+base("$CSSValue").$SVGColor.up("$SVGPaint").mix( {\r
// Paint Types\r
/*unsigned short t.SVG_PAINTTYPE_UNKNOWN = 0;\r
/*unsigned short t.SVG_PAINTTYPE_RGBCOLOR = 1;\r
/*unsigned short t.SVG_PAINTTYPE_URI_RGBCOLOR = 105;\r
/*unsigned short t.SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106;\r
/*unsigned short t.SVG_PAINTTYPE_URI = 107;*/\r
- /*readonly unsigned short*/ tproto.paintType = /*t.SVG_PAINTTYPE_UNKNOWN*/ 0;\r
- /*readonly DOMString*/ tproto.uri = null;\r
-/*void*/ tproto.setUri = function(/*DOMString*/ uri ) {\r
+\r
+ /*readonly unsigned short*/ paintType: /*t.SVG_PAINTTYPE_UNKNOWN*/ 0,\r
+ /*readonly DOMString*/ uri: null,\r
+/*void*/ setUri: function(/*DOMString*/ uri ) {\r
this.setPaint(/*SVGPaint.SVG_PAINTTYPE_URI_NONE*/ 103, uri, null, null);\r
-};\r
-/*void*/ tproto.setPaint = function(/*unsigned short*/ paintType, /*DOMString*/ uri, /*DOMString*/ rgbColor, /*DOMString*/ iccColor ) {\r
+},\r
+/*void*/ setPaint: function(/*unsigned short*/ paintType, /*DOMString*/ uri, /*DOMString*/ rgbColor, /*DOMString*/ iccColor ) {\r
if ((paintType < 101 && uri) || (paintType > 102 && !uri)) {\r
throw new SVGException(/*SVGException.SVG_INVALID_VALUE_ERR*/ 1);\r
}\r
paintType = /*SVGColor.SVG_COLORTYPE_CURRENTCOLOR*/ 3;\r
}\r
this.setColor(paintType, rgbColor, iccColor); //SVGColorのsetColorメソッドを用いる\r
-};\r
+}\r
// raises( SVGException );\r
-t = tproto = void 0;\r
-})(SVGPaint);\r
+} ) ;\r
\r
+/*makerのインタフェースをsvg要素のオブジェクトで補う場合のみ、getScreenCTMメソッドの扱いに注意すること*/\r
function SVGMarkerElement(_doc) {\r
_doc = void 0;\r
var sl = SVGAnimatedLength;\r
/*readonly SVGAnimatedLength*/ this.refX = new sl();\r
/*readonly SVGAnimatedLength*/ this.refY = new sl();\r
- /*readonly SVGAnimatedEnumeration*/ this.markerUnits = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.markerUnits = base("$SVGAnimatedEnumeration").up("$1");\r
this.markerUnits.baseVal = /*SVGMarkerElement.SVG_MARKERUNITS_STROKEWIDTH*/ 2;\r
/*readonly SVGAnimatedLength*/ this.markerWidth = new sl();\r
/*readonly SVGAnimatedLength*/ this.markerHeight = new sl();\r
this.markerWidth.baseVal.newValueSpecifiedUnits(1, 3);\r
this.markerHeight.baseVal.newValueSpecifiedUnits(1, 3);\r
sl = void 0;\r
- /*readonly SVGAnimatedEnumeration*/ this.orientType = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.orientType = base("$SVGAnimatedEnumeration").up("$1");\r
this.orientType.baseVal = /*SVGMarkerElement.SVG_MARKER_ORIENT_ANGLE*/ 2;\r
/*readonly SVGAnimatedAngle*/ this.orientAngle = new SVGAnimatedAngle();\r
- //SVGFitToViewBoxのインターフェースは$svgsvgelementで代用\r
+ //SVGFitToViewBoxのインターフェースはhttp://www.w3.org/2000/svgsvgオブジェクトで代用\r
this.addEventListener("DOMAttrModified", function(evt) {\r
var tar = evt.target,\r
en = evt.newValue,\r
/*unsigned short t.SVG_MARKER_ORIENT_UNKNOWN = 0;\r
/*unsigned short t.SVG_MARKER_ORIENT_AUTO = 1;\r
/*unsigned short t.SVG_MARKER_ORIENT_ANGLE = 2;*/\r
- t.prototype.getScreenCTM = SVGElement.prototype.getScreenCTM;\r
/*void*/ t.prototype.setOrientToAuto = function() {\r
this.orientType.baseVal = /*t.SVG_MARKER_ORIENT_AUTO*/ 1;\r
};\r
};\r
})(SVGMarkerElement);\r
function SVGColorProfileElement() {\r
- SVGElement.apply(this);\r
/*DOMString*/ this._local;\r
// raises DOMException on setting\r
// (NOTE: is prefixed by "_"\r
/*unsigned short*/ this.renderingIntent;\r
SVGURIReference.apply(this);\r
};\r
-SVGColorProfileElement.prototype = Object._create(SVGElement);\r
\r
-function SVGColorProfileRule() {\r
- SVGCSSRule.apply(this);\r
- /*DOMString*/ this.src;\r
- /*DOMString*/ this.name;\r
- /*unsigned short*/ this.renderingIntent;\r
-};\r
-SVGColorProfileRule.prototype = Object._create(SVGCSSRule);\r
+base("$CSSStyleRule").$SVGCSSRule.up("$SVGColorProfileRule").mix( {\r
+ /*DOMString this.src;*/\r
+ /*DOMString this.name;*/\r
+ /*unsigned short this.renderingIntent;*/\r
+} );\r
\r
function SVGGradientElement() {\r
- SVGElement.apply(this);\r
SVGURIReference.apply(this);\r
- /*readonly SVGAnimatedEnumeration*/ this.gradientUnits = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.gradientUnits = base("$SVGAnimatedEnumeration").up("$1");\r
/*readonly SVGAnimatedTransformList*/ this.gradientTransform = new SVGAnimatedTransformList();\r
- /*readonly SVGAnimatedEnumeration*/ this.spreadMethod = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.spreadMethod = base("$SVGAnimatedEnumeration").up("$1");\r
this.addEventListener("DOMNodeInsertedIntoDocument", function(evt) {\r
var grad = evt.target,\r
ele = evt._tar,\r
grad = grad2 = ele = stops = length = color = colors = opacity = evt = t = href = stop = sstyle = ci = o1 = o2 = void 0;\r
}, false);\r
};\r
-SVGGradientElement.prototype = Object._create(SVGElement);\r
// Spread Method Types\r
/*unsigned short SVGGradientElement.SVG_SPREADMETHOD_UNKNOWN = 0;\r
/*unsigned short SVGGradientElement.SVG_SPREADMETHOD_PAD = 1;\r
SVGRadialGradientElement.prototype = Object._create(SVGGradientElement);\r
\r
function SVGStopElement() {\r
- SVGElement.apply(this);\r
- /*readonly SVGAnimatedNumber*/ this.offset = new SVGAnimatedNumber();\r
+ /*readonly SVGAnimatedNumber*/ this.offset = base("$SVGAnimatedNumber").up("$1");\r
this.addEventListener("DOMAttrModified", function(evt) {\r
if (evt.attrName === "offset") {\r
var env = evt.newValue;\r
evt = void 0;\r
}, false);\r
};\r
-SVGStopElement.prototype = Object._create(SVGElement);\r
\r
function SVGPatternElement() {\r
- SVGElement.apply(this);\r
var sl = SVGAnimatedLength;\r
- /*readonly SVGAnimatedEnumeration*/ this.patternUnits = new SVGAnimatedEnumeration();\r
- /*readonly SVGAnimatedEnumeration*/ this.patternContentUnits = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.patternUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+ /*readonly SVGAnimatedEnumeration*/ this.patternContentUnits = base("$SVGAnimatedEnumeration").up("$1");\r
/*readonly SVGAnimatedTransformList*/ this.patternTransform = new SVGAnimatedTransformList();\r
/*readonly SVGAnimatedLength*/ this.x = new sl();\r
/*readonly SVGAnimatedLength*/ this.y = new sl();\r
/*readonly SVGAnimatedPreserveAspectRatio*/ this.preserveAspectRatio = new SVGAnimatedPreserveAspectRatio();\r
/*unsigned short*/ this.zoomAndPan = /*SVGZoomAndPan.SVG_ZOOMANDPAN_DISABLE*/ 1;\r
};\r
-SVGPatternElement.prototype = Object._create(SVGElement);\r
\r
function SVGClipPathElement() {\r
- SVGElement.apply(this);\r
- /*readonly SVGAnimatedEnumeration*/ this.clipPathUnits = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.clipPathUnits = base("$SVGAnimatedEnumeration").up("$1");\r
};\r
-SVGClipPathElement.prototype = Object._create(SVGElement);\r
\r
function SVGMaskElement() {\r
- SVGElement.apply(this);\r
var sl = SVGAnimatedLength;\r
- /*readonly SVGAnimatedEnumeration*/ this.maskUnits = new SVGAnimatedEnumeration();\r
- /*readonly SVGAnimatedEnumeration*/ this.maskContentUnits = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.maskUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+ /*readonly SVGAnimatedEnumeration*/ this.maskContentUnits = base("$SVGAnimatedEnumeration").up("$1");\r
/*readonly SVGAnimatedLength*/ this.x = new sl();\r
/*readonly SVGAnimatedLength*/ this.y = new sl();\r
/*readonly SVGAnimatedLength*/ this.width = new sl();\r
/*readonly SVGAnimatedLength*/ this.height = new sl();\r
sl = void 0;\r
};\r
-SVGMaskElement.prototype = Object._create(SVGElement);\r
\r
function SVGFilterElement() {\r
- SVGElement.apply(this);\r
var sl = SVGAnimatedLength;\r
- /*readonly SVGAnimatedEnumeration*/ this.filterUnits = new SVGAnimatedEnumeration();\r
- /*readonly SVGAnimatedEnumeration*/ this.primitiveUnits = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedEnumeration*/ this.filterUnits = base("$SVGAnimatedEnumeration").up("$1");\r
+ /*readonly SVGAnimatedEnumeration*/ this.primitiveUnits = base("$SVGAnimatedEnumeration").up("$1");\r
/*readonly SVGAnimatedLength*/ this.x = new sl();\r
/*readonly SVGAnimatedLength*/ this.y = new sl();\r
/*readonly SVGAnimatedLength*/ this.width = new sl();\r
/*readonly SVGAnimatedLength*/ this.height = new sl();\r
sl = void 0;\r
- /*readonly SVGAnimatedInteger*/ this.filterResX = new SVGAnimatedInteger();\r
- /*readonly SVGAnimatedInteger*/ this.filterResY = new SVGAnimatedInteger();\r
+ /*readonly SVGAnimatedInteger*/ this.filterResX = base("$SVGAnimatedInteger").up("$1");\r
+ /*readonly SVGAnimatedInteger*/ this.filterResY = base("$SVGAnimatedInteger").up("$1");\r
SVGURIReference.apply(this);\r
//setFilterRes (/*unsigned long*/ filterResX,/*unsigned long*/ filterResY );\r
};\r
-SVGFilterElement.prototype = Object._create(SVGElement);\r
\r
function SVGFilterPrimitiveStandardAttributes(ele) {\r
SVGStylable.apply(this, arguments);\r
/*readonly SVGAnimatedLength*/ this.y = new sl();\r
/*readonly SVGAnimatedLength*/ this.width = new sl();\r
/*readonly SVGAnimatedLength*/ this.height = new sl();\r
- /*readonly SVGAnimatedString*/ this.result = new sl();\r
+ /*readonly SVGAnimatedString*/ this.result = base("$SVGAnimatedString").up("$1");\r
sl = void 0;\r
};\r
SVGFilterPrimitiveStandardAttributes.prototype = Object._create(SVGStylable);\r
\r
function SVGFEBlendElement() {\r
- SVGElement.apply(this);\r
- /*readonly SVGAnimatedString*/ this.in1 = new SVGAnimatedString();\r
- /*readonly SVGAnimatedString*/ this.in2 = new SVGAnimatedString();\r
- /*readonly SVGAnimatedEnumeration*/ this.mode = new SVGAnimatedEnumeration();\r
+ /*readonly SVGAnimatedString*/ this.in1 = base("$SVGAnimatedString").up("$1");\r
+ /*readonly SVGAnimatedString*/ this.in2 = base("$SVGAnimatedString").up("$1");\r
+ /*readonly SVGAnimatedEnumeration*/ this.mode = base("$SVGAnimatedEnumeration").up("$1");\r
this._fpsa = SVGFilterPrimitiveStandardAttributes(this);\r
};\r
-SVGFEBlendElement.prototype = Object._create(SVGElement);\r
// Blend Mode Types\r
/*unsigned short SVGFEBlendElement.SVG_FEBLEND_MODE_UNKNOWN = 0;\r
/*unsigned short SVGFEBlendElement.SVG_FEBLEND_MODE_NORMAL = 1;\r
/*unsigned short SVGFEBlendElement.SVG_FEBLEND_MODE_LIGHTEN = 5;*/\r
\r
function SVGFEGaussianBlurElement() {\r
- SVGElement.apply(this);\r
- /*readonly SVGAnimatedString*/ this.in1 = new SVGAnimatedString();\r
- /*readonly SVGAnimatedNumber*/ this.stdDeviationX = new SVGAnimatedNumber();\r
- /*readonly SVGAnimatedNumber*/ this.stdDeviationY = new SVGAnimatedNumber();\r
+ /*readonly SVGAnimatedString*/ this.in1 = base("$SVGAnimatedString").up("$1");\r
+ /*readonly SVGAnimatedNumber*/ this.stdDeviationX = base("$SVGAnimatedNumber").up("$1");\r
+ /*readonly SVGAnimatedNumber*/ this.stdDeviationY = base("$SVGAnimatedNumber").up("$1");\r
this._fpsa = SVGFilterPrimitiveStandardAttributes(this);\r
};\r
-SVGFEGaussianBlurElement.prototype = Object._create(SVGElement);\r
/*void*/ SVGFEGaussianBlurElement.prototype.setStdDeviation = function(/*float*/ stdDeviationX, /*float*/ stdDeviationY ) {\r
\r
};\r
\r
function SVGCursorElement() {\r
- SVGElement.apply(this);\r
/*readonly SVGAnimatedLength*/ this.x = new SVGAnimatedLength();\r
/*readonly SVGAnimatedLength*/ this.y = new SVGAnimatedLength();\r
SVGURIReference.apply(this);\r
};\r
-SVGCursorElement.prototype = Object._create(SVGElement);\r
\r
function SVGAElement(_doc) {\r
- SVGElement.apply(this);\r
this._tar = _doc.createElement("a");\r
_doc = void 0;\r
- /*readonly SVGAnimatedString*/ this.target = new SVGAnimatedString();\r
+ /*readonly SVGAnimatedString*/ this.target = base("$SVGAnimatedString").up("$1");\r
this.target.baseVal = "_self";\r
this.addEventListener("DOMAttrModified", function(evt){\r
var tar = evt.target;\r
}\r
ob = NAIBU._search([sd.lastChild]);\r
}\r
- NAIBU.doc = new ActiveXObject("MSXML2.DomDocument");\r
+ try{\r
+ NAIBU.doc = new ActiveXObject("MSXML2.DomDocument");\r
+ } catch (e) {}\r
evt.preventDefault();\r
ob._next = {\r
_init: (function (ob) {\r
}, false);\r
SVGURIReference.apply(this);\r
};\r
-SVGAElement.prototype = Object._create(SVGElement);\r
\r
function SVGViewElement() {\r
- SVGElement.apply(this);\r
- /*readonly SVGStringList*/ this.viewTarget = new SVGStringList();\r
+ /*readonly SVGStringList*/ this.viewTarget = base("$SVGStringList").up("$1");\r
//SVGFitToViewBoxのインターフェースを用いる\r
/*readonly SVGAnimatedRect*/ this.viewBox = new SVGAnimatedRect();\r
/*readonly SVGAnimatedPreserveAspectRatio*/ this.preserveAspectRatio = new SVGAnimatedPreserveAspectRatio();\r
/*unsigned short*/ this.zoomAndPan = /*SVGZoomAndPan.SVG_ZOOMANDPAN_DISABLE*/ 1;\r
};\r
-SVGViewElement.prototype = Object._create(SVGElement);\r
\r
function SVGScriptElement() {\r
- SVGElement.apply(this);\r
/*DOMString*/ this.type;\r
SVGURIReference.apply(this);\r
this.addEventListener("DOMAttrModified", function(evt){\r
}, false);\r
}, false);\r
};\r
-SVGScriptElement.prototype = Object._create(SVGElement);\r
\r
-function SVGEvent() {\r
- Event.apply(this);\r
-};\r
-SVGEvent.prototype = Object._create(Event);\r
+base("$event").up("SVGEvents");\r
\r
-function SVGZoomEvent() {\r
- UIEvent.apply(this);\r
- /*readonly SVGRect*/ this.zoomRectScreen = new SVGRect();\r
+base("$event").SVGZoomEvents = base("$event").UIEvents.up("SVGZoomEvents").on("itnitialize", function() {\r
+ /*readonly SVGRect*/ this.zoomRectScreen = base("$SVGRect").up("$1");\r
/*readonly float*/ this.previousScale = this.newScale = 1;\r
- /*readonly SVGPoint*/ this.previousTranslate = new SVGPoint();\r
- /*readonly SVGPoint*/ this.newTranslate = new SVGPoint();\r
-};\r
-SVGZoomEvent.prototype = Object._create(UIEvent);\r
+ /*readonly SVGPoint*/ this.previousTranslate = base("$SVGPoint").up("$1");\r
+ /*readonly SVGPoint*/ this.newTranslate = base("$SVGPoint").up("$1");\r
+});\r
\r
function SVGAnimationElement() {\r
- SVGElement.apply(this);\r
/*SIEにおけるSVGElementでは、fill属性とStyleSheetを結びつける機構があるため、\r
*styleのsetPropertyメソッドを無効化させておく必要がある\r
*/\r
}, false);\r
};\r
(function(t) {\r
-SVGAnimationElement.prototype = t;\r
/*以下のメソッド(beginElementなど)については、\r
*別モジュールであるsmil::ElementTimeControl(smil.js)を参照のこと\r
*/\r
return (this._getOffset(this._dur));\r
}\r
};\r
-})(Object._create(SVGElement));\r
+})(SVGAnimationElement.prototype);\r
//raises( DOMException );\r
NAIBU.Time = {\r
currentFrame : 0,\r
ttr = tar.targetElement,\r
tta = ttr[attrName];\r
/*tar.valuesのリスト: ["12px", "13px"]\r
- *tar._valueList: [(new SVGPoint()), (new SVGPoint())]\r
+ *tar._valueList: [(base("$SVGPoint").up("$1")), (base("$SVGPoint").up("$1"))]\r
* tar.valuesを機械が理解できるように変換したものがtar._valueList\r
*この_valueListプロパティはアニメの際に使うので、_valuesプロパティはアニメ中に使わないことに注意\r
*/\r
} else if (!!CSS2Properties[attrName] || attrName.indexOf("-") > -1) { //スタイルシートのプロパティならば\r
for (var i=0, tav=tar._values, tvli=tav.length;i<tvli;++i) {\r
if ((attrName === "fill") || (attrName === "stroke") || (attrName === "stop-color")) {\r
- tar._valueList[i] = new SVGPaint();\r
+ tar._valueList[i] = base("$CSSValue").$SVGColor.$SVGPaint._new$();\r
tar._valueList[i].setPaint(1, null, tav[i], null);\r
} else {\r
tar._valueList[i] = parseFloat(tav[i]);\r
/*アニメーション中に変化すべき値をanimValプロパティに入力して、\r
*baseValと同じような値に設定。\r
*/\r
- trans.animVal = new SVGTransformList();\r
+ trans.animVal = base("$SVGStringList").$SVGTransformList.up("$1");;\r
if (trans.baseVal.numberOfItems !== 0) {\r
trans.animVal.initialize(trans.baseVal.createSVGTransformFromMatrix(trans.baseVal.consolidate().matrix));\r
} else {\r
SVGElement,\r
SVGURIReference,\r
SVGExternalResourcesRequired*/ {\r
- SVGElement.apply(this);\r
SVGURIReference.apply(this);\r
};\r
-SVGMPathElement.prototype = Object._create(SVGElement);\r
\r
function SVGAnimateColorElement() {\r
SVGAnimationElement.apply(this);\r
tar._values[0] = fstyle.getPropertyValue(attrName);\r
}\r
for (var i=0, tav=tar._values, tvli=tav.length;i<tvli;++i) {\r
- var to = new SVGColor();\r
+ var to = base("$CSSValue").$SVGColor._new$();\r
if (tar._values[i] === "currentColor") {\r
to.setRGBColor(fstyle.getPropertyValue("color") || "black");\r
} else if (tar._values[i] === "inherit") {\r
/*アニメーション中に変化すべき値をanimValプロパティに入力して、\r
*baseValと同じような値に設定。\r
*/\r
- trans.animVal = new SVGTransformList();\r
+ trans.animVal = base("$SVGStringList").$SVGTransformList.up("$1");\r
if (trans.baseVal.numberOfItems !== 0) {\r
trans.animVal.initialize(trans.baseVal.createSVGTransformFromMatrix(trans.baseVal.getItem(0).matrix));\r
}\r
SVGElement,\r
SVGExternalResourcesRequired,\r
SVGStylable*/ {\r
- SVGElement.apply(this);\r
/*_isExternalは外部から呼び出されたfont要素ならば、真(1)となる*/\r
/*boolean or number*/ this._isExternal = 0;\r
this.addEventListener("DOMNodeInserted", function(evt){\r
}, false);\r
}, false);\r
};\r
-SVGFontElement.prototype = Object._create(SVGElement);\r
\r
function SVGGlyphElement() /*:\r
SVGElement,\r
SVGStylable*/ {\r
- SVGElement.apply(this);\r
};\r
-SVGGlyphElement.prototype = Object._create(SVGElement);\r
\r
function SVGMissingGlyphElement() /*:\r
SVGElement,\r
SVGStylable*/ {\r
- SVGElement.apply(this);\r
};\r
-SVGMissingGlyphElement.prototype = Object._create(SVGElement);\r
\r
function SVGHKernElement() {\r
- SVGElement.apply(this);\r
};\r
-SVGHKernElement.prototype = Object._create(SVGElement);\r
\r
function SVGVKernElement() {\r
- SVGElement.apply(this);\r
};\r
-SVGVKernElement.prototype = Object._create(SVGElement);\r
\r
function SVGFontFaceElement() {\r
- SVGElement.apply(this);\r
/*boolean(or number)*/ this._isLinked = 0;\r
this.addEventListener("DOMNodeInserted", function(evt){\r
if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
}\r
}, false);\r
};\r
-SVGFontFaceElement.prototype = Object._create(SVGElement);\r
\r
function SVGFontFaceSrcElement() {\r
- SVGElement.apply(this);\r
};\r
-SVGFontFaceSrcElement.prototype = Object._create(SVGElement);\r
\r
function SVGFontFaceUriElement() {\r
- SVGElement.apply(this);\r
this.addEventListener("DOMNodeInserted", function(evt){\r
if (evt.eventPhase === /*Event.BUBBLING_PHASE*/ 3) {\r
return; //強制終了させる\r
}, false);\r
SVGURIReference.apply(this);\r
};\r
-SVGFontFaceUriElement.prototype = Object._create(SVGElement);\r
\r
function SVGFontFaceFormatElement() {\r
- SVGElement.apply(this);\r
};\r
-SVGFontFaceFormatElement.prototype = Object._create(SVGElement);\r
\r
function SVGFontFaceNameElement() {\r
- SVGElement.apply(this);\r
};\r
-SVGFontFaceNameElement.prototype = Object._create(SVGElement);\r
\r
function SVGDefinitionSrcElement() {\r
- SVGElement.apply(this);\r
};\r
-SVGDefinitionSrcElement.prototype = Object._create(SVGElement);\r
\r
function SVGForeignObjectElement(_doc) /*:\r
SVGElement,\r
SVGTransformable,\r
events::EventTarget*/ {\r
this._tar = _doc.createElement("v:group");\r
- SVGElement.apply(this);\r
var sl = SVGAnimatedLength;\r
/*readonly SVGAnimatedLength*/ this.x = new sl();\r
/*readonly SVGAnimatedLength*/ this.y = new sl();\r
}\r
}, true);\r
};\r
-SVGForeignObjectElement.prototype = Object._create(SVGElement);\r
\r
//#endif _SVG_IDL_\r
-DOMImplementation["http://www.w3.org/2000/svg"] = {\r
+base("DOMImplementation")["http://www.w3.org/2000/svg"] = {\r
g: SVGGElement,\r
path: NAIBU.SVGPathElement,\r
title: SVGTitleElement,\r
pattern: SVGPatternElement\r
};\r
(function(){\r
+ /*大幅な修正をせずに、base関数をsvg.jsのインターフェースに適用させるためのもの*/\r
var svg = base("$document").$element.$svgelement,\r
- list = DOMImplementation["http://www.w3.org/2000/svg"];\r
+ list = base("DOMImplementation")["http://www.w3.org/2000/svg"];\r
for (var i in list) {\r
list.hasOwnProperty(i) && svg.up("http://www.w3.org/2000/svg" + i)\r
.on("initialize", list[i])\r
*CSSprimitiveValueのリストを収納している。なお、その際に、writingModeなどはwriting-modeに変更している\r
*/\r
(function(){\r
- var s = new CSSStyleDeclaration(),\r
+ var s = base("$CSSStyleDeclaration")._new$(),\r
slis = s._list,\r
n = 0,\r
regAZ = /([A-Z])/,\r
window.onscroll = NAIBU.emptyFunction;\r
window.detachEvent("onload", NAIBU._main);\r
NAIBU.freeArg();\r
- Object._create = Element = SVGElement = Attr = NamedNodeMap = CSS2Properties = CSSValue = CSSPrimitiveValue = NAIBU.xmlhttp = Node = Event = NAIBU = STLog = SVGColor = SVGPaint = void 0;\r
+ base = Object._create = CSS2Properties = NAIBU.xmlhttp = NAIBU = STLog = void 0;\r
Array = ActiveXObject = void 0;\r
} catch(e) {}\r
}\r