|  |  |  |  | using System; | 
					
						
							|  |  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  |  | using System.Text; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | namespace FairyGUI.Utils | 
					
						
							|  |  |  |  | { | 
					
						
							|  |  |  |  |     /// <summary> | 
					
						
							|  |  |  |  |     ///  | 
					
						
							|  |  |  |  |     /// </summary> | 
					
						
							|  |  |  |  |     public class HtmlImage : IHtmlObject | 
					
						
							|  |  |  |  |     { | 
					
						
							|  |  |  |  |         public GLoader loader { get; private set; } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         RichTextField _owner; | 
					
						
							|  |  |  |  |         HtmlElement _element; | 
					
						
							|  |  |  |  |         bool _externalTexture; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public HtmlImage() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             loader = (GLoader)UIObjectFactory.NewObject(ObjectType.Loader); | 
					
						
							|  |  |  |  |             loader.gameObjectName = "HtmlImage"; | 
					
						
							|  |  |  |  |             loader.fill = FillType.ScaleFree; | 
					
						
							|  |  |  |  |             loader.touchable = false; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public DisplayObject displayObject | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return loader.displayObject; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public HtmlElement element | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return _element; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public float width | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return loader.width; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public float height | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             get { return loader.height; } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void Create(RichTextField owner, HtmlElement element) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             _owner = owner; | 
					
						
							|  |  |  |  |             _element = element; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             int sourceWidth = 0; | 
					
						
							|  |  |  |  |             int sourceHeight = 0; | 
					
						
							|  |  |  |  |             NTexture texture = owner.htmlPageContext.GetImageTexture(this); | 
					
						
							|  |  |  |  |             if (texture != null) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 sourceWidth = texture.width; | 
					
						
							|  |  |  |  |                 sourceHeight = texture.height; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 loader.texture = texture; | 
					
						
							|  |  |  |  |                 _externalTexture = true; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |             else | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 string src = element.GetString("src"); | 
					
						
							|  |  |  |  |                 if (src != null) | 
					
						
							|  |  |  |  |                 { | 
					
						
							|  |  |  |  |                     PackageItem pi = UIPackage.GetItemByURL(src); | 
					
						
							|  |  |  |  |                     if (pi != null) | 
					
						
							|  |  |  |  |                     { | 
					
						
							|  |  |  |  |                         sourceWidth = pi.width; | 
					
						
							|  |  |  |  |                         sourceHeight = pi.height; | 
					
						
							|  |  |  |  |                     } | 
					
						
							|  |  |  |  |                 } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |                 loader.url = src; | 
					
						
							|  |  |  |  |                 _externalTexture = false; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             int width = element.GetInt("width", sourceWidth); | 
					
						
							|  |  |  |  |             int height = element.GetInt("height", sourceHeight); | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             if (width == 0) | 
					
						
							|  |  |  |  |                 width = 5; | 
					
						
							|  |  |  |  |             if (height == 0) | 
					
						
							|  |  |  |  |                 height = 10; | 
					
						
							|  |  |  |  |             loader.SetSize(width, height); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void SetPosition(float x, float y) | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             loader.SetXY(x, y); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void Add() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             _owner.AddChild(loader.displayObject); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void Remove() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (loader.displayObject.parent != null) | 
					
						
							|  |  |  |  |                 _owner.RemoveChild(loader.displayObject); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void Release() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             loader.RemoveEventListeners(); | 
					
						
							|  |  |  |  |             if (_externalTexture) | 
					
						
							|  |  |  |  |             { | 
					
						
							|  |  |  |  |                 _owner.htmlPageContext.FreeImageTexture(this, loader.texture); | 
					
						
							|  |  |  |  |                 _externalTexture = false; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |             loader.url = null; | 
					
						
							|  |  |  |  |             _owner = null; | 
					
						
							|  |  |  |  |             _element = null; | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void Dispose() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             if (_externalTexture) | 
					
						
							|  |  |  |  |                 _owner.htmlPageContext.FreeImageTexture(this, loader.texture); | 
					
						
							|  |  |  |  |             loader.Dispose(); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |