#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/StringDefs.h> /* string definitions for things like XtNwidth */
#include <X11/Xresource.h>
#include <X11/Intrinsic.h>  /* include all the intrinsic headers */
                            /* includes XToolkit definitions     */
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <X11/Composite.h>  /* facilitate creation of composite widgets */
#include <X11/Shell.h>      /* include shell widget class header files  */
#include <X11/Form.h>       /* not only includes the Form widget defs   */
                            /* but also the constraint defs             */
#include <X11/Box.h>        /* include box widget class header files    */
#include <X11/Label.h>      /* include label widget class header files  */

#include <X11/VVideo.h>     /* include video widget class header files  */

static Arg arg_list[40];

   XFontStruct *timesRoman12, *timesBold12;  /* font structures needed   */
   XFontStruct *fixedFont;

/*********************************************************/

 create_all_widgets(base_widget)
     Widget base_widget;
 {
   int i;
   Display *the_display;
   Widget WBwidget0;
   Widget WBwidget1;
   Widget WBwidget2;
   Widget WBwidget7;
   Widget WBwidget8;
   Widget WBwidget9;
   Widget WBwidget3;
   Widget WBwidget4;
   Widget WBwidget5;
   Widget WBwidget6;

   /* Load in necessary fonts */
   /* ----------------------- */
   the_display = XtDisplay(base_widget);      /* first get the display */
   timesRoman12 = XLoadQueryFont(the_display, "times-roman12");
   timesBold12 = XLoadQueryFont(the_display, "times-bold12");
   fixedFont = XLoadQueryFont(the_display, "fixed");
   i = 0;

   /* Create Form Widget, whose parent is base_widget */

   XtSetArg(arg_list[i], XtNheight, 138); i++;
   XtSetArg(arg_list[i], XtNwidth, 389); i++;
   XtSetArg(arg_list[i], XtNx, 0); i++;
   XtSetArg(arg_list[i], XtNy, 0); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNleft, XtRubber); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNtop, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesRoman12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget0 =
      XtCreateManagedWidget("WBwidget0",
               formWidgetClass,
               base_widget, arg_list, i);
   i = 0;

   /* Create Video Widget, whose parent is WBwidget0 */

   XtSetArg(arg_list[i], XtNlabel,
      ""); i++;
   XtSetArg(arg_list[i], XtNheight, 127); i++;
   XtSetArg(arg_list[i], XtNwidth, 162); i++;
   XtSetArg(arg_list[i], XtNx, 65); i++;
   XtSetArg(arg_list[i], XtNy, 4); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 4); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 65); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesRoman12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget1 =
      XtCreateManagedWidget("WBwidget1",
               videoWidgetClass,
               WBwidget0, arg_list, i);
   i = 0;

   /* Create Form Widget, whose parent is WBwidget0 */

   XtSetArg(arg_list[i], XtNheight, 127); i++;
   XtSetArg(arg_list[i], XtNwidth, 59); i++;
   XtSetArg(arg_list[i], XtNx, 4); i++;
   XtSetArg(arg_list[i], XtNy, 4); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 4); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 4); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesRoman12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget2 =
      XtCreateManagedWidget("WBwidget2",
               formWidgetClass,
               WBwidget0, arg_list, i);
   i = 0;

   /* Create Label Widget("RED"), whose parent is WBwidget2 */

   XtSetArg(arg_list[i], XtNlabel,
      "RED"); i++;
   XtSetArg(arg_list[i], XtNjustify, XtJustifyCenter); i++;
   XtSetArg(arg_list[i], XtNborderWidth, 0); i++;
   XtSetArg(arg_list[i], XtNheight, 34); i++;
   XtSetArg(arg_list[i], XtNwidth, 51); i++;
   XtSetArg(arg_list[i], XtNx, 4); i++;
   XtSetArg(arg_list[i], XtNy, 3); i++;
   XtSetArg(arg_list[i], XtNforeground, 1); i++;
   XtSetArg(arg_list[i], XtNbackground, 0); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 3); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 4); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesBold12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget7 =
      XtCreateManagedWidget("WBwidget7",
               labelWidgetClass,
               WBwidget2, arg_list, i);
   i = 0;

   /* Create Label Widget("GREEN"), whose parent is WBwidget2 */

   XtSetArg(arg_list[i], XtNlabel,
      "GREEN"); i++;
   XtSetArg(arg_list[i], XtNjustify, XtJustifyCenter); i++;
   XtSetArg(arg_list[i], XtNborderWidth, 0); i++;
   XtSetArg(arg_list[i], XtNheight, 41); i++;
   XtSetArg(arg_list[i], XtNwidth, 51); i++;
   XtSetArg(arg_list[i], XtNx, 4); i++;
   XtSetArg(arg_list[i], XtNy, 40); i++;
   XtSetArg(arg_list[i], XtNforeground, 1); i++;
   XtSetArg(arg_list[i], XtNbackground, 0); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 40); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 4); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesBold12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget8 =
      XtCreateManagedWidget("WBwidget8",
               labelWidgetClass,
               WBwidget2, arg_list, i);
   i = 0;

   /* Create Label Widget("BLUE"), whose parent is WBwidget2 */

   XtSetArg(arg_list[i], XtNlabel,
      "BLUE"); i++;
   XtSetArg(arg_list[i], XtNjustify, XtJustifyCenter); i++;
   XtSetArg(arg_list[i], XtNborderWidth, 0); i++;
   XtSetArg(arg_list[i], XtNheight, 39); i++;
   XtSetArg(arg_list[i], XtNwidth, 50); i++;
   XtSetArg(arg_list[i], XtNx, 4); i++;
   XtSetArg(arg_list[i], XtNy, 84); i++;
   XtSetArg(arg_list[i], XtNforeground, 1); i++;
   XtSetArg(arg_list[i], XtNbackground, 0); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 84); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 4); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesBold12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget9 =
      XtCreateManagedWidget("WBwidget9",
               labelWidgetClass,
               WBwidget2, arg_list, i);
   i = 0;

   /* Create Form Widget, whose parent is WBwidget0 */

   XtSetArg(arg_list[i], XtNjustify, XtJustifyCenter); i++;
   XtSetArg(arg_list[i], XtNheight, 128); i++;
   XtSetArg(arg_list[i], XtNwidth, 153); i++;
   XtSetArg(arg_list[i], XtNx, 230); i++;
   XtSetArg(arg_list[i], XtNy, 4); i++;
   XtSetArg(arg_list[i], XtNforeground, 1); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 4); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 230); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesRoman12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget3 =
      XtCreateManagedWidget("WBwidget3",
               formWidgetClass,
               WBwidget0, arg_list, i);
   i = 0;

   /* Create Label Widget("TIME REMAINING"), whose parent is WBwidget3 */

   XtSetArg(arg_list[i], XtNlabel,
      "TIME REMAINING"); i++;
   XtSetArg(arg_list[i], XtNjustify, XtJustifyCenter); i++;
   XtSetArg(arg_list[i], XtNborderWidth, 0); i++;
   XtSetArg(arg_list[i], XtNheight, 17); i++;
   XtSetArg(arg_list[i], XtNwidth, 118); i++;
   XtSetArg(arg_list[i], XtNx, 16); i++;
   XtSetArg(arg_list[i], XtNy, 107); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 107); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 16); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesBold12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget4 =
      XtCreateManagedWidget("WBwidget4",
               labelWidgetClass,
               WBwidget3, arg_list, i);
   i = 0;

   /* Create Label Widget("VIDEO AVAILABILITY"), whose parent is WBwidget3 */

   XtSetArg(arg_list[i], XtNlabel,
      "VIDEO AVAILABILITY"); i++;
   XtSetArg(arg_list[i], XtNjustify, XtJustifyCenter); i++;
   XtSetArg(arg_list[i], XtNborderWidth, 0); i++;
   XtSetArg(arg_list[i], XtNheight, 17); i++;
   XtSetArg(arg_list[i], XtNwidth, 145); i++;
   XtSetArg(arg_list[i], XtNx, 4); i++;
   XtSetArg(arg_list[i], XtNy, 4); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 4); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 4); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtChainRight); i++;
   XtSetArg(arg_list[i], XtNtop, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesBold12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget5 =
      XtCreateManagedWidget("WBwidget5",
               labelWidgetClass,
               WBwidget3, arg_list, i);
   i = 0;

   /* Create Label Widget("Clock Icon"), whose parent is WBwidget3 */

   XtSetArg(arg_list[i], XtNlabel,
      "Clock Icon"); i++;
   XtSetArg(arg_list[i], XtNjustify, XtJustifyCenter); i++;
   XtSetArg(arg_list[i], XtNborderWidth, 0); i++;
   XtSetArg(arg_list[i], XtNheight, 84); i++;
   XtSetArg(arg_list[i], XtNwidth, 107); i++;
   XtSetArg(arg_list[i], XtNx, 22); i++;
   XtSetArg(arg_list[i], XtNy, 21); i++;
   XtSetArg(arg_list[i], XtNforeground, 1); i++;
   XtSetArg(arg_list[i], XtNbackground, 0); i++;
   /* Form related instance variables, about placement */
   XtSetArg(arg_list[i], XtNvertDistance, 21); i++;
   XtSetArg(arg_list[i], XtNhorizDistance, 22); i++;
   XtSetArg(arg_list[i], XtNleft, XtChainLeft); i++;
   XtSetArg(arg_list[i], XtNright, XtRubber); i++;
   XtSetArg(arg_list[i], XtNbottom, XtRubber); i++;
   XtSetArg(arg_list[i], XtNresizable, TRUE); i++;
   XtSetArg(arg_list[i], XtNfont, timesRoman12); i++;
   XtSetArg(arg_list[i], NULL, NULL);

   WBwidget6 =
      XtCreateManagedWidget("WBwidget6",
               labelWidgetClass,
               WBwidget3, arg_list, i);

 };    /* end of create_all_widgets() */

/*********************************************************/
/*********************************************************/

main(argc, argv)
     int argc;
     char *argv[];
 {
   Widget shell;          /* the top level application shell      */
   Widget base_widget;    /* the base widget (visible background) */

   /* Initialize a toplevel root shell widget */
   /* --------------------------------------- */
   shell = XtInitialize(argv[0],
		       "Top Level Shell",
		       NULL, 0, &argc, argv);

   /* Allow top level shell resize by child */
   /* ------------------------------------- */
   XtSetArg(arg_list[0], XtNallowShellResize, TRUE);
   XtSetArg(arg_list[1], NULL,  (XtArgVal) NULL);
   XtSetValues(shell, arg_list, 1);

   /* Create main (background) widget for the application */
   /* --------------------------------------------------- */
   XtSetArg(arg_list[0], XtNresizable, TRUE);
   base_widget = XtCreateManagedWidget("Top Level Form",
			       boxWidgetClass, shell,
			       arg_list, 1);

   create_all_widgets(base_widget);  /* Hang all widgets off base_widget */

   XtRealizeWidget(shell);           /* Make all widgets visible */

   XtMainLoop();                     /* Infinite event loop */

 };        /* end of main() */

