BM.ReadColumns C# (CSharp) Method

ReadColumns() public static method

public static ReadColumns ( ByteStream, stream, Header, header, int columnOffsets, CreateArgs createArgs ) : Frame,
stream ByteStream,
header Header,
columnOffsets int
createArgs CreateArgs
return Frame,
    public static Frame ReadColumns(ByteStream stream, Header header, int[] columnOffsets, CreateArgs createArgs)
    {
        try {
            Texture2D texture = new Texture2D(header.W, header.H, createArgs.TextureFormat, createArgs.bMipmap, false);

            texture.anisoLevel = createArgs.AnisoLevel;
            texture.filterMode = createArgs.FilterMode;
            texture.wrapMode = createArgs.WrapMode;

            Color32[] pixels = new Color32[header.W*header.H];
            byte[] column = new byte[header.H];
            bool bIsTransparent = (header.Transparent & 0x8) != 0;

            for (int x = 0; x < header.W; ++x) {
                if (columnOffsets != null) {
                    stream.SeekSet(columnOffsets[x]);
                }

                DecodeColumn(stream, column, header.Compressed);

                if (createArgs.TextureFormat == TextureFormat.Alpha8) {
                    int pixelOfs = x;

                    for (int y = 0; y < header.H; ++y, pixelOfs += header.W) {
                        byte color = column[y];
                        pixels[pixelOfs] = new Color32(color, color, color, color);
                    }

                } else {
                    int pixelOfs = x;

                    for (int y = 0; y < header.H; ++y, pixelOfs += header.W) {
                        byte color = column[y];

                        if (bIsTransparent && (color == 0)) {
                            pixels[pixelOfs] = PAL.Transparent;
                        } else {
                            pixels[pixelOfs] = createArgs.Pal.Colors[color];
                        }
                    }
                }
            }

            texture.SetPixels32(pixels);
            texture.Apply();

            return new Frame(texture, bIsTransparent);
        } catch (UnityException e) {
            throw e;
        }
    }