private void CreateTileData()
{
if (textureName.Equals("zero.png"))
{
textureName = string.Format("{0}_x{1}y{2}.{3}", parent.BaseName, m_tileLocationX, m_loadTileZ,
parent.MosaicDesc.FileExt);
}
Image textureImage;
Texture texture = TextureManager.Instance.GetByName(textureName);
if (ResourceManager.HasCommonResourceData(textureName))
{
Stream s = ResourceManager.FindCommonResourceData(textureName);
textureImage = Image.FromStream(s, parent.MosaicDesc.FileExt);
s.Close();
}
else
{
// Create a new image
int bpp = PixelUtil.GetNumElemBytes(DEFAULT_IMAGE_FORMAT);
byte[] buffer = new byte[tileSizeSamples * tileSizeSamples * bpp];
textureImage = Image.FromDynamicImage(buffer, tileSizeSamples, tileSizeSamples, DEFAULT_IMAGE_FORMAT);
Modified = true;
}
// Cause the texture image to get refreshed
dirtyImage = true;
dirtyArea.X = 0;
dirtyArea.Y = 0;
dirtyArea.Width = textureImage.Width;
dirtyArea.Height = textureImage.Height;
// Popupate the tileData from the image
switch (textureImage.Format)
{
case PixelFormat.A8:
case PixelFormat.L8:
tileData = new TileData8(textureImage);
break;
case PixelFormat.L16:
tileData = new TileData16(textureImage);
break;
case PixelFormat.R8G8B8:
case PixelFormat.B8G8R8:
tileData = new TileData24(textureImage);
break;
case PixelFormat.A8B8G8R8:
case PixelFormat.A8R8G8B8:
case PixelFormat.B8G8R8A8:
case PixelFormat.R8G8B8A8:
case PixelFormat.X8R8G8B8:
case PixelFormat.X8B8G8R8:
tileData = new TileData32(textureImage);
break;
default:
throw new InvalidDataException("Unexpected pixel format: " + textureImage.Format);
}
}