X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F20_ui%2F02_XUI_Attr.js;h=26b9b3c0c9c471c096a5862e2e097210205c66e7;hb=3d352d8bf476ab57cc333e8d02d0e6ea5efa69b7;hp=36e8118c804ef8bced8bc9aaa3e782216f521d3f;hpb=a130cabd01fde8865990a59d849f5d5d08ed2119;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/20_ui/02_XUI_Attr.js b/0.6.x/js/20_ui/02_XUI_Attr.js index 36e8118..26b9b3c 100644 --- a/0.6.x/js/20_ui/02_XUI_Attr.js +++ b/0.6.x/js/20_ui/02_XUI_Attr.js @@ -1,67 +1,38 @@ -X.UI.Attr = { - AUTO : 1/0,//Number.POSITIVE_INFINITY, - FLOOR : new Function( 'v', 'return 0 <= v ? v | 0 : -( -v | 0 )' ), - - USER : { - XNODE : 0, - UINODE : 1, - LAYOUT : 2 - }, - - Type : { - LIST : 0, - LENGTH : 1, // '1.5em' - MINUS_LENGTH : 2, - PERCENT : 4, // '90%', 0.0 ~ 1.0 こういう指定はできない! - MINUS_PERCENT : 8, - NUMERICAL : 16, // 1.1 (lineHeight only) - AUTO : 32, // 'auto' - COLOR : 64, // 0x000000 ~ 0xFFFFFF, RED, #000000 ~ #FFFFFF, #000 ~ #FFF - URL : 128, - STRING : 128, - FONT_NAME : 256, - BOOLEAN : 512, - COMBI : 1024, - QUARTET : 2048, - DEFAULT_ONLY : 4096, - INIT_ONLY : 8192 +var XUI_Attr_AUTO = 1/0,//Number.POSITIVE_INFINITY, + XUI_Attr_FLOOR = new Function( 'v', 'return 0 <= v ? v | 0 : -( -v | 0 )' ), + XUI_Attr_USER = { + XNODE : 0, // 値は xnode.css にコピーされます。 + UINODE : 1, // 値は _uinode にコピーされます。 + LAYOUT : 2 // }, - - Option : { - BORDER_STYLE : X.UI.Util.createChecker( 'none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset' ), - ALIGN : X.UI.Util.createChecker( 'left,center,right,justify' ), - TEXT_DECORATION : X.UI.Util.createChecker( 'none,underline,overline,line-through,blink' ), - TEXT_TRANSFORM : X.UI.Util.createChecker( 'none,capitalize,lowercase,uppercase' ), - BOX_SIZING : X.UI.Util.createChecker( 'content,padding,border' ), - CURSOR : X.UI.Util.createChecker( 'pointer,wait' ) + XUI_Attr_Type = { + LIST : 16384, + LENGTH : 1, // '1.5em' + MINUS_LENGTH : 2, + PERCENT : 4, // '90%', 0.0 ~ 1.0 こういう指定はできない! + MINUS_PERCENT : 8, + NUMERICAL : 16, // 1.1 (lineHeight only) + AUTO : 32, // 'auto' + COLOR : 64, // 0x000000 ~ 0xFFFFFF, RED, #000000 ~ #FFFFFF, #000 ~ #FFF + URL : 128, + STRING : 128, + FONT_NAME : 256, + BOOLEAN : 512, + COMBI : 1024, + QUARTET : 2048, + DEFAULT_ONLY : 4096, + INIT_ONLY : 8192, + OBJECT : 32768 }, - - createAttrDef : function( base, defs ){ - var F = base ? X_Object_clone( base ) : {}, - z = base ? base._last : 0, - n = 1, - p, def; - - // 属性定義の上書き - for( p in defs ){ - if( X_EMPTY_OBJECT[ p ] ) continue; - if( p === '_last' ) continue; - if( !X_Type_isArray( def = defs[ p ] ) ) continue; - F[ p ] = def; - if( !base || !X_Type_isArray( base[ p ] ) ){ - def.No = z += n; - // add - n = def[ 3 ] & X.UI.Attr.Type.QUARTET ? 4 : - def[ 3 ] & X.UI.Attr.Type.COMBI ? 2 : 1; - } else { - def.No = base[ p ].No; - }; - }; - F._last = z; - return F; + XUI_Attr_Option = { + BORDER_STYLE : 'none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset', + ALIGN : 'left,center,right,justify', + TEXT_DECORATION : 'none,underline,overline,line-through,blink', + TEXT_TRANSFORM : 'none,capitalize,lowercase,uppercase', + BOX_SIZING : 'content,padding,border', + CURSOR : 'pointer,wait' }, - - CSS3 : { + XUI_Attr_CSS3 = { opacity : true, bgColorAlpha : true, bgGradient : true, @@ -74,15 +45,13 @@ X.UI.Attr = { textShadowBlur : true, textShadowAlpha : true }, - - Rename : { - bgColor : 'background-color', + XUI_Attr_Rename = { + bgColor : 'backgroundColor', fontColor : 'color', fontBold : 'fontWeight', fontItalic : 'fontStyle', fontSmallCaps : 'fontVariant' - } -}; + }, /* * 0: 初期値 : undefined は不可! @@ -91,66 +60,119 @@ X.UI.Attr = { * 3: 受け付けるデータ型 * 4: 選択方式の場合、その候補 */ -X.UI.Attr.Support = X.UI.Attr.createAttrDef( false, + XUI_Attr_Support = XUI_Attr_createAttrDef( 0, { - className : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ], - pointerHoverClass : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ], - pointerDownClass : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ], - invalidLayoutColor: [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.COLOR ], + className : [ '', XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.STRING ], + pointerHoverClass : [ '', XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.STRING ], + pointerDownClass : [ null, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.STRING ], + invalidLayoutColor: [ null, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.DEFAULT_ONLY | XUI_Attr_Type.COLOR ], - role : [ 0, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome' ], - selectable : [ false, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.BOOLEAN ], + dataFeild : [ '', XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.STRING ], - visible : [ true, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ], - pointerEnabled : [ false, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ], - pointerChildren : [ true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ], - cursor : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.CURSOR ], - tooltip : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.STRING ], + role : [ 1, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.LIST, 'none,chrome' ], + selectable : [ false, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.INIT_ONLY | XUI_Attr_Type.BOOLEAN ], - borderWidth : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ], // em [ top, right, bottom, left ] - padding : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ], + visible : [ true, XUI_Dirty.LAYOUT, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ], + pointerEnabled : [ false, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ], + pointerChildren : [ true, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.BOOLEAN ], + cursor : [ 1, XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.LIST, XUI_Attr_Option.CURSOR ], + tooltip : [ '', XUI_Dirty.CLEAN, XUI_Attr_USER.UINODE, XUI_Attr_Type.STRING ], - width : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ], - minWidth : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ], - maxWidth : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ], - height : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ], - minHeight : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ], - maxHeight : [ X.UI.Attr.AUTO, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.AUTO ], - sizing : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LIST, X.UI.Attr.Option.BOX_SIZING ], - left : [ null, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ], - top : [ null, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ], - bottom : [ null, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ], - right : [ null, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT | X.UI.Attr.Type.MINUS_LENGTH | X.UI.Attr.Type.MINUS_PERCENT ], + borderWidth : [ 0, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.QUARTET | XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ], // em [ top, right, bottom, left ] + padding : [ 0, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.QUARTET | XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ], + + width : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ], + minWidth : [ 0, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ], + maxWidth : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ], + height : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ], + minHeight : [ 0, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ], + maxHeight : [ XUI_Attr_AUTO, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.AUTO ], + sizing : [ 1, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LIST, XUI_Attr_Option.BOX_SIZING ], + left : [ null, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ], + top : [ null, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ], + bottom : [ null, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ], + right : [ null, XUI_Dirty.LAYOUT, XUI_Attr_USER.LAYOUT, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT | XUI_Attr_Type.MINUS_LENGTH | XUI_Attr_Type.MINUS_PERCENT ], - borderColor : [ 0x0, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.COLOR ], // color [ top, right, bottom, left ] - borderStyle : [ 0, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.QUARTET | X.UI.Attr.Type.LIST, X.UI.Attr.Option.BORDER_STYLE ], // string [ top, right, bottom, left ] - bgColor : [ 0xFFFFFF, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.COLOR ], // color, none + borderColor : [ 0x0, XUI_Dirty.PAINT, XUI_Attr_USER.XNODE, XUI_Attr_Type.QUARTET | XUI_Attr_Type.COLOR ], // color [ top, right, bottom, left ] + borderStyle : [ 1, XUI_Dirty.PAINT, XUI_Attr_USER.XNODE, XUI_Attr_Type.QUARTET | XUI_Attr_Type.LIST, XUI_Attr_Option.BORDER_STYLE ], // string [ top, right, bottom, left ] + bgColor : [ 0xFFFFFF, XUI_Dirty.PAINT, XUI_Attr_USER.XNODE, XUI_Attr_Type.COLOR ], // color, none - fontColor : [ 0x0, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.COLOR ], - fontFamily : [ null, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.FONT_NAME ], - fontSize : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ], - fontBold : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'bold' ], - fontItalic : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'italic' ], - fontSmallCaps : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'small-caps' ], - lineHeight : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.NUMERICAL ], // percent - letterSpacing : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH ], - wordSpacing : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH ], - textAlign : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.ALIGN ], - textDecoration : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_DECORATION ], - textTransform : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_TRANSFORM ] + fontColor : [ 0x0, XUI_Dirty.PAINT, XUI_Attr_USER.XNODE, XUI_Attr_Type.COLOR ], + fontFamily : [ null, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.FONT_NAME ], + fontSize : [ 1, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.LENGTH | XUI_Attr_Type.PERCENT ], + fontBold : [ false, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.BOOLEAN, 'bold' ], + fontItalic : [ false, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.BOOLEAN, 'italic' ], + fontSmallCaps : [ false, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.BOOLEAN, 'small-caps' ], + lineHeight : [ 1, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.NUMERICAL ], // percent + letterSpacing : [ 0, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.LENGTH ], + wordSpacing : [ 0, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.LENGTH ], + textAlign : [ 1, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.LIST, XUI_Attr_Option.ALIGN ], + textDecoration : [ 1, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.LIST, XUI_Attr_Option.TEXT_DECORATION ], + textTransform : [ 1, XUI_Dirty.FONT, XUI_Attr_USER.XNODE, XUI_Attr_Type.LIST, XUI_Attr_Option.TEXT_TRANSFORM ] } -); +), /* * 共通する attr 指定を prototype に設定しながら拡張できる、属性データ保持クラス */ -X.UI.attrClassProto = null; +XUI_attrClassProto = null, -X.UI.AttrClass = X.Class.create( 'X.UI.AttrClass', X.Class.POOL_OBJECT ); +XUI_AttrClass = X_Class_create( 'XUI_AttrClass', X_Class.POOL_OBJECT ); +/* + * 'none,chrome,container' を受け取ったら、 + * { + * 'none' : 1, + * 'chrome' : 2, + * 'container' : 3, + * 1 : 'none', + * 2 : 'chrome', + * 3 : 'container' + * } こんな object を返す。 + */ +function XUI_createChecker( str ){ + var ret = {}, + ary = str.split( ',' ), + l = ary.length, + i = 0, v; + for( ; i < l; ){ + v = ary[ i ]; + ret[ v ] = ++i; + ret[ i ] = v; + }; + return ret; +}; + + function XUI_Attr_createAttrDef( base, defs ){ + var F = base ? X_Object_copy( base ) : {}, + z = base ? base._last : 0, + n = 1, + p, def; + + // 属性定義の上書き + for( p in defs ){ + if( X_EMPTY_OBJECT[ p ] ) continue; + if( p === '_last' ) continue; + if( !X_Type_isArray( def = defs[ p ] ) ) continue; + F[ p ] = def; + if( !base || !X_Type_isArray( base[ p ] ) ){ + def.No = z += n; + // add + n = def[ 3 ] & XUI_Attr_Type.QUARTET ? 4 : + def[ 3 ] & XUI_Attr_Type.COMBI ? 2 : 1; + } else { + def.No = base[ p ].No; + }; + if( def[ 3 ] & XUI_Attr_Type.LIST && X_Type_isString( def[ 4 ] ) ){ + def[ 4 ] = XUI_createChecker( def[ 4 ] ); + }; + }; + F._last = z; + return F; + }; -X.UI.Attr.copy = function( proto, supports ){ +function XUI_Attr_copy( proto, supports ){ var support, p; for( p in supports ){ @@ -158,33 +180,34 @@ X.UI.Attr.copy = function( proto, supports ){ if( p === '_last' ) continue; support = supports[ p ]; proto[ support.No ] = support[ 0 ]; - if( support[ 3 ] & X.UI.Attr.Type.QUARTET ){ + if( support[ 3 ] & XUI_Attr_Type.QUARTET ){ proto[ support.No + 1 ] = support[ 0 ]; proto[ support.No + 2 ] = support[ 0 ]; proto[ support.No + 3 ] = support[ 0 ]; } else - if( support[ 3 ] & X.UI.Attr.Type.COMBI ){ + if( support[ 3 ] & XUI_Attr_Type.COMBI ){ proto[ support.No + 1 ] = support[ 0 ]; }; }; }; -X.UI.Attr.copy( X.UI.AttrClass.prototype, X.UI.Attr.Support ); +XUI_Attr_copy( XUI_AttrClass.prototype, XUI_Attr_Support ); -X.UI.Attr.preset = function( baseKlass, opt_supports, opt_attrs ){ +function XUI_Attr_preset( baseKlass, opt_supports, opt_attrs ){ var klass = baseKlass.inherits(), proto = klass.prototype, + supports = proto.usableAttrs || opt_supports, p; // 属性プリセット - X.UI.Attr.copy( proto, opt_supports ); + XUI_Attr_copy( proto, opt_supports ); // setAttr に書き換え - X.UI.attrClassProto = proto; + XUI_attrClassProto = proto; for( p in opt_attrs ){ if( X_EMPTY_OBJECT[ p ] ) continue; - opt_supports[ p ] && X.UI._AbstractUINode.prototype.setAttr( p, opt_supports[ p ], opt_attrs[ p ] ); + supports[ p ] && XUI_AbstractUINode.prototype.setAttr( p, supports[ p ], opt_attrs[ p ] ); }; - X.UI.attrClassProto = null; + XUI_attrClassProto = null; return klass; };