示例#1
0
        public byte[] Save(IEnumerable <Color> colors)
        {
            if (Width <= 0 || Height <= 0)
            {
                throw new InvalidDataException("Height and Width has to be set for ASTC.");
            }

            CreateTempPNG("tmp.png", colors);

            var wrapper = new ASTCContext();
            var result  = wrapper.Encode("tmp.png", "tmp.astc", _blockMode);

            if (result == ConvertImageResult.Error)
            {
                return(null);
            }

            File.Delete("tmp.png");

            byte[] encodedData;
            using (var br = new BinaryReader(File.OpenRead("tmp.astc")))
            {
                br.BaseStream.Position += 12;
                encodedData             = br.ReadBytes((int)(br.BaseStream.Length - br.BaseStream.Position));
            }
            File.Delete("tmp.astc");

            return(encodedData);
        }
示例#2
0
        public IEnumerable <Color> Load(byte[] tex)
        {
            if (Width < 0 || Height < 0)
            {
                throw new InvalidDataException("Height and Width has to be set for ASTC.");
            }

            CreateTempASTCFile("tmp.astc", tex);

            var wrapper = new ASTCContext();

            wrapper.Decode("tmp.astc", "tmp.ktx", _blockMode);
            File.Delete("tmp.astc");

            var ktx    = new KTX("tmp.ktx");
            var colors = ktx.GetImageColors().Reverse().ToList();

            ktx.Dispose();
            File.Delete("tmp.ktx");

            return(colors);
        }
示例#3
0
        public byte[] Save(IEnumerable <Color> colors)
        {
            if (Width < 0 || Height < 0)
            {
                throw new InvalidDataException("Height and Width has to be set for ASTC.");
            }

            CreateTempPNG("tmp.png", colors);

            var wrapper = new ASTCContext();

            wrapper.Encode("tmp.png", "tmp.astc", _blockMode);
            File.Delete("tmp.png");

            byte[] encodedData = null;
            using (var br = new BinaryReaderX(File.OpenRead("tmp.astc")))
            {
                br.ReadType <ASTCFileHeader>();
                encodedData = br.ReadBytes((int)(br.BaseStream.Length - br.BaseStream.Position));
            }
            File.Delete("tmp.astc");

            return(encodedData);
        }