diff --git a/src/Airports/GenAirports/build.cxx b/src/Airports/GenAirports/build.cxx index 84f66fc4..e5f36509 100644 --- a/src/Airports/GenAirports/build.cxx +++ b/src/Airports/GenAirports/build.cxx @@ -68,6 +68,7 @@ static FGPolygon rwy_section_tex_coords( const FGPolygon& in_poly, const FGTexParams& tp ) { + int i, j; FGPolygon result; result.erase(); // double length = rwy.length * FEET_TO_METER; @@ -84,8 +85,8 @@ static FGPolygon rwy_section_tex_coords( const FGPolygon& in_poly, Point3D p, t; double x, y, tx, ty; - for ( int i = 0; i < in_poly.contours(); ++i ) { - for ( int j = 0; j < in_poly.contour_size( i ); ++j ) { + for ( i = 0; i < in_poly.contours(); ++i ) { + for ( j = 0; j < in_poly.contour_size( i ); ++j ) { p = in_poly.get_pt( i, j ); cout << "point = " << p << endl; @@ -190,14 +191,15 @@ void add_intermediate_nodes( int contour, const Point3D& start, static FGPolygon add_nodes_to_poly( const FGPolygon& poly, const FGTriNodes& tmp_nodes ) { + int i, j; FGPolygon result; Point3D p0, p1; // cout << "add_nodes_to_poly" << endl; - for ( int i = 0; i < poly.contours(); ++i ) { + for ( i = 0; i < poly.contours(); ++i ) { // cout << "contour = " << i << endl; - for ( int j = 0; j < poly.contour_size(i) - 1; ++j ) { + for ( j = 0; j < poly.contour_size(i) - 1; ++j ) { p0 = poly.get_pt( i, j ); p1 = poly.get_pt( i, j + 1 ); @@ -236,12 +238,13 @@ static FGPolygon add_nodes_to_poly( const FGPolygon& poly, static FGPolygon split_long_edges( const FGPolygon &poly, double max_len ) { FGPolygon result; Point3D p0, p1; + int i, j, k; cout << "split_long_edges()" << endl; - for ( int i = 0; i < poly.contours(); ++i ) { + for ( i = 0; i < poly.contours(); ++i ) { // cout << "contour = " << i << endl; - for ( int j = 0; j < poly.contour_size(i) - 1; ++j ) { + for ( j = 0; j < poly.contour_size(i) - 1; ++j ) { p0 = poly.get_pt( i, j ); p1 = poly.get_pt( i, j + 1 ); @@ -258,7 +261,7 @@ static FGPolygon split_long_edges( const FGPolygon &poly, double max_len ) { double dx = (p1.x() - p0.x()) / segments; double dy = (p1.y() - p0.y()) / segments; - for ( int k = 0; k < segments; ++k ) { + for ( k = 0; k < segments; ++k ) { Point3D tmp( p0.x() + dx * k, p0.y() + dy * k, 0.0 ); cout << tmp << endl; result.add_node( i, tmp ); @@ -286,7 +289,7 @@ static FGPolygon split_long_edges( const FGPolygon &poly, double max_len ) { double dx = (p1.x() - p0.x()) / segments; double dy = (p1.y() - p0.y()) / segments; - for ( int k = 0; k < segments; ++k ) { + for ( k = 0; k < segments; ++k ) { Point3D tmp( p0.x() + dx * k, p0.y() + dy * k, 0.0 ); cout << tmp << endl; result.add_node( i, tmp ); @@ -308,7 +311,7 @@ static FGPolygon split_long_edges( const FGPolygon &poly, double max_len ) { point_list calc_elevations( const string& root, const point_list& geod_nodes ) { bool done = false; point_list result = geod_nodes; - int i; + int i, j; FGArray array; // set all elevations to -9999 @@ -351,7 +354,7 @@ point_list calc_elevations( const string& root, const point_list& geod_nodes ) { // this dem file double elev; done = true; - for ( int j = 0; j < (int)result.size(); ++j ) { + for ( j = 0; j < (int)result.size(); ++j ) { if ( result[j].z() < -9000 ) { done = false; cout << "interpolating for " << result[j] << endl; @@ -391,6 +394,8 @@ static void gen_simple_rwy( const FGRunway& rwy_info, const string& material, texparams_list *texparams, FGPolygon *accum ) { + int j, k; + FGPolygon runway = gen_runway_w_mid( rwy_info ); // runway half "a" @@ -411,12 +416,12 @@ static void gen_simple_rwy( const FGRunway& rwy_info, const string& material, Point3D p; cout << "raw runway pts (a half)" << endl; - for ( int j = 0; j < runway_a.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_a.contour_size( 0 ); ++j ) { p = runway_a.get_pt(0, j); cout << " point = " << p << endl; } cout << "raw runway pts (b half)" << endl; - for ( int j = 0; j < runway_b.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_b.contour_size( 0 ); ++j ) { p = runway_b.get_pt(0, j); cout << " point = " << p << endl; } @@ -471,8 +476,8 @@ static void gen_simple_rwy( const FGRunway& rwy_info, const string& material, // print runway points cout << "clipped runway pts (a)" << endl; - for ( int j = 0; j < clipped_a.contours(); ++j ) { - for ( int k = 0; k < clipped_a.contour_size( j ); ++k ) { + for ( j = 0; j < clipped_a.contours(); ++j ) { + for ( k = 0; k < clipped_a.contour_size( j ); ++k ) { p = clipped_a.get_pt(j, k); cout << " point = " << p << endl; } @@ -480,8 +485,8 @@ static void gen_simple_rwy( const FGRunway& rwy_info, const string& material, // print runway points cout << "clipped runway pts (b)" << endl; - for ( int j = 0; j < clipped_b.contours(); ++j ) { - for ( int k = 0; k < clipped_b.contour_size( j ); ++k ) { + for ( j = 0; j < clipped_b.contours(); ++j ) { + for ( k = 0; k < clipped_b.contour_size( j ); ++k ) { p = clipped_b.get_pt(j, k); cout << " point = " << p << endl; } @@ -502,6 +507,8 @@ static void gen_runway_section( const FGRunway& rwy_info, texparams_list *texparams, FGPolygon *accum ) { + int j, k; + Point3D a0 = runway.get_pt(0, 1); Point3D a1 = runway.get_pt(0, 2); Point3D a2 = runway.get_pt(0, 0); @@ -587,8 +594,8 @@ static void gen_runway_section( const FGRunway& rwy_info, // print runway points cout << "pre clipped runway pts " << prefix << material << endl; - for ( int j = 0; j < section.contours(); ++j ) { - for ( int k = 0; k < section.contour_size( j ); ++k ) { + for ( j = 0; j < section.contours(); ++j ) { + for ( k = 0; k < section.contour_size( j ); ++k ) { Point3D p = section.get_pt(j, k); cout << " point = " << p << endl; } @@ -625,8 +632,8 @@ static void gen_runway_section( const FGRunway& rwy_info, // print runway points cout << "clipped runway pts " << prefix + material << endl; - for ( int j = 0; j < clipped.contours(); ++j ) { - for ( int k = 0; k < clipped.contour_size( j ); ++k ) { + for ( j = 0; j < clipped.contours(); ++j ) { + for ( k = 0; k < clipped.contour_size( j ); ++k ) { Point3D p = clipped.get_pt(j, k); cout << " point = " << p << endl; } @@ -705,6 +712,8 @@ static void gen_precision_rwy( const FGRunway& rwy_info, // Generate the basic runway outlines // + int i, j; + FGPolygon runway = gen_runway_w_mid( rwy_info ); // runway half "a" @@ -726,12 +735,12 @@ static void gen_precision_rwy( const FGRunway& rwy_info, Point3D p; cout << "raw runway pts (a half)" << endl; - for ( int j = 0; j < runway_a.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_a.contour_size( 0 ); ++j ) { p = runway_a.get_pt(0, j); cout << " point = " << p << endl; } cout << "raw runway pts (b half)" << endl; - for ( int j = 0; j < runway_b.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_b.contour_size( 0 ); ++j ) { p = runway_b.get_pt(0, j); cout << " point = " << p << endl; } @@ -779,7 +788,7 @@ static void gen_precision_rwy( const FGRunway& rwy_info, int len = rwy_info.rwy_no.length(); string letter = ""; string rev_letter = ""; - for ( int i = 0; i < len; ++i ) { + for ( i = 0; i < len; ++i ) { string tmp = rwy_info.rwy_no.substr(i, 1); if ( tmp == "L" ) { letter = "L"; @@ -823,7 +832,7 @@ static void gen_precision_rwy( const FGRunway& rwy_info, len = rwy_info.rwy_no.length(); string snum = rwy_info.rwy_no; - for ( int i = 0; i < len; ++i ) { + for ( i = 0; i < len; ++i ) { string tmp = rwy_info.rwy_no.substr(i, 1); if ( tmp == "L" || tmp == "R" || tmp == "C" || tmp == " " ) { snum = rwy_info.rwy_no.substr(0, i); @@ -1015,6 +1024,7 @@ static void gen_non_precision_rwy( const FGRunway& rwy_info, texparams_list *texparams, FGPolygon *accum ) { + int i, j; // // Generate the basic runway outlines @@ -1040,12 +1050,12 @@ static void gen_non_precision_rwy( const FGRunway& rwy_info, Point3D p; cout << "raw runway pts (a half)" << endl; - for ( int j = 0; j < runway_a.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_a.contour_size( 0 ); ++j ) { p = runway_a.get_pt(0, j); cout << " point = " << p << endl; } cout << "raw runway pts (b half)" << endl; - for ( int j = 0; j < runway_b.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_b.contour_size( 0 ); ++j ) { p = runway_b.get_pt(0, j); cout << " point = " << p << endl; } @@ -1093,7 +1103,7 @@ static void gen_non_precision_rwy( const FGRunway& rwy_info, int len = rwy_info.rwy_no.length(); string letter = ""; string rev_letter = ""; - for ( int i = 0; i < len; ++i ) { + for ( i = 0; i < len; ++i ) { string tmp = rwy_info.rwy_no.substr(i, 1); if ( tmp == "L" ) { letter = "L"; @@ -1137,7 +1147,7 @@ static void gen_non_precision_rwy( const FGRunway& rwy_info, len = rwy_info.rwy_no.length(); string snum = rwy_info.rwy_no; - for ( int i = 0; i < len; ++i ) { + for ( i = 0; i < len; ++i ) { string tmp = rwy_info.rwy_no.substr(i, 1); if ( tmp == "L" || tmp == "R" || tmp == "C" || tmp == " " ) { snum = rwy_info.rwy_no.substr(0, i); @@ -1255,6 +1265,7 @@ static void gen_visual_rwy( const FGRunway& rwy_info, texparams_list *texparams, FGPolygon *accum ) { + int i, j; // // Generate the basic runway outlines @@ -1280,12 +1291,12 @@ static void gen_visual_rwy( const FGRunway& rwy_info, Point3D p; cout << "raw runway pts (a half)" << endl; - for ( int j = 0; j < runway_a.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_a.contour_size( 0 ); ++j ) { p = runway_a.get_pt(0, j); cout << " point = " << p << endl; } cout << "raw runway pts (b half)" << endl; - for ( int j = 0; j < runway_b.contour_size( 0 ); ++j ) { + for ( j = 0; j < runway_b.contour_size( 0 ); ++j ) { p = runway_b.get_pt(0, j); cout << " point = " << p << endl; } @@ -1315,7 +1326,7 @@ static void gen_visual_rwy( const FGRunway& rwy_info, int len = rwy_info.rwy_no.length(); string letter = ""; string rev_letter = ""; - for ( int i = 0; i < len; ++i ) { + for ( i = 0; i < len; ++i ) { string tmp = rwy_info.rwy_no.substr(i, 1); if ( tmp == "L" ) { letter = "L"; @@ -1359,7 +1370,7 @@ static void gen_visual_rwy( const FGRunway& rwy_info, len = rwy_info.rwy_no.length(); string snum = rwy_info.rwy_no; - for ( int i = 0; i < len; ++i ) { + for ( i = 0; i < len; ++i ) { string tmp = rwy_info.rwy_no.substr(i, 1); if ( tmp == "L" || tmp == "R" || tmp == "C" || tmp == " " ) { snum = rwy_info.rwy_no.substr(0, i); @@ -1481,6 +1492,8 @@ void build_runway( const FGRunway& rwy_info, texparams_list *texparams, FGPolygon *accum, point_list *apt_pts ) { + int j; + string surface_flag = rwy_info.surface_flags.substr(1, 1); cout << "surface flag = " << surface_flag << endl; @@ -1537,7 +1550,7 @@ void build_runway( const FGRunway& rwy_info, FGPolygon base = gen_runway_area( rwy_info, 1.05, 1.5 ); // add base to apt_pts (for convex hull of airport area) - for ( int j = 0; j < base.contour_size( 0 ); ++j ) { + for ( j = 0; j < base.contour_size( 0 ); ++j ) { Point3D p = base.get_pt(0, j); // cout << " point = " << p << endl; apt_pts->push_back( p ); @@ -1549,6 +1562,8 @@ void build_runway( const FGRunway& rwy_info, void build_airport( string airport_raw, string_list& runways_raw, const string& root ) { + int i, j, k; + superpoly_list rwy_polys; texparams_list texparams; @@ -1607,7 +1622,7 @@ void build_airport( string airport_raw, string_list& runways_raw, runways.clear(); string rwy_str; - for (int i = 0; i < (int)runways_raw.size(); ++i ) { + for ( i = 0; i < (int)runways_raw.size(); ++i ) { rwy_str = runways_raw[i]; FGRunway rwy; @@ -1654,7 +1669,7 @@ void build_airport( string airport_raw, string_list& runways_raw, // First pass: generate the precision runways since these have // precidence - for ( int i = 0; i < (int)runways.size(); ++i ) { + for ( i = 0; i < (int)runways.size(); ++i ) { string type_flag = runways[i].surface_flags.substr(2, 1); if ( type_flag == "P" ) { build_runway( runways[i], @@ -1663,7 +1678,7 @@ void build_airport( string airport_raw, string_list& runways_raw, } // 2nd pass: generate the non-precision and visual runways - for ( int i = 0; i < (int)runways.size(); ++i ) { + for ( i = 0; i < (int)runways.size(); ++i ) { string type_flag = runways[i].surface_flags.substr(2, 1); if ( type_flag == "R" || type_flag == "V" ) { build_runway( runways[i], @@ -1672,7 +1687,7 @@ void build_airport( string airport_raw, string_list& runways_raw, } // Last pass: generate all remaining runways not covered in the first pass - for ( int i = 0; i < (int)runways.size(); ++i ) { + for ( i = 0; i < (int)runways.size(); ++i ) { string type_flag = runways[i].surface_flags.substr(2, 1); if ( type_flag != "P" && type_flag != "R" && type_flag != "V" ) { build_runway( runways[i], @@ -1696,16 +1711,16 @@ void build_airport( string airport_raw, string_list& runways_raw, FGTriNodes tmp_nodes; // build temporary node list - for ( int k = 0; k < (int)rwy_polys.size(); ++k ) { + for ( k = 0; k < (int)rwy_polys.size(); ++k ) { FGPolygon poly = rwy_polys[k].get_poly(); - for ( int i = 0; i < poly.contours(); ++i ) { - for ( int j = 0; j < poly.contour_size( i ); ++j ) { + for ( i = 0; i < poly.contours(); ++i ) { + for ( j = 0; j < poly.contour_size( i ); ++j ) { tmp_nodes.unique_add( poly.get_pt(i, j) ); } } } - for ( int i = 0; i < base_poly.contours(); ++i ) { - for ( int j = 0; j < base_poly.contour_size( i ); ++j ) { + for ( i = 0; i < base_poly.contours(); ++i ) { + for ( j = 0; j < base_poly.contour_size( i ); ++j ) { tmp_nodes.unique_add( base_poly.get_pt(i, j) ); } } @@ -1714,17 +1729,17 @@ void build_airport( string airport_raw, string_list& runways_raw, // dump info for debugging purposes point_list ttt = tmp_nodes.get_node_list(); FILE *fp = fopen( "tmp_nodes", "w" ); - for ( int i = 0; i < (int)ttt.size(); ++i ) { + for ( i = 0; i < (int)ttt.size(); ++i ) { fprintf(fp, "%.8f %.8f\n", ttt[i].x(), ttt[i].y()); } fclose(fp); - for ( int i = 0; i < base_poly.contours(); ++i ) { + for ( i = 0; i < base_poly.contours(); ++i ) { char name[256]; sprintf(name, "l%d", i ); FILE *fp = fopen( name, "w" ); - for ( int j = 0; j < base_poly.contour_size( i ) - 1; ++j ) { + for ( j = 0; j < base_poly.contour_size( i ) - 1; ++j ) { Point3D p0 = base_poly.get_pt(i, j); Point3D p1 = base_poly.get_pt(i, j + 1); fprintf(fp, "%.8f %.8f\n", p0.x(), p0.y()); @@ -1738,13 +1753,13 @@ void build_airport( string airport_raw, string_list& runways_raw, } #endif - for ( int k = 0; k < (int)rwy_polys.size(); ++k ) { + for ( k = 0; k < (int)rwy_polys.size(); ++k ) { cout << "add nodes/remove dups section = " << k << " " << rwy_polys[k].get_material() << endl; FGPolygon poly = rwy_polys[k].get_poly(); cout << "total size before = " << poly.total_size() << endl; - for ( int i = 0; i < poly.contours(); ++i ) { - for ( int j = 0; j < poly.contour_size(i); ++j ) { + for ( i = 0; i < poly.contours(); ++i ) { + for ( j = 0; j < poly.contour_size(i); ++j ) { Point3D tmp = poly.get_pt(i, j); printf(" %.7f %.7f %.7f\n", tmp.x(), tmp.y(), tmp.z() ); } @@ -1754,8 +1769,8 @@ void build_airport( string airport_raw, string_list& runways_raw, cout << "total size after remove_dups() = " << poly.total_size() << endl; - for ( int i = 0; i < poly.contours(); ++i ) { - for ( int j = 0; j < poly.contour_size(i); ++j ) { + for ( i = 0; i < poly.contours(); ++i ) { + for ( j = 0; j < poly.contour_size(i); ++j ) { Point3D tmp = poly.get_pt(i, j); printf(" %.7f %.7f %.7f\n", tmp.x(), tmp.y(), tmp.z() ); } @@ -1765,8 +1780,8 @@ void build_airport( string airport_raw, string_list& runways_raw, cout << "total size after reduce_degeneracy() = " << poly.total_size() << endl; - for ( int i = 0; i < poly.contours(); ++i ) { - for ( int j = 0; j < poly.contour_size(i); ++j ) { + for ( i = 0; i < poly.contours(); ++i ) { + for ( j = 0; j < poly.contour_size(i); ++j ) { Point3D tmp = poly.get_pt(i, j); printf(" %.7f %.7f %.7f\n", tmp.x(), tmp.y(), tmp.z() ); } @@ -1798,7 +1813,7 @@ void build_airport( string airport_raw, string_list& runways_raw, // tesselate the polygons and prepair them for final output - for ( int i = 0; i < (int)rwy_polys.size(); ++i ) { + for ( i = 0; i < (int)rwy_polys.size(); ++i ) { cout << "Tesselating section = " << i << endl; FGPolygon poly = rwy_polys[i].get_poly(); @@ -1819,12 +1834,12 @@ void build_airport( string airport_raw, string_list& runways_raw, #if 0 // dump more debugging output - for ( int i = 0; i < base_strips.contours(); ++i ) { + for ( i = 0; i < base_strips.contours(); ++i ) { char name[256]; sprintf(name, "s%d", i ); FILE *fp = fopen( name, "w" ); - for ( int j = 0; j < base_strips.contour_size( i ) - 1; ++j ) { + for ( j = 0; j < base_strips.contour_size( i ) - 1; ++j ) { Point3D p0 = base_strips.get_pt(i, j); Point3D p1 = base_strips.get_pt(i, j + 1); fprintf(fp, "%.8f %.8f\n", p0.x(), p0.y()); @@ -1863,8 +1878,7 @@ void build_airport( string airport_raw, string_list& runways_raw, int_list tri_v; int_list tri_tc; - // for ( int k = 0; k < (int)rwy_tris.size(); ++k ) { - for ( int k = 0; k < (int)rwy_polys.size(); ++k ) { + for ( k = 0; k < (int)rwy_polys.size(); ++k ) { cout << "tri " << k << endl; // FGPolygon tri_poly = rwy_tris[k]; FGPolygon tri_poly = rwy_polys[k].get_tris(); @@ -1873,10 +1887,10 @@ void build_airport( string airport_raw, string_list& runways_raw, cout << "material = " << material << endl; cout << "poly size = " << tri_poly.contours() << endl; cout << "texs size = " << tri_txs.contours() << endl; - for ( int i = 0; i < tri_poly.contours(); ++i ) { + for ( i = 0; i < tri_poly.contours(); ++i ) { tri_v.clear(); tri_tc.clear(); - for ( int j = 0; j < tri_poly.contour_size(i); ++j ) { + for ( j = 0; j < tri_poly.contour_size(i); ++j ) { p = tri_poly.get_pt( i, j ); index = nodes.unique_add( p ); tri_v.push_back( index ); @@ -1893,10 +1907,10 @@ void build_airport( string airport_raw, string_list& runways_raw, // add base points point_list base_txs; int_list base_tc; - for ( int i = 0; i < base_tris.contours(); ++i ) { + for ( i = 0; i < base_tris.contours(); ++i ) { tri_v.clear(); tri_tc.clear(); - for ( int j = 0; j < base_tris.contour_size(i); ++j ) { + for ( j = 0; j < base_tris.contour_size(i); ++j ) { p = base_tris.get_pt( i, j ); index = nodes.unique_add( p ); tri_v.push_back( index ); @@ -1908,7 +1922,7 @@ void build_airport( string airport_raw, string_list& runways_raw, base_txs = calc_tex_coords( b, nodes.get_node_list(), tri_v ); base_tc.clear(); - for ( int j = 0; j < (int)base_txs.size(); ++j ) { + for ( j = 0; j < (int)base_txs.size(); ++j ) { tc = base_txs[j]; // cout << "base_tc = " << tc << endl; index = texcoords.simple_add( tc ); @@ -1923,7 +1937,7 @@ void build_airport( string airport_raw, string_list& runways_raw, // calculate wgs84 mapping of nodes point_list wgs84_nodes; - for ( int i = 0; i < (int)geod_nodes.size(); ++i ) { + for ( i = 0; i < (int)geod_nodes.size(); ++i ) { p.setx( geod_nodes[i].x() * DEG_TO_RAD ); p.sety( geod_nodes[i].y() * DEG_TO_RAD ); p.setz( geod_nodes[i].z() ); @@ -1945,7 +1959,7 @@ void build_airport( string airport_raw, string_list& runways_raw, sgdNormalizeVec3( vn ); point_list normals; normals.clear(); - for ( int i = 0; i < (int)nodes.size(); ++i ) { + for ( i = 0; i < (int)nodes.size(); ++i ) { normals.push_back( Point3D( vn[0], vn[1], vn[2] ) ); } cout << "found normal for this airport = " << tmp << endl; diff --git a/src/Airports/GenAirports/main.cxx b/src/Airports/GenAirports/main.cxx index 891ae6e3..65a4d0a0 100644 --- a/src/Airports/GenAirports/main.cxx +++ b/src/Airports/GenAirports/main.cxx @@ -47,6 +47,9 @@ #include "build.hxx" #include "convex_hull.hxx" +#ifdef _MSC_VER +# include +#endif int nudge = 10; @@ -103,8 +106,12 @@ int main( int argc, char **argv ) { } // make work directory +#ifdef _MSC_VER + fg_mkdir( work_dir.c_str() ); +#else string command = "mkdir -p " + work_dir; system( command.c_str() ); +#endif // initialize persistant polygon counter string counter_file = work_dir + "/poly_counter"; diff --git a/src/Airports/GenAirports/output.cxx b/src/Airports/GenAirports/output.cxx index 68588a91..fac11962 100644 --- a/src/Airports/GenAirports/output.cxx +++ b/src/Airports/GenAirports/output.cxx @@ -45,6 +45,13 @@ #include "output.hxx" +#ifdef _MSC_VER +# include +#endif + +FG_USING_STD( cout ); +FG_USING_STD( endl ); + void write_polygon( const FGPolygon& poly, const string& base ) { for ( int i = 0; i < poly.contours(); ++i ) { @@ -121,10 +128,15 @@ void write_obj( const string& base, const FGBucket& b, const string& name, const string_list& fan_materials ) { Point3D p; + int i, j; string dir = base + "/" + b.gen_base_path(); string command = "mkdir -p " + dir; +#ifdef _MSC_VER + fg_mkdir( dir.c_str() ); +#else system(command.c_str()); +#endif // string file = dir + "/" + b.gen_index_str(); string file = dir + "/" + name; @@ -164,7 +176,7 @@ void write_obj( const string& base, const FGBucket& b, const string& name, // dump vertex list fprintf(fp, "# vertex list\n"); - for ( int i = 0; i < (int)wgs84_nodes.size(); ++i ) { + for ( i = 0; i < (int)wgs84_nodes.size(); ++i ) { p = wgs84_nodes[i] - gbs_center; fprintf(fp, "v %.5f %.5f %.5f\n", p.x(), p.y(), p.z() ); @@ -172,7 +184,7 @@ void write_obj( const string& base, const FGBucket& b, const string& name, fprintf(fp, "\n"); fprintf(fp, "# vertex normal list\n"); - for ( int i = 0; i < (int)normals.size(); ++i ) { + for ( i = 0; i < (int)normals.size(); ++i ) { p = normals[i]; fprintf(fp, "vn %.5f %.5f %.5f\n", p.x(), p.y(), p.z() ); } @@ -180,7 +192,7 @@ void write_obj( const string& base, const FGBucket& b, const string& name, // dump texture coordinates fprintf(fp, "# texture coordinate list\n"); - for ( int i = 0; i < (int)texcoords.size(); ++i ) { + for ( i = 0; i < (int)texcoords.size(); ++i ) { p = texcoords[i]; fprintf(fp, "vt %.5f %.5f\n", p.x(), p.y() ); } @@ -209,8 +221,8 @@ void write_obj( const string& base, const FGBucket& b, const string& name, group_nodes.clear(); Point3D bs_center; double bs_radius = 0; - for ( int i = start; i < end; ++i ) { - for ( int j = 0; j < (int)tris_v[i].size(); ++j ) { + for ( i = start; i < end; ++i ) { + for ( j = 0; j < (int)tris_v[i].size(); ++j ) { group_nodes.push_back( wgs84_nodes[ tris_v[i][j] ] ); bs_center = calc_center( group_nodes ); bs_radius = calc_bounding_radius( bs_center, group_nodes ); @@ -224,9 +236,9 @@ void write_obj( const string& base, const FGBucket& b, const string& name, bs_center.x(), bs_center.y(), bs_center.z(), bs_radius); // write groups - for ( int i = start; i < end; ++i ) { + for ( i = start; i < end; ++i ) { fprintf(fp, "f"); - for ( int j = 0; j < (int)tris_v[i].size(); ++j ) { + for ( j = 0; j < (int)tris_v[i].size(); ++j ) { fprintf(fp, " %d/%d", tris_v[i][j], tris_tc[i][j] ); } fprintf(fp, "\n"); @@ -260,8 +272,8 @@ void write_obj( const string& base, const FGBucket& b, const string& name, group_nodes.clear(); Point3D bs_center; double bs_radius = 0; - for ( int i = start; i < end; ++i ) { - for ( int j = 0; j < (int)strips_v[i].size(); ++j ) { + for ( i = start; i < end; ++i ) { + for ( j = 0; j < (int)strips_v[i].size(); ++j ) { group_nodes.push_back( wgs84_nodes[ strips_v[i][j] ] ); bs_center = calc_center( group_nodes ); bs_radius = calc_bounding_radius( bs_center, group_nodes ); @@ -275,9 +287,9 @@ void write_obj( const string& base, const FGBucket& b, const string& name, bs_center.x(), bs_center.y(), bs_center.z(), bs_radius); // write groups - for ( int i = start; i < end; ++i ) { + for ( i = start; i < end; ++i ) { fprintf(fp, "ts"); - for ( int j = 0; j < (int)strips_v[i].size(); ++j ) { + for ( j = 0; j < (int)strips_v[i].size(); ++j ) { fprintf(fp, " %d/%d", strips_v[i][j], strips_tc[i][j] ); } fprintf(fp, "\n"); @@ -299,8 +311,12 @@ void write_obj( const string& base, const FGBucket& b, const string& name, // update index void write_index(const string& base, const FGBucket& b, const string& name) { string dir = base + "/" + b.gen_base_path(); +#ifdef _MSC_VER + fg_mkdir( dir.c_str() ); +#else string command = "mkdir -p " + dir; system(command.c_str()); +#endif string file = dir + "/" + b.gen_index_str() + ".ind"; // string file = dir + "/" + name; @@ -323,8 +339,12 @@ void write_boundary( const string& base, const FGBucket& b, Point3D p; string dir = base + "/" + b.gen_base_path(); +#ifdef _MSC_VER + fg_mkdir( dir.c_str() ); +#else string command = "mkdir -p " + dir; system(command.c_str()); +#endif string file = dir + "/" + b.gen_index_str(); diff --git a/src/Airports/GenAirports/runway.cxx b/src/Airports/GenAirports/runway.cxx index baef13bc..f10c95b4 100644 --- a/src/Airports/GenAirports/runway.cxx +++ b/src/Airports/GenAirports/runway.cxx @@ -67,19 +67,20 @@ FGPolygon gen_area(Point3D origin, double angle, const FGPolygon& cart_list) { FGPolygon rad_list; FGPolygon result_list; Point3D p; + int i; // convert to polar coordinates rad_list = batch_cart_to_polar_2d(cart_list); // display points // cout << "converted to polar" << endl; - // for ( int i = 0; i < rad_list.contour_size( 0 ); ++i ) { + // for ( i = 0; i < rad_list.contour_size( 0 ); ++i ) { // cout << " " << rad_list.get_pt(0, i) << endl; // } // rotate by specified angle // cout << "Rotating points by " << angle << endl; - for ( int i = 0; i < rad_list.contour_size( 0 ); ++i) { + for ( i = 0; i < rad_list.contour_size( 0 ); ++i) { p = rad_list.get_pt( 0, i ); double theta = p.y() + angle; while ( theta < FG_2PI ) { @@ -92,7 +93,7 @@ FGPolygon gen_area(Point3D origin, double angle, const FGPolygon& cart_list) { // find actual lon,lat of coordinates // cout << "convert to lon, lat relative to " << origin << endl; - for ( int i = 0; i < (int)rad_list.contour_size( 0 ); ++i ) { + for ( i = 0; i < (int)rad_list.contour_size( 0 ); ++i ) { // p = calc_lon_lat(origin_rad, rad_list.get_pt(0, i) ); double lat2, lon2, az2; @@ -114,8 +115,8 @@ FGPolygon gen_area(Point3D origin, double angle, const FGPolygon& cart_list) { // generate an area for a runway FGPolygon gen_runway_area( const FGRunway& runway, - double len_scale = 1.0, - double width_scale = 1.0 ) { + double len_scale, + double width_scale ) { FGPolygon result_list; FGPolygon tmp_list; @@ -158,8 +159,8 @@ FGPolygon gen_runway_area( const FGRunway& runway, // generate an area for a runway and include midpoints FGPolygon gen_runway_w_mid( const FGRunway& runway, - double len_scale = 1.0, - double width_scale = 1.0 ) { + double len_scale, + double width_scale ) { FGPolygon result_list; FGPolygon tmp_list; diff --git a/src/BuildTiles/Clipper/clipper.cxx b/src/BuildTiles/Clipper/clipper.cxx index 009fe698..adad102d 100644 --- a/src/BuildTiles/Clipper/clipper.cxx +++ b/src/BuildTiles/Clipper/clipper.cxx @@ -162,6 +162,8 @@ void FGClipper::move_slivers( FGPolygon& in, FGPolygon& out ) { // cout << "Begin move slivers" << endl; + int i; + out.erase(); double angle_cutoff = 10.0 * DEG_TO_RAD; @@ -174,7 +176,7 @@ void FGClipper::move_slivers( FGPolygon& in, FGPolygon& out ) { // process contours in reverse order so deleting a contour doesn't // foul up our sequence - for ( int i = in.contours() - 1; i >= 0; --i ) { + for ( i = in.contours() - 1; i >= 0; --i ) { // cout << "contour " << i << endl; min_angle = in.minangle_contour( i ); @@ -220,8 +222,9 @@ void FGClipper::merge_slivers( FGPolyList& clipped, FGPolygon& slivers ) { point_list contour; int original_contours, result_contours; bool done; + int area, i, j, k; - for ( int i = 0; i < slivers.contours(); ++i ) { + for ( i = 0; i < slivers.contours(); ++i ) { // cout << "Merging sliver = " << i << endl; // make the sliver polygon @@ -230,7 +233,7 @@ void FGClipper::merge_slivers( FGPolyList& clipped, FGPolygon& slivers ) { sliver.add_contour( contour, 0 ); done = false; - for ( int area = 0; area < FG_MAX_AREA_TYPES && !done; ++area ) { + for ( area = 0; area < FG_MAX_AREA_TYPES && !done; ++area ) { if ( area == HoleArea ) { // don't merge a non-hole sliver in with a hole @@ -239,7 +242,7 @@ void FGClipper::merge_slivers( FGPolyList& clipped, FGPolygon& slivers ) { // cout << " testing area = " << area << " with " // << clipped.polys[area].size() << " polys" << endl; - for ( int j = 0; + for ( j = 0; j < (int)clipped.polys[area].size() && !done; ++j ) { @@ -265,7 +268,7 @@ void FGClipper::merge_slivers( FGPolyList& clipped, FGPolygon& slivers ) { cout << " original = " << original_contours << " result = " << result_contours << endl; cout << " sliver = " << endl; */ - for ( int k = 0; k < (int)contour.size(); ++k ) { + for ( k = 0; k < (int)contour.size(); ++k ) { // cout << " " << contour[k].x() << ", " // << contour[k].y() << endl; } @@ -284,6 +287,8 @@ void FGClipper::merge_slivers( FGPolyList& clipped, FGPolygon& slivers ) { bool FGClipper::clip_all(const point2d& min, const point2d& max) { FGPolygon accum, tmp; FGPolygon slivers, remains; + int i, j; + // gpcpoly_iterator current, last; FG_LOG( FG_CLIPPER, FG_INFO, "Running master clipper" ); @@ -306,7 +311,7 @@ bool FGClipper::clip_all(const point2d& min, const point2d& max) { // clip it. FGPolygon land_mask; land_mask.erase(); - for ( int i = 0; i < (int)polys_in.polys[DefaultArea].size(); ++i ) { + for ( i = 0; i < (int)polys_in.polys[DefaultArea].size(); ++i ) { land_mask = polygon_union( land_mask, polys_in.polys[DefaultArea][i] ); } @@ -314,7 +319,7 @@ bool FGClipper::clip_all(const point2d& min, const point2d& max) { // set up island mask, for cutting holes in lakes FGPolygon island_mask; island_mask.erase(); - for ( int i = 0; i < (int)polys_in.polys[IslandArea].size(); ++i ) { + for ( i = 0; i < (int)polys_in.polys[IslandArea].size(); ++i ) { island_mask = polygon_union( island_mask, polys_in.polys[IslandArea][i] ); } @@ -324,20 +329,20 @@ bool FGClipper::clip_all(const point2d& min, const point2d& max) { // set up pond mask, for cutting holes in islands FGPolygon pond_mask; pond_mask.erase(); - for ( int i = 0; i < (int)polys_in.polys[PondArea].size(); ++i ) { + for ( i = 0; i < (int)polys_in.polys[PondArea].size(); ++i ) { pond_mask = polygon_union( pond_mask, polys_in.polys[PondArea][i] ); } #endif // process polygons in priority order - for ( int i = 0; i < FG_MAX_AREA_TYPES; ++i ) { + for ( i = 0; i < FG_MAX_AREA_TYPES; ++i ) { cout << "num polys of type (" << i << ") = " << polys_in.polys[i].size() << endl; // current = polys_in.polys[i].begin(); // last = polys_in.polys[i].end(); // for ( ; current != last; ++current ) { - for( int j = 0; j < (int)polys_in.polys[i].size(); ++j ) { + for( j = 0; j < (int)polys_in.polys[i].size(); ++j ) { FGPolygon current = polys_in.polys[i][j]; FG_LOG( FG_CLIPPER, FG_DEBUG, get_area_name( (AreaType)i ) << " = " << current.contours() ); @@ -393,20 +398,20 @@ bool FGClipper::clip_all(const point2d& min, const point2d& max) { /* cout << "original contours = " << tmp.num_contours << endl; - for ( int j = 0; j < tmp.num_contours; j++ ) { - for (int k = 0;k < tmp.contour[j].num_vertices;k++ ) { - cout << tmp.contour[j].vertex[k].x << "," - << tmp.contour[j].vertex[k].y << endl; - } + for ( j = 0; j < tmp.num_contours; j++ ) { + for ( k = 0;k < tmp.contour[j].num_vertices;k++ ) { + cout << tmp.contour[j].vertex[k].x << "," + << tmp.contour[j].vertex[k].y << endl; + } } cout << "clipped contours = " << result_diff->num_contours << endl; - for ( int j = 0; j < result_diff->num_contours; j++ ) { - for (int k = 0;k < result_diff->contour[j].num_vertices;k++ ) { - cout << result_diff->contour[j].vertex[k].x << "," - << result_diff->contour[j].vertex[k].y << endl; - } + for ( j = 0; j < result_diff->num_contours; j++ ) { + for ( k = 0; k < result_diff->contour[j].num_vertices; k++ ) { + cout << result_diff->contour[j].vertex[k].x << "," + << result_diff->contour[j].vertex[k].y << endl; + } } */ diff --git a/src/BuildTiles/GenOutput/genobj.cxx b/src/BuildTiles/GenOutput/genobj.cxx index 9e7ca73e..ad967c6e 100644 --- a/src/BuildTiles/GenOutput/genobj.cxx +++ b/src/BuildTiles/GenOutput/genobj.cxx @@ -318,8 +318,8 @@ int FGGenOutput::write( FGConstruct &c ) { string dir = base + "/Scenery/" + b.gen_base_path(); -#ifdef _MSCVER - fg_mkdir( dir.c_str ); +#ifdef _MSC_VER + fg_mkdir( dir.c_str() ); #else string command = "mkdir -p " + dir; system(command.c_str()); diff --git a/src/BuildTiles/Main/main.cxx b/src/BuildTiles/Main/main.cxx index 93224417..bba8f7a9 100644 --- a/src/BuildTiles/Main/main.cxx +++ b/src/BuildTiles/Main/main.cxx @@ -133,6 +133,42 @@ static int actual_load_polys( const string& dir, string base = c.get_bucket().gen_base_path(); string tile_str = c.get_bucket().gen_index_str(); string ext; + string file, f_index, full_path; + int pos; + +#ifdef _MSC_VER + long hfile; + struct _finddata_t de; + string path; + + path = dir + "/*.*"; + + if ( ( hfile = _findfirst( path.c_str(), &de ) ) == -1 ) { + cout << "cannot open directory " << dir << "\n"; + return 0; + } + + // load all matching polygon files + do { + file = de.name; + pos = file.find("."); + f_index = file.substr(0, pos); + + if ( tile_str == f_index ) { + ext = file.substr(pos + 1); + cout << file << " " << f_index << " '" << ext << "'" << endl; + full_path = dir + "/" + file; + if ( (ext == "dem") || (ext == "dem.gz") ) { + // skip + } else { + cout << "ext = '" << ext << "'" << endl; + clipper.load_polys( full_path ); + ++counter; + } + } + } while ( _findnext( hfile, &de ) == 0 ); + +#else DIR *d; struct dirent *de; @@ -143,8 +179,6 @@ static int actual_load_polys( const string& dir, } // load all matching polygon files - string file, f_index, full_path; - int pos; while ( (de = readdir(d)) != NULL ) { file = de->d_name; pos = file.find("."); @@ -165,7 +199,8 @@ static int actual_load_polys( const string& dir, } closedir(d); - +#endif + return counter; } @@ -265,6 +300,7 @@ static int actual_load_landcover ( LandCover &cover, FGConstruct & c, // clip against each other to resolve any overlaps static int load_polys( FGConstruct& c ) { FGClipper clipper; + int i; string base = c.get_bucket().gen_base_path(); string poly_path; @@ -274,7 +310,7 @@ static int load_polys( FGConstruct& c ) { clipper.init(); // load 2D polygons from all directories provided - for ( int i = 0; i < (int)load_dirs.size(); ++i ) { + for ( i = 0; i < (int)load_dirs.size(); ++i ) { poly_path = load_dirs[i] + '/' + base; cout << "poly_path = " << poly_path << endl; count += actual_load_polys( poly_path, c, clipper ); @@ -309,8 +345,9 @@ static int load_polys( FGConstruct& c ) { static int load_dem( FGConstruct& c, FGArray& array) { point_list result; string base = c.get_bucket().gen_base_path(); + int i; - for ( int i = 0; i < (int)load_dirs.size(); ++i ) { + for ( i = 0; i < (int)load_dirs.size(); ++i ) { string dem_path = load_dirs[i] + "/" + base + "/" + c.get_bucket().gen_index_str() + ".dem"; cout << "dem_path = " << dem_path << endl; @@ -491,13 +528,14 @@ static void fix_point_heights( FGConstruct& c, const FGArray& array ) { static void build_wgs_84_point_list( FGConstruct& c, const FGArray& array ) { point_list geod_nodes; point_list wgs84_nodes; + int i; cout << "generating wgs84 list" << endl; Point3D geod, radians, cart; point_list raw_nodes = c.get_tri_nodes().get_node_list(); - for ( int i = 0; i < (int)raw_nodes.size(); ++i ) { + for ( i = 0; i < (int)raw_nodes.size(); ++i ) { geod = raw_nodes[i]; // convert to radians @@ -727,8 +765,13 @@ static void do_custom_objects( const FGConstruct& c ) { in >> skipws; cout << "token = " << token << " name = " << name << endl; +#ifdef _MSC_VER + string command = "copy " + base_dir + "/" + name + ".gz " + + dest_dir; +#else string command = "cp " + base_dir + "/" + name + ".gz " + dest_dir; +#endif cout << "running " << command << endl; system( command.c_str() ); @@ -967,8 +1010,9 @@ int main(int argc, char **argv) { cout << "Load directory: " << argv[i] << endl; } -#if defined( __CYGWIN__ ) || defined( __CYGWIN32__ ) +#if defined( __CYGWIN__ ) || defined( __CYGWIN32__ ) || defined( _MSC_VER ) // the next bit crashes Cygwin for me - DCL + // MSVC does not have the function or variable type defined - BRF #else // set mem allocation limit. Reason: occasionally the triangle() // routine can blow up and allocate memory forever. We'd like diff --git a/src/BuildTiles/Match/match.cxx b/src/BuildTiles/Match/match.cxx index fcb91478..14f0c208 100644 --- a/src/BuildTiles/Match/match.cxx +++ b/src/BuildTiles/Match/match.cxx @@ -460,17 +460,17 @@ void FGMatch::write_shared( FGConstruct& c ) { FGBucket b = c.get_bucket(); string dir = base + "/Shared/" + b.gen_base_path(); + string file = dir + "/" + b.gen_index_str(); #ifdef _MSC_VER fg_mkdir( dir.c_str() ); #else string command = "mkdir -p " + dir; - string file = dir + "/" + b.gen_index_str(); + system(command.c_str()); #endif cout << "shared data will be written to " << file << endl; - system(command.c_str()); #if 0 cout << "FLAGS" << endl; diff --git a/src/Lib/Geometry/contour_tree.hxx b/src/Lib/Geometry/contour_tree.hxx index 9a101e66..b0ac252f 100644 --- a/src/Lib/Geometry/contour_tree.hxx +++ b/src/Lib/Geometry/contour_tree.hxx @@ -71,7 +71,7 @@ public: inline FGContourNode *get_kid( int n ) const { return kids[n]; } inline void add_kid( FGContourNode *kid ) { kids.push_back( kid ); } inline void remove_kid( int n ) { - cout << "kids[" << n << "] = " << kids[n] << endl; + // cout << "kids[" << n << "] = " << kids[n] << endl; delete kids[n]; kids[n] = NULL; } diff --git a/src/Lib/Geometry/poly_support.cxx b/src/Lib/Geometry/poly_support.cxx index ea699e3c..aaef3810 100644 --- a/src/Lib/Geometry/poly_support.cxx +++ b/src/Lib/Geometry/poly_support.cxx @@ -22,6 +22,7 @@ // $Id$ +#include #include #include @@ -50,7 +51,8 @@ static double slope( const Point3D& p0, const Point3D& p1 ) { if ( fabs(p0.x() - p1.x()) > FG_EPSILON ) { return (p0.y() - p1.y()) / (p0.x() - p1.x()); } else { - return 1.0e+999; // really big number + // return 1.0e+999; // really big number + return DBL_MAX; } } @@ -110,6 +112,7 @@ Point3D calc_point_inside_old( const FGPolygon& p, const int contour, int p1_index = 0; int p2_index = 0; int ln_index = 0; + int i; // 1. find a point on the specified contour, min, with smallest y @@ -121,7 +124,7 @@ Point3D calc_point_inside_old( const FGPolygon& p, const int contour, current = c.begin(); last = c.end(); - for ( int i = 0; i < p.contour_size( contour ); ++i ) { + for ( i = 0; i < p.contour_size( contour ); ++i ) { tmp = p.get_pt( contour, i ); if ( tmp.y() < min.y() ) { min = tmp; @@ -178,7 +181,7 @@ Point3D calc_point_inside_old( const FGPolygon& p, const int contour, p3.sety(100); - for ( int i = 0; i < (int)p.contours(); ++i ) { + for ( i = 0; i < (int)p.contours(); ++i ) { cout << "contour = " << i << " size = " << p.contour_size( i ) << endl; for ( int j = 0; j < (int)(p.contour_size( i ) - 1); ++j ) { // cout << " p1 = " << poly[i][j] << " p2 = " @@ -192,7 +195,7 @@ Point3D calc_point_inside_old( const FGPolygon& p, const int contour, cout << "intersection = " << result << endl; if ( ( result.y() < p3.y() ) && ( result.y() > m.y() ) && - ( base_leg != FGTriSeg(p1_index, p2_index, 0) ) ) { + !( base_leg == FGTriSeg(p1_index, p2_index, 0) ) ) { p3 = result; } } @@ -207,7 +210,7 @@ Point3D calc_point_inside_old( const FGPolygon& p, const int contour, cout << "intersection = " << result << endl; if ( ( result.y() < p3.y() ) && ( result.y() > m.y() ) && - ( base_leg != FGTriSeg(p1_index, p2_index, 0) ) ) { + !( base_leg == FGTriSeg(p1_index, p2_index, 0) ) ) { p3 = result; } } @@ -237,6 +240,7 @@ void polygon_tesselate( const FGPolygon &p, point_list &out_pts ) { struct triangulateio in, out, vorout; + int i; // make sure all elements of these structs point to "NULL" zero_triangulateio( &in ); @@ -249,7 +253,7 @@ void polygon_tesselate( const FGPolygon &p, double max_x = p.get_pt(0,0).x(); int total_pts = 0; - for ( int i = 0; i < p.contours(); ++i ) { + for ( i = 0; i < p.contours(); ++i ) { total_pts += p.contour_size( i ); } @@ -257,7 +261,7 @@ void polygon_tesselate( const FGPolygon &p, in.pointlist = (REAL *) malloc(in.numberofpoints * 2 * sizeof(REAL)); counter = 0; - for ( int i = 0; i < p.contours(); ++i ) { + for ( i = 0; i < p.contours(); ++i ) { point_list contour = p.get_contour( i ); for ( int j = 0; j < (int)contour.size(); ++j ) { in.pointlist[2*counter] = contour[j].x(); @@ -274,7 +278,7 @@ void polygon_tesselate( const FGPolygon &p, in.numberofpointattributes * sizeof(REAL)); counter = 0; - for ( int i = 0; i < p.contours(); ++i ) { + for ( i = 0; i < p.contours(); ++i ) { point_list contour = p.get_contour( i ); for ( int j = 0; j < (int)contour.size(); ++j ) { in.pointattributelist[counter] = contour[j].z(); @@ -283,7 +287,7 @@ void polygon_tesselate( const FGPolygon &p, } // in.pointmarkerlist = (int *) malloc(in.numberofpoints * sizeof(int)); - // for ( int i = 0; i < in.numberofpoints; ++i) { + // for ( i = 0; i < in.numberofpoints; ++i) { // in.pointmarkerlist[i] = 0; // } in.pointmarkerlist = NULL; @@ -295,7 +299,7 @@ void polygon_tesselate( const FGPolygon &p, start = 0; end = -1; - for ( int i = 0; i < p.contours(); ++i ) { + for ( i = 0; i < p.contours(); ++i ) { point_list contour = p.get_contour( i ); start = end + 1; end = start + contour.size() - 1; @@ -308,13 +312,13 @@ void polygon_tesselate( const FGPolygon &p, } in.segmentmarkerlist = (int *) malloc(in.numberofsegments * sizeof(int)); - for ( int i = 0; i < in.numberofsegments; ++i ) { + for ( i = 0; i < in.numberofsegments; ++i ) { in.segmentmarkerlist[i] = 0; } // hole list in.numberofholes = 1; - for ( int i = 0; i < p.contours(); ++i ) { + for ( i = 0; i < p.contours(); ++i ) { if ( p.get_hole_flag( i ) ) { ++in.numberofholes; } @@ -325,7 +329,7 @@ void polygon_tesselate( const FGPolygon &p, in.holelist[counter++] = max_x + 1.0; in.holelist[counter++] = 0.0; - for ( int i = 0; i < (int)p.contours(); ++i ) { + for ( i = 0; i < (int)p.contours(); ++i ) { if ( p.get_hole_flag( i ) ) { in.holelist[counter++] = p.get_point_inside(i).x(); in.holelist[counter++] = p.get_point_inside(i).y(); @@ -380,7 +384,7 @@ void polygon_tesselate( const FGPolygon &p, elelist.clear(); int n1, n2, n3; double attribute; - for ( int i = 0; i < out.numberoftriangles; ++i ) { + for ( i = 0; i < out.numberoftriangles; ++i ) { n1 = out.trianglelist[i * 3]; n2 = out.trianglelist[i * 3 + 1]; n3 = out.trianglelist[i * 3 + 2]; @@ -397,7 +401,7 @@ void polygon_tesselate( const FGPolygon &p, // output points out_pts.clear(); double x, y, z; - for ( int i = 0; i < out.numberofpoints; ++i ) { + for ( i = 0; i < out.numberofpoints; ++i ) { x = out.pointlist[i * 2 ]; y = out.pointlist[i * 2 + 1]; z = out.pointattributelist[i]; @@ -436,6 +440,7 @@ void polygon_tesselate( const FGPolygon &p, FGPolygon polygon_tesselate_alt( FGPolygon &p ) { FGPolygon result; result.erase(); + int i; // Bail right away if polygon is empty if ( p.contours() == 0 ) { @@ -445,7 +450,7 @@ FGPolygon polygon_tesselate_alt( FGPolygon &p ) { // 1. Robustly find a point inside each contour that is not // inside any other contour calc_points_inside( p ); - for ( int i = 0; i < p.contours(); ++i ) { + for ( i = 0; i < p.contours(); ++i ) { cout << "final point inside =" << p.get_point_inside( i ) << endl; } @@ -457,7 +462,7 @@ FGPolygon polygon_tesselate_alt( FGPolygon &p ) { // 3. Convert the tesselated output to a list of tringles. // basically a polygon with a contour for every triangle - for ( int i = 0; i < (int)trieles.size(); ++i ) { + for ( i = 0; i < (int)trieles.size(); ++i ) { FGTriEle t = trieles[i]; Point3D p1 = nodes[ t.get_n1() ]; Point3D p2 = nodes[ t.get_n2() ]; @@ -480,6 +485,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, point_list &out_pts ) { struct triangulateio in, out, vorout; + int i; // make sure all elements of these structs point to "NULL" zero_triangulateio( &in ); @@ -509,7 +515,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, } #endif - for ( int i = 0; i < hole_polys.contours(); ++i ) { + for ( i = 0; i < hole_polys.contours(); ++i ) { total_pts += hole_polys.contour_size( i ); } @@ -517,7 +523,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, in.pointlist = (REAL *) malloc(in.numberofpoints * 2 * sizeof(REAL)); counter = 0; - for ( int i = 0; i < (int)contour.size(); ++i ) { + for ( i = 0; i < (int)contour.size(); ++i ) { in.pointlist[2*counter] = contour[i].x(); in.pointlist[2*counter + 1] = contour[i].y(); if ( contour[i].x() > max_x ) { @@ -526,7 +532,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, ++counter; } - for ( int i = 0; i < hole_polys.contours(); ++i ) { + for ( i = 0; i < hole_polys.contours(); ++i ) { point_list hole_contour = hole_polys.get_contour( i ); for ( int j = 0; j < (int)hole_contour.size(); ++j ) { in.pointlist[2*counter] = hole_contour[j].x(); @@ -543,12 +549,12 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, in.numberofpointattributes * sizeof(REAL)); counter = 0; - for ( int i = 0; i < (int)contour.size(); ++i ) { + for ( i = 0; i < (int)contour.size(); ++i ) { in.pointattributelist[counter] = contour[i].z(); ++counter; } - for ( int i = 0; i < hole_polys.contours(); ++i ) { + for ( i = 0; i < hole_polys.contours(); ++i ) { point_list hole_contour = hole_polys.get_contour( i ); for ( int j = 0; j < (int)hole_contour.size(); ++j ) { in.pointattributelist[counter] = hole_contour[j].z(); @@ -557,7 +563,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, } // in.pointmarkerlist = (int *) malloc(in.numberofpoints * sizeof(int)); - // for ( int i = 0; i < in.numberofpoints; ++i) { + // for ( i = 0; i < in.numberofpoints; ++i) { // in.pointmarkerlist[i] = 0; // } in.pointmarkerlist = NULL; @@ -569,7 +575,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, counter = 0; start = 0; end = contour.size() - 1; - for ( int i = 0; i < end; ++i ) { + for ( i = 0; i < end; ++i ) { in.segmentlist[counter++] = i; in.segmentlist[counter++] = i + 1; in.segmentmarkerlist[i] = 0; @@ -578,7 +584,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, in.segmentlist[counter++] = start; in.segmentmarkerlist[contour.size() - 1] = 0; - for ( int i = 0; i < hole_polys.contours(); ++i ) { + for ( i = 0; i < hole_polys.contours(); ++i ) { point_list hole_contour = hole_polys.get_contour( i ); start = end + 1; end = start + hole_contour.size() - 1; @@ -590,7 +596,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, in.segmentlist[counter++] = start; } - for ( int i = 0; i < in.numberofsegments; ++i ) { + for ( i = 0; i < in.numberofsegments; ++i ) { in.segmentmarkerlist[i] = 0; } @@ -602,7 +608,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, in.holelist[counter++] = max_x + 1.0; in.holelist[counter++] = 0.0; - for ( int i = 0; i < (int)hole_pts.size(); ++i ) { + for ( i = 0; i < (int)hole_pts.size(); ++i ) { in.holelist[counter++] = hole_pts[i].x(); in.holelist[counter++] = hole_pts[i].y(); } @@ -654,7 +660,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, elelist.clear(); int n1, n2, n3; double attribute; - for ( int i = 0; i < out.numberoftriangles; ++i ) { + for ( i = 0; i < out.numberoftriangles; ++i ) { n1 = out.trianglelist[i * 3]; n2 = out.trianglelist[i * 3 + 1]; n3 = out.trianglelist[i * 3 + 2]; @@ -671,7 +677,7 @@ static void contour_tesselate( FGContourNode *node, const FGPolygon &p, // output points out_pts.clear(); double x, y, z; - for ( int i = 0; i < out.numberofpoints; ++i ) { + for ( i = 0; i < out.numberofpoints; ++i ) { x = out.pointlist[i * 2 ]; y = out.pointlist[i * 2 + 1]; z = out.pointattributelist[i]; @@ -827,11 +833,12 @@ static void build_contour_tree( FGContourNode *node, cout << "working on contour = " << node->get_contour_num() << endl; cout << " total contours = " << p.contours() << endl; FGContourNode *tmp; + int i; - // see if we are building on a hole or note + // see if we are building on a hole or not bool flag; if ( node->get_contour_num() >= 0 ) { - flag = p.get_hole_flag( node->get_contour_num() ); + flag = (bool)p.get_hole_flag( node->get_contour_num() ); } else { flag = true; } @@ -839,7 +846,7 @@ static void build_contour_tree( FGContourNode *node, // add all remaining hole/non-hole contours as children of the // current node if they are inside of it. - for ( int i = 0; i < p.contours(); ++i ) { + for ( i = 0; i < p.contours(); ++i ) { cout << " testing contour = " << i << endl; if ( p.get_hole_flag( i ) != flag ) { // only holes can be children of non-holes and visa versa @@ -868,7 +875,7 @@ static void build_contour_tree( FGContourNode *node, // inside one cout << "node now has num kids = " << node->get_num_kids() << endl; - for ( int i = 0; i < node->get_num_kids(); ++i ) { + for ( i = 0; i < node->get_num_kids(); ++i ) { for ( int j = 0; j < node->get_num_kids(); ++j ) { if ( i != j ) { if ( (node->get_kid(i) != NULL)&&(node->get_kid(j) != NULL) ) { @@ -894,7 +901,7 @@ static void build_contour_tree( FGContourNode *node, } // for each child, extend the contour tree - for ( int i = 0; i < node->get_num_kids(); ++i ) { + for ( i = 0; i < node->get_num_kids(); ++i ) { tmp = node->get_kid( i ); if ( tmp != NULL ) { build_contour_tree( tmp, p, avail ); diff --git a/src/Lib/Optimize/genfans.cxx b/src/Lib/Optimize/genfans.cxx index 897b9e5f..4d2a2dde 100644 --- a/src/Lib/Optimize/genfans.cxx +++ b/src/Lib/Optimize/genfans.cxx @@ -21,8 +21,15 @@ // $Id$ +#include + +#include STL_IOSTREAM + #include "genfans.hxx" +FG_USING_STD( cout ); +FG_USING_STD( endl ); + // make sure the list is expanded at least to hold "n" and then push // "i" onto the back of the "n" list. @@ -59,6 +66,10 @@ static FGTriEle canonify( const FGTriEle& t, int center ) { cout << "ERROR, index doesn't refer to this triangle!!!" << endl; exit(-1); } + + // MSVC kludge (code should never reach this point, but it makes + // the MSVC compiler happy) + return t; } // returns a list of triangle indices diff --git a/src/Lib/Optimize/genstrips.cxx b/src/Lib/Optimize/genstrips.cxx index c73d2d22..0b94653e 100644 --- a/src/Lib/Optimize/genstrips.cxx +++ b/src/Lib/Optimize/genstrips.cxx @@ -54,16 +54,17 @@ static void add_and_expand( opt_list& by_node, int n, int i ) { opt_list tgGenStrips( const triele_list tris ) { triele_list remaining = tris; + opt_list by_node; + int i; while ( remaining.size() ) { // traverse the triangle list and for each node, build a list of // triangles that attach to it. // cout << "building by_node list" << endl; - opt_list by_node; by_node.clear(); - for ( int i = 0; i < (int)remaining.size(); ++i ) { + for ( i = 0; i < (int)remaining.size(); ++i ) { int n1 = remaining[i].get_n1(); int n2 = remaining[i].get_n2(); int n3 = remaining[i].get_n3(); @@ -79,7 +80,7 @@ opt_list tgGenStrips( const triele_list tris ) { int min_size = 32768; int min_tri = -1; - for ( int i = 0; i < (int)remaining.size(); ++i ) { + for ( i = 0; i < (int)remaining.size(); ++i ) { int n1 = remaining[i].get_n1(); int n2 = remaining[i].get_n2(); int n3 = remaining[i].get_n3(); @@ -95,6 +96,8 @@ opt_list tgGenStrips( const triele_list tris ) { } } } + + return by_node; } diff --git a/src/Lib/Polygon/index.cxx b/src/Lib/Polygon/index.cxx index 750e9fcc..a76c448c 100644 --- a/src/Lib/Polygon/index.cxx +++ b/src/Lib/Polygon/index.cxx @@ -44,7 +44,7 @@ bool poly_index_init( string path ) { FILE *fp = fopen( poly_path.c_str(), "r" ); if ( fp == NULL ) { - cout << "Error cannot open " << poly_path << endl; + cout << "Warning: cannot open " << poly_path << endl; poly_index = 0; return false; } diff --git a/src/Lib/Polygon/polygon.cxx b/src/Lib/Polygon/polygon.cxx index 2a4e7902..014e26eb 100644 --- a/src/Lib/Polygon/polygon.cxx +++ b/src/Lib/Polygon/polygon.cxx @@ -397,6 +397,7 @@ FGPolygon polygon_canonify( const FGPolygon& in_poly ) { } +#if 0 // Wrapper for the fast Polygon Triangulation based on Seidel's // Algorithm by Atul Narkhede and Dinesh Manocha // http://www.cs.unc.edu/~dm/CODE/GEM/chapter.html @@ -482,6 +483,7 @@ FGPolygon polygon_to_tristrip( const FGPolygon& in_poly ) { // return result; } +#endif #if 0 @@ -549,4 +551,6 @@ operator<< (ostream &output, const FGPolygon &poly) output << poly.get_pt(i, j) << endl; } } + + return output; // MSVC } diff --git a/src/Lib/Polygon/superpoly.cxx b/src/Lib/Polygon/superpoly.cxx index cdf1647c..d06c089c 100644 --- a/src/Lib/Polygon/superpoly.cxx +++ b/src/Lib/Polygon/superpoly.cxx @@ -21,7 +21,7 @@ // $Id$ -#include +#include "superpoly.hxx" // Constructor diff --git a/src/Lib/Polygon/superpoly.hxx b/src/Lib/Polygon/superpoly.hxx index d9f34b79..4207c1d7 100644 --- a/src/Lib/Polygon/superpoly.hxx +++ b/src/Lib/Polygon/superpoly.hxx @@ -36,6 +36,9 @@ #include #include +#ifdef _MSC_VER +# include +#endif #include #include "polygon.hxx" diff --git a/src/Lib/Win32/mkdir.cpp b/src/Lib/Win32/mkdir.cpp index 81066b1e..cc805f34 100644 --- a/src/Lib/Win32/mkdir.cpp +++ b/src/Lib/Win32/mkdir.cpp @@ -1,8 +1,32 @@ -/* - * file: mkdir.cpp - */ -#include "simgear/config.h" -#include "simgear/compiler.h" +// +// file: mkdir.cpp +// +// A window mkdir function. Windows 9x system mkdir command will only +// create a single directory at a time. This function will parse the +// path and create each individual directory. + +// Written by Bruce Finney +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include #include #include @@ -11,36 +35,34 @@ using namespace std; +// NOTE: the system mkdir will accept either a "/" or a "\" +// command.com ( the shell ) only accepts "\" in the path. static char SEP[] = "/\\"; void fg_mkdir( const char *path ) { + char *r, *token, tmp_path[256]; + string dir; + struct _finddata_t de; - char *r, *token, tmp_path[256]; - string dir; - struct _finddata_t de; - //struct stat stat_buf; + strcpy( tmp_path, path ); + r = strchr( SEP, path[0] ); // is first char a seperator? + token = strtok( tmp_path, SEP ); + if ( r != NULL ) { + dir = --token; // include first char + } else { + dir = token; + } - strcpy( tmp_path, path ); - r = strchr( SEP, path[0] ); // is first char a seperator? - token = strtok( tmp_path, SEP ); - if ( r != NULL ) - dir = --token; // include first char - else - dir = token; - - while ( token != NULL ) - { - //if ( stat( dir.c_str, &stat_buf) != 0 && errno == ENOENT ) - if ( _findfirst( dir.c_str(), &de ) == -1 && token[1] != ':' ) - { // does not exist - create it - mkdir( dir.c_str() ); - //printf( "mkdir %s\n", dir.c_str() ); - } // end if - token = strtok( NULL, SEP ); - if ( token != NULL ) - //dir = dir + DIR_SEP + token; - dir = dir + "/" + token; - } // end while + while ( token != NULL ) { + if ( _findfirst( dir.c_str(), &de ) == -1 && token[1] != ':' ) { + // does not exist - create it + mkdir( dir.c_str() ); + } // end if + token = strtok( NULL, SEP ); + if ( token != NULL ) { + dir = dir + "/" + token; + } + } // end while } // end fg_mkdir diff --git a/src/Lib/e00/e00.cxx b/src/Lib/e00/e00.cxx index 98abd804..cbf66ce4 100644 --- a/src/Lib/e00/e00.cxx +++ b/src/Lib/e00/e00.cxx @@ -156,6 +156,8 @@ writeVertex (ostream &output, double x, double y) void E00::write (ostream &output) const { + int i, j, k; + output << "" << endl << endl; output << "" << endl << endl; @@ -167,11 +169,11 @@ E00::write (ostream &output) const } } - for (int i = 0; i < (int)arc_section.size(); i++) { + for ( i = 0; i < (int)arc_section.size(); i++) { const e00ARC &arc = arc_section[i]; if (!arc.inPolygon) { output << "" << endl; - for (int j = 0; j < (int)arc.coordinates.size(); j++) { + for ( j = 0; j < (int)arc.coordinates.size(); j++) { writeVertex(output, arc.coordinates[j].x, arc.coordinates[j].y); } output << "" << endl << endl;; @@ -179,10 +181,10 @@ E00::write (ostream &output) const } // NB: skip enclosing poly - for (int i = 1; i < (int)pal_section.size(); i++) { + for ( i = 1; i < (int)pal_section.size(); i++) { const e00PAL &pal = pal_section[i]; output << "" << endl; - for (int j = 0; j < pal.numArcs; j++) { + for ( j = 0; j < pal.numArcs; j++) { bool isReversed = false; int arcNum = pal.arcs[j].arcNum; if (arcNum < 0) { @@ -192,11 +194,11 @@ E00::write (ostream &output) const const e00ARC &arc = arc_section[arcNum]; output << "" << endl; if (isReversed) { - for (int k = arc.numberOfCoordinates - 1; k >= 0; k--) { + for ( k = arc.numberOfCoordinates - 1; k >= 0; k--) { writeVertex(output, arc.coordinates[k].x, arc.coordinates[k].y); } } else { - for (int k = 0; k < arc.numberOfCoordinates; k++) { + for ( k = 0; k < arc.numberOfCoordinates; k++) { writeVertex(output, arc.coordinates[k].x, arc.coordinates[k].y); } } diff --git a/src/Lib/e00/e00.hxx b/src/Lib/e00/e00.hxx index 07f2f757..a51005b2 100644 --- a/src/Lib/e00/e00.hxx +++ b/src/Lib/e00/e00.hxx @@ -1,12 +1,15 @@ +#include + #include #include -#include +#include STL_STRING #include -using std::vector; -using std::map; -using std::string; -using std::istream; +FG_USING_STD(vector); +FG_USING_STD(map); +FG_USING_STD(string); +FG_USING_STD(istream); +FG_USING_STD(ostream); struct E00Exception { diff --git a/src/Lib/landcover/landcover.cxx b/src/Lib/landcover/landcover.cxx index ea278978..7839722f 100644 --- a/src/Lib/landcover/landcover.cxx +++ b/src/Lib/landcover/landcover.cxx @@ -4,19 +4,33 @@ // This program is in the Public Domain and comes with NO WARRANTY. // Use at your own risk. -#include -#include +#include +#include STL_STRING + #include "landcover.hxx" -using std::ifstream; -using std::string; +FG_USING_STD(ifstream); +FG_USING_STD(string); -LandCover::LandCover (const string &filename) +LandCover::LandCover( const string &filename ) { - _input = new ifstream(filename.c_str()); - if (!_input->good()) - throw (string("Failed to open ") + filename); + // MSVC chokes when these are defined and initialized as "static + // const long" in the class declaration.u + WIDTH = 43200; + HEIGHT = 21600; + + _input = new ifstream(filename.c_str()); + if (!_input->good()) { +#ifdef _MSC_VER + // there are no try or catch statements to support + // the throw-expression except in test-landcover.cxx + printf( "Failed to open %s\n", filename.c_str() ); + exit( 1 ); +#else + throw (string("Failed to open ") + filename); +#endif + } } LandCover::~LandCover () diff --git a/src/Lib/landcover/landcover.hxx b/src/Lib/landcover/landcover.hxx index d3d2794f..8215ad4b 100644 --- a/src/Lib/landcover/landcover.hxx +++ b/src/Lib/landcover/landcover.hxx @@ -7,9 +7,13 @@ #ifndef __LANDCOVER_HXX #define __LANDCOVER_HXX 1 +#include + +#include STL_STRING #include -using std::ifstream; +FG_USING_STD(ifstream); +FG_USING_STD(string); /** @@ -56,10 +60,12 @@ using std::ifstream; * @author David Megginson, david@megginson.com * @version 0.1 */ -class LandCover -{ + +class LandCover { + public: - LandCover (const string &filename); + + LandCover( const string &filename ); virtual ~LandCover (); virtual int getValue (long x, long y) const; @@ -68,8 +74,8 @@ public: private: mutable ifstream * _input; - static const long WIDTH = 43200; - static const long HEIGHT = 21600; + long WIDTH; + long HEIGHT; }; #endif __LANDCOVER_HXX diff --git a/src/Lib/poly2tri/construct.c b/src/Lib/poly2tri/construct.c index 6c18041f..a0ea0c94 100644 --- a/src/Lib/poly2tri/construct.c +++ b/src/Lib/poly2tri/construct.c @@ -1,6 +1,9 @@ -#include +#include "triangulate.h" #include +#ifdef _MSC_VER +# include +#endif node_t qs[QSIZE]; /* Query structure */ trap_t tr[TRSIZE]; /* Trapezoid structure */ @@ -432,9 +435,9 @@ static int add_segment(segnum) { segment_t s; segment_t *so = &seg[segnum]; - int tu, tl, sk, tfirst, tlast, tnext; + int tu, tl, sk, tfirst, tlast; int tfirstr, tlastr, tfirstl, tlastl; - int i1, i2, t, t1, t2, tn; + int i1, i2, t, tn; point_t tpt; int tritop = 0, tribot = 0, is_swapped = 0; int tmptriseg; diff --git a/src/Lib/poly2tri/misc.c b/src/Lib/poly2tri/misc.c index 99edbc55..b4f2baf0 100644 --- a/src/Lib/poly2tri/misc.c +++ b/src/Lib/poly2tri/misc.c @@ -1,5 +1,14 @@ -#include -#include +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "triangulate.h" +#ifdef HAVE_SYS_TIME_H +# include +#else +# include +#endif + #include #if defined( __CYGWIN__ ) || defined( __CYGWIN32__ ) @@ -15,14 +24,21 @@ static int permute[SEGSIZE]; int generate_random_ordering(n) int n; { - struct timeval tval; - struct timezone tzone; register int i; int m, st[SEGSIZE], *p; +#ifdef _MSC_VER + time_t ltime; + + time( <ime ); + srand( ltime ); +#else + struct timeval tval; + struct timezone tzone; choose_idx = 1; gettimeofday(&tval, &tzone); srand48(tval.tv_sec); +#endif for (i = 0; i <= n; i++) st[i] = i; @@ -30,7 +46,11 @@ int generate_random_ordering(n) p = st; for (i = 1; i <= n; i++, p++) { - m = lrand48() % (n + 1 - i) + 1; +#ifdef _MSC_VER + m = rand() % ( n + 1 - i ) + 1; +#else + m = lrand48() % ( n + 1 - i ) + 1; +#endif permute[i] = p[m]; if (m != 1) p[m] = p[1]; @@ -43,8 +63,6 @@ int generate_random_ordering(n) /* segments in S */ int choose_segment() { - int i; - #ifdef DEBUG fprintf(stderr, "choose_segment: %d\n", permute[choose_idx]); #endif diff --git a/src/Lib/poly2tri/monotone.c b/src/Lib/poly2tri/monotone.c index 689987c2..97749027 100644 --- a/src/Lib/poly2tri/monotone.c +++ b/src/Lib/poly2tri/monotone.c @@ -1,5 +1,8 @@ -#include +#include "triangulate.h" #include +#ifdef _MSC_VER +# include +#endif #define CROSS_SINE(v0, v1) ((v0).x * (v1).y - (v1).x * (v0).y) #define LENGTH(v0) (sqrt((v0).x * (v0).x + (v0).y * (v0).y)) @@ -283,9 +286,9 @@ static int traverse_polygon(mcur, trnum, from, dir) int dir; { trap_t *t = &tr[trnum]; - int howsplit, mnew; - int v0, v1, v0next, v1next; - int retval, tmp; + int mnew; + int v0, v1; + int retval; int do_switch = FALSE; if ((trnum <= 0) || visited[trnum]) diff --git a/src/Lib/poly2tri/tri.c b/src/Lib/poly2tri/tri.c index 1b3a64b8..900717ca 100644 --- a/src/Lib/poly2tri/tri.c +++ b/src/Lib/poly2tri/tri.c @@ -1,6 +1,8 @@ -#include -#include - +#include "triangulate.h" +/* #include */ +#ifdef _MSC_VER +# include +#endif static int initialise(n) int n; diff --git a/src/Lib/shapelib/dbfopen.c b/src/Lib/shapelib/dbfopen.c index d46b45b0..126a9be7 100644 --- a/src/Lib/shapelib/dbfopen.c +++ b/src/Lib/shapelib/dbfopen.c @@ -21,7 +21,130 @@ ****************************************************************************** * * $Log$ - * Revision 1.1 2000/02/09 19:51:46 curt + * Revision 1.2 2000/11/25 19:39:49 curt + * Contributed by Bruce Finney: + * + * The following files have been changed to enable the latest Terragear CVS + * to compile with MSVC++ 5.0 + * + * .\construct\clipper\clipper.cxx + * for( int i - lots of places + * + * .\construct\genoutput\genobj.cxx + * fix directory logic for windows, line 320 and following + * + * .\construct\main\main.cxx + * windows does not have an opendir function + * added code for windows directory functions + * disabled the mem allocation limit code - windows does not + * have similar functions + * for ( int i - several places + * + * .\construct\match\match.cxx + * moved the definition of file and command outside of the ifdef line 420 + * + * .\lib\e00\e00.cxx + * for( int i - several places + * + * .\lib\e00\e00.cxx + * use simgear/compiler.h constructs + * + * .\lib\geometry\contour_tree.hxx + * removed a cout statement + * + * .\lib\geometry\poly_support.cxx + * added float.h changed 1.0e+999 to DBL_MAX, windows doesn't go that big + * lots of for ( int i changes + * lines 193 and 208 no != operator defined - changed logic + * line 801 flag should be int, not bool, get_hole_flag returns int + * + * .\lib\landcover\landcover.cxx + * .\lib\landcover\landcover.hxx + * add include simgear/compiler.h + * see comments + * + * .\lib\optimize\genfans.cxx + * function canonify added return at end, windows complains + * added using std for cout and endl + * + * .\lib\optimize\genstrips.cxx + * function tgGenStrips no return value, moved by_node into outer scope + * fix for ( int i ... + * + * .\lib\poly2tri\construct.c + * added include for windows + * remove unused variables lines 435 & 437 + * + * .\lib\poly2tri\misc.c + * added HAVE_SYS_TIME_H logic for sys/time.h include file + * added logic to uses windows functions for time and rand + * + * .\lib\poly2tri\monotone.c + * added include for windows + * lines 286-288 remove unused variables + * + * .\lib\poly2tri\tri.c + * remove sys/time.h - no time functions called + * added include for windows + * + * .\lib\polygon\polygon.cxx + * function polygon_to_tristrip will not compile I don't think the + * logic is complete, no returned data added if else endif around + * function and polygon_to_tristrip_old, renamed _old function. + * Search of code reveals that function is not called by anyone. + * + * .\lib\polygon\superpoly.cxx + * changed include to "superpoly.hxx" + * + * .\lib\polygon\superpoly.hxx + * add include for windows before include + * needed for definitions used in Microsoft version of opengl + * + * .\lib\shapelib\dbfopen.c + * added include files for windows + * lines 195-197 271-272 515-517 removed unused variables + * + * .\lib\shapelib\shpopen.c + * added #include for malloc() and friends + * added include files for windows + * line 279 527 813 1127 removed unused variables + * line 827 cast result to int + * + * .\lib\win32\mkdir.cpp + * documented function, remove debug lines + * + * .\prep\demraw2ascii\main.c + * lines 46-50 remove unused variables + * + * .\prep\demraw2ascii\rawdem.c + * line 47 changed logic to compile with MSVC + * line 244-256 set real constants to float, windows complains with + * double constants + * + * .\prep\genairports\build.cxx + * lots of for ( int i changes + * + * .\prep\genairports\main.cxx + * fix mkdir logic for windows + * + * .\prep\genairports\output.cxx + * added using std cout endl + * lots of for ( int i changes + * fix mkdir logic for windows + * + * .\prep\genairports\runway.cxx + * for ( int i changes + * lines 117-118 161-162 remove default values for function parameters + * + * .\prep\gshhs\main.cxx + * added using std cout + * + * .\prep\shapefile\noaa_decode.cxx + * .\prep\shapefile\shape_decode.cxx + * added using std for cout + * lines 45-49 moved unused variables inside #if 0 block + * + * Revision 1.1.1.1 2000/02/09 19:51:46 curt * Initial revision * * Revision 1.1 1999/08/24 21:13:00 curt @@ -78,6 +201,11 @@ static char rcsid[] = #include "shapefil.h" #include +#ifdef _MSC_VER +# include +# include +# include +#endif typedef unsigned char uchar; @@ -192,9 +320,8 @@ DBFHandle DBFOpen( const char * pszFilename, const char * pszAccess ) { DBFHandle psDBF; uchar *pabyBuf; - int nFields, nRecords, nHeadLen, nRecLen, iField, i; + int nFields, nRecords, nHeadLen, nRecLen, iField; char *pszDBFFilename; - FILE *fp; /* -------------------------------------------------------------------- */ /* We only allow the access strings "rb" and "r+". */ @@ -268,8 +395,6 @@ DBFHandle DBFOpen( const char * pszFilename, const char * pszAccess ) for( iField = 0; iField < nFields; iField++ ) { - char *pszTitle; - int nType; uchar *pabyFInfo; pabyFInfo = pabyBuf+iField*32; @@ -512,9 +637,8 @@ static void *DBFReadAttribute(DBFHandle psDBF, int hEntity, int iField, char chReqType ) { - int nRecordOffset, i, j; + int nRecordOffset; uchar *pabyRec; - char *pszSField; void *pReturnField = NULL; static double dDoubleField; diff --git a/src/Lib/shapelib/shpopen.c b/src/Lib/shapelib/shpopen.c index ad652e21..9ee53534 100644 --- a/src/Lib/shapelib/shpopen.c +++ b/src/Lib/shapelib/shpopen.c @@ -21,7 +21,130 @@ ****************************************************************************** * * $Log$ - * Revision 1.1 2000/02/09 19:51:46 curt + * Revision 1.2 2000/11/25 19:39:49 curt + * Contributed by Bruce Finney: + * + * The following files have been changed to enable the latest Terragear CVS + * to compile with MSVC++ 5.0 + * + * .\construct\clipper\clipper.cxx + * for( int i - lots of places + * + * .\construct\genoutput\genobj.cxx + * fix directory logic for windows, line 320 and following + * + * .\construct\main\main.cxx + * windows does not have an opendir function + * added code for windows directory functions + * disabled the mem allocation limit code - windows does not + * have similar functions + * for ( int i - several places + * + * .\construct\match\match.cxx + * moved the definition of file and command outside of the ifdef line 420 + * + * .\lib\e00\e00.cxx + * for( int i - several places + * + * .\lib\e00\e00.cxx + * use simgear/compiler.h constructs + * + * .\lib\geometry\contour_tree.hxx + * removed a cout statement + * + * .\lib\geometry\poly_support.cxx + * added float.h changed 1.0e+999 to DBL_MAX, windows doesn't go that big + * lots of for ( int i changes + * lines 193 and 208 no != operator defined - changed logic + * line 801 flag should be int, not bool, get_hole_flag returns int + * + * .\lib\landcover\landcover.cxx + * .\lib\landcover\landcover.hxx + * add include simgear/compiler.h + * see comments + * + * .\lib\optimize\genfans.cxx + * function canonify added return at end, windows complains + * added using std for cout and endl + * + * .\lib\optimize\genstrips.cxx + * function tgGenStrips no return value, moved by_node into outer scope + * fix for ( int i ... + * + * .\lib\poly2tri\construct.c + * added include for windows + * remove unused variables lines 435 & 437 + * + * .\lib\poly2tri\misc.c + * added HAVE_SYS_TIME_H logic for sys/time.h include file + * added logic to uses windows functions for time and rand + * + * .\lib\poly2tri\monotone.c + * added include for windows + * lines 286-288 remove unused variables + * + * .\lib\poly2tri\tri.c + * remove sys/time.h - no time functions called + * added include for windows + * + * .\lib\polygon\polygon.cxx + * function polygon_to_tristrip will not compile I don't think the + * logic is complete, no returned data added if else endif around + * function and polygon_to_tristrip_old, renamed _old function. + * Search of code reveals that function is not called by anyone. + * + * .\lib\polygon\superpoly.cxx + * changed include to "superpoly.hxx" + * + * .\lib\polygon\superpoly.hxx + * add include for windows before include + * needed for definitions used in Microsoft version of opengl + * + * .\lib\shapelib\dbfopen.c + * added include files for windows + * lines 195-197 271-272 515-517 removed unused variables + * + * .\lib\shapelib\shpopen.c + * added #include for malloc() and friends + * added include files for windows + * line 279 527 813 1127 removed unused variables + * line 827 cast result to int + * + * .\lib\win32\mkdir.cpp + * documented function, remove debug lines + * + * .\prep\demraw2ascii\main.c + * lines 46-50 remove unused variables + * + * .\prep\demraw2ascii\rawdem.c + * line 47 changed logic to compile with MSVC + * line 244-256 set real constants to float, windows complains with + * double constants + * + * .\prep\genairports\build.cxx + * lots of for ( int i changes + * + * .\prep\genairports\main.cxx + * fix mkdir logic for windows + * + * .\prep\genairports\output.cxx + * added using std cout endl + * lots of for ( int i changes + * fix mkdir logic for windows + * + * .\prep\genairports\runway.cxx + * for ( int i changes + * lines 117-118 161-162 remove default values for function parameters + * + * .\prep\gshhs\main.cxx + * added using std cout + * + * .\prep\shapefile\noaa_decode.cxx + * .\prep\shapefile\shape_decode.cxx + * added using std for cout + * lines 45-49 moved unused variables inside #if 0 block + * + * Revision 1.1.1.1 2000/02/09 19:51:46 curt * Initial revision * * Revision 1.1 1999/08/24 21:13:01 curt @@ -101,6 +224,12 @@ static char rcsid[] = #include #include #include +#include /* malloc() && friends */ +#ifdef _MSC_VER +# include +# include +# include +#endif typedef unsigned char uchar; @@ -276,7 +405,7 @@ SHPHandle SHPOpen( const char * pszLayer, const char * pszAccess ) SHPHandle psSHP; uchar *pabyBuf; - int iField, i; + int i; double dValue; /* -------------------------------------------------------------------- */ @@ -524,7 +653,6 @@ SHPHandle SHPCreate( const char * pszLayer, int nShapeType ) uchar abyHeader[100]; int32 i32; double dValue; - int32 *panSHX; /* -------------------------------------------------------------------- */ /* Establish the byte order on this system. */ @@ -810,7 +938,7 @@ SHPObject *SHPCreateSimpleObject( int nSHPType, int nVertices, int SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject ) { - int nRecordOffset, i, j, nRecordSize; + int nRecordOffset, i, nRecordSize; uchar *pabyRec; int32 i32; @@ -824,7 +952,7 @@ int SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject ) psSHP->nRecords++; if( psSHP->nRecords > psSHP->nMaxRecords ) { - psSHP->nMaxRecords = psSHP->nMaxRecords * 1.3 + 100; + psSHP->nMaxRecords = (int)( psSHP->nMaxRecords * 1.3 ) + 100; psSHP->panRecOffset = (int *) SfRealloc(psSHP->panRecOffset,sizeof(int) * psSHP->nMaxRecords ); @@ -1124,7 +1252,6 @@ int SHPWriteObject(SHPHandle psSHP, int nShapeId, SHPObject * psObject ) SHPObject *SHPReadObject( SHPHandle psSHP, int hEntity ) { - int nRecordOffset, i, j; SHPObject *psShape; static uchar *pabyRec = NULL; diff --git a/src/Prep/DemRaw2ascii/main.c b/src/Prep/DemRaw2ascii/main.c index eb94cc8b..006298c9 100644 --- a/src/Prep/DemRaw2ascii/main.c +++ b/src/Prep/DemRaw2ascii/main.c @@ -43,11 +43,10 @@ int main(int argc, char **argv) { fgRAWDEM raw; char basename[256], output_dir[256], hdr_file[256], dem_file[256]; int start_lat, end_lat; - int i, j; - int min, max; - double total; - unsigned char buf[2]; - short int value; + int i; + // double total; + // unsigned char buf[2]; + // short int value; if ( argc != 3 ) { printf("Usage: %s \n", argv[0]); @@ -81,6 +80,7 @@ int main(int argc, char **argv) { printf(" short int size = %d\n", sizeof(short int) ); /* + int min, max; min = max = 0; total = 0; for ( j = 0; j < raw.nrows; ++j ) { diff --git a/src/Prep/DemRaw2ascii/rawdem.c b/src/Prep/DemRaw2ascii/rawdem.c index e2f5bc8a..3cb8839c 100644 --- a/src/Prep/DemRaw2ascii/rawdem.c +++ b/src/Prep/DemRaw2ascii/rawdem.c @@ -44,7 +44,7 @@ #include "rawdem.h" -#if defined( HAVE_UNISTD_H ) && !defined( HAVE_RINT ) +#if !defined( HAVE_RINT ) double round( double a ) { long i; @@ -245,10 +245,10 @@ void rawConvertCenter2Edge( fgRAWDEM *raw ) { /* derive edge nodes */ for ( i = 1; i < 120; i++ ) { - raw->edge[i][0] = (raw->center[i-1][0] + raw->center[i][0]) / 2.0; - raw->edge[i][120] = (raw->center[i-1][119] + raw->center[i][119]) / 2.0; - raw->edge[0][i] = (raw->center[0][i-1] + raw->center[0][i]) / 2.0; - raw->edge[120][i] = (raw->center[119][i-1] + raw->center[119][i]) / 2.0; + raw->edge[i][0] = (raw->center[i-1][0] + raw->center[i][0]) / 2.0f; + raw->edge[i][120] = (raw->center[i-1][119] + raw->center[i][119]) / 2.0f; + raw->edge[0][i] = (raw->center[0][i-1] + raw->center[0][i]) / 2.0f; + raw->edge[120][i] = (raw->center[119][i-1] + raw->center[119][i]) / 2.0f; } /* derive internal nodes */ @@ -257,7 +257,7 @@ void rawConvertCenter2Edge( fgRAWDEM *raw ) { raw->edge[i][j] = ( raw->center[i-1][j-1] + raw->center[i] [j-1] + raw->center[i] [j] + - raw->center[i-1][j] ) / 4; + raw->center[i-1][j] ) / 4.0f; } } } diff --git a/src/Prep/GSHHS/main.cxx b/src/Prep/GSHHS/main.cxx index 50e1f0a8..b3fc110b 100644 --- a/src/Prep/GSHHS/main.cxx +++ b/src/Prep/GSHHS/main.cxx @@ -42,6 +42,8 @@ #include "gshhs.h" #include "gshhs_split.hxx" +FG_USING_STD( string ); +FG_USING_STD( cout ); // hackity, hackity, hack ... cough cough #ifdef i386 diff --git a/src/Prep/ShapeFile/noaa-decode.cxx b/src/Prep/ShapeFile/noaa-decode.cxx index d5edded1..fe99b0ea 100644 --- a/src/Prep/ShapeFile/noaa-decode.cxx +++ b/src/Prep/ShapeFile/noaa-decode.cxx @@ -39,16 +39,19 @@ # include #endif +FG_USING_STD( cout ); +FG_USING_STD( string ); // return the type of the shapefile record AreaType get_shapefile_type(DBFHandle& hDBF, int rec) { + +#if 0 int *panWidth, i, iRecord; char szFormat[32]; int nWidth, nDecimals; - int bMultiLine = 0; char szTitle[12]; + int bMultiLine = 0; -#if 0 // grab the meta-information for all the fields // this applies to all the records in the DBF file. for ( i = 0; i < DBFGetFieldCount(hDBF); i++ ) { diff --git a/src/Prep/ShapeFile/shape-decode.cxx b/src/Prep/ShapeFile/shape-decode.cxx index 74f7d57d..6f18f578 100644 --- a/src/Prep/ShapeFile/shape-decode.cxx +++ b/src/Prep/ShapeFile/shape-decode.cxx @@ -39,16 +39,18 @@ # include #endif +FG_USING_STD( cout ); +FG_USING_STD( string ); // return the type of the shapefile record AreaType get_shapefile_type(DBFHandle& hDBF, int rec) { +#if 0 int *panWidth, i, iRecord; char szFormat[32]; int nWidth, nDecimals; int bMultiLine = 0; char szTitle[12]; -#if 0 // grab the meta-information for all the fields // this applies to all the records in the DBF file. for ( i = 0; i < DBFGetFieldCount(hDBF); i++ ) {