2 AUTO : 1/0,//Number.POSITIVE_INFINITY,
\r
3 FLOOR : new Function( 'v', 'return 0 <= v ? v | 0 : -( -v | 0 )' ),
\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 : X.UI.Util.createChecker( 'none,hidden,dotted,dashed,solid,double,groove,ridge,inset,outset' ),
\r
32 ALIGN : X.UI.Util.createChecker( 'left,center,right,justify' ),
\r
33 TEXT_DECORATION : X.UI.Util.createChecker( 'none,underline,overline,line-through,blink' ),
\r
34 TEXT_TRANSFORM : X.UI.Util.createChecker( 'none,capitalize,lowercase,uppercase' ),
\r
35 BOX_SIZING : X.UI.Util.createChecker( 'content,padding,border' ),
\r
36 CURSOR : X.UI.Util.createChecker( 'pointer,wait' )
\r
39 createAttrDef : function( base, defs ){
\r
40 var F = base ? X_Object_clone( base ) : {},
\r
41 z = base ? base._last : 0,
\r
47 if( X_EMPTY_OBJECT[ p ] ) continue;
\r
48 if( p === '_last' ) continue;
\r
49 if( !X_Type_isArray( def = defs[ p ] ) ) continue;
\r
51 if( !base || !X_Type_isArray( base[ p ] ) ){
\r
54 n = def[ 3 ] & X.UI.Attr.Type.QUARTET ? 4 :
\r
55 def[ 3 ] & X.UI.Attr.Type.COMBI ? 2 : 1;
\r
57 def.No = base[ p ].No;
\r
66 bgColorAlpha : true,
\r
68 bgGradientAplha : true,
\r
69 cournerRadius : true,
\r
70 boxShadowBlur : true,
\r
71 boxShadowAlpha : true,
\r
74 textShadowBlur : true,
\r
75 textShadowAlpha : true
\r
79 bgColor : 'background-color',
\r
80 fontColor : 'color',
\r
81 fontBold : 'fontWeight',
\r
82 fontItalic : 'fontStyle',
\r
83 fontSmallCaps : 'fontVariant'
\r
88 * 0: 初期値 : undefined は不可!
\r
94 X.UI.Attr.Support = X.UI.Attr.createAttrDef( false,
\r
96 className : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],
\r
97 pointerHoverClass : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],
\r
98 pointerDownClass : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.STRING ],
\r
99 invalidLayoutColor: [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.DEFAULT_ONLY | X.UI.Attr.Type.COLOR ],
\r
101 role : [ 0, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.LIST, 'none,chrome' ],
\r
102 selectable : [ false, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.INIT_ONLY | X.UI.Attr.Type.BOOLEAN ],
\r
104 visible : [ true, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],
\r
105 pointerEnabled : [ false, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],
\r
106 pointerChildren : [ true, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.BOOLEAN ],
\r
107 cursor : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.CURSOR ],
\r
108 tooltip : [ null, X.UI.Dirty.CLEAN, X.UI.Attr.USER.UINODE, X.UI.Attr.Type.STRING ],
\r
110 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
111 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
113 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
114 minWidth : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],
\r
115 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
116 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
117 minHeight : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],
\r
118 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
119 sizing : [ 0, X.UI.Dirty.LAYOUT, X.UI.Attr.USER.LAYOUT, X.UI.Attr.Type.LIST, X.UI.Attr.Option.BOX_SIZING ],
\r
120 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
121 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
122 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
123 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
125 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
126 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 ]
\r
127 bgColor : [ 0xFFFFFF, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.COLOR ], // color, none
\r
129 fontColor : [ 0x0, X.UI.Dirty.PAINT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.COLOR ],
\r
130 fontFamily : [ null, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.FONT_NAME ],
\r
131 fontSize : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH | X.UI.Attr.Type.PERCENT ],
\r
132 fontBold : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'bold' ],
\r
133 fontItalic : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'italic' ],
\r
134 fontSmallCaps : [ false, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.BOOLEAN, 'small-caps' ],
\r
135 lineHeight : [ 1, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.NUMERICAL ], // percent
\r
136 letterSpacing : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH ],
\r
137 wordSpacing : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LENGTH ],
\r
138 textAlign : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.ALIGN ],
\r
139 textDecoration : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_DECORATION ],
\r
140 textTransform : [ 0, X.UI.Dirty.FONT, X.UI.Attr.USER.XNODE, X.UI.Attr.Type.LIST, X.UI.Attr.Option.TEXT_TRANSFORM ]
\r
145 * 共通する attr 指定を prototype に設定しながら拡張できる、属性データ保持クラス
\r
148 X.UI.attrClassProto = null;
\r
150 X.UI.AttrClass = X_Class_create( 'X.UI.AttrClass', X_Class.POOL_OBJECT );
\r
153 X.UI.Attr.copy = function( proto, supports ){
\r
156 for( p in supports ){
\r
157 if( X_EMPTY_OBJECT[ p ] ) continue;
\r
158 if( p === '_last' ) continue;
\r
159 support = supports[ p ];
\r
160 proto[ support.No ] = support[ 0 ];
\r
161 if( support[ 3 ] & X.UI.Attr.Type.QUARTET ){
\r
162 proto[ support.No + 1 ] = support[ 0 ];
\r
163 proto[ support.No + 2 ] = support[ 0 ];
\r
164 proto[ support.No + 3 ] = support[ 0 ];
\r
166 if( support[ 3 ] & X.UI.Attr.Type.COMBI ){
\r
167 proto[ support.No + 1 ] = support[ 0 ];
\r
172 X.UI.Attr.copy( X.UI.AttrClass.prototype, X.UI.Attr.Support );
\r
174 X.UI.Attr.preset = function( baseKlass, opt_supports, opt_attrs ){
\r
175 var klass = baseKlass.inherits(),
\r
176 proto = klass.prototype,
\r
180 X.UI.Attr.copy( proto, opt_supports );
\r
183 X.UI.attrClassProto = proto;
\r
184 for( p in opt_attrs ){
\r
185 if( X_EMPTY_OBJECT[ p ] ) continue;
\r
186 opt_supports[ p ] && X.UI._AbstractUINode.prototype.setAttr( p, opt_supports[ p ], opt_attrs[ p ] );
\r
188 X.UI.attrClassProto = null;
\r