mirror of
https://github.com/dyne/FreeJ.git
synced 2026-02-07 21:39:22 +01:00
processing-js 0.4 has been merged in some relevant parts basic and topic scripts added for test color handling fixed, more scripts show up now
134 lines
2.1 KiB
Plaintext
134 lines
2.1 KiB
Plaintext
Handle[] handles;
|
|
int num;
|
|
|
|
void setup()
|
|
{
|
|
size(200, 200);
|
|
num = height/15;
|
|
handles = new Handle[num];
|
|
int hsize = 10;
|
|
for(int i=0; i<num; i++) {
|
|
handles[i] = new Handle(width/2, 10+i*15, 50-hsize/2, 10, handles);
|
|
}
|
|
}
|
|
|
|
void draw()
|
|
{
|
|
background(153);
|
|
|
|
for(int i=0; i<num; i++) {
|
|
handles[i].update();
|
|
handles[i].display();
|
|
}
|
|
|
|
fill(0);
|
|
rect(0, 0, width/2, height);
|
|
}
|
|
|
|
void mouseReleased()
|
|
{
|
|
for(int i=0; i<num; i++) {
|
|
handles[i].release();
|
|
}
|
|
}
|
|
|
|
class Handle
|
|
{
|
|
int x, y;
|
|
int boxx, boxy;
|
|
int length;
|
|
int size;
|
|
boolean isOver;
|
|
boolean isPress;
|
|
boolean locked = false;
|
|
boolean otherslocked = false;
|
|
Handle[] others;
|
|
|
|
Handle(int ix, int iy, int il, int is, Handle[] o)
|
|
{
|
|
x = ix;
|
|
y = iy;
|
|
length = il;
|
|
size = is;
|
|
boxx = x+length - size/2;
|
|
boxy = y - size/2;
|
|
others = o;
|
|
}
|
|
|
|
void update()
|
|
{
|
|
boxx = x+length;
|
|
boxy = y - size/2;
|
|
|
|
for(int i=0; i<others.length; i++) {
|
|
if(others[i].locked == true) {
|
|
otherslocked = true;
|
|
break;
|
|
} else {
|
|
otherslocked = false;
|
|
}
|
|
}
|
|
|
|
if(otherslocked == false) {
|
|
over();
|
|
press();
|
|
}
|
|
|
|
if(isPress) {
|
|
length = lock(mouseX-width/2-size/2, 0, width/2-size-1);
|
|
}
|
|
}
|
|
|
|
void over()
|
|
{
|
|
if(overRect(boxx, boxy, size, size)) {
|
|
isOver = true;
|
|
} else {
|
|
isOver = false;
|
|
}
|
|
}
|
|
|
|
void press()
|
|
{
|
|
if(isOver && mousePressed || locked) {
|
|
isPress = true;
|
|
locked = true;
|
|
} else {
|
|
isPress = false;
|
|
}
|
|
}
|
|
|
|
void release()
|
|
{
|
|
locked = false;
|
|
}
|
|
|
|
void display()
|
|
{
|
|
line(x, y, x+length, y);
|
|
fill(255);
|
|
stroke(0);
|
|
rect(boxx, boxy, size, size);
|
|
if(isOver || isPress) {
|
|
line(boxx, boxy, boxx+size, boxy+size);
|
|
line(boxx, boxy+size, boxx+size, boxy);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
boolean overRect(int x, int y, int width, int height)
|
|
{
|
|
if (mouseX >= x && mouseX <= x+width &&
|
|
mouseY >= y && mouseY <= y+height) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
int lock(int val, int minv, int maxv)
|
|
{
|
|
return min(max(val, minv), maxv);
|
|
}
|