int frameSize = WINDOWSIZE - FRAMEBORDER*2; int buttonSize = frameSize / 8; int offset = 1; boolean displaystate = false; boolean dlock = false; void display(int x, int y, int lcolor) { if (!SILENTMODE) { while (dlock); dlock = true; fill(64, 64, 64); noStroke(); smooth(); int o = 150; if (x >= 0 && x < 8 && y >= 0 && y < 8 && displaystate) rect((x*buttonSize)+FRAMEBORDER+offset, (y*buttonSize)+FRAMEBORDER+offset, buttonSize-offset, buttonSize-offset); if (lcolor == RED) fill(255, 0, 0, o); if (lcolor == REDL) fill(127, 0, 0, o); if (lcolor == GREEN) fill(0, 255, 0, o); if (lcolor == GREENL) fill(0, 127, 0, o); if (lcolor == AMBER) fill(255, 127, 0, o); if (lcolor == AMBERL) fill(127, 63, 0, o); if (lcolor == YELLOW) fill(255, 255, 0, o); if (lcolor == BLUE) fill(0, 0, 255, o); if (lcolor == BLUEL) fill(0, 0, 127, o); if (lcolor == CYAN) fill(0, 255, 255, o); if (lcolor == CYANL) fill(0, 127, 127, o); if (lcolor == MAGENTA) fill(255, 0, 255, o); if (lcolor == MAGENTAL) fill(127, 0, 127, o); if (lcolor == WHITE) fill(230, 230, 230, o); if (lcolor == WHITEL) fill(180, 180, 200, o); if (x >= 0 && x < 8 && y >= 0 && y < 8 && displaystate) { rect((x*buttonSize)+FRAMEBORDER+offset, (y*buttonSize)+FRAMEBORDER+offset, buttonSize-offset, buttonSize-offset); o = 16; if (lcolor == RED) fill(255, 0, 0, o); if (lcolor == REDL) fill(127, 0, 0, o); if (lcolor == GREEN) fill(0, 255, 0, o); if (lcolor == GREENL) fill(0, 127, 0, o); if (lcolor == AMBER) fill(255, 127, 0, o); if (lcolor == AMBERL) fill(127, 63, 0, o); if (lcolor == YELLOW) fill(255, 255, 0, o); if (lcolor == BLUE) fill(0, 0, 255, o); if (lcolor == BLUEL) fill(0, 0, 127, o); if (lcolor == CYAN) fill(0, 255, 255, o); if (lcolor == CYANL) fill(0, 127, 127, o); if (lcolor == MAGENTA) fill(255, 0, 255, o); if (lcolor == MAGENTAL) fill(127, 0, 127, o); if (lcolor == WHITE) fill(230, 230, 230, o); if (lcolor == WHITEL) fill(200, 200, 200, o); noStroke(); for(int i = 30; i > 0; i--) { ellipse((x*buttonSize+(buttonSize/2))+FRAMEBORDER+offset, (y*buttonSize+(buttonSize/2))+FRAMEBORDER+offset, (buttonSize-i*2)-4, (buttonSize-i*2)-4); } } dlock = false; } } void ledOn(int x, int y, int lcolor) { if (displaystate) { int address = (y*16) + x; if (!NETWORK) launchpad.sendOn(address, lcolor, 0); if (online) slaveOn(x, y, lcolor); display(x, y, lcolor); } } void ledOff(int x, int y) { if (displaystate) { int address = (y*16) + x; if (!NETWORK) launchpad.sendOn(address, 0, 0); } } void clearDisplay() { if (displaystate) { if (!NETWORK) launchpad.sendCtl(0, 0, 0); if (online) slaveClear(); fill(64, 64, 64); for (int i = 0; i < 64; i++) { if (!SILENTMODE) rect(((i%8)*buttonSize)+FRAMEBORDER+offset, ((int)((float)i/8)*buttonSize)+FRAMEBORDER+offset, buttonSize-offset, buttonSize-offset); } } } void pageName() { pagename = pagenames[selectedPage-1]; //debug("pageName()"+pagename); fill(#000000); noStroke(); rect(0, WINDOWSIZE-12, 250, 12); fill(#FFFFFF); textFont(f11, 11); smooth(); textAlign(LEFT); if (pagename != null) text(pagename, 2, WINDOWSIZE-2); } int randomColor() { colors[0] = BLACK; colors[1] = BLUE; colors[2] = RED; colors[3] = CYAN; colors[4] = AMBER; colors[5] = YELLOW; colors[6] = GREEN; colors[7] = MAGENTA; colors[8] = BLACK; colors[9] = BLACK; colors[10] = BLACK; int select = (int)random(11); return colors[select]; }