Exemple #1
0
        private byte[][] RenderLCM(byte[][] vpmFrame)
        {
            var frame_count = LCMBufferPlanes.Count;

            byte[][] outplanes;
            outplanes = new byte[frame_count][];

            if (SwitchMode == SwitchMode.LayeredColorMask)
            {
                for (int i = 0; i < vpmFrame.Length; i++)
                {
                    outplanes[i] = vpmFrame[i];
                }
                for (int i = vpmFrame.Length; i < frame_count; i++)
                {
                    outplanes[i] = LCMBufferPlanes[i];
                }
            }
            if (SwitchMode == SwitchMode.MaskedReplace)
            {
                if (LCMBufferPlanes[0].Length == vpmFrame[0].Length * 4)
                {
                    if (ScalerMode == ScalerMode.Doubler)
                    {
                        vpmFrame = FrameUtil.Scale2(Width, Height, vpmFrame);
                    }
                    else
                    {
                        vpmFrame = FrameUtil.Scale2x(Width, Height, vpmFrame);
                    }
                }

                for (int i = 0; i < frame_count; i++)
                {
                    if (i < vpmFrame.Length)
                    {
                        outplanes[i] = FrameUtil.CombinePlaneWithMask(LCMBufferPlanes[i], vpmFrame[i], ReplaceMask);
                    }
                    else
                    {
                        outplanes[i] = LCMBufferPlanes[i];
                    }
                }
            }

            return(outplanes);
        }