if(drawCanvas == null || drawCanvas.isDisposed() || !drawCanvas.isVisible())
return;
drawBackGround(sizeChanged);
if (bufferBackground == null || bufferBackground.isDisposed()) {
return;
}
boolean scaleChanged = lastMax != scale.getMax();
if(sizeChanged || scaleChanged || bufferScale == null) {
Rectangle bounds = drawCanvas.getClientArea();
if(bounds.height < 30 || bounds.width < 100)
return;
if(bufferScale != null && ! bufferScale.isDisposed())
bufferScale.dispose();
bufferScale = new Image(drawCanvas.getDisplay(),bounds);
GC gcBuffer = new GC(bufferScale);
try {
gcBuffer.drawImage(bufferBackground,0,0);
gcBuffer.setForeground(Colors.black);
//gcImage.setBackground(null);
scale.setNbPixels(bounds.height - 16);
int[] levels = scale.getScaleValues();
for(int i = 0 ; i < levels.length ; i++) {
int height = bounds.height - scale.getScaledValue(levels[i]) - 2;
gcBuffer.drawLine(1,height,bounds.width - 70 ,height);
gcBuffer.drawText(formater.format(levels[i]),bounds.width - 65,height - 12,true);
}
if (this.update_divider_width > 0) {
for (int i=bounds.width - 70; i > 0; i-=this.update_divider_width) {
gcBuffer.setForeground(Colors.grey);
gcBuffer.drawLine(i, 0, i, bounds.height);
}
}
} catch (Exception e) {
Debug.out(e);
} finally {
gcBuffer.dispose();
}
}