mirror of
https://github.com/aster94/logic-analyzer.git
synced 2026-05-01 23:53:02 +03:00
Merge pull request #4 from yoursunny/scroll
processing: preserve scroll position while zooming
This commit is contained in:
@@ -106,7 +106,7 @@ void setup () {
|
|||||||
|
|
||||||
void cleanGraph() {
|
void cleanGraph() {
|
||||||
noStroke(); //no borders
|
noStroke(); //no borders
|
||||||
fill(black);
|
fill(black);
|
||||||
rect(xEdge, 0, width, graphBoxH); //cancel the graph
|
rect(xEdge, 0, width, graphBoxH); //cancel the graph
|
||||||
stroke(green); //green lines
|
stroke(green); //green lines
|
||||||
Arrays.fill(xPos, 0); //reset start point of the graph
|
Arrays.fill(xPos, 0); //reset start point of the graph
|
||||||
@@ -189,7 +189,7 @@ void drawText() {
|
|||||||
|
|
||||||
|
|
||||||
// write name of the pins
|
// write name of the pins
|
||||||
fill(white);
|
fill(white);
|
||||||
textSize(14);
|
textSize(14);
|
||||||
|
|
||||||
int x=10;
|
int x=10;
|
||||||
@@ -236,7 +236,7 @@ void drawText() {
|
|||||||
if (isDraggable) {
|
if (isDraggable) {
|
||||||
handleX = mouseX-(handleW/2);
|
handleX = mouseX-(handleW/2);
|
||||||
if (handleX<xEdge) handleX = xEdge;
|
if (handleX<xEdge) handleX = xEdge;
|
||||||
if (handleX>width-handleW) handleX = width-handleW;
|
if (handleX>width-handleW) handleX = width-handleW;
|
||||||
|
|
||||||
getData();
|
getData();
|
||||||
xShift = -map(handleX, xEdge, width-handleW, 0, xEnd-900);
|
xShift = -map(handleX, xEdge, width-handleW, 0, xEnd-900);
|
||||||
@@ -286,7 +286,7 @@ void mouseClicked() {
|
|||||||
|
|
||||||
if (milliseconds == true) {
|
if (milliseconds == true) {
|
||||||
for (int i=0; i< samples; i++) usTime[i] /= 1000.0;
|
for (int i=0; i< samples; i++) usTime[i] /= 1000.0;
|
||||||
}
|
}
|
||||||
if (milliseconds== false) {
|
if (milliseconds== false) {
|
||||||
for (int i=0; i< samples; i++) usTime[i] *= 1000.0;
|
for (int i=0; i< samples; i++) usTime[i] *= 1000.0;
|
||||||
}
|
}
|
||||||
@@ -312,8 +312,10 @@ void mouseWheel(MouseEvent event) {
|
|||||||
if (mouseY>buttonY && mouseY <buttonY+buttonH &&
|
if (mouseY>buttonY && mouseY <buttonY+buttonH &&
|
||||||
mouseX>button4X && mouseX <button4X+smallButtonW) {
|
mouseX>button4X && mouseX <button4X+smallButtonW) {
|
||||||
//it is over the reducer button
|
//it is over the reducer button
|
||||||
|
xShift *= reducer;
|
||||||
reducer-= wheel/10;
|
reducer-= wheel/10;
|
||||||
reducer = constrain(reducer, 0.1, 9.9);
|
reducer = constrain(reducer, 0.1, 9.9);
|
||||||
|
xShift /= reducer; // preserve scroll position
|
||||||
getData();
|
getData();
|
||||||
} else { //move the graph
|
} else { //move the graph
|
||||||
xShift-=wheel*50;
|
xShift-=wheel*50;
|
||||||
@@ -393,7 +395,7 @@ void getData () {
|
|||||||
printArray(xTime);
|
printArray(xTime);
|
||||||
//println("pin: "+binary(changed[0], 6));
|
//println("pin: "+binary(changed[0], 6));
|
||||||
|
|
||||||
for (int i = 0; i < samples; i++) {
|
for (int i = 0; i < samples; i++) {
|
||||||
xTime[i] = usTime[i] / reducer; //better to reduce the lenght of the x
|
xTime[i] = usTime[i] / reducer; //better to reduce the lenght of the x
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -428,41 +430,41 @@ float[] spacing = {5, 8}; //used for the dashline function, pixels
|
|||||||
|
|
||||||
void dashline(float x0, float y0, float x1, float y1, float[] spacing) {
|
void dashline(float x0, float y0, float x1, float y1, float[] spacing) {
|
||||||
|
|
||||||
float distance = dist(x0, y0, x1, y1);
|
float distance = dist(x0, y0, x1, y1);
|
||||||
float [ ] xSpacing = new float[spacing.length];
|
float [ ] xSpacing = new float[spacing.length];
|
||||||
float [ ] ySpacing = new float[spacing.length];
|
float [ ] ySpacing = new float[spacing.length];
|
||||||
float drawn = 0.0; // amount of distance drawn
|
float drawn = 0.0; // amount of distance drawn
|
||||||
|
|
||||||
if (distance > 0)
|
if (distance > 0)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
boolean drawLine = true; // alternate between dashes and gaps
|
boolean drawLine = true; // alternate between dashes and gaps
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Figure out x and y distances for each of the spacing values
|
Figure out x and y distances for each of the spacing values
|
||||||
I decided to trade memory for time; I'd rather allocate
|
I decided to trade memory for time; I'd rather allocate
|
||||||
a few dozen bytes than have to do a calculation every time
|
a few dozen bytes than have to do a calculation every time
|
||||||
I draw.
|
I draw.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (i = 0; i < spacing.length; i++)
|
for (i = 0; i < spacing.length; i++)
|
||||||
{
|
{
|
||||||
xSpacing[i] = lerp(0, (x1 - x0), spacing[i] / distance);
|
xSpacing[i] = lerp(0, (x1 - x0), spacing[i] / distance);
|
||||||
ySpacing[i] = lerp(0, (y1 - y0), spacing[i] / distance);
|
ySpacing[i] = lerp(0, (y1 - y0), spacing[i] / distance);
|
||||||
}
|
}
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (drawn < distance)
|
while (drawn < distance)
|
||||||
{
|
{
|
||||||
if (drawLine)
|
if (drawLine)
|
||||||
{
|
{
|
||||||
line(x0, y0, x0 + xSpacing[i], y0 + ySpacing[i]);
|
line(x0, y0, x0 + xSpacing[i], y0 + ySpacing[i]);
|
||||||
}
|
}
|
||||||
x0 += xSpacing[i];
|
x0 += xSpacing[i];
|
||||||
y0 += ySpacing[i];
|
y0 += ySpacing[i];
|
||||||
/* Add distance "drawn" by this line or gap */
|
/* Add distance "drawn" by this line or gap */
|
||||||
drawn = drawn + mag(xSpacing[i], ySpacing[i]);
|
drawn = drawn + mag(xSpacing[i], ySpacing[i]);
|
||||||
i = (i + 1) % spacing.length; // cycle through array
|
i = (i + 1) % spacing.length; // cycle through array
|
||||||
drawLine = !drawLine; // switch between dash and gap
|
drawLine = !drawLine; // switch between dash and gap
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user