2 var X_Util_Image_actualSize = {};
\r
5 getActualDimension : X_Util_Image_getActualDimension
\r
7 // Alpha Image, data uri ong ...
\r
13 * AUTHOR: uupaa.js@gmail.com
\r
15 function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){
\r
16 var xnode, img, remove, ret, run, memW, memH, w, h;
\r
18 if( X.Type.isString( XnodeOrImageElemOrSrc ) ){
\r
19 if( ret = X_Util_Image_actualSize[ X_URL_toAbsolutePath( XnodeOrImageElemOrSrc ) ] ) return ret;
\r
21 xnode = X.Dom.Node._systemNode.create(
\r
24 src : XnodeOrImageElemOrSrc
\r
27 position : 'absolute'
\r
30 Node._body._startUpdate();
\r
31 img = xnode._ie4getRawNode ? xnode._ie4getRawNode() : xnode._rawObject;
\r
34 if( XnodeOrImageElemOrSrc.constructor === X.Dom.Node ){
\r
35 xnode = XnodeOrImageElemOrSrc;
\r
36 img = xnode._ie4getRawNode ? xnode._ie4getRawNode() : xnode._rawObject;
\r
38 if( X.Type.isHTMLElement( XnodeOrImageElemOrSrc ) ){
\r
39 img = XnodeOrImageElemOrSrc;
\r
41 if( XnodeOrImageElemOrSrc.constructor === X.EventDispatcher && X.Type.isImage( XnodeOrImageElemOrSrc._rawObject ) ){
\r
42 xnode = XnodeOrImageElemOrSrc;
\r
43 img = xnode._rawObject;
\r
47 if( ret = X_Util_Image_actualSize[ img.src ] ) return ret;
\r
50 // for Firefox, Safari, Google Chrome
\r
51 if( img.naturalWidth ) return [ img.naturalWidth, img.naturalHeight ];
\r
53 if( X.UA.IE && 5 <= X.UA.IE ){// for IE
\r
54 run = img.runtimeStyle;
\r
58 // keep runtimeStyle
\r
61 run.height = 'auto';
\r
67 } else {// for Opera and Other
\r
69 memW = w = img.width;
\r
70 memH = h = img.height;
\r
72 if( img.removeAttribute ){ // Safari1.3 の Image は removeAttribute がない
\r
73 // keep current style
\r
74 img.removeAttribute( 'width' );
\r
75 img.removeAttribute( 'height' );
\r
86 ret = X_Util_Image_actualSize[ img.src ] = [ w, h ];
\r
88 remove && xnode.destroy();
\r