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