Ejemplo n.º 1
0
        public GraphicTga(TgaFile aTgaFile)
            : base()
        {
            int  lWidth     = aTgaFile.header.imageWidth;
            int  lHeight    = aTgaFile.header.imageHeight;
            Byte lImageType = aTgaFile.header.imageType;

            Byte[] lDataArray = aTgaFile.data.dataArray;

            Color[] lColorArray = new Color[lWidth * lHeight];

            if (lImageType == 0x02)
            {
                texture = new Texture2D(( int )lWidth, ( int )lHeight, TextureFormat.RGBA32, false);

                for (int i = 0; i < lWidth * lHeight; i++)
                {
                    Byte b = lDataArray[i * 4 + 0];
                    Byte g = lDataArray[i * 4 + 1];
                    Byte r = lDataArray[i * 4 + 2];
                    Byte a = lDataArray[i * 4 + 3];

                    lColorArray[i] = new Color(( float )r / 0x100, ( float )g / 0x100, ( float )b / 0x100, ( float )a / 0x100);
                }
            }
            else
            {
                Logger.LogError("Bit Count:" + lImageType.ToString("X2") + " is not supported");
            }

            texture.SetPixels(0, 0, ( int )lWidth, ( int )lHeight, lColorArray);
            texture.Apply();
        }
Ejemplo n.º 2
0
        protected override Texture LoadEntry(FileSystemEntry entry, ContentManager contentManager, Game game, LoadOptions loadOptions)
        {
            var generateMipMaps = (loadOptions as TextureLoadOptions)?.GenerateMipMaps ?? true;

            Texture applyDebugName(Texture texture)
            {
                texture.Name = entry.FilePath;
                return(texture);
            }

            switch (Path.GetExtension(entry.FilePath).ToLower())
            {
            case ".dds":
                if (!DdsFile.IsDdsFile(entry))
                {
                    goto case ".tga";
                }
                var ddsFile = DdsFile.FromFileSystemEntry(entry);
                return(applyDebugName(CreateTextureFromDds(
                                          contentManager.GraphicsDevice,
                                          ddsFile)));

            case ".tga":
                var tgaFile = TgaFile.FromFileSystemEntry(entry);
                return(applyDebugName(CreateTextureFromTga(
                                          contentManager.GraphicsDevice,
                                          tgaFile,
                                          generateMipMaps)));

            default:
                throw new InvalidOperationException();
            }
        }
Ejemplo n.º 3
0
        private Texture LoadImpl(FileSystemEntry entry, GraphicsDevice graphicsDevice)
        {
            switch (Path.GetExtension(entry.FilePath).ToLowerInvariant())
            {
            case ".dds":
                if (!DdsFile.IsDdsFile(entry))
                {
                    goto case ".tga";
                }
                var ddsFile = DdsFile.FromFileSystemEntry(entry);
                return(CreateTextureFromDds(ddsFile, graphicsDevice));

            case ".tga":
                var tgaFile = TgaFile.FromFileSystemEntry(entry);
                return(CreateTextureFromTga(tgaFile, graphicsDevice));

            case ".jpg":
                using (var stream = entry.Open())
                {
                    var jpgFile = new ImageSharpTexture(stream);
                    return(CreateFromImageSharpTexture(jpgFile, graphicsDevice));
                }

            default:
                throw new InvalidOperationException();
            }
        }
Ejemplo n.º 4
0
        public void CanReadTgaTextures()
        {
            InstalledFilesTestData.ReadFiles(".tga", _output, entry =>
            {
                var tgaFile = TgaFile.FromFileSystemEntry(entry);

                Assert.True(tgaFile.Header.ImagePixelSize == 24 || tgaFile.Header.ImagePixelSize == 32);
            });
        }
Ejemplo n.º 5
0
        public TgaView(FileSystemEntry entry)
        {
            var tgaFile = TgaFile.FromFileSystemEntry(entry);

            var data = TgaFile.ConvertPixelsToRgba8(tgaFile);

            var bmpData = PngUtility.ConvertToPng(
                data,
                tgaFile.Header.Width,
                tgaFile.Header.Height);

            Style = "nearest-neighbor";
            Image = new Bitmap(bmpData);
        }
Ejemplo n.º 6
0
        private static Texture CreateTextureFromTga(
            GraphicsDevice graphicsDevice,
            TgaFile tgaFile,
            bool generateMipMaps)
        {
            var mipMapData = GetData(tgaFile, generateMipMaps);

            return(Texture.CreateTexture2D(
                       graphicsDevice,
                       PixelFormat.Rgba8UNorm,
                       tgaFile.Header.Width,
                       tgaFile.Header.Height,
                       mipMapData));
        }
Ejemplo n.º 7
0
        private ImageSource CreateImageSource(string image)
        {
            if (string.IsNullOrEmpty(image) || image == "NoImage")
            {
                return(null);
            }

            var mappedImage = _mappedImages.FirstOrDefault(x => x.Name == image);

            if (mappedImage == null)
            {
                return(null);
            }

            var tgaFileEntry = _fileSystem.SearchFile(
                mappedImage.Texture,
                @"Data\English\Art\Textures\",
                @"Art\Textures\");

            var tgaFile = TgaFile.FromFileSystemEntry(tgaFileEntry);

            var pixelFormat = tgaFile.Header.ImagePixelSize == 32
                ? PixelFormats.Bgra32
                : PixelFormats.Bgr24;

            var stride = tgaFile.Header.ImagePixelSize == 32
                ? tgaFile.Header.Width * 4
                : tgaFile.Header.Width * 3;

            var bitmapSource = BitmapSource.Create(
                tgaFile.Header.Width,
                tgaFile.Header.Height,
                96,
                96,
                pixelFormat,
                null,
                tgaFile.Data,
                stride);

            var sourceRect = new Int32Rect(
                mappedImage.Coords.Left,
                mappedImage.Coords.Top,
                mappedImage.Coords.Right - mappedImage.Coords.Left,
                mappedImage.Coords.Bottom - mappedImage.Coords.Top);

            return(new CroppedBitmap(
                       bitmapSource,
                       sourceRect));
        }
Ejemplo n.º 8
0
        public void CanReadTgaTextures()
        {
            InstalledFilesTestData.ReadFiles(".tga", _output, entry =>
            {
                switch (Path.GetFileName(entry.FilePath))
                {
                case "map ang rhudaur.tga":
                    return;     // unreferenced
                }

                var tgaFile = TgaFile.FromFileSystemEntry(entry);

                var imagePixelSize = tgaFile.Header.ImagePixelSize;
                Assert.True(imagePixelSize == 8 || imagePixelSize == 16 || imagePixelSize == 24 || imagePixelSize == 32);
            });
        }
Ejemplo n.º 9
0
        private Texture CreateTextureFromTga(TgaFile tgaFile, GraphicsDevice graphicsDevice)
        {
            var rgbaData = TgaFile.ConvertPixelsToRgba8(tgaFile);

            using (var tgaImage = Image.LoadPixelData <Rgba32>(
                       rgbaData,
                       tgaFile.Header.Width,
                       tgaFile.Header.Height))
            {
                var imageSharpTexture = new ImageSharpTexture(
                    tgaImage,
                    _generateMipMaps);

                return(CreateFromImageSharpTexture(imageSharpTexture, graphicsDevice));
            }
        }
Ejemplo n.º 10
0
        private static Texture CreateTextureFromTga(
            GraphicsDevice graphicsDevice,
            ResourceUploadBatch uploadBatch,
            TgaFile tgaFile,
            bool generateMipMaps)
        {
            if (tgaFile.Header.ImageType != TgaImageType.UncompressedRgb)
            {
                throw new InvalidOperationException();
            }

            var data = ConvertTgaPixels(
                tgaFile.Header.ImagePixelSize,
                tgaFile.Data);

            TextureMipMapData[] mipMapData;
            if (generateMipMaps)
            {
                mipMapData = MipMapUtility.GenerateMipMaps(
                    tgaFile.Header.Width,
                    tgaFile.Header.Height,
                    data);
            }
            else
            {
                mipMapData = new[]
                {
                    new TextureMipMapData
                    {
                        Data        = data,
                        BytesPerRow = tgaFile.Header.Width * 4
                    }
                };
            }

            return(Texture.CreateTexture2D(
                       graphicsDevice,
                       uploadBatch,
                       PixelFormat.Rgba8UNorm,
                       tgaFile.Header.Width,
                       tgaFile.Header.Height,
                       mipMapData));
        }
Ejemplo n.º 11
0
        private static Texture CreateTextureFromTga(
            GraphicsDevice graphicsDevice,
            TgaFile tgaFile,
            bool generateMipMaps)
        {
            var rgbaData = TgaFile.ConvertPixelsToRgba8(tgaFile);

            using (var tgaImage = Image.LoadPixelData <Rgba32>(
                       rgbaData,
                       tgaFile.Header.Width,
                       tgaFile.Header.Height))
            {
                var imageSharpTexture = new ImageSharpTexture(
                    tgaImage,
                    generateMipMaps);

                return(imageSharpTexture.CreateDeviceTexture(
                           graphicsDevice,
                           graphicsDevice.ResourceFactory));
            }
        }
Ejemplo n.º 12
0
        private Texture LoadImpl(FileSystemEntry entry, FileSystem fileSystem, GraphicsDevice graphicsDevice)
        {
            switch (Path.GetExtension(entry.FilePath).ToLowerInvariant())
            {
            case ".dds":
                if (!DdsFile.IsDdsFile(entry))
                {
                    goto case ".tga";
                }
                var ddsFile = DdsFile.FromFileSystemEntry(entry);
                return(CreateTextureFromDds(ddsFile, graphicsDevice));

            case ".tga":
                var tgaFile = TgaFile.FromFileSystemEntry(entry);
                return(CreateTextureFromTga(tgaFile, graphicsDevice));

            case ".jpg":
                return(CreateTextureFromJpg(entry, fileSystem, graphicsDevice));

            default:
                throw new InvalidOperationException();
            }
        }
Ejemplo n.º 13
0
        protected override Texture LoadEntry(FileSystemEntry entry, ContentManager contentManager, ResourceUploadBatch uploadBatch)
        {
            switch (Path.GetExtension(entry.FilePath).ToLower())
            {
            case ".dds":
                var ddsFile = DdsFile.FromFileSystemEntry(entry);
                return(CreateTextureFromDds(
                           contentManager.GraphicsDevice,
                           uploadBatch,
                           ddsFile));

            case ".tga":
                var tgaFile = TgaFile.FromFileSystemEntry(entry);
                return(CreateTextureFromTga(
                           contentManager.GraphicsDevice,
                           uploadBatch,
                           tgaFile,
                           true)); // TODO: Don't need to generate mipmaps for GUI textures.

            default:
                throw new InvalidOperationException();
            }
        }
Ejemplo n.º 14
0
        public static TextureMipMapData[] GetData(TgaFile tgaFile, bool generateMipMaps)
        {
            var data = TgaFile.ConvertPixelsToRgba8(tgaFile);

            if (generateMipMaps)
            {
                return(MipMapUtility.GenerateMipMaps(
                           tgaFile.Header.Width,
                           tgaFile.Header.Height,
                           data));
            }
            else
            {
                return(new[]
                {
                    new TextureMipMapData
                    {
                        Data = data,
                        BytesPerRow = tgaFile.Header.Width * 4
                    }
                });
            }
        }
Ejemplo n.º 15
0
 public TgaFile GetTgaFile()
 {
     return(mTga ?? (mTga = new TgaFile(new MemoryStream(Data))));
 }