You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			127 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			127 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
| 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();
 | |
|         }
 | |
|     }
 | |
| }
 |