// Description: main() file for STL map overlay implementation // Revision history: 25/6/99/LY #include #include #include #include #include #include #include "decl.h" #include "input.h" #include "graphics.h" #include "leda\misc.h" using namespace std; void test(char* map1, char* map2); void build_dcel(D_CEL& d_cel, const string filename, const char label); void build_combined_dcel(D_CEL& d_cel, const string filename1, const string filename2, const char label1, const char label2); void display_input_dcels(D_CEL& d_cel1, D_CEL& d_cel2); void display_overlay_dcel(D_CEL& dcel); typedef void (D_CEL::* DcelFunctionPtr)(); void time_overlay(D_CEL& dcel, DcelFunctionPtr dfPtr); void test_dcel(const string filename1, const string filename2); void main(int argc, char* argv[]) { if (argc < 3) { cout << "Expected filenames of 2 maps as arguments - terminating..." << endl; return; } test(argv[1], argv[2]); } void build_dcel(D_CEL& d_cel, const string filename, const char label) { InputVertices v; InputEdges e; InputFaces f; read_dcel_data(v,e,f, filename); d_cel.build_d_cel(v,e,f,label); } void build_combined_dcel(D_CEL& d_cel, const string filename1, const string filename2, const char label1, const char label2) { InputVertices v1,v2; InputEdges e1,e2; InputFaces f1,f2; read_dcel_data(v1,e1,f1, filename1); read_dcel_data(v2,e2,f2, filename2); d_cel.build_d_cel(v1,e1,f1,label1, v2,e2,f2,label2); } void display_input_dcels(D_CEL& d_cel1, D_CEL& d_cel2) { OverlayWindow owin1, owin2; owin1.init(); owin2.init(); owin1.display(0,0); owin2.display(DEFAULT_WIDTH,0); owin1.draw_D_CEL(d_cel1,10,0); owin2.draw_D_CEL(d_cel2,10,0); while (owin1.get_window().get_mouse() == NO_BUTTON && owin2.get_window().get_mouse() == NO_BUTTON); owin1.close(); owin2.close(); } void display_overlay_dcel(D_CEL& dcel) { OverlayWindow owin; owin.init(); owin.get_window().set_show_coordinates(true); owin.display(leda_window::center, leda_window::center); owin.draw_D_CEL(dcel,10,0); owin.get_window().read_mouse(); owin.wait(); owin.close(); } void time_overlay(D_CEL& dcel) { float before, after; used_time(before); dcel.overlay(); used_time(after); cout << "Time for constructing DCEL from 2 sets of subdivision data: "; cout << setprecision(4) << after-before << " seconds." << endl; } void test_dcel(const string filename1, const string filename2) { D_CEL d_cel; build_dcel(d_cel, filename1, 'A'); D_CEL d_cel2; build_dcel(d_cel2, filename2, 'B'); display_input_dcels(d_cel, d_cel2); D_CEL overlay_dcel; build_combined_dcel(overlay_dcel, filename1, filename2, 'A', 'B'); time_overlay(overlay_dcel); display_overlay_dcel(overlay_dcel); } void test(char* map1_filename, char* map2_filename) { InputVertices v; InputEdges e; InputFaces f; //read_dcel_data_from_mouse(v,e,f); write_dcel_data(v,e,f,"c:\\lars\\code\\diverse\\sub_ex3b.txt"); return; // test 1 test_dcel(map1_filename, map2_filename); }