Esempio n. 1
0
        private bool disposedValue = false; // 重複する呼び出しを検出するには

        protected virtual void Dispose(bool disposing)
        {
            if (!disposedValue)
            {
                if (disposing)
                {
                    // TODO: マネージ状態を破棄します (マネージ オブジェクト)。
                }

                // TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下のファイナライザーをオーバーライドします。
                var p = m_p;
                m_p = default(IntPtr);
                if (p != default(IntPtr))
                {
                    StbImageDllImport.stbi_image_free(p);
                }

                // TODO: 大きなフィールドを null に設定します。

                disposedValue = true;
            }
        }
Esempio n. 2
0
        public static ImageLoader Create(Byte[] bytes)
        {
            if (s_count++ == 0)
            {
                StbImageDllImport.stbi_set_flip_vertically_on_load(1);
            }

            int w, h, ch;
            var p = StbImageDllImport.stbi_load_from_memory(bytes, bytes.Length, out w, out h, out ch, 4);

            if (p == default(IntPtr))
            {
                return(null);
            }

            if (ch != 4)
            {
                StbImage.StbImageDllImport.stbi_image_free(p);
                return(null);
            }

            return(new ImageLoader(p, w, h));
        }