public LoadResult CheckLoading(IntPtr wrapper, EntityManager man, Entity e, ref Image2D image, ref Image2DHTML imgHTML, ref Image2DLoadFromFile unused, ref Image2DHTMLLoading loading) { int r = ImageIOHTMLNativeCalls.JSCheckLoadImage(imgHTML.imageIndex); if (r == 0) { return(LoadResult.stillWorking); } var fnLog = man.GetBufferAsString <Image2DLoadFromFileImageFile>(e); if (man.HasComponent <Image2DLoadFromFileMaskFile>(e)) { fnLog += " alpha="; fnLog += man.GetBufferAsString <Image2DLoadFromFileMaskFile>(e); } if (r == 2) { image.status = ImageStatus.LoadError; image.imagePixelSize.xy = 0; FreeNative(man, e, ref imgHTML); Console.WriteLine("Failed to load " + fnLog); return(LoadResult.failed); } int wi = 0; int hi = 0; int ai = 0; ImageIOHTMLNativeCalls.JSFinishLoadImage(imgHTML.imageIndex, ref wi, ref hi, ref ai); image.hasAlpha = ai != 0; image.imagePixelSize.x = (float)wi; image.imagePixelSize.y = (float)hi; image.status = ImageStatus.Loaded; imgHTML.externalOwner = false; var s = "Loaded image: "; s += fnLog; s += " size: "; s += wi.ToString(); s += ", "; s += hi.ToString(); if (ai != 0) { s += " (has alpha channel)"; } s += " idx: "; s += imgHTML.imageIndex.ToString(); Console.WriteLine(s); return(LoadResult.success); }
public void FreeNative(EntityManager man, Entity e, ref Image2DHTML imgHTML) { if (!imgHTML.externalOwner && imgHTML.imageIndex > 0) { ImageIOHTMLNativeCalls.JSFreeImage(imgHTML.imageIndex); } if (imgHTML.imageIndex > 0) { var s = "Free HTML image at "; s += imgHTML.imageIndex.ToString(); Console.WriteLine(s); } imgHTML.imageIndex = 0; imgHTML.externalOwner = false; }
public void FinishLoading(EntityManager man, Entity e, ref Image2D img, ref Image2DHTML imgHTML, ref Image2DHTMLLoading loading) { unsafe { if (man.HasComponent <Image2DAlphaMask>(e)) { DynamicBuffer <Image2DAlphaMaskData> mask = man.GetBuffer <Image2DAlphaMaskData>(e); int width = (int)img.imagePixelSize.x; int height = (int)img.imagePixelSize.y; mask.ResizeUninitialized(width * height); ImageIOHTMLNativeCalls.ExtractAlphaFromImage(imgHTML.imageIndex, (byte *)mask.GetUnsafePtr(), width, height); } } }
public void StartLoad(EntityManager man, Entity e, ref Image2D image, ref Image2DHTML imgHTML, ref Image2DLoadFromFile fspec, ref Image2DHTMLLoading loading) { // if there was an image with that index, free it FreeNative(man, e, ref imgHTML); image.status = ImageStatus.Loading; image.hasAlpha = false; image.imagePixelSize.x = 0; image.imagePixelSize.y = 0; // C++ var fnImage = man.GetBufferAsString <Image2DLoadFromFileImageFile>(e); var fnMask = man.GetBufferAsString <Image2DLoadFromFileMaskFile>(e); imgHTML.imageIndex = ImageIOHTMLNativeCalls.JSLoadImage(fnImage, fnMask); }
protected override void OnCreate() { base.OnCreate(); c = new Image2DIOHTMLLoader(); ImageIOHTMLNativeCalls.JSInitImageLoading(); }