Exemplo n.º 1
0
        public static string ToFileExtension(this DirectXTexFileType type)
        {
            switch (type)
            {
            case DirectXTexFileType.DDS:
                return(".dds");

            case DirectXTexFileType.HDR:
                return(".hdr");

            case DirectXTexFileType.TGA:
                return(".tga");

            case DirectXTexFileType.WIC:
                return(DefaultFileExtensionForWIC);

            default:
                return("");
            }
        }
Exemplo n.º 2
0
        public static TexMetadata GetMetadataFromFile(string file
                                                      , DirectXTexFileType fileType = DirectXTexFileType.Unknown
                                                      , uint flags = 0)
        {
            Contract.Requires(!string.IsNullOrEmpty(file));

            if (!File.Exists(file))
            {
                throw new FileNotFoundException(file);
            }

            if (fileType == DirectXTexFileType.Unknown)
            {
                fileType = FileTypeFromFileExtension(file);
            }
            if (fileType == DirectXTexFileType.Unknown)
            {
                throw new NotSupportedException(file);
            }

            var result = TexMetadata.Empty;

            if (DirectXTexDLL.EntryPointsNotFound)
            {
                return(result);
            }

            try
            {
                var hresult = DirectXTexDLL.DirectXTex_GetMetadataFromFile(
                    fileType, out result, file, flags);
                DirectXTexDLL.ThrowIfFailed(hresult);
            }
            catch (EntryPointNotFoundException ex)
            {
                DirectXTexDLL.HandleEntryPointNotFound(ex);
            }

            return(result);
        }
Exemplo n.º 3
0
        public static TexMetadata GetMetadataFromMemory(
            byte[] buffer, int startIndex, int length
            , DirectXTexFileType fileType
            , uint flags = 0)
        {
            Contract.Requires <ArgumentNullException>(buffer != null);
            Contract.Requires <ArgumentOutOfRangeException>(startIndex >= 0);
            Contract.Requires <ArgumentOutOfRangeException>(length >= 0);
            Contract.Requires <ArgumentOutOfRangeException>((startIndex + length) <= buffer.Length);

            var result = TexMetadata.Empty;

            if (DirectXTexDLL.EntryPointsNotFound)
            {
                return(result);
            }

            var bufferHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);

            try
            {
                var buf = bufferHandle.AddrOfPinnedObject();
                buf += startIndex;

                var hresult = DirectXTexDLL.DirectXTex_GetMetadataFromMemory(
                    fileType, out result, buf, (uint)length, flags);
                DirectXTexDLL.ThrowIfFailed(hresult);
            }
            catch (EntryPointNotFoundException ex)
            {
                DirectXTexDLL.HandleEntryPointNotFound(ex);
            }
            finally
            {
                bufferHandle.Free();
            }

            return(result);
        }
Exemplo n.º 4
0
 public static extern int DirectXTex_GetMetadataFromMemory(
     DirectXTexFileType fileType,
     out TexMetadata metadata,
     IntPtr source,
     uint size,
     uint flags);
Exemplo n.º 5
0
 public static extern int DirectXTex_GetMetadataFromFile(
     DirectXTexFileType fileType,
     out TexMetadata metadata,
     string file,
     uint flags);