127 lines
3.1 KiB
C#
127 lines
3.1 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();
|
|
}
|
|
}
|
|
}
|