コード例 #1
0
        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);
        }
コード例 #2
0
 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;
 }
コード例 #3
0
 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);
         }
     }
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 protected override void OnCreate()
 {
     base.OnCreate();
     c = new Image2DIOHTMLLoader();
     ImageIOHTMLNativeCalls.JSInitImageLoading();
 }