public void RenderColoredGray4(ColoredFrame frame) { // fall back if firmware doesn't support colored gray 4 if (!_supportsColoredGray4) { var rgb24Frame = ColorUtil.ColorizeFrame(DmdWidth, DmdHeight, FrameUtil.Join(DmdWidth, DmdHeight, frame.Planes), frame.Palette); RenderRgb24(rgb24Frame); return; } // copy palette var paletteChanged = false; for (var i = 0; i < 16; i++) { var color = frame.Palette[i]; var j = i * 3; paletteChanged = paletteChanged || (_frameBufferColoredGray4[j + 1] != color.R || _frameBufferColoredGray4[j + 2] != color.G || _frameBufferColoredGray4[j + 3] != color.B); _frameBufferColoredGray4[j + 1] = color.R; _frameBufferColoredGray4[j + 2] = color.G; _frameBufferColoredGray4[j + 3] = color.B; } // copy frame var frameChanged = FrameUtil.Copy(frame.Planes, _frameBufferColoredGray4, 49); // send frame buffer to device if (frameChanged || paletteChanged) { RenderRaw(_frameBufferColoredGray4); } }
public void RenderRgb24(byte[] frame) { // copy data to frame buffer var changed = FrameUtil.Copy(frame, _frameBufferRgb24, 1); // can directly be sent to the device. if (changed) { RenderRaw(_frameBufferRgb24); } }
public void RenderColoredGray4(ColoredFrame frame) { SetPalette(frame.Palette, frame.PaletteIndex); // copy to buffer var changed = FrameUtil.Copy(frame.Planes, _frameBufferGray4, 4); // send frame buffer to device if (changed) { RenderRaw(_frameBufferGray4); } }
public void RenderRgb24(byte[] frame) { bool changed; // can directly be sent to the device. _frameBufferRgb24[0] = 3; // copy data to frame buffer changed = FrameUtil.Copy(frame, _frameBufferRgb24, 1); if (changed) { pDMD.StreamBytes(_frameBufferRgb24, DmdWidth * DmdHeight * 3 + 1); } }
public void RenderColoredGray4(byte[][] planes, Color[] palette) { SetPalette(palette); // copy to buffer var changed = FrameUtil.Copy(planes, _frameBufferGray4, 4); // send frame buffer to device if (changed) { RenderRaw(_frameBufferGray4); } }
public void RenderGray2(byte[] frame) { // split frame into 2-bit planes var planes = FrameUtil.Split(DmdWidth, DmdHeight, 2, frame); // copy planes into frame buffer var changed = FrameUtil.Copy(planes, _frameBuffer, 4); // send buffer to device if (changed) { RenderRaw(_frameBuffer); } }
public void RenderGray4(byte[] frame) { // split to sub frames var planes = FrameUtil.Split(DmdWidth, DmdHeight, 4, frame); // copy to frame buffer var changed = FrameUtil.Copy(planes, _frameBufferGray4, 13); // send frame buffer to device if (changed) { RenderRaw(_frameBufferGray4); } }
public void RenderColoredGray2(byte[][] planes, Color[] palette) { // update palette SetPalette(palette); // copy to frame buffer var changed = FrameUtil.Copy(planes, _frameBufferGray2, 13); // send frame buffer to device if (changed) { RenderRaw(_frameBufferGray2); } }
public void RenderColoredGray2(ColoredFrame frame) { // update palette WritePalette(frame.Palette); // copy to frame buffer var changed = FrameUtil.Copy(frame.Planes, _frameBufferGray2, 13); // send frame buffer to device if (changed) { RenderRaw(_frameBufferGray2); } }
public void RenderColoredGray6(ColoredFrame frame) { // copy palette var paletteChanged = CopyPalette(frame.Palette, _frameBufferColoredGray6, 64); // copy frame var frameChanged = FrameUtil.Copy(frame.Planes, _frameBufferColoredGray6, 193); // send frame buffer to device if (frameChanged || paletteChanged) { RenderRaw(_frameBufferColoredGray6); } }
public void RenderGray2(byte[] frame) { // split to sub frames var planes = FrameUtil.Split(DmdWidth, DmdHeight, 2, frame); // copy to frame buffer var changed = FrameUtil.Copy(planes, _frameBufferGray2, 13); // send frame buffer to device if (changed) { WritePalette(_currentPalette); RenderRaw(_frameBufferGray2); } }
public void RenderColoredGray4(ColoredFrame frame) { if (frame.Planes.Length == 0) { return; } const int numColors = 16; const int bytesPerColor = 3; var dataLength = bytesPerColor * numColors + frame.Planes[0].Length * frame.Planes.Length; EmitTimestampedData("coloredgray4", dataLength, (data, offset) => { Buffer.BlockCopy(ColorUtil.ToByteArray(frame.Palette), 0, data, offset, bytesPerColor * numColors); FrameUtil.Copy(frame.Planes, data, offset + bytesPerColor * numColors); }); }
public void RenderColoredGray2(byte[][] planes, Color[] palette) { if (planes.Length == 0) { return; } const int numColors = 4; const int bytesPerColor = 3; var dataLength = bytesPerColor * numColors + planes[0].Length * planes.Length; EmitTimestampedData("coloredgray2", dataLength, (data, offset) => { Buffer.BlockCopy(ColorUtil.ToByteArray(palette), 0, data, offset, bytesPerColor * numColors); FrameUtil.Copy(planes, data, offset + bytesPerColor * numColors); }); }
public void RenderRgb24(byte[] frameRgb24) { // convert rgb24 to rgb565 var frame565 = ImageUtil.ConvertToRgb565(DmdWidth, DmdHeight, frameRgb24); // split into planes to send over the wire var newFrame = new byte[DmdHeight * DmdWidth * 3 / 2]; FrameUtil.SplitIntoRgbPlanes(frame565, DmdWidth, 16, newFrame, ColorMatrix); // copy to frame buffer var changed = FrameUtil.Copy(newFrame, _frameBuffer, 1); // send to device if changed if (changed) { RenderRaw(_frameBuffer); } }
public void RenderGray4(byte[] frame) { EmitTimestampedData("gray4planes", frame.Length / 2, (data, offset) => FrameUtil.Copy(FrameUtil.Split(_width, _height, 4, frame), data, offset)); }