mirror of https://github.com/dcoredump/dexed.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
4.1 KiB
116 lines
4.1 KiB
/*
|
|
==============================================================================
|
|
|
|
ProgramSelector.cpp
|
|
Created: 29 Sep 2014 4:45:42pm
|
|
Author: Pascal Gauthier
|
|
|
|
==============================================================================
|
|
*/
|
|
#include "AlgoDisplay.h"
|
|
|
|
/**
|
|
* Algorithm arrangements, based on the DX1 display.
|
|
*/
|
|
static const char algoArr[][13] = {
|
|
// 1 2 3 4 5 6 7 8 9 A B C D
|
|
{ 0, 0, 1, 3, 0, 0, 0, 2, 4, 0, 0, 5, -6 }, // 1
|
|
{ 0, 0, 1, 3, 0, 0, 0, -2, 4, 0, 0, 5, 6 }, // 2
|
|
{ 0, 0, 1, 4, 0, 0, 0, 2, 5, 0, 3, -6, 0 }, // 3
|
|
{ 0, 0, 1, -4, 0, 0, 0, 2, -5, 0, 3, -6, 0 }, // 4
|
|
{ 0, 1, 3, 5, 0, 0, 2, 4, -6, 0, 0, 0, 0 }, // 5
|
|
{ 0, 1, 3, -5, 0, 0, 2, 4, -6, 0, 0, 0, 0 }, // 6
|
|
{ 0, 1, 3, 0, 0, 0, 2, 4, 5, 0, 0, -6, 0 }, // 7
|
|
{ 0, 1, 3, 0, 0, 0, 2, -4, 5, 0, 0, 6, 0 }, // 8
|
|
{ 0, 1, 3, 0, 0, 0, -2, 4, 5, 0, 0, 6, 0 }, // 9
|
|
{ 0, 0, 4, 1, 0, 0, 5, 6, 2, 0, 0, -3, 0 }, // 10
|
|
{ 0, 0, 4, 1, 0, 0, 5, -6, 2, 0, 0, 3, 0 }, // 11
|
|
{ 0, 0, 3, 0, 1, 0, 4, 5, 6, -2, 0, 0, 0 }, // 12
|
|
{ 0, 0, 3, 0, 1, 0, 4, 5, -6, 2, 0, 0, 0 }, // 13
|
|
// 1 2 3 4 5 6 7 8 9 A B C D
|
|
{ 0, 0, 1, 3, 0, 0, 0, 2, 4, 0, 5, -6, 0 }, // 14
|
|
{ 0, 0, 1, 3, 0, 0, 0, -2, 4, 0, 5, 6, 0 }, // 15
|
|
{ 0, 0, 1, 0, 0, 0, 2, 3, 5, 0, 4, -6, 0 }, // 16
|
|
{ 0, 0, 1, 0, 0, 0, -2, 3, 5, 0, 4, 6, 0 }, // 17
|
|
{ 0, 0, 1, 0, 0, 0, 2, -3, 4, 0, 0, 5, 6 }, // 18
|
|
{ 0, 0, 1, 4, 5, 0, 0, 2, -6, 0, 3, 0, 0 }, // 19
|
|
{ 0, 1, 2, 0, 4, 0, -3, 0, 5, 6, 0, 0, 0 }, // 20
|
|
{ 0, 1, 2, 4, 5, 0, -3, 0, 6, 0, 0, 0, 0 }, // 21
|
|
{ 0, 1, 3, 4, 5, 0, 2, 0, -6, 0, 0, 0, 0 }, // 22
|
|
{ 0, 1, 2, 4, 5, 0, 0, 3, -6, 0, 0, 0, 0 }, // 23
|
|
{ 1, 2, 3, 4, 5, 0, 0, 0, -6, 0, 0, 0, 0 }, // 24
|
|
{ 1, 2, 3, 4, 5, 0, 0, 0, -6, 0, 0, 0, 0 }, // 25
|
|
{ 0, 1, 2, 0, 4, 0, 0, 3, 5, -6, 0, 0, 0 }, // 26
|
|
// 1 2 3 4 5 6 7 8 9 A B C D
|
|
{ 0, 1, 2, 0, 4, 0, 0, -3, 5, 6, 0, 0, 0 }, // 27
|
|
{ 0, 1, 3, 6, 0, 0, 2, 4, 0, 0, -5, 0, 0 }, // 28
|
|
{ 0, 1, 2, 3, 5, 0, 0, 0, 4, -6, 0, 0, 0 }, // 29
|
|
{ 0, 1, 2, 3, 6, 0, 0, 0, 4, 0, 0, -5, 0 }, // 30
|
|
{ 1, 2, 3, 4, 5, 0, 0, 0, 0, -6, 0, 0, 0 }, // 31
|
|
{ 1, 2, 3, 4, 5, -6, 0, 0, 0, 0, 0, 0, 0 } // 32
|
|
};
|
|
|
|
AlgoDisplay::AlgoDisplay() {
|
|
static char tmpAlgo = 0;
|
|
algo = &tmpAlgo;
|
|
}
|
|
|
|
void AlgoDisplay::paint(Graphics &g) {
|
|
int alg;
|
|
|
|
if ( *algo <= 31 ) {
|
|
alg = *algo;
|
|
} else {
|
|
alg = 31;
|
|
}
|
|
const char *arr = algoArr[alg];
|
|
|
|
g.setColour (Colours::black.withAlpha(0.1f));
|
|
g.fillRoundedRectangle (0.0f, 0.0f, (float) getWidth(), (float) getHeight(), 1.0f);
|
|
|
|
for(int i=0;i<13;i++) {
|
|
int target = arr[i];
|
|
if ( target == 0 )
|
|
continue;
|
|
|
|
if ( i < 6 ) {
|
|
drawOp(g, i, 3, target);
|
|
continue;
|
|
}
|
|
|
|
if ( i < 10 ){
|
|
drawOp(g, (i-6)+1, 2, target);
|
|
continue;
|
|
}
|
|
|
|
if ( i < 12 ) {
|
|
drawOp(g, (i-10)+2, 1, target);
|
|
continue;
|
|
}
|
|
|
|
// last one
|
|
drawOp(g, (i-12)+3, 0, target);
|
|
}
|
|
|
|
String algoTxt;
|
|
algoTxt << (alg+1);
|
|
g.drawText(algoTxt, 5, 1, 21, 14, Justification::left, true);
|
|
}
|
|
|
|
void AlgoDisplay::drawOp(Graphics &g, int x, int y, int num) {
|
|
String txt;
|
|
txt << abs(num);
|
|
|
|
int offx = 24;
|
|
int offy = 17;
|
|
|
|
g.setColour(Colour(0xFF0FC00F));
|
|
g.fillRect(x*offx+4, y*offy+3, offx-2, offy-1);
|
|
g.setColour(Colour(0xFFFFFFFF));
|
|
g.drawText(txt, x*offx+3, y*offy+2, offx+2, offy+2, Justification::centred, true);
|
|
if ( num < 0 ) {
|
|
g.setColour(Colour(0xFFFFFFFF));
|
|
int x1 = (x*offx) + 24;
|
|
g.drawLine(x1+1, y*offy+3, x1+1, y*offy+offy+2, 3);
|
|
}
|
|
} |