OverTheSpot GUI Notes:

HZoverspotDrawCandidatePanel ()
	dpy			= HZServer.display
	win2		= HZServer.window2
	w2			= HZServer.hzCwin.w2	// Width
	h2			= HZServer.hzCwin.h2	// Height
	dimgc2		= HZServer.dimGC;
	lightgc2	= HZServer.lightGC;
	panelgc2	= HZServer.panelGC;

  For the seperator, the coord is Hard Coded.
	XDrawLine (dpy, win2, dimgc2, 1, 23, w2-1, 23);
	XDrawLine (dpy, win2, lightgc2, 1, 24, w2-1, 24);
	XDrawLine (dpy, win2, dimgc2, 1, h2-20, w2-1, h2-20);
	XDrawLine (dpy, win2, lightgc2, 1, h2-19, w2-1, h2-19);
  For the Border
	DrawSunkenBorder (dpy, win2, lightgc2, dimgc2, 0, 0, w2, h2);

HZoverspotDrawCandidateLabel ()
	window2		// From global
	icon_id		// From global
	im_123		// From global

  For the Label.
	MyDrawString (window2, HZServer.normalGC, 20, 20, buf, strlen (buf));
  For the Image Icon.
	Imlib_paste_image (icon_id, im_123, window2, 4, 4, 16, 16);

HZoverspotDrawCandidateButton ()
	dpy			= HZServer.display
	win2		= HZServer.window2
	dimgc2		= HZServer.dimGC
	lightgc2	= HZServer.lightGC

  For the 'Page Up' button
	draw_tri_button (dpy, win2, dimgc2, lightgc2,
		HZServer.hzCwin.b1_x1, HZServer.hzCwin.b1_y1,
		HZServer.hzCwin.b1_x2, HZServer.hzCwin.b1_y2,
		HZServer.hzCwin.b1_x3, HZServer.hzCwin.b1_y3,
		False);
  For the 'Page Down' button
	draw_tri_button (dpy, win2, dimgc2, lightgc2,
		HZServer.hzCwin.b2_x1, HZServer.hzCwin.b2_y1,
		HZServer.hzCwin.b2_x2, HZServer.hzCwin.b2_y2,
		HZServer.hzCwin.b2_x3, HZServer.hzCwin.b2_y3,
		False);

HZoverspotDrawCandidateArea ()
	y			= HZServer.f_height + 26	// Start 'Y' coord of printing str

  For each row of candidate string
	MyDrawString (window2, HZServer.normalGC, 6, y, s, ptr1-ptr+3);
	y += HZServer.f_height + 2;

  This function is responsible for drawing the whole candidate area, so ...
	HZoverspotDrawCandidatePanel ()
	HZoverspotDrawCandidateLabel ()
	HZoverspotDrawCandidateButton ()

// This function will move/resize Input Win and Candidate Win
HZoverspotResizeWindow ()
	len				= (len < HZSERVER_INPUT_CHARS) ? len = HZSERVER_INPUT_CHARS
	width_input_win = len * 8 + 8			// Global
	curx1			= HZServer.hzIwin.x
	cury1			= HZServer.hzIwin.y
	curx2			= curx1 + width_input_win + 4
	cury2			= cury1
	dw				= DisplayWidth (display, screen_num)
	dh				= DisplayHeight (display, screen_num)

  Moving the Input Win and Candidate Win to correct place.
	XMoveWindow (display, window2, curx2, cury2);
	XMoveWindow (display, window1, curx1, cury1);

  Resize the Input Win
	XResizeWindow (display, window1, len * 8 + 8, HZServer.hzCwin.h1);

HZoverspotDrawInputPanel ()
	w1				= width_input_win
	h1				= HZServer.hzCwin.h1
	dimgc			= HZServer.dimGC
	lightgc			= HZServer.lightGC
	panelgc			= HZServer.panelGC

  Filling the background of Input Window
	XFillRectangle (display, window1, panelgc, 0, 0, w1, h1);
	DrawSunkenBorder (display, window1, lightgc, dimgc, 0, 0, w1, h1);
	Imlib_paste_image (icon_id, im_chinput, window1, 6, 6, 16, 16);

HZoverspotDrawInputArea ()
  For no Input Code to display, show IM name 
	MyDrawString (window1, HZServer.normalGC,
		24, HZServer.f_height + 7, buf, len);

  For Input Code to display
	MyDrawString (window1, HZServer.normalGC,
		8, HZServer.f_height + 7, buf, len);
