@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user