123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- 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();
- }
- }
- }
|