Cleaning up for DL.
[universe.git] / universe.h
index 77980b8..07cf7f0 100644 (file)
@@ -8,30 +8,30 @@
 #include <iostream>
 #include <cmath>
 
-#ifdef CAIRO_SUPPORT
-#include <cairo.h>
+#include "misc.h"
+#include "canvas.h"
+#include "polygon.h"
+
+#ifdef X11_SUPPORT
+#include "simple_window.h"
 #endif
 
 using namespace std;
 
-#include "misc.h"
-#include "simple_window.h"
-#include "polygon.h"
-
 class Universe {
-  scalar_t _xmax, _ymax;
+  scalar_t _width, _height;
 public:
   int _nb_max_polygons, _nb_polygons;
   Polygon **_polygons;
 
-  inline scalar_t width() { return _xmax; }
-  inline scalar_t height() { return _ymax; }
+  inline scalar_t width() { return _width; }
+  inline scalar_t height() { return _height; }
 
-  Universe(int nb_max_polygons, scalar_t xmax, scalar_t ymax);
+  Universe(int nb_max_polygons, scalar_t width, scalar_t height);
   // The destructor deletes all the added polygons
   ~Universe();
 
-  void initialize(Polygon *p);
+  void initialize_polygon(Polygon *p);
   void clear();
   void add_polygon(Polygon *p);
   bool collide(Polygon *p);
@@ -39,17 +39,23 @@ public:
   // Compute collisions between projections of the polygons on a few
   // axis to speed up the computation
   void compute_pseudo_collisions(int nb_axis, int *nb_colliding_axis);
+  void apply_gravity(scalar_t dt, scalar_t fx, scalar_t fy);
   void apply_collision_forces(scalar_t dt);
   bool update(scalar_t dt);
 
   Polygon *pick_polygon(scalar_t x, scalar_t y);
 
+#ifdef XFIG_SUPPORT
   void print_xfig(XFigTracer *tracer);
+#endif
+
+#ifdef X11_SUPPORT
   void draw(SimpleWindow *window);
+#endif
 
 #ifdef CAIRO_SUPPORT
-  void draw(cairo_t *context_resource);
-#endif
+  void draw(Canvas *canvas);
 };
+#endif
 
 #endif