mirror of
https://github.com/processing/processing4.git
synced 2026-01-29 19:31:16 +01:00
83 lines
1.4 KiB
Plaintext
Executable File
83 lines
1.4 KiB
Plaintext
Executable File
/**
|
|
* Typing (Excerpt from the piece Textension)
|
|
* by Josh Nimoy.
|
|
*
|
|
* Click in the window to give it focus.
|
|
* Type to add letters and press backspace or delete to remove them.
|
|
*/
|
|
|
|
|
|
int leftmargin = 10;
|
|
int rightmargin = 20;
|
|
String buff = "";
|
|
boolean didntTypeYet = true;
|
|
|
|
void setup()
|
|
{
|
|
size(640, 360, P3D);
|
|
textFont(loadFont("Univers45.vlw"), 25);
|
|
}
|
|
|
|
void draw()
|
|
{
|
|
background(176);
|
|
|
|
if((millis() % 500) < 250){ // Only fill cursor half the time
|
|
noFill();
|
|
}
|
|
else {
|
|
fill(255);
|
|
stroke(0);
|
|
}
|
|
float rPos;
|
|
// Store the cursor rectangle's position
|
|
rPos = textWidth(buff) + leftmargin;
|
|
rect(rPos+1, 19, 10, 21);
|
|
|
|
// Some instructions at first
|
|
if(didntTypeYet) {
|
|
fill(0);
|
|
//text("Use the keyboard.", 22, 40);
|
|
}
|
|
|
|
fill(0);
|
|
pushMatrix();
|
|
translate(rPos,10+25);
|
|
char k;
|
|
for(int i = 0;i < buff.length(); i++) {
|
|
k = buff.charAt(i);
|
|
translate(-textWidth(k),0);
|
|
rotateY(-textWidth(k)/70.0);
|
|
rotateX(textWidth(k)/70.0);
|
|
scale(1.1);
|
|
text(k,0,0);
|
|
}
|
|
popMatrix();
|
|
}
|
|
|
|
void keyPressed()
|
|
{
|
|
char k;
|
|
k = (char)key;
|
|
switch(k){
|
|
case 8:
|
|
if(buff.length()>0){
|
|
buff = buff.substring(1);
|
|
}
|
|
break;
|
|
case 13: // Avoid special keys
|
|
case 10:
|
|
case 65535:
|
|
case 127:
|
|
case 27:
|
|
break;
|
|
default:
|
|
if(textWidth(buff+k)+leftmargin < width-rightmargin){
|
|
didntTypeYet = false;
|
|
buff=k+buff;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|