Esempio n. 1
0
        public LuaArgs saveTGA(LuaArgs args)
        {
            var image   = args.GetObject <LuaImage>(0).Image;
            var palette = args.GetObject <LuaPalette>(1).Palette;

            try
            {
                if (args.IsNil(2))
                {
                    // Save to a string and return it
                    using (var stream = new MemoryStream())
                    {
                        TGAImage.Encode(image, palette, stream);
                        return(new LuaArgs(stream.ToArray()));
                    }
                }
                else
                {
                    // Save to a stream
                    var file = args.GetObject <LuaFile>(2);
                    CheckFileMode(file, "tga", LuaFileOpenMode.Write, LuaFileContentType.Binary);
                    TGAImage.Encode(image, palette, file.InnerStream);
                    return(LuaArgs.Empty);
                }
            }
            catch (IOException e)
            {
                throw new LuaError(e.Message);
            }
        }
Esempio n. 2
0
        public static async Task DdtBytes2TgaAsync(byte[] source, string path)
        {
            var data = source;

            if (Alz4Utils.IsAlz4File(data))
            {
                data = await Alz4Utils.ExtractAlz4BytesAsync(data);
            }
            else
            {
                if (L33TZipUtils.IsL33TZipFile(data))
                {
                    data = await L33TZipUtils.ExtractL33TZippedBytesAsync(data);
                }
            }
            DdtFile          ddt     = new DdtFile(data, false);
            PngBitmapEncoder encoder = new PngBitmapEncoder();

            byte[] raw_image = new byte[4 * ddt.BaseWidth * ddt.BaseHeight];
            ddt.Bitmap.CopyPixels(raw_image, 4 * ddt.BaseWidth, 0);
            var tga = new TGAImage(ddt.BaseWidth, ddt.BaseHeight, (byte)ddt.Usage, (byte)ddt.Alpha, (byte)ddt.Format, ddt.MipmapLevels, raw_image);

            var file_name = Path.GetFileNameWithoutExtension(path);

            file_name = file_name + ".(" + tga.image_id[0].ToString() + "," + tga.image_id[1].ToString() + "," + tga.image_id[2].ToString() + "," + tga.image_id[3].ToString() + ").tga";

            await File.WriteAllBytesAsync(Path.Combine(Path.GetDirectoryName(path), file_name), tga.ToByteArray());
        }
Esempio n. 3
0
        public CoreTexture Load(string path)
        {
            TGAImage    image   = new TGAImage(path);
            CoreTexture texture = new CoreTexture();

            image.CopyTo(ref texture);
            return(texture);
        }
Esempio n. 4
0
 public static Color32[] ReadImage(TGAHeader header, byte[] data)
 {
     TGAImage image = new TGAImage();
     TGAImageType imageType = header.imageType;
     if (imageType == TGAImageType.Uncompressed_TrueColor)
     {
         return ReadTrueColorImage(header, data);
     }
     if (imageType != TGAImageType.RTE_TrueColor)
     {
         Debug.Log("Image type of " + header.imageType.ToString() + " is not supported.");
         return null;
     }
     return ReadRTETrueColorImage(header, data);
 }
Esempio n. 5
0
        public static Texture2D LoadImage(System.IO.FileInfo file, ref bool isNormal, bool shouldBeNormal)
        {
            var ext        = file.Extension.ToUpper();
            var withoutExt = file.FullName.Substring(0, file.FullName.Length - ext.Length).ToUpper();

            shouldBeNormal = shouldBeNormal || withoutExt.EndsWith("NRM");
            Texture2D tex = null;

            isNormal = false;
            switch (ext)
            {
            case ".TGA":
                var ti = new TGAImage();
                if (ti.ReadImage(file))
                {
                    tex = ti.CreateTexture();
                }
                else
                {
                    return(null);
                }
                break;

            case ".MBM":
                tex = MBMReader.Read(file.FullName, out isNormal);
                break;

            default:
                var www = new WWW("file://" + file.FullName);
                while (!www.isDone)
                {
                    System.Threading.Thread.Sleep(100);
                }
                tex = www.texture;
                break;
            }
            if (shouldBeNormal && !isNormal)
            {
                isNormal = true;
                return(GameDatabase.BitmapToUnityNormalMap(tex));
            }
            else
            {
                return(tex);
            }
        }
Esempio n. 6
0
        public LuaArgs loadTGA(LuaArgs args)
        {
            try
            {
                // Load image
                Image   image;
                Palette palette;
                if (args.IsString(0))
                {
                    // Load from a string
                    var bytes = args.GetByteString(0);
                    using (var stream = new MemoryStream(bytes))
                    {
                        image = TGAImage.Decode(stream, m_computer.Memory, out palette);
                    }
                }
                else
                {
                    // Load from a stream
                    var file = args.GetObject <LuaFile>(0);
                    CheckFileMode(file, "tga", LuaFileOpenMode.Read, LuaFileContentType.Binary);
                    image = TGAImage.Decode(file.InnerStream, m_computer.Memory, out palette);
                }

                // Return image
                return(new LuaArgs(
                           new LuaImage(image, m_computer.Memory),
                           new LuaPalette(palette, m_computer.Memory)
                           ));
            }
            catch (OutOfMemoryException)
            {
                throw new LuaError("not enough memory");
            }
            catch (IOException e)
            {
                throw new LuaError(e.Message);
            }
        }
Esempio n. 7
0
        // texture and image contain the same image, for some containers its easyer to use image instead of texture
        public void Store(string path, CoreTexture texture, GenericImage image)
        {
            TGAImage tga = new TGAImage(image);

            tga.Save(path);
        }