Exemplo n.º 1
0
main(int argc, char *argv[])
{
  int i;

  exename= argv[0];

  if (argc>1) { /* Check for command line arguments */
    i= 1;
    while ((--argc > 0) && (argv[i][0]=='-')) {
      int c= argv[i][1];
      switch (c) {
      case 'a':
	automanage= 1;
	fprintf(stderr,"%s: Windows will be automanaged.\n",argv[0]);
	break;
      default:
	fprintf(stderr,"%s: illegal option %c\n",argv[0],c);
	fprintf(stderr,"usage: %s [-a]\n",argv[0]);
	argc= 0;
	break;
      }
      i++;
    }
  }

  if (!automanage) {
    Arg args[16]; 
    Widget toplevel, main_window, menu_bar, menu_pane, button;
    Widget draw_form;
    XmString title_string;
    int width=300, height=300;

    i = 0;
    toplevel = XtInitialize("p3d", "xpainter", NULL, 0, &i, NULL);

    i= 0;
    main_window= XmCreateMainWindow(toplevel, "main_window", args, i);

    i= 0;
    menu_bar= XmCreateMenuBar(main_window, "menu_bar", args, i);
    XtManageChild(menu_bar);

    i= 0;
    menu_pane= XmCreatePulldownMenu(menu_bar, "menu_pane", args, i);

    title_string= XmStringCreateSimple("File");
    i= 0;
    XtSetArg(args[i], XmNsubMenuId, menu_pane); i++;
    XtSetArg(args[i], XmNlabelString, title_string); i++;
    button= XmCreateCascadeButton(menu_bar,"file",args,i);
    if (title_string) XmStringFree(title_string);
    XtManageChild(button);

    title_string= XmStringCreateSimple("Show");
    i= 0;
    XtSetArg(args[i], XmNlabelString, title_string); i++;
    button= XmCreatePushButtonGadget(menu_pane,"show",args,i);
    XtAddCallback(button,XmNactivateCallback,show_cb,NULL);
    if (title_string) XmStringFree(title_string);
    XtManageChild(button);

    title_string= XmStringCreateSimple("Exit");
    i= 0;
    XtSetArg(args[i], XmNlabelString, title_string); i++;
    button= XmCreatePushButtonGadget(menu_pane,"exit",args,i);
    XtAddCallback(button,XmNactivateCallback,exit_cb,NULL);
    if (title_string) XmStringFree(title_string);
    XtManageChild(button);

    i= 0;
    draw_form= XmCreateForm(main_window,"draw_form", args, i);
    XtManageChild(draw_form);

    i = 0;
    XtSetArg(args[i], XtNwidth, width); i++;
    XtSetArg(args[i], XtNheight, height); i++;
    XtSetArg(args[i], XmNtopAttachment, XmATTACH_FORM); i++;
    XtSetArg(args[i], XmNbottomAttachment, XmATTACH_FORM); i++;
    XtSetArg(args[i], XmNleftAttachment, XmATTACH_FORM); i++;

#ifdef USE_OPENGL
    XtSetArg(args[i], GLwNrgba, TRUE); i++;
    XtSetArg(args[i], GLwNdoublebuffer, TRUE); i++;
    XtSetArg(args[i], GLwNdepthSize, 16); i++;
    XtSetArg(args[i], GLwNallocateBackground, TRUE); i++;
    XtSetArg(args[i], GLwNinstallBackground, TRUE); i++;
    drawa= GLwCreateMDrawingArea(draw_form, "spina", args, i);
#else
    XtSetArg(args[i], GlxNglxConfig, glxconfig); i++;
    drawa= GlxCreateMDraw(draw_form, "spina", args, i);
#endif
    XtManageChild(drawa);

    i = 0;
    XtSetArg(args[i], XtNwidth, width); i++;
    XtSetArg(args[i], XtNheight, height); i++;
    XtSetArg(args[i], XmNtopAttachment, XmATTACH_FORM); i++;
    XtSetArg(args[i], XmNbottomAttachment, XmATTACH_FORM); i++;
    XtSetArg(args[i], XmNleftAttachment, XmATTACH_WIDGET); i++;
    XtSetArg(args[i], XmNleftWidget, drawa); i++;
    XtSetArg(args[i], XmNrightAttachment, XmATTACH_FORM); i++;

#ifdef USE_OPENGL
    XtSetArg(args[i], GLwNrgba, TRUE); i++;
    XtSetArg(args[i], GLwNdoublebuffer, TRUE); i++;
    XtSetArg(args[i], GLwNdepthSize, 16); i++;
    XtSetArg(args[i], GLwNallocateBackground, TRUE); i++;
    XtSetArg(args[i], GLwNinstallBackground, TRUE); i++;
    drawb= GLwCreateMDrawingArea(draw_form, "spinb", args, i);
#else
    XtSetArg(args[i], GlxNglxConfig, glxconfig); i++;
    drawb= GlxCreateMDraw(draw_form, "spinb", args, i);
#endif
    XtManageChild(drawb);

    XtManageChild(main_window);

    XtRealizeWidget(toplevel);
  }
  else { /* automanage renderers */
    dp_init_ren("myrena", "gl","",
		"title=\"Ren A\",size=\"256x256+200+200\"");
    dp_init_ren("myrenb", "gl","",
		"title=\"Ren B\",size=\"300x400+500+500\"");
    fprintf(stderr, "%s: renderer initialized\n",exename);
    dp_print_ren("myrena");
    dp_print_ren("myrenb");
    rens_initialized= 1;
    build_geom();
  }

  if (!automanage) {
    XtMainLoop();
  }
  else {
    fprintf(stderr, "%s: about to render\n",exename);
    for (i=0; i<180; i++) make_new_snaps();
    finish_and_shutdown();
  }
}
Exemplo n.º 2
0
Widget GLwCreateM2DrawingArea(Widget parent,char *name,ArgList arglist,Cardinal argcount) {
	return (Widget) GLwCreateMDrawingArea(parent, name, arglist, argcount);
}