home *** CD-ROM | disk | FTP | other *** search
/ gondwana.ecr.mu.oz.au/pub/ / Graphics.tar / Graphics / fermiVogle.tar.Z / fermiVogle.tar / devel / examples / xview / xvballs.c < prev    next >
C/C++ Source or Header  |  1996-02-07  |  2KB  |  123 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <xview/xview.h>
  4. #include <xview/canvas.h>
  5. #include <xview/panel.h>
  6. #include <xview/xv_xrect.h>
  7. #include "vogle.h"
  8.  
  9. #define SIZE    512
  10.  
  11. int    vinited = 0;
  12.  
  13. Display    *dpy;
  14. Window    win;
  15.  
  16. quit()
  17. {
  18.     vexit();
  19.     exit(0);
  20. }
  21.  
  22.  
  23. repaint(canvas, paint_win, dpy, xwin, area)
  24.     Canvas        canvas;
  25.     Xv_Window    paint_win;
  26.     Display        *dpy;
  27.     Window        xwin;
  28.     Xv_xrectlist    *area;
  29. {
  30.     int    w, h;
  31.     
  32.     w = (int)xv_get(paint_win, XV_WIDTH);
  33.         h = (int)xv_get(paint_win, XV_HEIGHT);
  34.  
  35.     if (!vinited) {
  36.         vinited = 1;
  37.         vo_xt_window(dpy, xwin, w, h);
  38.         vinit("");
  39.     }
  40.     
  41.     fprintf(stderr, "Repaint proc: 0x%x, 0x%x [%d %d]\n", dpy, win, w, h);
  42.     color(BLACK);
  43.     clear();
  44.  
  45.     draw_balls();
  46. }
  47.  
  48. resize(win, event, arg, type)
  49.     Xv_window       win;
  50.     Event           *event;
  51.     Notify_arg      arg;
  52.     Notify_event_type type;
  53. {
  54.     int    w, h;
  55.     
  56.     w = xv_get(win, XV_WIDTH);
  57.         h = xv_get(win, XV_HEIGHT);
  58.  
  59.     fprintf(stderr, "Resize proc: 0x%x, 0x%x (%d %d)\n", dpy, win, w, h);
  60.  
  61.  
  62.     vo_xt_win_size(w, h);
  63.  
  64.     viewport(-1.0, 1.0, -1.0, 1.0);
  65.  
  66.     color(BLACK);
  67.     clear();
  68.  
  69.     draw_balls();
  70. }
  71.  
  72. main(ac, av)
  73.     int    ac;
  74.     char    **av;
  75. {
  76.     Frame        frame;
  77.     Canvas        canvas;
  78.     Panel        panel;
  79.     int        w, h;
  80.  
  81.     frame = xv_create(
  82.             0, FRAME,
  83.             FRAME_LABEL, av[1],
  84.             WIN_HEIGHT, SIZE,
  85.             WIN_WIDTH, SIZE,
  86.         0);
  87.  
  88.     canvas = xv_create(
  89.             frame, CANVAS,
  90.             CANVAS_RESIZE_PROC, resize,
  91.             CANVAS_REPAINT_PROC, repaint,
  92.             CANVAS_X_PAINT_WINDOW, TRUE,
  93.             WIN_HEIGHT, SIZE,
  94.             WIN_WIDTH, SIZE,
  95.         0);
  96.  
  97.  
  98.  
  99.     panel = xv_create(
  100.             frame, PANEL, 
  101.             WIN_BELOW, canvas,
  102.             WIN_X, 0,
  103.         0);
  104.  
  105.  
  106.     panel_create_item(
  107.         panel, PANEL_BUTTON,
  108.         PANEL_LABEL_IMAGE, panel_button_image(panel, "QUIT", 0, 0),
  109.  
  110.         PANEL_NOTIFY_PROC, quit,
  111.     0);
  112.  
  113.     window_fit(panel);
  114.     window_fit(frame);
  115.  
  116.     /*
  117.      * The resiz/repaint procs are going to initialise
  118.       * it all for us.
  119.      */
  120.  
  121.     xv_main_loop(frame);
  122. }
  123.