blockNavigatorRedrawOnce = true;
public void zoomArea(int x1, int y1, int x2, int y2) {	ViewState view = ViewState.getInstance();	double scale = view.getScale();	int w = Math.abs(x2-x1);	int h = Math.abs(y2-y1);		double xscale = view.getViewWidth()/(double)w;	double yscale = view.getViewHeight()/(double)h;	double dfscale = Math.min(xscale, yscale);	double nscale = scale*dfscale;	if (nscale > 2.5)	// !!! maximum	{		nscale=2.5; dfscale=2.5/scale;	}	double dx = w*(xscale-dfscale)/2.0;	double dy = h*(yscale-dfscale)/2.0;	x1=Math.min(x1, x2);	y1=Math.min(y1, y2);		dx = Math.max(0, (x1+view.getRx())*dfscale-dx);	dy = Math.max(0, (y1+view.getRy())*dfscale-dy);		view.setDrx(dx);	view.setDry(dy);	view.setScale(nscale);	updateWorkspaceScale();		recalculateNavigatorPosition();	repaint();}