-\r
-var X_Util_Image_actualSize = {};\r
-\r
-X.Util.Image = { \r
- getActualDimension : X_Util_Image_getActualDimension\r
- \r
- // Alpha Image, data uri ong ...\r
-};\r
-\r
-/*\r
- * original\r
- * LICENSE: MIT\r
- * AUTHOR: uupaa.js@gmail.com\r
- */\r
-function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){\r
- var xnode, img, remove, ret, run, memW, memH, w, h;\r
-\r
- if( X.Type.isString( XnodeOrImageElemOrSrc ) ){\r
- if( ret = X_Util_Image_actualSize[ X_URL_toAbsolutePath( XnodeOrImageElemOrSrc ) ] ) return ret;\r
- \r
- xnode = X_Node_systemNode.create(\r
- 'img',\r
- {\r
- src : XnodeOrImageElemOrSrc\r
- },\r
- {\r
- position : 'absolute'\r
- }\r
- );\r
- X_Node_startUpdate();\r
- img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode._rawObject;\r
- remove = true;\r
- } else {\r
- if( XnodeOrImageElemOrSrc.constructor === X.Node ){\r
- xnode = XnodeOrImageElemOrSrc;\r
- img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )._rawObject : xnode._rawObject;\r
- } else\r
- if( X.Type.isHTMLElement( XnodeOrImageElemOrSrc ) ){\r
- img = XnodeOrImageElemOrSrc;\r
- } else\r
- if( XnodeOrImageElemOrSrc.constructor === X.EventDispatcher && X.Type.isImage( XnodeOrImageElemOrSrc._rawObject ) ){\r
- xnode = XnodeOrImageElemOrSrc;\r
- img = xnode._rawObject;\r
- } else {\r
- return;\r
- };\r
- if( ret = X_Util_Image_actualSize[ img.src ] ) return ret;\r
- };\r
-\r
- // for Firefox, Safari, Google Chrome\r
- if( img.naturalWidth ) return [ img.naturalWidth, img.naturalHeight ];\r
-\r
- if( 5 <= X_UA.IE ){// for IE\r
- run = img.runtimeStyle;\r
- memW = run.width;\r
- memH = run.height;\r
-\r
- // keep runtimeStyle\r
- run.width = 'auto';\r
- // override\r
- run.height = 'auto';\r
- w = img.width;\r
- h = img.height;\r
- run.width = memW;\r
- // restore\r
- run.height = memH;\r
- } else {// for Opera and Other\r
- \r
- memW = w = img.width;\r
- memH = h = img.height;\r
- \r
- if( img.removeAttribute ){ // Safari1.3 の Image は removeAttribute がない\r
- // keep current style\r
- img.removeAttribute( 'width' );\r
- img.removeAttribute( 'height' );\r
- \r
- w = img.width;\r
- h = img.height;\r
- \r
- // restore\r
- img.width = memW;\r
- img.height = memH;\r
- };\r
- };\r
- \r
- ret = X_Util_Image_actualSize[ img.src ] = [ w, h ];\r
- \r
- remove && xnode.destroy();\r
- \r
- return ret;\r
-};\r
-\r
-\r