Skip to content

Instantly share code, notes, and snippets.

@youxkei
Created September 1, 2016 14:48
Show Gist options
  • Save youxkei/92d9b43bb1b52e128f406319832fe1ad to your computer and use it in GitHub Desktop.
Save youxkei/92d9b43bb1b52e128f406319832fe1ad to your computer and use it in GitHub Desktop.
import std.experimental.ndslice : sliced, blocks;
import std.range : iota;
import std.array : array;
import std.stdio : writeln;
enum MATRIX_WIDTH_PANELS = 2;
enum MATRIX_HEIGHT_PANELS = 2;
enum PANEL_WIDTH_DOTS = 3;
enum PANEL_HEIGHT_DOTS = 3;
enum BYTES_PER_DOT = 3;
enum MATRIX_WIDTH_DOTS = MATRIX_WIDTH_PANELS * PANEL_WIDTH_DOTS;
enum MATRIX_HEIGHT_DOTS = MATRIX_HEIGHT_PANELS * PANEL_HEIGHT_DOTS;
enum MATRIX_WIDTH_BYTES = MATRIX_WIDTH_DOTS * BYTES_PER_DOT;
enum MATRIX_HEIGHT_BYTES = MATRIX_HEIGHT_DOTS * BYTES_PER_DOT;
void main()
{
auto bitmap = iota(MATRIX_HEIGHT_DOTS * MATRIX_WIDTH_DOTS * BYTES_PER_DOT).array.sliced(MATRIX_HEIGHT_DOTS, MATRIX_WIDTH_DOTS, BYTES_PER_DOT).blocks(PANEL_HEIGHT_DOTS, PANEL_WIDTH_DOTS, BYTES_PER_DOT);
auto buffer = new int[](MATRIX_HEIGHT_DOTS * MATRIX_WIDTH_DOTS * BYTES_PER_DOT).array.sliced(MATRIX_HEIGHT_PANELS * MATRIX_WIDTH_PANELS, PANEL_HEIGHT_DOTS, PANEL_WIDTH_DOTS, BYTES_PER_DOT);
buffer[1][] = bitmap[0, 0, 0];
buffer.writeln;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment