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(); }
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(); } }
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(); } }
public void CanReadTgaTextures() { InstalledFilesTestData.ReadFiles(".tga", _output, entry => { var tgaFile = TgaFile.FromFileSystemEntry(entry); Assert.True(tgaFile.Header.ImagePixelSize == 24 || tgaFile.Header.ImagePixelSize == 32); }); }
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); }
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)); }
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)); }
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); }); }
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)); } }
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)); }
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)); } }
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(); } }
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(); } }
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 } }); } }
public TgaFile GetTgaFile() { return(mTga ?? (mTga = new TgaFile(new MemoryStream(Data)))); }