OSDN Git Service

Fix the bug of X.NodeAnime.
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 02_XNodeFlags.js
1 var X_NodeFlags_DESTROYED              = 0x0,\r
2         X_NodeFlags_EXIST                  = 0x1,\r
3         X_NodeFlags_IN_TREE                = 0x2, // xnode が(仮想)ツリーに追加されている -> 描画の対象\r
4 \r
5         X_NodeFlags_STYLE_IS_DISPLAY_NONE  = 2 <<  1, // display    : none              \r
6         X_NodeFlags_STYLE_IS_INVISIBLE     = 2 <<  2, // visibility : hidden or opacity : 0\r
7         X_NodeFlags_STYLE_IS_POS_ABSOLUTE  = 2 <<  3, // position   : absolute\r
8         X_NodeFlags_STYLE_IS_NO_OVERFLOW   = 2 <<  4, // overflow   : hidden\r
9         X_NodeFlags_STYLE_IS_WIDTH_LENGTH  = 2 <<  5, // width  : overflow:hidden,要素無し、または要素が非表示なら、 width() のための commitUpdate が不要\r
10         X_NodeFlags_STYLE_IS_WIDTH_PCT     = 2 <<  6, // width  : width() のための commitUpdate が不要かもしれない。(親で LENGTH が指定されているなら)\r
11         X_NodeFlags_STYLE_IS_HEIGHT_LENGTH = 2 <<  7, // height :\r
12         X_NodeFlags_STYLE_IS_HEIGHT_PCT    = 2 <<  8, // height :\r
13         X_NodeFlags_STYLE_IS_FONT_LENGTH   = 2 <<  9, // fontSize :\r
14         X_NodeFlags_STYLE_IS_FONT_PCT      = 2 << 10, // fontSize :\r
15 \r
16         X_NodeFlags_DIRTY_POSITION         = 2 << 11, // 要素位置の変更が起こった。\r
17         X_NodeFlags_DIRTY_CONTENT          = 2 << 12, // width, height, x, y textNode の内容 TODO html と排他なので ID と共通でいい\r
18         X_NodeFlags_DIRTY_ID               = 2 << 12, // width, height, x, y\r
19         X_NodeFlags_DIRTY_CLASSNAME        = 2 << 13, // X_Node_CSS_getCharSize, width, height, x, y\r
20         X_NodeFlags_DIRTY_ATTR             = 2 << 14, // X_Node_CSS_getCharSize, width, height, x, y\r
21         X_NodeFlags_DIRTY_CSS              = 2 << 15, // X_Node_CSS_getCharSize, width, height, x, y\r
22         X_NodeFlags_DIRTY_IE_FILTER        = X_UA[ 'IE' ] < 10 && X_UA[ 'ActiveX' ] ? 2 << 16 : 0, // \r
23 \r
24         X_NodeFlags_ACTUAL_LISTENING       = 2 << 17,\r
25         X_NodeFlags_OLD_ATTRTEXT           = 2 << 18,\r
26         X_NodeFlags_OLD_CSSTEXT            = 2 << 19,\r
27 \r
28                 // filter 要素が親子になると不具合が出るのを検出\r
29         X_NodeFlags_IE_FILTER_NOW          = 2 << 20,\r
30 \r
31                 //GPU_WAITING            = 2 << 20, // 1:子のGPU解除待\r
32         X_NodeFlags_GPU_RESERVED           = 2 << 21, // 2:GPU予約\r
33         X_NodeFlags_GPU_NOW                = 2 << 22, // 3:GPU now!\r
34         X_NodeFlags_GPU_RELEASE_RESERVED   = 2 << 23, // 4:GPU解除予約\r
35         X_NodeFlags_GPU_CHILD              = 2 << 24, \r
36         \r
37         X_NodeFlags_IE4_HAS_TEXTNODE       = X_UA[ 'IE4' ] ? 2 << 21 : 0,\r
38         X_NodeFlags_IE4_HAS_ELEMENT        = X_UA[ 'IE4' ] ? 2 << 22 : 0,\r
39         X_NodeFlags_IE4_DIRTY_CHILDREN     = X_UA[ 'IE4' ] ? 2 << 23 : 0,\r
40         X_NodeFlags_IE4_FIXED              = X_UA[ 'IE4' ] ? 2 << 24 : 0,\r
41 \r
42         X_NodeFlags_IE5_DISPLAY_NONE_FIX   = X_UA[ 'IE5' ] && X_UA[ 'ActiveX' ] ? 2 << 24 : 0,\r
43         X_NodeFlags_IE8_OPACITY_FIX        = 0,//X_UA[ 'IE8' ] && X_UA[ 'ActiveX' ] ? 2 << 25 : 0,\r
44         X_NodeFlags_IE_FILTER_FIX_AFTER    = X_UA[ 'ActiveX' ] && 2 << 26,\r
45         \r
46         // http://modernizr.com/downloads/modernizr.js\r
47         // Thanks to Erik Dahlstrom\r
48         X_NodeFlags_IS_SVG                 = document.createElementNS && document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' )[ 'createSVGRect' ] ? 2 << 27 : 0,\r
49         X_NodeFlags_IS_VML                 =\r
50                         ( function(){\r
51                                 if( !X_UA[ 'ActiveX' ] || X_UA[ 'IE' ] < 5 || 9 < X_UA[ 'IE' ] /* || X_UA[ 'ieExeComError' ] */ ) return 0; // standalone の除外 -> X_UA[ 'ieExeComError' ]\r
52 \r
53                                 document.write(\r
54                                         '<!--[if vml]><script id=vmltest1>__vml=1;</script><![endif]-->' +\r
55                                         '<!--[if gte vml 1]><script id=vmltest2>__vml=2;</script><![endif]-->' );\r
56                                 \r
57                                 /**\r
58                                  * VML のバージョン\r
59                                  * @alias X.Doc.VML\r
60                                  * @type {number}\r
61                                  */\r
62                                 X[ 'Doc' ][ 'VML' ] = window[ '__vml' ] / 2 || 0;                               \r
63                                 \r
64                                 switch( window[ '__vml' ] ){\r
65                                         case 2 :\r
66                                                 document.getElementById( 'vmltest2' ).removeNode( true );\r
67                                         case 1 :\r
68                                                 document.getElementById( 'vmltest1' ).removeNode( true );\r
69                                                 return 2 << 28;\r
70                                 };\r
71                                 return 0;\r
72                         })(),\r
73 \r
74         X_Node_BITMASK_RESET_STYLE  = ( ( 2 << 29 ) - 1 + ( 2 << 29 ) ) ^ (\r
75                 X_NodeFlags_STYLE_IS_DISPLAY_NONE |\r
76                 X_NodeFlags_STYLE_IS_INVISIBLE |\r
77                 X_NodeFlags_STYLE_IS_POS_ABSOLUTE |\r
78                 X_NodeFlags_STYLE_IS_NO_OVERFLOW |\r
79                 X_NodeFlags_STYLE_IS_WIDTH_LENGTH |\r
80                 X_NodeFlags_STYLE_IS_WIDTH_PCT |\r
81                 X_NodeFlags_STYLE_IS_HEIGHT_LENGTH |\r
82                 X_NodeFlags_STYLE_IS_HEIGHT_PCT |\r
83                 X_NodeFlags_STYLE_IS_FONT_LENGTH |\r
84                 X_NodeFlags_STYLE_IS_FONT_PCT ),\r
85 \r
86         X_Node_BitMask_IS_DIRTY     = X_NodeFlags_DIRTY_POSITION | \r
87                 X_NodeFlags_DIRTY_CONTENT | X_NodeFlags_DIRTY_ID | X_NodeFlags_DIRTY_CLASSNAME |\r
88                 X_NodeFlags_DIRTY_ATTR | X_NodeFlags_DIRTY_CSS | X_NodeFlags_DIRTY_IE_FILTER | X_NodeFlags_IE8_OPACITY_FIX,\r
89 \r
90         X_Node_BitMask_RESET_DIRTY  = ( ( 2 << 29 ) - 1 + ( 2 << 29 ) ) ^ X_Node_BitMask_IS_DIRTY,\r
91         \r
92         X_Node_BitMask_RESET_GPU    = ( ( 2 << 29 ) - 1 + ( 2 << 29 ) ) ^ ( X_NodeFlags_GPU_RESERVED | X_NodeFlags_GPU_NOW | X_NodeFlags_GPU_RELEASE_RESERVED ),\r
93         \r
94         X_Node_BitMask_IE4_IS_MIX   = X_NodeFlags_IE4_HAS_TEXTNODE | X_NodeFlags_IE4_HAS_ELEMENT;\r
95 \r
96 // TODO SVGのバージョン\r
97 /**\r
98  * SVG が有効か?\r
99  * @alias X.Doc.SVG\r
100  * @type {boolean}\r
101  */\r
102 X[ 'Doc' ][ 'SVG' ] = !!X_NodeFlags_IS_SVG;\r