2 AUTO : 1/0,//Number.POSITIVE_INFINITY,
\r
3 FLOOR : new Function( 'v', 'return 0 <= v ? v | 0 : -( -v | 0 )' ),
\r
7 UINODE : 1, // 値は _uinode にコピーされます。
\r
13 LENGTH : 1, // '1.5em'
\r
15 PERCENT : 4, // '90%', 0.0 ~ 1.0 こういう指定はできない!
\r
17 NUMERICAL : 16, // 1.1 (lineHeight only)
\r
18 AUTO : 32, // 'auto'
\r
19 COLOR : 64, // 0x000000 ~ 0xFFFFFF, RED, #000000 ~ #FFFFFF, #000 ~ #FFF
\r
26 DEFAULT_ONLY : 4096,
\r
31 BORDER_STYLE : 'none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset',
\r
32 ALIGN : 'left,center,right,justify',
\r
33 TEXT_DECORATION : 'none,underline,overline,line-through,blink',
\r
34 TEXT_TRANSFORM : 'none,capitalize,lowercase,uppercase',
\r
35 BOX_SIZING : 'content,padding,border',
\r
36 CURSOR : 'pointer,wait'
\r
41 bgColorAlpha : true,
\r
43 bgGradientAplha : true,
\r
44 cournerRadius : true,
\r
45 boxShadowBlur : true,
\r
46 boxShadowAlpha : true,
\r
49 textShadowBlur : true,
\r
50 textShadowAlpha : true
\r
54 bgColor : 'background-color',
\r
55 fontColor : 'color',
\r
56 fontBold : 'fontWeight',
\r
57 fontItalic : 'fontStyle',
\r
58 fontSmallCaps : 'fontVariant'
\r
62 function XUI_Attr_createAttrDef( base, defs ){
\r
63 var F = base ? X_Object_clone( base ) : {},
\r
64 z = base ? base._last : 0,
\r
70 if( X_EMPTY_OBJECT[ p ] ) continue;
\r
71 if( p === '_last' ) continue;
\r
72 if( !X_Type_isArray( def = defs[ p ] ) ) continue;
\r
74 if( !base || !X_Type_isArray( base[ p ] ) ){
\r
77 n = def[ 3 ] & X.UI.Attr.Type.QUARTET ? 4 :
\r
78 def[ 3 ] & X.UI.Attr.Type.COMBI ? 2 : 1;
\r
80 def.No = base[ p ].No;
\r
82 if( def[ 3 ] & X.UI.Attr.Type.LIST && X_Type_isString( def[ 4 ] ) ){
\r
83 def[ 4 ] = XUI_createChecker( def[ 4 ] );
\r
91 * 0: 初期値 : undefined は不可!
\r
97 X.UI.Attr.Support = XUI_Attr_createAttrDef( 0,
\r
99 className : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],
\r
100 pointerHoverClass : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],
\r
101 pointerDownClass : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],
\r
102 invalidLayoutColor: [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.COLOR ],
\r
104 role : [ 1, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome' ],
\r
105 selectable : [ false, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.BOOLEAN ],
\r
107 visible : [ true, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],
\r
108 pointerEnabled : [ false, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],
\r
109 pointerChildren : [ true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],
\r
110 cursor : [ 1, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.CURSOR ],
\r
111 tooltip : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.STRING ],
\r
113 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 ]
\r
114 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 ],
\r
116 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 ],
\r
117 minWidth : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],
\r
118 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 ],
\r
119 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 ],
\r
120 minHeight : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],
\r
121 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 ],
\r
122 sizing : [ 1, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LIST, X.UI.Attr.Option.BOX_SIZING ],
\r
123 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 ],
\r
124 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 ],
\r
125 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 ],
\r
126 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 ],
\r
128 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 ]
\r
129 borderStyle : [ 1, 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 ]
\r
130 bgColor : [ 0xFFFFFF, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.COLOR ], // color, none
\r
132 fontColor : [ 0x0, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.COLOR ],
\r
133 fontFamily : [ null, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.FONT_NAME ],
\r
134 fontSize : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],
\r
135 fontBold : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'bold' ],
\r
136 fontItalic : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'italic' ],
\r
137 fontSmallCaps : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'small-caps' ],
\r
138 lineHeight : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.NUMERICAL ], // percent
\r
139 letterSpacing : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH ],
\r
140 wordSpacing : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH ],
\r
141 textAlign : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.ALIGN ],
\r
142 textDecoration : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_DECORATION ],
\r
143 textTransform : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_TRANSFORM ]
\r
148 * 共通する attr 指定を prototype に設定しながら拡張できる、属性データ保持クラス
\r
151 X.UI.attrClassProto = null;
\r
153 X.UI.AttrClass = X_Class_create( 'X.UI.AttrClass', X_Class.POOL_OBJECT );
\r
156 X.UI.Attr.copy = function( proto, supports ){
\r
159 for( p in supports ){
\r
160 if( X_EMPTY_OBJECT[ p ] ) continue;
\r
161 if( p === '_last' ) continue;
\r
162 support = supports[ p ];
\r
163 proto[ support.No ] = support[ 0 ];
\r
164 if( support[ 3 ] & X.UI.Attr.Type.QUARTET ){
\r
165 proto[ support.No + 1 ] = support[ 0 ];
\r
166 proto[ support.No + 2 ] = support[ 0 ];
\r
167 proto[ support.No + 3 ] = support[ 0 ];
\r
169 if( support[ 3 ] & X.UI.Attr.Type.COMBI ){
\r
170 proto[ support.No + 1 ] = support[ 0 ];
\r
175 X.UI.Attr.copy( X.UI.AttrClass.prototype, X.UI.Attr.Support );
\r
177 X.UI.Attr.preset = function( baseKlass, opt_supports, opt_attrs ){
\r
178 var klass = baseKlass.inherits(),
\r
179 proto = klass.prototype,
\r
183 X.UI.Attr.copy( proto, opt_supports );
\r
186 X.UI.attrClassProto = proto;
\r
187 for( p in opt_attrs ){
\r
188 if( X_EMPTY_OBJECT[ p ] ) continue;
\r
189 opt_supports[ p ] && X.UI._AbstractUINode.prototype.setAttr( p, opt_supports[ p ], opt_attrs[ p ] );
\r
191 X.UI.attrClassProto = null;
\r