mirror of
https://github.com/opus-tango/B12NumbersV3.git
synced 2026-03-20 03:55:20 +00:00
0.1.5.6 - MathPad complete
This commit is contained in:
@@ -5,9 +5,11 @@ class B12Expression {
|
||||
expression = new B12Digit[0];
|
||||
}
|
||||
|
||||
// GETTERS //
|
||||
B12Digit getDigit(int index){ return expression[index]; }
|
||||
int length(){return expression.length;}
|
||||
|
||||
// SETTERS //
|
||||
B12Expression insertChar(int ind, B12Digit _digit){
|
||||
expression = (B12Digit[])append(expression, _digit); // Add the new digit
|
||||
if(ind < expression.length - 1){ // Swap new digit
|
||||
@@ -18,14 +20,18 @@ class B12Expression {
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
B12Expression addChar(B12Digit _digit){
|
||||
expression = (B12Digit[])append(expression, _digit);
|
||||
return this;
|
||||
}
|
||||
B12Expression delete(){
|
||||
expression = (B12Digit[])shorten(expression);
|
||||
return this;
|
||||
}
|
||||
|
||||
void clear(){
|
||||
B12Expression clear(){
|
||||
expression = new B12Digit[0];
|
||||
return this;
|
||||
}
|
||||
|
||||
void evaluate(){
|
||||
|
||||
@@ -9,6 +9,9 @@ class Button{
|
||||
private color col; // Stores static color
|
||||
private color highlight; // Stores mouseover color
|
||||
private String text;
|
||||
private float textSize;
|
||||
private color textColor;
|
||||
private int renderPriority; // 0: default, render text size within button size 1: render button around text
|
||||
|
||||
private MethodRelay function; // Gets called when button is pressed
|
||||
private boolean mouseOver;
|
||||
@@ -25,6 +28,9 @@ class Button{
|
||||
colorMode(HSB);
|
||||
highlight = color(150);
|
||||
text = "";
|
||||
textSize = dim.y * 0.8;
|
||||
textColor = 0;
|
||||
renderPriority = 0;
|
||||
|
||||
mouseOver = false;
|
||||
listener = new LiveMethodRelay(this, "clicked", 'p', Object.class);
|
||||
@@ -38,8 +44,10 @@ class Button{
|
||||
color getColor(){return col;}
|
||||
color getHighlight(){return highlight;}
|
||||
String getText(){return text;}
|
||||
color getTextColor(){return textColor;}
|
||||
MethodRelay getFunction(){return function;}
|
||||
int getMode(){return mode; }
|
||||
int getRenderPriority(){return renderPriority;}
|
||||
|
||||
// SETTERS //
|
||||
Button setPos(PVector _pos){pos = _pos.copy(); return this;}
|
||||
@@ -52,6 +60,9 @@ class Button{
|
||||
Button autoHighlight(){ colorMode(RGB,255); highlight = color(int(red(col) * .85), int(green(col) * .85), int(blue(col) * .85)); return this; }
|
||||
Button setHighlight(color h){ highlight = h; return this; }
|
||||
Button setText(String t){text = t; return this;}
|
||||
Button setTextSize(float s){textSize = s; return this;} // TODO make robust
|
||||
Button setTextColor(color c){textColor = c; return this;}
|
||||
Button setRenderPriority(int p){if(p < 0 || p > 1) throw new IllegalArgumentException(); renderPriority = p; return this;}
|
||||
|
||||
Button setFunction(MethodRelay _function){function = _function; return this;}
|
||||
Button setData(Object... _data){ data = _data; return this;} // Data to pass for button presses. Ugh, note that the array already exists because it's passed as such, no need to create a new one. Stupid bug
|
||||
@@ -59,13 +70,21 @@ class Button{
|
||||
|
||||
// DISPLAY //
|
||||
void display(){
|
||||
mouseOver(mh.sMouseX(),mh.sMouseY());
|
||||
noStroke();
|
||||
rectMode(mode);
|
||||
new MethodRelay(this, "mouseOver" + str(mode), float.class, float.class).execute(mh.sMouseX(),mh.sMouseY());
|
||||
fill(mouseOver ? highlight : col);
|
||||
rect(pos.x,pos.y,dim.x,dim.y,radius);
|
||||
fill(0);
|
||||
textSize(dim.y * 0.8);
|
||||
|
||||
//stroke(textColor); fix this
|
||||
textSize(textSize);
|
||||
if(renderPriority == 0){
|
||||
while(textWidth(text) > dim.x * 0.95){ // WARNING! NOT ROBUST make this a function at some point to allow other rectModes to render properly
|
||||
textSize = textSize - 1;
|
||||
textSize(textSize);
|
||||
}
|
||||
}
|
||||
//textSize(dim.y * 0.8);
|
||||
textAlign(CENTER,BOTTOM);
|
||||
text(text,pos.x + dim.x/2,pos.y + dim.y);
|
||||
}
|
||||
@@ -81,33 +100,27 @@ class Button{
|
||||
}
|
||||
|
||||
// DETECT IF MOUSE IS OVER BUTTON //
|
||||
// The numbers in the method name correspond to the mode ids because the method gets called with a relay
|
||||
void mouseOver0(float x, float y){ // CORNER
|
||||
mouseOver = !(x < pos.x || x > pos.x + dim.x || y < pos.y || y > dim.y + pos.y) ;
|
||||
}
|
||||
|
||||
void mouseOver1(float x, float y){ // CORNERS
|
||||
//println("CORNERS");
|
||||
// Must account for rect render mode
|
||||
void mouseOver(float x, float y){ // CORNER
|
||||
switch(mode){
|
||||
case 0:
|
||||
mouseOver = !(x < pos.x || x > pos.x + dim.x || y < pos.y || y > dim.y + pos.y); break;
|
||||
case 1:
|
||||
mouseOver = !(x < (pos.x > dim.x ? dim.x : pos.x) ||
|
||||
x > (pos.x > dim.x ? pos.x : dim.x) ||
|
||||
y < (pos.y > dim.y ? dim.y : pos.y) ||
|
||||
y > (pos.y > dim.y ? pos.y : dim.y));
|
||||
}
|
||||
|
||||
void mouseOver2(float x, float y){ // RADIUS
|
||||
//println("RADIUS");
|
||||
y > (pos.y > dim.y ? pos.y : dim.y)); break;
|
||||
case 2:
|
||||
mouseOver = !(x < pos.x - dim.x ||
|
||||
x > pos.x + dim.x ||
|
||||
y < pos.x - dim.y ||
|
||||
y > pos.x + dim.y);
|
||||
}
|
||||
|
||||
void mouseOver3(float x, float y){ // CENTER
|
||||
//println("CENTER");
|
||||
y > pos.x + dim.y); break;
|
||||
case 3:
|
||||
mouseOver = !(x < pos.x - dim.x/2 ||
|
||||
x > pos.x + dim.x/2 ||
|
||||
y < pos.x - dim.y/2 ||
|
||||
y > pos.y + dim.y/2);
|
||||
y > pos.y + dim.y/2); break;
|
||||
}
|
||||
}
|
||||
|
||||
// GARBAGE COLLECTION //
|
||||
|
||||
@@ -8,7 +8,7 @@ class MathPad{
|
||||
ex = _ex;
|
||||
mh = _mh;
|
||||
pos = new PVector(0,0);
|
||||
buttons = new B12Button[12];
|
||||
buttons = new Button[12];
|
||||
initialize();
|
||||
}
|
||||
|
||||
@@ -31,6 +31,9 @@ class MathPad{
|
||||
buttons = (Button[])append(buttons, new B12Button(mh, new B12Digit('*')).setPos(new PVector(pos.x + 22*4,pos.y)).setFunction(new MethodRelay(this, "addChar", B12Digit.class)).setColor(220,150));
|
||||
buttons = (Button[])append(buttons, new B12Button(mh, new B12Digit('/')).setPos(new PVector(pos.x + 22*4,pos.y + 22)).setFunction(new MethodRelay(this, "addChar", B12Digit.class)).setColor(220,150));
|
||||
buttons = (Button[])append(buttons, new B12Button(mh, new B12Digit('.')).setPos(new PVector(pos.x + 22*4,pos.y + 22*2)).setFunction(new MethodRelay(this, "addChar", B12Digit.class)).setColor(220,150));
|
||||
buttons = (Button[])append(buttons, new Button(mh).setText("Enter").setPos(new PVector(pos.x + 22*4,pos.y + 22*3)).setDim(new PVector(42,20)).setFunction(new MethodRelay(this.ex, "evaluate")).setColor(220,150)); //<>//
|
||||
buttons = (Button[])append(buttons, new Button(mh).setText("Cl").setPos(new PVector(pos.x + 22*5,pos.y + 22)).setDim(new PVector(20,42)).setFunction(new MethodRelay(this.ex, "clear")).setColor(220,150));
|
||||
buttons = (Button[])append(buttons, new Button(mh).setText("Del").setPos(new PVector(pos.x + 22*5,pos.y)).setDim(new PVector(20,20)).setFunction(new MethodRelay(this.ex, "delete")).setColor(220,150));
|
||||
}
|
||||
|
||||
// DONE send characters to display
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Beta version of a clock in base 12.
|
||||
by Nayan Sawyer
|
||||
started Mar 2022
|
||||
version 0.1.5.5 April 30 2022
|
||||
version 0.1.5.6 April 30 2022
|
||||
|
||||
Characters are a variation of Kaktovik Inupiaq numerals
|
||||
reversed and in base 12 instead of 20. I take no credit
|
||||
@@ -11,16 +11,17 @@
|
||||
Includes method relay code be Quark - see https://forum.processing.org/two/discussion/13093/how-to-call-function-by-string-content.html
|
||||
for more details.
|
||||
|
||||
// TODO add addition method to number interface as well as B12Int and B12Float
|
||||
// TODO change zero character
|
||||
// TODO redo position data handling
|
||||
// TODO add cursor and dynamic position for MathDisplay (Maybe add a "highlighted" attribute to B12Digit?) might need some restructuring
|
||||
// TODO add parsing expression to operable math string (tricky to get base 12 to base 10)
|
||||
// TODO add operator and action buttons to MathPad
|
||||
// TODO add parenthesis functionality
|
||||
// TODO add actual math evaluation to B12Expression
|
||||
// TODO finalize calculator design
|
||||
// MAYBE start clock widget structure
|
||||
// MAYBE add additional operations like power, log, and trig functions
|
||||
|
||||
changelog 0.1.5.6
|
||||
- MathPad complete. Changed internal button mouseOver code
|
||||
from MethodRelay to switch statement. Added delete
|
||||
functionality to B12Expression. Improved but did not
|
||||
finish button text features.
|
||||
|
||||
changelog 0.1.5.5
|
||||
- finished parsing input array to string in B12Expression.
|
||||
Added parenthesis chars to B12Digit and changed 0 char.
|
||||
|
||||
Reference in New Issue
Block a user