mirror of
https://github.com/aster94/logic-analyzer.git
synced 2026-05-01 15:10:43 +03:00
File diff suppressed because it is too large
Load Diff
234
Computer_Interface/DrawFunctions.pde
Normal file
234
Computer_Interface/DrawFunctions.pde
Normal file
@@ -0,0 +1,234 @@
|
|||||||
|
void reset_graph()
|
||||||
|
{
|
||||||
|
box_graph.clear();
|
||||||
|
Arrays.fill(xPos, 0); // reset start point of the graph
|
||||||
|
textCovered = false;
|
||||||
|
yPos = yEdge; // reset upper position
|
||||||
|
stroke(green); // green lines for the next draw
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_boxes()
|
||||||
|
{
|
||||||
|
// clear the boxes
|
||||||
|
box_bottom.clear();
|
||||||
|
box_scroll_bar.clear();
|
||||||
|
box_pin_names.clear();
|
||||||
|
|
||||||
|
// draw buttons
|
||||||
|
button_time_draw.text = "Draw Times: " + str(drawTimes);
|
||||||
|
button_time_format.text = time_format;
|
||||||
|
button_reducer.text = "Reducer: " + nf(reducer, 0, 2);
|
||||||
|
|
||||||
|
button_start.draw();
|
||||||
|
button_time_draw.draw();
|
||||||
|
button_time_format.draw();
|
||||||
|
button_reducer.draw();
|
||||||
|
button_save.draw();
|
||||||
|
|
||||||
|
// scroll bar
|
||||||
|
fill(grey);
|
||||||
|
rect(scroll_bar.from_left, scroll_bar.from_top, scroll_bar.width, scroll_bar.height);
|
||||||
|
|
||||||
|
// pin names
|
||||||
|
fill(white);
|
||||||
|
textSize(14);
|
||||||
|
|
||||||
|
int x = 5;
|
||||||
|
int y = 30;
|
||||||
|
|
||||||
|
for (byte i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
line(x, y - 20, xEdge, y - 20);
|
||||||
|
line(x, y + 10, xEdge, y + 10);
|
||||||
|
stroke(#EF7F1A);
|
||||||
|
dashline(xEdge, y - 23, width, y - 23, spacing);
|
||||||
|
dashline(xEdge, y + 13, width, y + 13, spacing);
|
||||||
|
stroke(white);
|
||||||
|
if (board == "STM32F1")
|
||||||
|
{
|
||||||
|
if (PinArduinoNames[i] == 0)
|
||||||
|
{
|
||||||
|
text("PB " + "OFF", x, y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text("PB " + str(PinArduinoNames[i]), x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else // UNO MEGA ESP8266
|
||||||
|
{
|
||||||
|
if (PinArduinoNames[i] == 0)
|
||||||
|
{
|
||||||
|
text("PIN " + "OFF", x, y);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
text("PIN " + str(PinArduinoNames[i]), x, y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
y += 36;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawCursorChannel(boolean CursorEnable)
|
||||||
|
{
|
||||||
|
if (CursorEnable)
|
||||||
|
{
|
||||||
|
fill(50);
|
||||||
|
stroke(75);
|
||||||
|
if (ChannelCursor1CurrentEvent0[1] == 16) // This variable is used to define the channel on which we move or have marked, in this part we draw the rectangle that emphasizes a channel.
|
||||||
|
{
|
||||||
|
rect(0, yBottom - 12, width - xEdge, 34);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rect(0, yEdge + 36 * ChannelCursor1CurrentEvent0[1] - 2, width - xEdge, 34);
|
||||||
|
}
|
||||||
|
stroke(green);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DrawChannelSignals()
|
||||||
|
{
|
||||||
|
float firstchange;
|
||||||
|
boolean cares;
|
||||||
|
for (int i = 0; i < samples; i++)
|
||||||
|
{
|
||||||
|
cares = false;
|
||||||
|
firstchange = 0;
|
||||||
|
yPos = yEdge; // reset position
|
||||||
|
for (int n = 0; n < 16; n++)
|
||||||
|
{
|
||||||
|
if (PinArduinoNames[n] != 0) // draw only used pins
|
||||||
|
{
|
||||||
|
s = str(PinAssignment[n]);
|
||||||
|
index1 = s.charAt(1) - '0';
|
||||||
|
index2 = s.charAt(0) - '1';
|
||||||
|
//printArray(state[0][0]);
|
||||||
|
//print(state[i][index1][index2]+" , ");
|
||||||
|
if (state[i][index1][index2])
|
||||||
|
{
|
||||||
|
cares = true;
|
||||||
|
if (firstchange == 0)
|
||||||
|
{
|
||||||
|
firstchange = yPos;
|
||||||
|
}
|
||||||
|
ySave = yPos; // save y value
|
||||||
|
|
||||||
|
if (i == 0) // this is the first state
|
||||||
|
{
|
||||||
|
if (isLowInit[index1][index2]) // pin high
|
||||||
|
{
|
||||||
|
yDiff = yPos;
|
||||||
|
yPos += 30;
|
||||||
|
}
|
||||||
|
else // low
|
||||||
|
{
|
||||||
|
yDiff = yPos + 30;
|
||||||
|
}
|
||||||
|
isLow[index1][index2] = isLowInit[index1][index2];
|
||||||
|
//println(isLowInit[index1][index2]);
|
||||||
|
}
|
||||||
|
else // all the others
|
||||||
|
{
|
||||||
|
if (isLow[index1][index2]) // pin high
|
||||||
|
{
|
||||||
|
yDiff = yPos;
|
||||||
|
yPos += 30;
|
||||||
|
isLow[index1][index2] = false;
|
||||||
|
}
|
||||||
|
else // low
|
||||||
|
{
|
||||||
|
yDiff = yPos + 30;
|
||||||
|
isLow[index1][index2] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// finally we draw the lines
|
||||||
|
stroke(green);
|
||||||
|
line(xPos[n] + xShift, yPos, xTime[i] + xShift, yPos); // straight line
|
||||||
|
line(xTime[i] + xShift, yPos, xTime[i] + xShift, yDiff); // vertical line
|
||||||
|
|
||||||
|
xPos[n] = xTime[i]; // save last position of the line for the pin
|
||||||
|
yPos = ySave; // load the initial value of the y
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yPos += 36; // go to the next pin
|
||||||
|
}
|
||||||
|
// Text times
|
||||||
|
if ((drawTimes && cares) || i == 0)
|
||||||
|
{
|
||||||
|
if (ChannelCursor1CurrentEvent0[0] == i)
|
||||||
|
{
|
||||||
|
stroke(red);
|
||||||
|
fill(red);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
stroke(grey);
|
||||||
|
fill(grey);
|
||||||
|
}
|
||||||
|
textSize(10);
|
||||||
|
textCovered = !textCovered;
|
||||||
|
dashline(xTime[i] + xShift, firstchange, xTime[i] + xShift, yBottom, spacing);
|
||||||
|
text(round(usTime[i]), xTime[i] + xShift + 2, (textCovered == true) ? yBottom : yBottom - 10); //write on different height
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ScrollingBarPressed()
|
||||||
|
{
|
||||||
|
if (isDraggable)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left = mouseX - scroll_bar.width / 2;
|
||||||
|
if (scroll_bar.from_left < xEdge)
|
||||||
|
scroll_bar.from_left = int(xEdge);
|
||||||
|
if (scroll_bar.from_left > width - scroll_bar.width)
|
||||||
|
scroll_bar.from_left = width - scroll_bar.width;
|
||||||
|
updatepos();
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float[] spacing = {1, 50}; //used for the dashline function, pixels
|
||||||
|
void dashline(float x0, float y0, float x1, float y1, float[] spacing)
|
||||||
|
{
|
||||||
|
float distance = dist(x0, y0, x1, y1);
|
||||||
|
float[] xSpacing = new float[spacing.length];
|
||||||
|
float[] ySpacing = new float[spacing.length];
|
||||||
|
float drawn = 0.0; // amount of distance drawn
|
||||||
|
|
||||||
|
if (distance > 0)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
boolean drawLine = true; // alternate between dashes and gaps
|
||||||
|
|
||||||
|
/*
|
||||||
|
Figure out x and y distances for each of the spacing values
|
||||||
|
I decided to trade memory for time; I'd rather allocate
|
||||||
|
a few dozen bytes than have to do a calculation every time
|
||||||
|
I draw.
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (i = 0; i < spacing.length; i++)
|
||||||
|
{
|
||||||
|
xSpacing[i] = lerp(0, (x1 - x0), spacing[i] / distance);
|
||||||
|
ySpacing[i] = lerp(0, (y1 - y0), spacing[i] / distance);
|
||||||
|
}
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (drawn < distance)
|
||||||
|
{
|
||||||
|
if (drawLine)
|
||||||
|
{
|
||||||
|
line(x0, y0, x0 + xSpacing[i], y0 + ySpacing[i]);
|
||||||
|
}
|
||||||
|
x0 += xSpacing[i];
|
||||||
|
y0 += ySpacing[i];
|
||||||
|
/* Add distance "drawn" by this line or gap */
|
||||||
|
drawn = drawn + mag(xSpacing[i], ySpacing[i]);
|
||||||
|
i = (i + 1) % spacing.length; // cycle through array
|
||||||
|
drawLine = !drawLine; // switch between dash and gap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
548
Computer_Interface/MouseEvents.pde
Normal file
548
Computer_Interface/MouseEvents.pde
Normal file
@@ -0,0 +1,548 @@
|
|||||||
|
boolean mouse_over_button(Button b)
|
||||||
|
{
|
||||||
|
if (mouseY > b.from_top && mouseY < b.from_top + b.height && mouseX > b.from_left && mouseX < b.from_left + b.width)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean mouse_over_channel(byte c)
|
||||||
|
{
|
||||||
|
if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * c && mouseY < yEdge + 36 * c + 30 && PinAssignment[c] != 0)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// this function is called every time a key is pressed
|
||||||
|
void keyPressed()
|
||||||
|
{
|
||||||
|
int number;
|
||||||
|
if (key == CODED) // UP, DOWN, LEFT, RIGHT, ALT, CONTROL, and SHIFT
|
||||||
|
{
|
||||||
|
if (keyCode == UP && IsAnyChannelMarked)
|
||||||
|
{
|
||||||
|
number = ChannelCursor1CurrentEvent0[1];
|
||||||
|
ChannelCursor1CurrentEvent0[1] = ChannelCursor1CurrentEvent0[1] - 1;
|
||||||
|
for (int i = ChannelCursor1CurrentEvent0[1]; i >= 0; i--)
|
||||||
|
{
|
||||||
|
if (PinAssignment[ChannelCursor1CurrentEvent0[1]] == 0)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[1] = ChannelCursor1CurrentEvent0[1] - 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ChannelCursor1CurrentEvent0[1] == -1)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[1] = number;
|
||||||
|
}
|
||||||
|
ChannelCursor1CurrentEvent0[1] = constrain(ChannelCursor1CurrentEvent0[1], 0, 16);
|
||||||
|
//println("cur1 "+ChannelCursor1CurrentEvent0[1]+"cur0 "+ChannelCursor1CurrentEvent0[0]);
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
else if (keyCode == DOWN && IsAnyChannelMarked)
|
||||||
|
{
|
||||||
|
if (ChannelCursor1CurrentEvent0[1] < 16)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[1] = ChannelCursor1CurrentEvent0[1] + 1;
|
||||||
|
for (int i = ChannelCursor1CurrentEvent0[1]; i < 16; i++)
|
||||||
|
{
|
||||||
|
if (PinAssignment[ChannelCursor1CurrentEvent0[1]] == 0)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[1] = ChannelCursor1CurrentEvent0[1] + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ChannelCursor1CurrentEvent0[1] = constrain(ChannelCursor1CurrentEvent0[1], 0, 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//println("cur1 "+ChannelCursor1CurrentEvent0[1]+"cur0 "+ChannelCursor1CurrentEvent0[0]);
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
else if (keyCode == RIGHT && IsAnyChannelMarked)
|
||||||
|
{
|
||||||
|
if (ChannelCursor1CurrentEvent0[1] == 16)
|
||||||
|
{
|
||||||
|
if (ChannelCursor1CurrentEvent0[0] != samples - 1)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[0] += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s = str(PinAssignment[ChannelCursor1CurrentEvent0[1]]);
|
||||||
|
index1 = s.charAt(1) - '0';
|
||||||
|
index2 = s.charAt(0) - '1';
|
||||||
|
//println(ChannelCursor1CurrentEvent0[0]);
|
||||||
|
for (int i = ChannelCursor1CurrentEvent0[0] + 1; i < samples; i++)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[0] = i;
|
||||||
|
if (state[i][index1][index2])
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// nothing here?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//updatepos();
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (keyCode == LEFT && IsAnyChannelMarked)
|
||||||
|
{
|
||||||
|
//println(ChannelCursor1CurrentEvent0[0]);
|
||||||
|
if (ChannelCursor1CurrentEvent0[1] == 16)
|
||||||
|
{
|
||||||
|
if (ChannelCursor1CurrentEvent0[0] != 0)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[0] -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s = str(PinAssignment[ChannelCursor1CurrentEvent0[1]]);
|
||||||
|
index1 = s.charAt(1) - '0';
|
||||||
|
index2 = s.charAt(0) - '1';
|
||||||
|
for (int i = ChannelCursor1CurrentEvent0[0] - 1; i > -1; i--)
|
||||||
|
{
|
||||||
|
ChannelCursor1CurrentEvent0[0] = i;
|
||||||
|
if (state[i][index1][index2])
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//println("cur1 "+ChannelCursor1CurrentEvent0[1]+"cur0 "+ChannelCursor1CurrentEvent0[0]);
|
||||||
|
//updatepos();
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (keyCode == LEFT && !IsAnyChannelMarked)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left -= 1;
|
||||||
|
if (scroll_bar.from_left < xEdge)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left = int(xEdge);
|
||||||
|
}
|
||||||
|
if (scroll_bar.from_left > width - scroll_bar.width)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left = width - scroll_bar.width;
|
||||||
|
}
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
else if (keyCode == RIGHT && !IsAnyChannelMarked)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left += 1;
|
||||||
|
if (scroll_bar.from_left < xEdge)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left = int(xEdge);
|
||||||
|
}
|
||||||
|
if (scroll_bar.from_left > width - scroll_bar.width)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left = width - scroll_bar.width;
|
||||||
|
}
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// this function is called after a mouse button has been pressed and then released
|
||||||
|
void mouseClicked()
|
||||||
|
{
|
||||||
|
for (byte channel = 0; channel < 16; channel++)
|
||||||
|
{
|
||||||
|
if (mouse_over_channel(channel))
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(channel);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
// exit from the for loop
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
if (mouseX > xEdge && mouseX < width && mouseY > yEdge && mouseY < yEdge + 30 && PinAssignment[0] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(0);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 && mouseY < yEdge + 36 + 30 && PinAssignment[1] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(1);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 2 && mouseY < yEdge + 36 * 2 + 30 && PinAssignment[2] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(2);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 3 && mouseY < yEdge + 36 * 3 + 30 && PinAssignment[3] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(3);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 4 && mouseY < yEdge + 36 * 4 + 30 && PinAssignment[4] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(4);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 5 && mouseY < yEdge + 36 * 5 + 30 && PinAssignment[5] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(5);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 6 && mouseY < yEdge + 36 * 6 + 30 && PinAssignment[6] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(6);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 7 && mouseY < yEdge + 36 * 7 + 30 && PinAssignment[7] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(7);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 8 && mouseY < yEdge + 36 * 8 + 30 && PinAssignment[8] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(8);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 9 && mouseY < yEdge + 36 * 9 + 30 && PinAssignment[9] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(9);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 10 && mouseY < yEdge + 36 * 10 + 30 && PinAssignment[10] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(10);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 11 && mouseY < yEdge + 36 * 11 + 30 && PinAssignment[11] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(11);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 12 && mouseY < yEdge + 36 * 12 + 30 && PinAssignment[12] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(12);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 13 && mouseY < yEdge + 36 * 13 + 30 && PinAssignment[13] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(13);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 14 && mouseY < yEdge + 36 * 14 + 30 && PinAssignment[14] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(14);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 15 && mouseY < yEdge + 36 * 15 + 30 && PinAssignment[15] != 0)
|
||||||
|
{
|
||||||
|
getChannelCursorCurrentEvent(15);
|
||||||
|
IsAnyChannelMarked = true;
|
||||||
|
movepos();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (mouse_over_button(button_time_draw))
|
||||||
|
{
|
||||||
|
drawTimes = !drawTimes;
|
||||||
|
refresh = true;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_start))
|
||||||
|
{
|
||||||
|
refresh = true;
|
||||||
|
board_port.write('G');
|
||||||
|
println("new data coming");
|
||||||
|
board_port.clear();
|
||||||
|
xShift = (width - scroll_bar.width) / 2;
|
||||||
|
scroll_bar.from_left = int(xEdge);
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_save))
|
||||||
|
{
|
||||||
|
save("la_capture_" + immage_number + image_format);
|
||||||
|
immage_number++;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_reducer))
|
||||||
|
{
|
||||||
|
if (mouseButton == LEFT) // increase
|
||||||
|
{
|
||||||
|
if (reducer <= 1)
|
||||||
|
{
|
||||||
|
reducer += 0.1;
|
||||||
|
}
|
||||||
|
else if (reducer <= 10)
|
||||||
|
{
|
||||||
|
reducer += 1;
|
||||||
|
}
|
||||||
|
else if (reducer > 10)
|
||||||
|
{
|
||||||
|
reducer += 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reducer > 90 && time_format == "μs") // change from microseconds to milliseconds
|
||||||
|
{
|
||||||
|
reducer = 0.1;
|
||||||
|
time_format = "ms";
|
||||||
|
}
|
||||||
|
reducer = constrain(reducer, 0.1, 100);
|
||||||
|
}
|
||||||
|
else if (mouseButton == RIGHT) // reduce
|
||||||
|
{
|
||||||
|
if (reducer <= 1)
|
||||||
|
{
|
||||||
|
reducer -= 0.1;
|
||||||
|
}
|
||||||
|
else if (reducer <= 10)
|
||||||
|
{
|
||||||
|
reducer -= 1;
|
||||||
|
}
|
||||||
|
else if (reducer > 10)
|
||||||
|
{
|
||||||
|
reducer -= 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reducer < 0.1 && time_format == "ms") // change from milliseconds to microseconds
|
||||||
|
{
|
||||||
|
reducer = 100;
|
||||||
|
time_format = "μs";
|
||||||
|
}
|
||||||
|
reducer = constrain(reducer, 0.1, 90);
|
||||||
|
}
|
||||||
|
scaletime();
|
||||||
|
updatepos();
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_time_format))
|
||||||
|
{
|
||||||
|
if (time_format == "μs")
|
||||||
|
{
|
||||||
|
time_format = "ms";
|
||||||
|
}
|
||||||
|
else if (time_format == "ms")
|
||||||
|
{
|
||||||
|
time_format = "μs";
|
||||||
|
}
|
||||||
|
|
||||||
|
scaletime();
|
||||||
|
dataComplete = true;
|
||||||
|
//updatepos();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
IsAnyChannelMarked = false;
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void mouseReleased()
|
||||||
|
{
|
||||||
|
isDraggable = false;
|
||||||
|
//scroll_bar_color = grey;
|
||||||
|
if (refresh)
|
||||||
|
{
|
||||||
|
//scaletime('d');
|
||||||
|
//xShift = -map(scroll_bar.from_left, xEdge, width-scroll_bar.width, 0, xEnd);
|
||||||
|
//xShift = xShift + (width-scroll_bar.width)/2;
|
||||||
|
refresh = false;
|
||||||
|
//updatepos();
|
||||||
|
//dataComplete=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// this function returns positive values when the mouse wheel is rotated down, and negative values for the other direction
|
||||||
|
void mouseWheel(MouseEvent event)
|
||||||
|
{
|
||||||
|
// get the mouse movement and invert it
|
||||||
|
float wheel = map(event.getCount(), -1, 1, 1, -1);
|
||||||
|
|
||||||
|
// change the step of the mouse wheel depending on the reducer and time_format
|
||||||
|
if (time_format == "ms")
|
||||||
|
{
|
||||||
|
scroll_bar.from_left -= wheel * 50 * reducer;
|
||||||
|
}
|
||||||
|
else if (time_format == "μs")
|
||||||
|
{
|
||||||
|
scroll_bar.from_left -= wheel * 50 * reducer * 0.1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//move the graph
|
||||||
|
if (scroll_bar.from_left < xEdge)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left = int(xEdge);
|
||||||
|
}
|
||||||
|
if (scroll_bar.from_left > width - scroll_bar.width)
|
||||||
|
{
|
||||||
|
scroll_bar.from_left = width - scroll_bar.width;
|
||||||
|
}
|
||||||
|
//print("wheel: "); println(wheel);
|
||||||
|
//print("scroll_bar: "); println(scroll_bar.from_left);
|
||||||
|
dataComplete = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// this function is called every time the mouse moves and a mouse button is not pressed
|
||||||
|
void mouseMoved()
|
||||||
|
{
|
||||||
|
if (mouse_over_button(button_start))
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_time_draw))
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_time_format))
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_reducer))
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(button_save))
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (mouse_over_button(scroll_bar))
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cursor(ARROW);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (byte channel = 0; channel < 16; channel++)
|
||||||
|
{
|
||||||
|
if (mouse_over_channel(channel))
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
return;
|
||||||
|
// exit from the for loop
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cursor(ARROW);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge && mouseY < yEdge + 30 && PinAssignment[0] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 && mouseY < yEdge + 36 + 30 && PinAssignment[1] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 2 && mouseY < yEdge + 36 * 2 + 30 && PinAssignment[2] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 3 && mouseY < yEdge + 36 * 3 + 30 && PinAssignment[3] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 4 && mouseY < yEdge + 36 * 4 + 30 && PinAssignment[4] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 5 && mouseY < yEdge + 36 * 5 + 30 && PinAssignment[5] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 6 && mouseY < yEdge + 36 * 6 + 30 && PinAssignment[6] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 7 && mouseY < yEdge + 36 * 7 + 30 && PinAssignment[7] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 8 && mouseY < yEdge + 36 * 8 + 30 && PinAssignment[8] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 9 && mouseY < yEdge + 36 * 9 + 30 && PinAssignment[9] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 10 && mouseY < yEdge + 36 * 10 + 30 && PinAssignment[10] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 11 && mouseY < yEdge + 36 * 11 + 30 && PinAssignment[11] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 12 && mouseY < yEdge + 36 * 12 + 30 && PinAssignment[12] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 13 && mouseY < yEdge + 36 * 13 + 30 && PinAssignment[13] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 14 && mouseY < yEdge + 36 * 14 + 30 && PinAssignment[14] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else if (mouseX > xEdge && mouseX < width && mouseY > yEdge + 36 * 15 && mouseY < yEdge + 36 * 15 + 30 && PinAssignment[15] != 0)
|
||||||
|
{
|
||||||
|
cursor(HAND);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cursor(ARROW);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
// this function is called every time a mouse button is pressed
|
||||||
|
void mousePressed()
|
||||||
|
{
|
||||||
|
if (mouse_over_button(scroll_bar))
|
||||||
|
{
|
||||||
|
isDraggable = true;
|
||||||
|
|
||||||
|
//scroll_bar_color = color(100, 200, 255); change color of the scroll bar
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user