/* built with Studio Sketchpad: * https://sketchpad.cc * * observe the evolution of this sketch: * https://studio.sketchpad.cc/sp/pad/view/ro.y1S3nFYjA77/rev.23 * * authors: * GoToLoop * license (unless otherwise specified): * creative commons attribution-share alike 3.0 license. * https://creativecommons.org/licenses/by-sa/3.0/ */ /** * Grid Palette (v5.23) * by des812 (2014/Apr) * mod GoToLoop * * forum.processing.org/two/discussion/4491/ * is-it-possible-to-nest-multiple-versions-of- * a-2d-array-in-another-array * * studio.processingtogether.com/sp/pad/export/ * ro.9tBDwfhlJ2R9D/latest */ static final int GRAYS = 9; static final color[] grays = new color[GRAYS]; //static // Java only { for (int i = GRAYS; i-- != 0; grays[i] = min(0400 - 040*i, 0xFF)); println(grays); println(); } static final int DIM = 100, FPS = 12, QUALITY = 0; static final int PROWS = 1, PCOLS = 3; static final int ROWS = 3, COLS = 5; final color[][][] grids = new color[PROWS*PCOLS][ROWS][COLS]; int idx; { // Palette 0x1: fillPalette(grids[0], new int[] { 0, 0, 7, 3, 0, // row 0 3, 8, 1, 1, 6, // row 1 4, 1, 0, 0, 0 // row 2 } ); } { // Palette 0x1: fillPalette(grids[1], new int[] { 2, 2, 0, 3, 2, // row 0 2, 5, 2, 2, 2, // row 1 0, 5, 2, 0, 0 // row 2 } ); } { // Palette 0x2: fillPalette(grids[2], new int[] { 0, 0, 0, 0, 0, // row 0 0, 3, 3, 3, 3, // row 1 3, 3, 3, 8, 4 // row 2 } ); } static final void fillPalette(color[][] grid, int[] seq) { int i = 0; for (color[] row: grid) for (int c = 0; c != COLS; row[c++] = grays[seq[i++]]); } void setup() { size(COLS*DIM, ROWS*DIM, JAVA2D); frameRate(FPS); noLoop(); smooth(QUALITY); noStroke(); rectMode(CORNER); online = 1/2 == 1/2.; } void draw() { final color[][] grid = grids[idx]; for (color[] row: grid) { for (int c = COLS; c-- != 0;) { fill(row[c]); rect(c*DIM, 0, DIM, DIM); } translate(0, DIM); } displayInfo(); } void displayInfo() { final String msg = "Palette Index: #" + idx + "\t[" + (idx/PCOLS | 0) + ", " + idx%PCOLS + "]"; println(msg); if (!online) frame.setTitle(msg); } void mousePressed() { jumpPalette(mouseButton == LEFT? -1 : 1); redraw(); } void mouseWheel(MouseEvent e) { jumpPalette(e.getCount()*PCOLS); redraw(); } void keyPressed() { final int k = keyCode; if (k == 'A' | k == LEFT) jumpPalette(-1); else if (k == 'D' | k == RIGHT) jumpPalette(1); else if (k == 'W' | k == UP) jumpPalette(-PCOLS); else if (k == 'S' | k == DOWN) jumpPalette(PCOLS); redraw(); } void jumpPalette(int step) { idx = (idx + step + grids.length) % grids.length; }