extend zoom handling (#70) and hide tx property panes (#58)

This commit is contained in:
2021-11-15 21:20:25 +01:00
parent c7858997c0
commit f4b03cb0e6
15 changed files with 305 additions and 165 deletions

View File

@ -180,7 +180,13 @@ public class WaveformCanvas extends Canvas {
public void setZoomLevel(int level, long centerTime) {
if(level<0) {
level = findFitZoomLevel();
if(level<-1) {
long cTime = getCursorPainters().get(0).getTime();
long time_diff = centerTime>cTime?centerTime-cTime:cTime-centerTime;
level = findFitZoomLevel(time_diff);
centerTime = (centerTime>cTime?cTime:centerTime)+time_diff/2;
} else
level = findFitZoomLevel(maxTime);
if(level<0) level = 0;
}
//FIXME: keep center if zoom-out and cursor is not in view
@ -211,7 +217,7 @@ public class WaveformCanvas extends Canvas {
}
}
private int findFitZoomLevel() {
private int findFitZoomLevel(long timeRange) {
//get area actually capable of displaying data, i.e. area of the receiver which is capable of displaying data
Rectangle clientArea = getClientArea();
long clientAreaWidth = clientArea.width;
@ -221,7 +227,7 @@ public class WaveformCanvas extends Canvas {
for (int multiplier=0; multiplier<Constants.UNIT_MULTIPLIER.length; multiplier++){
int tempLevel = magnitude*Constants.UNIT_MULTIPLIER.length+multiplier;
long scaleFactor = Constants.UNIT_MULTIPLIER[multiplier]*magnitude_factor;
if(scaleFactor*clientAreaWidth >= maxTime)
if(scaleFactor*clientAreaWidth >= timeRange)
return tempLevel;
}
magnitude_factor*=1000;

View File

@ -125,6 +125,12 @@ public class WaveformView implements IWaveformView {
protected ObservableList<TrackEntry> streams;
private boolean waveformsContainTx=false;
public boolean isWaveformsContainTx() {
return waveformsContainTx;
}
int selectedMarker = 0;
private int tracksVerticalHeight;
@ -515,6 +521,7 @@ public class WaveformView implements IWaveformView {
boolean even = true;
TextLayout tl = new TextLayout(waveformCanvas.getDisplay());
tl.setFont(styleProvider.getNameFont());
waveformsContainTx=false;
for (TrackEntry streamEntry : streams) {
streamEntry.height = styleProvider.getTrackHeight();
streamEntry.vOffset = tracksVerticalHeight;
@ -522,6 +529,7 @@ public class WaveformView implements IWaveformView {
streamEntry.currentValue = "";
streamEntry.height *= streamEntry.waveform.getRowCount();
painter = new StreamPainter(waveformCanvas, even, streamEntry);
waveformsContainTx=true;
} else if (streamEntry.waveform.getType() == WaveformType.SIGNAL) {
streamEntry.currentValue = "---";
painter = new SignalPainter(waveformCanvas, even, streamEntry);
@ -1147,8 +1155,12 @@ public class WaveformView implements IWaveformView {
*/
@Override
public void setZoomLevel(int scale) {
waveformCanvas.setZoomLevel(scale);
waveformCanvas.reveal(getCursorTime());
if(scale<-1) {
waveformCanvas.setZoomLevel(scale, getMarkerTime(selectedMarker));
} else {
waveformCanvas.setZoomLevel(scale);
waveformCanvas.reveal(getCursorTime());
}
}
/*
@ -1554,14 +1566,4 @@ public class WaveformView implements IWaveformView {
getStreamList().add(idx, e);
return e;
}
}