public void paintCallOut(Graphics g) {
		Graphics2D g2 = (Graphics2D) g;
		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		xPoints[0] = callout.x;
		yPoints[0] = callout.y;
		Rectangle rectangle = getBounds();
		int oc = rectangle.outcode(callout.x, callout.y);
		boolean b = true;
		if ((oc & Rectangle2D.OUT_BOTTOM) == Rectangle2D.OUT_BOTTOM) {
			if ((oc & Rectangle2D.OUT_LEFT) == Rectangle2D.OUT_LEFT) {
				xPoints[1] = rectangle.x;
				yPoints[1] = (int) (rectangle.y + rectangle.height * 0.8);
				xPoints[2] = (int) (rectangle.x + rectangle.width * 0.2);
				yPoints[2] = rectangle.y + rectangle.height;
			}
			else if ((oc & Rectangle2D.OUT_RIGHT) == Rectangle2D.OUT_RIGHT) {
				xPoints[1] = rectangle.x + rectangle.width;
				yPoints[1] = (int) (rectangle.y + rectangle.height * 0.8);
				xPoints[2] = (int) (rectangle.x + rectangle.width * 0.8);
				yPoints[2] = rectangle.y + rectangle.height;
			}
			else {
				xPoints[1] = (int) (rectangle.x + rectangle.width * 0.4);
				xPoints[2] = (int) (rectangle.x + rectangle.width * 0.6);
				yPoints[2] = yPoints[1] = rectangle.y + rectangle.height;
			}
		}
		else if ((oc & Rectangle2D.OUT_TOP) == Rectangle2D.OUT_TOP) {
			if ((oc & Rectangle2D.OUT_LEFT) == Rectangle2D.OUT_LEFT) {
				xPoints[1] = rectangle.x;
				yPoints[1] = (int) (rectangle.y + rectangle.height * 0.2);
				xPoints[2] = (int) (rectangle.x + rectangle.width * 0.2);
				yPoints[2] = rectangle.y;
			}
			else if ((oc & Rectangle2D.OUT_RIGHT) == Rectangle2D.OUT_RIGHT) {
				xPoints[1] = (int) (rectangle.x + rectangle.width * 0.8);
				yPoints[1] = rectangle.y;
				xPoints[2] = rectangle.x + rectangle.width;
				yPoints[2] = (int) (rectangle.y + rectangle.height * 0.2);
			}
			else {
				xPoints[1] = (int) (rectangle.x + rectangle.width * 0.4);
				xPoints[2] = (int) (rectangle.x + rectangle.width * 0.6);
				yPoints[2] = yPoints[1] = rectangle.y + 1;
			}
		}
		else if ((oc & Rectangle2D.OUT_LEFT) == Rectangle2D.OUT_LEFT) {
			xPoints[2] = xPoints[1] = rectangle.x + 1;
			yPoints[1] = (int) (rectangle.y + rectangle.height * 0.4);
			yPoints[2] = (int) (rectangle.y + rectangle.height * 0.6);
		}
		else if ((oc & Rectangle2D.OUT_RIGHT) == Rectangle2D.OUT_RIGHT) {
			xPoints[2] = xPoints[1] = rectangle.x + rectangle.width;
			yPoints[1] = (int) (rectangle.y + rectangle.height * 0.4);
			yPoints[2] = (int) (rectangle.y + rectangle.height * 0.6);
		}
		else {
			b = false;
		}
		if (b) {
			g.setColor(getBackground());
			g.fillPolygon(xPoints, yPoints, 3);
		}
	}