home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / fermiVogle.tar.Z / fermiVogle.tar / devel / examples / xt / xtballs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-07  |  2.1 KB  |  114 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <X11/Intrinsic.h>
  4. #include <X11/StringDefs.h>
  5. #include <X11/Xaw/Form.h>
  6. #include <X11/Xaw/Command.h>
  7. #include "vogle.h"
  8.  
  9. #define SIZE    512
  10.  
  11.  
  12. int    vinited = 0;
  13.  
  14. int    iii;
  15.  
  16. Widget        toplevel, panel, canvas, qbut, rbut;
  17.  
  18. quit()
  19. {
  20.     vexit();
  21.     exit(0);
  22. }
  23.  
  24. resize()
  25. {
  26.     Dimension    w, h;
  27.     Arg        arg[2];
  28.  
  29.     XtSetArg(arg[0], XtNwidth, &w);
  30.     XtSetArg(arg[1], XtNheight, &h);
  31.     XtGetValues(canvas, arg, 2);
  32.  
  33.     vo_xt_win_size((int)w, (int)h);
  34.     viewport(-1.0, 1.0, -1.0, 1.0);
  35.  
  36.     fprintf(stderr, "resize()\n");
  37. }
  38.  
  39. repaint()
  40. {
  41.     fprintf(stderr, "repaint()\n");
  42.     color(BLACK);
  43.     clear();
  44.     draw_balls();
  45.     
  46. }
  47.  
  48. XtActionsRec actions[] = {
  49.     {"resize",     (XtActionProc)resize},
  50. };
  51.  
  52. String trans =
  53.      "<Configure>:    resize()";
  54.  
  55. Display        *dpy;
  56. Window        win;
  57. GC        gc;
  58.  
  59. /*
  60.  * simple program to display a polygon file
  61.  */
  62. main(ac, av)
  63.     int    ac;
  64.     char    **av;
  65. {
  66.     int        w, h;
  67.     Arg        wargs[6];
  68.     void        drawscene();
  69.     Dimension    ww, wh, x, y;
  70.     XtTranslations    trans_table;
  71.  
  72.     vinited = 0;
  73.  
  74.     ww = wh = 100;
  75.     x = 0;
  76.     y = 0;
  77.     toplevel = XtInitialize(av[0], "xtballs", NULL, 0, &ac, av);
  78.  
  79.  
  80.     panel = XtCreateManagedWidget("panel", formWidgetClass, toplevel, wargs, 1);
  81.  
  82.     XtSetArg(wargs[0], XtNlabel, "Quit");
  83.     qbut = XtCreateManagedWidget("quit", commandWidgetClass, panel, wargs, 1);
  84.     XtAddCallback(qbut, XtNcallback, quit, NULL);
  85.  
  86.     XtSetArg(wargs[0], XtNlabel, "Repaint");
  87.     XtSetArg(wargs[1], XtNfromHoriz, qbut);
  88.     rbut = XtCreateManagedWidget("redraw", commandWidgetClass, panel, wargs, 2);
  89.     XtAddCallback(rbut, XtNcallback, repaint, NULL);
  90.  
  91.     XtAddActions(actions, XtNumber(actions));
  92.  
  93.     XtSetArg(wargs[0], XtNwidth, 512);
  94.     XtSetArg(wargs[1], XtNheight, 512);
  95.     XtSetArg(wargs[2], XtNx, 0);
  96.     XtSetArg(wargs[3], XtNy, 0);
  97.     XtSetArg(wargs[4], XtNfromVert, qbut);
  98.     trans_table = XtParseTranslationTable(trans);
  99.     XtSetArg(wargs[5], XtNtranslations, trans_table);
  100.     canvas = XtCreateManagedWidget("canvas", simpleWidgetClass, panel, wargs, 6);
  101.     XtAddEventHandler(canvas, ExposureMask, FALSE, repaint, NULL);
  102.  
  103.     XtRealizeWidget(toplevel);
  104.  
  105.     dpy = XtDisplay(canvas);
  106.     win = XtWindow(canvas);
  107.  
  108.     vo_xt_window(dpy, win, 512, 512);
  109.     vinit("X11");
  110.     vinited = 1;
  111.  
  112.     XtMainLoop();
  113. }
  114.