示例#1
0
文件: Imgd.cs 项目: bakwas247/OpenKh
        private byte[] GetClut8()
        {
            var data = new byte[256 * 4];
            for (var i = 0; i < 256; i++)
            {
                var srcIndex = Ps2.Repl(i);
                data[i * 4 + 0] = Clut[srcIndex * 4 + 0];
                data[i * 4 + 1] = Clut[srcIndex * 4 + 1];
                data[i * 4 + 2] = Clut[srcIndex * 4 + 2];
                data[i * 4 + 3] = Ps2.FromPs2Alpha(Clut[srcIndex * 4 + 3]);
            }

            return data;
        }
示例#2
0
            private static byte[] GetBitmapFrom8bpp(byte[] src, byte[] palette, int width, int height)
            {
                var dst = new byte[width * height * 4];

                for (int i = 0; i < dst.Length; i += 4)
                {
                    var index = Ps2.Repl(src[i / 4]);
                    dst[i + 0] = (byte)Math.Max(0, palette[index * 4 + 2] * 2 - 1);
                    dst[i + 1] = (byte)Math.Max(0, palette[index * 4 + 1] * 2 - 1);
                    dst[i + 2] = (byte)Math.Max(0, palette[index * 4 + 0] * 2 - 1);
                    dst[i + 3] = (byte)Math.Max(0, palette[index * 4 + 3] * 2 - 1);
                }

                return(dst);
            }
示例#3
0
        private static byte[] GetKh2Clut8(byte[] rawClut)
        {
            var inputColorCount = rawClut.Length / 4;
            var newClut         = new byte[256 * 4];

            for (var i = 0; i < inputColorCount; i++)
            {
                var dstIndex = Ps2.Repl(i);
                newClut[dstIndex * 4 + 0] = rawClut[i * 4 + 0];
                newClut[dstIndex * 4 + 1] = rawClut[i * 4 + 1];
                newClut[dstIndex * 4 + 2] = rawClut[i * 4 + 2];
                newClut[dstIndex * 4 + 3] = ToPs2Alpha(rawClut[i * 4 + 3]);
            }

            return(newClut);
        }
示例#4
0
        private static byte[] GetKh2Clut8(byte[] rawClut)
        {
            var newClut = new byte[256 * 4];

            if (rawClut.Length < newClut.Length)
            {
                throw new ArgumentException(
                          $"The clut must be at least {newClut.Length} bytes long.");
            }

            for (var i = 0; i < 256; i++)
            {
                var dstIndex = Ps2.Repl(i);
                newClut[dstIndex * 4 + 0] = rawClut[i * 4 + 0];
                newClut[dstIndex * 4 + 1] = rawClut[i * 4 + 1];
                newClut[dstIndex * 4 + 2] = rawClut[i * 4 + 2];
                newClut[dstIndex * 4 + 3] = ToPs2Alpha(rawClut[i * 4 + 3]);
            }

            return(newClut);
        }