Animatroller.Framework.Import.DmxPlayback.OutputData C# (CSharp) Method

OutputData() private method

private OutputData ( DmxFrame dmxFrame, Bitmap bitmap, Rectangle bitmapRect, int stride ) : void
dmxFrame Animatroller.Framework.Import.FileFormat.DmxFrame
bitmap System.Drawing.Bitmap
bitmapRect System.Drawing.Rectangle
stride int
return void
        private void OutputData(DmxFrame dmxFrame, Bitmap bitmap, Rectangle bitmapRect, int stride)
        {
            int[] mapping;
            if (dmxFrame.Data != null && this.pixelMapping.TryGetValue(dmxFrame.Universe, out mapping))
            {
                BitmapData bitmapData = bitmap.LockBits(bitmapRect, ImageLockMode.WriteOnly, bitmap.PixelFormat);

                int maxLen = Math.Min(dmxFrame.Data.Length, mapping.Length * 3);
                for (int pos = 0; pos < maxLen; pos++)
                {
                    int bytePos = mapping[pos];
                    if (bytePos >= 0 && bytePos < this.rgbValues.Length)
                        this.rgbValues[bytePos] = dmxFrame.Data[pos];
                }

                System.Runtime.InteropServices.Marshal.Copy(this.rgbValues, 0, bitmapData.Scan0, this.rgbValues.Length);
                bitmap.UnlockBits(bitmapData);
            }

            if (dmxFrame.Universe == this.triggerSyncOnUniverse)
                this.device.PushOutput(this.sub.Token);
        }