Update.
authorFrancois Fleuret <francois@fleuret.org>
Fri, 9 Sep 2016 10:08:22 +0000 (12:08 +0200)
committerFrancois Fleuret <francois@fleuret.org>
Fri, 9 Sep 2016 10:08:22 +0000 (12:08 +0200)
Makefile
generate.cc [new file with mode: 0644]
main.cc
polygon.cc
polygon.h
universe.cc
universe.h

index b5eef5e..953f4ac 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -34,7 +34,7 @@ LDFLAGS += -lcairo
 TASK_SRC = dummy.cc move_square.cc hit_shape.cc
 TASK_OBJ = $(TASK_SRC:.cc=.so)
 
-all: main TAGS $(TASK_OBJ)
+all: main generate TAGS $(TASK_OBJ)
 
 TAGS: *.cc *.h
        etags *.cc *.h
@@ -54,6 +54,13 @@ main:        main.o misc.o \
        intelligence.o
        $(CXX) $(CXXFLAGS) $(LDFLAGS) -lX11 -o $@ $^
 
+generate:      generate.o misc.o \
+       universe.o \
+       plotter.o \
+       polygon.o \
+       canvas.o canvas_cairo.o
+       $(CXX) $(CXXFLAGS) $(LDFLAGS) -lX11 -o $@ $^
+
 %.so: %.cc misc.o universe.o polygon.o xfig_tracer.o map.o task.o manipulator.o
        $(CXX) $(CXXFLAGS) -shared -Wl,-soname,$@ -o $@ $^
 
diff --git a/generate.cc b/generate.cc
new file mode 100644 (file)
index 0000000..e41fbe3
--- /dev/null
@@ -0,0 +1,40 @@
+
+////////////////////////////////////////////////////////////////////
+// START_IP_HEADER                                                //
+//                                                                //
+// Written by Francois Fleuret                                    //
+// Contact <francois.fleuret@idiap.ch> for comments & bug reports //
+//                                                                //
+// END_IP_HEADER                                                  //
+////////////////////////////////////////////////////////////////////
+
+#include <iostream>
+#include <fstream>
+#include <cmath>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <errno.h>
+#include <string.h>
+
+using namespace std;
+
+#include "misc.h"
+#include "task.h"
+#include "simple_window.h"
+#include "universe.h"
+#include "plotter.h"
+#include "retina.h"
+#include "manipulator.h"
+#include "intelligence.h"
+#include "canvas_cairo.h"
+
+void generate_png(Universe *universe, scalar_t scale, FILE *file) {
+  CanvasCairo canvas(scale, universe->width(), universe->height());
+  universe->draw(&canvas);
+  canvas.write_png(file);
+}
+
+int main(int argc, char **argv) {
+
+}
diff --git a/main.cc b/main.cc
index d3b3833..974cbea 100644 (file)
--- a/main.cc
+++ b/main.cc
@@ -428,10 +428,12 @@ int main(int argc, char **argv) {
                   plotter.save_as_ppm(&universe, "/tmp/plotter.ppm", 16);
                 }
 
+#ifdef XFIG_SUPPORT
                 {
                   XFigTracer tracer("/tmp/universe.fig");
                   universe.print_xfig(&tracer);
                 }
+#endif
 
 #ifdef CAIRO_SUPPORT
                 {
index 4068919..9e55d80 100644 (file)
@@ -47,6 +47,7 @@ Polygon *Polygon::clone() {
   return new Polygon(_mass, _red, _green, _blue, _relative_x, _relative_y, _nb_vertices);
 }
 
+#ifdef XFIG_SUPPORT
 void Polygon::color_xfig(XFigTracer *tracer) {
   tracer->add_color(int(255 * _red), int(255 * _green), int(255 * _blue));
 }
@@ -55,6 +56,7 @@ void Polygon::print_xfig(XFigTracer *tracer) {
   tracer->draw_polygon(int(255 * _red), int(255 * _green), int(255 * _blue),
                        _nb_vertices, _x, _y);
 }
+#endif
 
 #ifdef X11_SUPPORT
 void Polygon::draw(SimpleWindow *window) {
index 5a000be..e2d35f6 100644 (file)
--- a/polygon.h
+++ b/polygon.h
@@ -8,7 +8,9 @@
 #include "misc.h"
 #include "canvas.h"
 
+#ifdef XFIG_SUPPORT
 #include "xfig_tracer.h"
+#endif
 
 #ifdef X11_SUPPORT
 #include "simple_window.h"
@@ -71,8 +73,10 @@ public:
 
   Polygon *clone();
 
+#ifdef XFIG_SUPPORT
   void color_xfig(XFigTracer *tracer);
   void print_xfig(XFigTracer *tracer);
+#endif
 
 #ifdef X11_SUPPORT
   void draw(SimpleWindow *window);
index 55e1a6d..47d7c88 100644 (file)
@@ -118,6 +118,7 @@ Polygon *Universe::pick_polygon(scalar_t x, scalar_t y) {
   return 0;
 }
 
+#ifdef XFIG_SUPPORT
 void Universe::print_xfig(XFigTracer *tracer) {
   for(int n = 0; n < _nb_polygons; n++) {
     if(_polygons[n]) {
@@ -130,6 +131,7 @@ void Universe::print_xfig(XFigTracer *tracer) {
     }
   }
 }
+#endif
 
 #ifdef X11_SUPPORT
 void Universe::draw(SimpleWindow *window) {
index b164d0b..a521f59 100644 (file)
@@ -44,7 +44,9 @@ public:
 
   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);