return this;
}
protected void onMouseWheel(NodeMouseWheelEvent event)
{
Transform transform = getTransform();
if (transform == null)
{
setTransform(transform = new Transform());
}
double scaleDelta;
// Console.log("s=" + event.isSouth() + " n=" + event.isNorth() + " delta=" + event.getDeltaY() + " or.s=" + event.getOriginalEvent().isSouth() + " or.n=" + event.getOriginalEvent().isNorth() + " or.dy=" + event.getOriginalEvent().getDeltaY());
if (event.isSouth() == m_downZoomOut) // down
{
// zoom out
scaleDelta = 1 / (1 + m_zoomFactor);
}
else
{
// zoom in
scaleDelta = 1 + m_zoomFactor;
}
// ASSUMPTION: scaleX == scaleY
double currentScale = transform.getScaleX();
double newScale = currentScale * scaleDelta;
if (newScale < m_minScale)
{
scaleDelta = m_minScale / currentScale;
}
if ((m_maxScale > 0) && (newScale > m_maxScale))
{
scaleDelta = m_maxScale / currentScale;
}
Point2D p = new Point2D(event.getX(), event.getY());
transform.getInverse().transform(p, p);
transform = transform.copy();
transform.scaleAboutPoint(scaleDelta, p.getX(), p.getY());
setTransform(transform);
redraw();
}