diff --git a/com.minres.scviewer.database.sqlite/pom.xml b/com.minres.scviewer.database.sqlite/pom.xml
index b75eaa1..7c1250c 100644
--- a/com.minres.scviewer.database.sqlite/pom.xml
+++ b/com.minres.scviewer.database.sqlite/pom.xml
@@ -15,6 +15,4 @@
3.8.7
- com.minres.scviewer
- 1.0.0-SNAPSHOT
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/com.minres.scviewer.database.ui.swt/META-INF/MANIFEST.MF b/com.minres.scviewer.database.ui.swt/META-INF/MANIFEST.MF
index ac7633b..c273f02 100644
--- a/com.minres.scviewer.database.ui.swt/META-INF/MANIFEST.MF
+++ b/com.minres.scviewer.database.ui.swt/META-INF/MANIFEST.MF
@@ -12,5 +12,4 @@ Require-Bundle: org.eclipse.swt;bundle-version="3.103.1",
org.eclipse.equinox.registry,
com.minres.scviewer.database.ui
Export-Package: com.minres.scviewer.database.swt
-Bundle-ClassPath: .,
- swing2swt.jar
+Bundle-ClassPath: .
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/WaveformViewerFactory.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/WaveformViewerFactory.java
new file mode 100644
index 0000000..4dce3e2
--- /dev/null
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/WaveformViewerFactory.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2015 MINRES Technologies GmbH and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * MINRES Technologies GmbH - initial API and implementation
+ *******************************************************************************/
+package com.minres.scviewer.database.swt;
+
+import org.eclipse.swt.widgets.Composite;
+
+import com.minres.scviewer.database.swt.internal.WaveformViewer;
+import com.minres.scviewer.database.ui.IWaveformViewer;
+import com.minres.scviewer.database.ui.IWaveformViewerFactory;
+
+public class WaveformViewerFactory implements IWaveformViewerFactory {
+
+ @Override
+ public IWaveformViewer createPanel(Composite parent) {
+ return new WaveformViewer(parent);
+ }
+
+}
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java
new file mode 100644
index 0000000..d9fe510
--- /dev/null
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/ArrowPainter.java
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2015 MINRES Technologies GmbH and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * MINRES Technologies GmbH - initial API and implementation
+ *******************************************************************************/
+package com.minres.scviewer.database.swt.internal;
+
+import java.util.Collection;
+
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+
+import com.minres.scviewer.database.ITx;
+import com.minres.scviewer.database.ITxRelation;
+
+public class ArrowPainter implements IPainter {
+
+ private WaveformCanvas waveCanvas;
+
+ private ITx tx;
+
+ private Collection incoming;
+
+ private Collection outgoing;
+
+ public ArrowPainter(WaveformCanvas waveCanvas, ITx tx) {
+ this.waveCanvas = waveCanvas;
+ this.tx=tx;
+ this.incoming = tx.getIncomingRelations();
+ this.outgoing = tx.getOutgoingRelations();
+
+ }
+
+ @Override
+ public void paintArea(GC gc, Rectangle area) {
+ Rectangle txRectangle = getBounds(tx);
+ }
+
+ private Rectangle getBounds(ITx tx) {
+ return null;
+ }
+
+}
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java
index 0ecc169..a2b8f7f 100644
--- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/CursorPainter.java
@@ -54,7 +54,7 @@ public class CursorPainter implements IPainter {
}
public void paintArea(GC gc, Rectangle area) {
- if(this.waveCanvas.streams.size()>0){
+ if(this.waveCanvas.painterList.size()>0){
long scaleFactor=waveCanvas.getScaleFactor();
int x = (int) (time/scaleFactor);
int top = id<0?area.y:area.y+15;
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java
index 8d45151..16ec992 100644
--- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/IWaveformPainter.java
@@ -10,9 +10,14 @@
*******************************************************************************/
package com.minres.scviewer.database.swt.internal;
+import com.minres.scviewer.database.ui.TrackEntry;
public interface IWaveformPainter extends IPainter {
- public int getMinHeight();
-
+ public int getHeight();
+
+ public int getVerticalOffset();
+
+ public TrackEntry getTrackEntry();
+
}
\ No newline at end of file
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java
index a5ffb91..4672e84 100644
--- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/SignalPainter.java
@@ -20,29 +20,28 @@ import org.eclipse.swt.graphics.Rectangle;
import com.minres.scviewer.database.ISignal;
import com.minres.scviewer.database.ISignalChange;
-import com.minres.scviewer.database.IWaveformEvent;
+import com.minres.scviewer.database.ui.TrackEntry;
import com.minres.scviewer.database.ISignalChangeMulti;
import com.minres.scviewer.database.ISignalChangeSingle;
+import com.minres.scviewer.database.IWaveform;
-public class SignalPainter implements IWaveformPainter {
+public class SignalPainter extends TrackPainter {
/**
*
*/
private final WaveformCanvas waveCanvas;
private ISignal extends ISignalChange> signal;
- private int height;
- private boolean even;
- public SignalPainter(WaveformCanvas txDisplay, boolean even, int height, ISignal extends IWaveformEvent> signal) {
+ @SuppressWarnings("unchecked")
+ public SignalPainter(WaveformCanvas txDisplay, boolean even, TrackEntry trackEntry) {
+ super(trackEntry, even);
this.waveCanvas = txDisplay;
- this.signal=signal;
- this.height=height;
- this.even=even;
+ this.signal=trackEntry.getSignal();
}
public void paintArea(GC gc, Rectangle area) {
- if(waveCanvas.currentWaveformSelection!=null && waveCanvas.currentWaveformSelection.equals(signal))
+ if(trackEntry.selected)
gc.setBackground(this.waveCanvas.colors[WaveformCanvas.Colors.TRACK_BG_HIGHLITE.ordinal()]);
else
gc.setBackground(this.waveCanvas.colors[even?WaveformCanvas.Colors.TRACK_BG_EVEN.ordinal():WaveformCanvas.Colors.TRACK_BG_ODD.ordinal()]);
@@ -139,10 +138,6 @@ public class SignalPainter implements IWaveformPainter {
}
}
- @Override
- public int getMinHeight() {
- return height;
- }
public ISignal extends ISignalChange> getSignal() {
return signal;
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java
index 537a944..3a81422 100644
--- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/StreamPainter.java
@@ -24,34 +24,36 @@ import org.eclipse.swt.graphics.Rectangle;
import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.ITxEvent;
import com.minres.scviewer.database.ITxStream;
+import com.minres.scviewer.database.IWaveform;
+import com.minres.scviewer.database.ui.TrackEntry;
-public class StreamPainter implements IWaveformPainter{
+public class StreamPainter extends TrackPainter{
/**
*
*/
private final WaveformCanvas waveCanvas;
private ITxStream extends ITxEvent> stream;
- private int height, upper, txHeight;
+ private int txBase, txHeight;
private int totalHeight;
private boolean even;
private TreeSet seenTx;
- public StreamPainter(WaveformCanvas txDisplay, boolean even, int height, ITxStream extends ITxEvent> stream) {
- this.waveCanvas = txDisplay;
- this.stream=stream;
- this.height=height;
- this.upper=this.waveCanvas.getTrackHeight()/5;
- this.txHeight=3*this.waveCanvas.getTrackHeight()/5;
- this.totalHeight=stream.getMaxConcurrency()*this.waveCanvas.getTrackHeight();
- this.even=even;
+ @SuppressWarnings("unchecked")
+ public StreamPainter(WaveformCanvas waveCanvas, boolean even, TrackEntry trackEntry) {
+ super(trackEntry, even);
+ this.waveCanvas = waveCanvas;
+ this.stream=trackEntry.getStream();
this.seenTx=new TreeSet();
}
@SuppressWarnings("unchecked")
public void paintArea(GC gc, Rectangle area) {
if(stream.getEvents().size()==0) return;
- if(waveCanvas.currentWaveformSelection!=null && waveCanvas.currentWaveformSelection.equals(stream))
+ int trackHeight=trackEntry.height/stream.getMaxConcurrency();
+ txBase=trackHeight/5;
+ txHeight=trackHeight*3/5;
+ if(trackEntry.selected)
gc.setBackground(this.waveCanvas.colors[WaveformCanvas.Colors.TRACK_BG_HIGHLITE.ordinal()]);
else
gc.setBackground(this.waveCanvas.colors[even?WaveformCanvas.Colors.TRACK_BG_EVEN.ordinal():WaveformCanvas.Colors.TRACK_BG_ODD.ordinal()]);
@@ -65,7 +67,7 @@ public class StreamPainter implements IWaveformPainter{
gc.setLineStyle(SWT.LINE_SOLID);
gc.setLineWidth(1);
gc.setForeground(this.waveCanvas.colors[WaveformCanvas.Colors.LINE.ordinal()]);
- for(int y1=area.y+this.waveCanvas.getTrackHeight()/2; y1)firstTx.getValue())
@@ -101,7 +103,7 @@ public class StreamPainter implements IWaveformPainter{
protected void drawTx(GC gc, Rectangle area, ITx tx) {
int offset = tx.getConcurrencyIndex()*this.waveCanvas.getTrackHeight();
Rectangle bb = new Rectangle(
- (int)(tx.getBeginTime()/this.waveCanvas.getScaleFactor()), area.y+offset+upper,
+ (int)(tx.getBeginTime()/this.waveCanvas.getScaleFactor()), area.y+offset+txBase,
(int)((tx.getEndTime()-tx.getBeginTime())/this.waveCanvas.getScaleFactor()), txHeight);
if(bb.x+bb.widtharea.x+area.width) return;
if(bb.width==0){
@@ -115,12 +117,7 @@ public class StreamPainter implements IWaveformPainter{
}
}
- @Override
- public int getMinHeight() {
- return height;
- }
-
- public Object getClicked(Point point) {
+ public ITx getClicked(Point point) {
int lane=point.y/waveCanvas.getTrackHeight();
Entry> firstTx=stream.getEvents().floorEntry(point.x*waveCanvas.getScaleFactor());
if(firstTx!=null){
@@ -130,7 +127,7 @@ public class StreamPainter implements IWaveformPainter{
firstTx=stream.getEvents().lowerEntry(firstTx.getKey());
}while(firstTx!=null);
}
- return stream;
+ return null;
}
public ITxStream extends ITxEvent> getStream() {
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java
new file mode 100644
index 0000000..5a9887c
--- /dev/null
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackAreaPainter.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2015 MINRES Technologies GmbH and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * MINRES Technologies GmbH - initial API and implementation
+ *******************************************************************************/
+package com.minres.scviewer.database.swt.internal;
+
+import java.util.Map.Entry;
+import java.util.TreeMap;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Rectangle;
+
+public class TrackAreaPainter implements IPainter {
+
+ /**
+ *
+ */
+ private final WaveformCanvas waveCanvas;
+
+ TreeMap trackVerticalOffset;
+ /**
+ * @param txDisplay
+ */
+ public TrackAreaPainter(WaveformCanvas waveCanvas) {
+ this.waveCanvas = waveCanvas;
+ this.trackVerticalOffset= new TreeMap<>();
+ }
+
+ public void paintArea(GC gc, Rectangle a) {
+ Rectangle area = new Rectangle(a.x, a.y+waveCanvas.rulerHeight, a.width, a.height-waveCanvas.rulerHeight);
+ gc.setBackground(this.waveCanvas.colors[WaveformCanvas.Colors.TRACK_BG_EVEN.ordinal()]);
+ gc.setFillRule(SWT.FILL_EVEN_ODD);
+ gc.fillRectangle(area);
+ if(trackVerticalOffset.size()>0){
+ Integer firstKey=trackVerticalOffset.floorKey(area.y);
+ if(firstKey==null) firstKey=trackVerticalOffset.firstKey();
+ Integer lastKey = trackVerticalOffset.floorKey(area.y+area.height);
+ Rectangle subArea = new Rectangle(area.x, 0, area.width, 0);
+ if(lastKey==firstKey){
+ subArea.y=firstKey;
+ IWaveformPainter p = trackVerticalOffset.get(firstKey);
+ subArea.height=p.getHeight();
+ p.paintArea(gc, subArea);
+ }else{
+ for(Entry entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true).entrySet()){
+ subArea.y=entry.getKey();
+ subArea.height=entry.getValue().getHeight();
+ entry.getValue().paintArea(gc, subArea);
+ }
+ }
+ }
+ }
+
+ public TreeMap getTrackVerticalOffset() {
+ return trackVerticalOffset;
+ }
+
+ public void addTrackPainter(IWaveformPainter trackPainter){
+ trackVerticalOffset.put(trackPainter.getVerticalOffset()+waveCanvas.rulerHeight, trackPainter);
+
+ }
+
+ public int getHeight(){
+ if(trackVerticalOffset.size()==0) return 1;
+ return trackVerticalOffset.lastKey() + trackVerticalOffset.lastEntry().getValue().getHeight();
+ }
+}
\ No newline at end of file
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java
index 728549c..9fa285c 100644
--- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/TrackPainter.java
@@ -10,50 +10,33 @@
*******************************************************************************/
package com.minres.scviewer.database.swt.internal;
-import java.util.Map.Entry;
-import java.util.TreeMap;
+import com.minres.scviewer.database.ui.TrackEntry;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.GC;
-import org.eclipse.swt.graphics.Rectangle;
+public abstract class TrackPainter implements IWaveformPainter {
-public class TrackPainter implements IPainter {
-
- /**
- *
- */
- private final WaveformCanvas waveCanvas;
+ protected boolean even;
- /**
- * @param txDisplay
- */
- public TrackPainter(WaveformCanvas waveCanvas) {
- this.waveCanvas = waveCanvas;
+ protected TrackEntry trackEntry;
+
+ public TrackPainter(TrackEntry trackEntry, boolean even) {
+ this.trackEntry = trackEntry;
+ this.even=even;
}
- public void paintArea(GC gc, Rectangle a) {
- Rectangle area = new Rectangle(a.x, a.y+waveCanvas.rulerHeight, a.width, a.height-waveCanvas.rulerHeight);
- gc.setBackground(this.waveCanvas.colors[WaveformCanvas.Colors.TRACK_BG_EVEN.ordinal()]);
- gc.setFillRule(SWT.FILL_EVEN_ODD);
- gc.fillRectangle(area);
- TreeMap offsets = this.waveCanvas.trackVerticalOffset;
- if(this.waveCanvas.streams.size()>0){
- Integer firstKey=offsets.floorKey(area.y);
- if(firstKey==null) firstKey=offsets.firstKey();
- Integer lastKey = offsets.floorKey(area.y+area.height);
- Rectangle subArea = new Rectangle(area.x, 0, area.width, 0);
- if(lastKey==firstKey){
- subArea.y=firstKey;
- IWaveformPainter p = offsets.get(firstKey);
- subArea.height=p.getMinHeight();
- p.paintArea(gc, subArea);
- }else{
- for(Entry entry : offsets.subMap(firstKey, true, lastKey, true).entrySet()){
- subArea.y=entry.getKey();
- subArea.height=entry.getValue().getMinHeight();
- entry.getValue().paintArea(gc, subArea);
- }
- }
- }
+ public int getHeight() {
+ return trackEntry.height;
}
-}
\ No newline at end of file
+
+ public int getVerticalOffset() {
+ return trackEntry.vOffset;
+ }
+
+ public boolean isEven() {
+ return even;
+ }
+
+ public TrackEntry getTrackEntry() {
+ return trackEntry;
+ }
+
+}
diff --git a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java
index 04ddebd..7fcb094 100644
--- a/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java
+++ b/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/swt/internal/WaveformCanvas.java
@@ -10,11 +10,11 @@
*******************************************************************************/
package com.minres.scviewer.database.swt.internal;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
-import java.util.TreeMap;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlAdapter;
@@ -54,25 +54,38 @@ public class WaveformCanvas extends Canvas {
Color[] colors = new Color[Colors.values().length];
private int trackHeight = 50;
+
private long scaleFactor = 1000000L; // 1ns
+
String unit="ns";
+
private int level = 12;
+
public final static String[] unitString={"fs", "ps", "ns", "µs", "ms"};//, "s"};
+
public final static int[] unitMultiplier={1, 3, 10, 30, 100, 300};
+
private long maxTime;
+
protected Point origin; /* original size */
+
protected Transform transform;
+
protected int rulerHeight=40;
+
protected List painterList;
- TreeMap trackVerticalOffset;
-
- protected List> streams;
-
+
ITx currentSelection;
- IWaveform extends IWaveformEvent> currentWaveformSelection;
-
+
private List selectionListeners;
+ private RulerPainter rulerPainter;
+
+ private TrackAreaPainter trackAreaPainter;
+
+ private List cursorPainters;
+
+ private HashMap, IWaveformPainter> wave2painterMap;
/**
* Constructor for ScrollableCanvas.
*
@@ -96,12 +109,31 @@ public class WaveformCanvas extends Canvas {
painterList = new LinkedList();
origin = new Point(0, 0);
transform = new Transform(getDisplay());
- trackVerticalOffset = new TreeMap();
selectionListeners = new LinkedList<>();
+ cursorPainters= new ArrayList<>();
+ wave2painterMap=new HashMap<>();
+
initScrollBars();
initColors(null);
+ // order is important: it is bottom to top
+ trackAreaPainter=new TrackAreaPainter(this);
+ painterList.add(trackAreaPainter);
+ rulerPainter=new RulerPainter(this, getDisplay().getSystemColor(SWT.COLOR_BLACK), getDisplay().getSystemColor(SWT.COLOR_WHITE));
+ painterList.add(rulerPainter);
+ CursorPainter cp = new CursorPainter(this, scaleFactor * 10, cursorPainters.size()-1);
+ painterList.add(cp);
+ cursorPainters.add(cp);
+ CursorPainter marker = new CursorPainter(this, scaleFactor * 100, cursorPainters.size()-1);
+ painterList.add(marker);
+ cursorPainters.add(marker);
+ wave2painterMap=new HashMap<>();
}
+ public void addCursoPainter(CursorPainter cursorPainter){
+ painterList.add(cursorPainter);
+ cursorPainters.add(cursorPainter);
+ }
+
private void initColors(HashMap colourMap) {
Display d = getDisplay();
if (colourMap != null) {
@@ -133,14 +165,6 @@ public class WaveformCanvas extends Canvas {
}
}
- public List> getStreams() {
- return streams;
- }
-
- public void setStreams(List> streams) {
- this.streams = streams;
- }
-
public Point getOrigin() {
return origin;
}
@@ -229,17 +253,23 @@ public class WaveformCanvas extends Canvas {
redraw();
}
- public void clearAllWavefromPainter() {
- trackVerticalOffset.clear();
+ public void clearAllWaveformPainter() {
+ trackAreaPainter.getTrackVerticalOffset().clear();
+ wave2painterMap.clear();
syncScrollBars();
}
- public void addWavefromPainter(int yoffs, IWaveformPainter painter) {
- trackVerticalOffset.put(yoffs+rulerHeight, painter);
+ public void addWaveformPainter(IWaveformPainter painter) {
+ trackAreaPainter.addTrackPainter(painter);
+ wave2painterMap.put(painter.getTrackEntry().waveform, painter);
syncScrollBars();
}
- /**
+ public List getCursorPainters() {
+ return cursorPainters;
+ }
+
+ /**
* Dispose the garbage here
*/
public void dispose() {
@@ -278,15 +308,12 @@ public class WaveformCanvas extends Canvas {
* range, it will correct it. This function considers only following factors
* : transform, image size, client area.
*/
- private void syncScrollBars() {
+ public void syncScrollBars() {
if (painterList.size() == 0) {
redraw();
return;
}
- int height = 1;
- if (trackVerticalOffset.size() > 0)
- height = trackVerticalOffset.lastKey() + trackVerticalOffset.lastEntry().getValue().getMinHeight();
-
+ int height = trackAreaPainter.getHeight();
int width = (int) (maxTime / scaleFactor);
ScrollBar horizontal = getHorizontalBar();
horizontal.setIncrement((int) (getClientArea().width / 100));
@@ -334,7 +361,7 @@ public class WaveformCanvas extends Canvas {
transform.translate(origin.x, origin.y);
gc.setTransform(transform);
gc.setClipping(clientRect);
- if (painterList.size() > 0 && trackVerticalOffset.size() > 0) {
+ if (painterList.size() > 0 ) {
for (IPainter painter : painterList)
painter.paintArea(gc, clientRect);
} else {
@@ -346,15 +373,17 @@ public class WaveformCanvas extends Canvas {
public List