Call pick(Point screenPoint)
synchronized Call pick(Point screenPoint)
	Call pick(Point screenPoint)	{		/* Standard GL4Java Init */		if( glj == null || !glj.gljMakeCurrent() ) 		{			return null;		}		compileDisplayLists();		int[] viewport = new int[4];		gl.glGetIntegerv(GL_VIEWPORT, viewport);		/*		System.out.print("Viewport = ( ");		for ( int i = 0; i < viewport.length; ++i )		{			System.out.print(viewport[i]);		}		System.out.println(" )");		*/				gl.glSelectBuffer(selectBuffer.length, selectBuffer);		gl.glRenderMode(GL_SELECT);		gl.glInitNames();		gl.glMatrixMode(GL_PROJECTION);		gl.glPushMatrix();		gl.glLoadIdentity();		glu.gluPickMatrix(screenPoint.x, viewport[3] - screenPoint.y, 1, 1, viewport);		createPerspectiveTransform(getSize().width, getSize().height);				gl.glCallList(quadsList);				int hits = gl.glRenderMode(GL_RENDER);		// System.out.println("hits : " + hits);		gl.glPopMatrix();		gl.glMatrixMode(GL_MODELVIEW);		glj.gljCheckGL();		int closestName = -1;		int closestZ = Integer.MAX_VALUE;		for ( int count = 0, i = 0; count < hits; ++count )		{			int numNames = selectBuffer[i++];			if ( numNames != 1 ) 				System.out.println("Expecting numNames = 1, found " + numNames);			int z1 = selectBuffer[i++];			int z2 = selectBuffer[i++];			int name = selectBuffer[i++];			if ( z1 < closestZ )			{				closestZ = z2;				closestName = name;			}		}		Call mouseOverCall = null;		if ( closestName != -1 )		{			mouseOverCall = model.getCallByGLName(closestName);		}				glj.gljFree();		return mouseOverCall;	}