Index: scan_arbitrary.hpp
===================================================================
--- scan_arbitrary.hpp	(revision 58921)
+++ scan_arbitrary.hpp	(working copy)
@@ -15,6 +15,7 @@
   template <typename Unit>
   class line_intersection : public scanline_base<Unit> {
   private:
+    typedef scanline_base<Unit> base;
     typedef typename scanline_base<Unit>::Point Point;
       
     //the first point is the vertex and and second point establishes the slope of an edge eminating from the vertex
@@ -206,7 +207,7 @@
         //itr = pts.begin();
         //itr2 = pts.end();
         for( ; itr != itr2; ++itr) {
-          if(intersects_grid(*itr, he1))
+          if(base::intersects_grid(*itr, he1))
             intersection_points[id1].insert(*itr);
         }
       }
@@ -233,8 +234,8 @@
           //edge changed orientation, invert count on edge
           output_segments.back().second.second *= -1;
         }
-        if(!is_vertical(input_segments[intermediate_segments[i].second].first) &&
-           is_vertical(output_segments.back().first)) {
+        if(!base::is_vertical(input_segments[intermediate_segments[i].second].first) &&
+           base::is_vertical(output_segments.back().first)) {
           output_segments.back().second.second *= -1;
         }
         if(lp(output_segments.back().first.second, output_segments.back().first.first)) {
@@ -339,7 +340,7 @@
           segment_id id = (*iter).second;
           const std::set<Point>& pts = intersection_points[id];
           Point hpt(he.first.get(HORIZONTAL)+1, he.first.get(VERTICAL));
-          if(!is_vertical(he) && less_slope(he.first.get(HORIZONTAL), he.first.get(VERTICAL),
+          if(!base::is_vertical(he) && base::less_slope(he.first.get(HORIZONTAL), he.first.get(VERTICAL),
                                             he.second, hpt)) {
             //slope is below horizontal
             std::vector<Point> tmpPts;
@@ -933,6 +934,7 @@
   class scanline : public scanline_base<Unit> {
   public:
     //definitions
+    typedef scanline_base<Unit> base;
     typedef typename scanline_base<Unit>::Point Point;
       
     //the first point is the vertex and and second point establishes the slope of an edge eminating from the vertex
@@ -1038,7 +1040,7 @@
           if(current_iter != scan_data_.end()) {
             //make sure we are looking at element in scanline just below y
             //if(evalAtXforY(x_, (*current_iter).first.first, (*current_iter).first.second) != y) {
-            if(on_above_or_below(Point(x_, y), (*current_iter).first) != 0) {
+            if(base::on_above_or_below(Point(x_, y), (*current_iter).first) != 0) {
               Point e2(pt);
               if(e2.get(VERTICAL) != (std::numeric_limits<Unit>::max)())
                 e2.set(VERTICAL, e2.get(VERTICAL) + 1);
@@ -1050,12 +1052,12 @@
             if(current_iter != scan_data_.end()) {
               //get the bottom iterator for elements at this point
               //while(evalAtXforY(x_, (*current_iter).first.first, (*current_iter).first.second) >= (high_precision)y && 
-              while(on_above_or_below(Point(x_, y), (*current_iter).first) != 1 &&
+              while(base::on_above_or_below(Point(x_, y), (*current_iter).first) != 1 &&
                     current_iter != scan_data_.begin()) {
                 --current_iter;
               }
               //if(evalAtXforY(x_, (*current_iter).first.first, (*current_iter).first.second) >= (high_precision)y) {
-              if(on_above_or_below(Point(x_, y), (*current_iter).first) != 1) {
+              if(base::on_above_or_below(Point(x_, y), (*current_iter).first) != 1) {
                 properties_below.clear();
               } else {
                 properties_below = (*current_iter).second;
@@ -1068,7 +1070,7 @@
           while(current_iter != scan_data_.end() &&
                 //can only be true if y is integer
                 //evalAtXforY(x_, (*current_iter).first.first, (*current_iter).first.second) == y) {
-                on_above_or_below(Point(x_, y), (*current_iter).first) == 0) {
+                base::on_above_or_below(Point(x_, y), (*current_iter).first) == 0) {
             //removal_set_.push_back(current_iter);
             ++current_iter;
           }
@@ -1119,7 +1121,7 @@
             y = vertical_edge_below.second.get(VERTICAL);
             continue;
           }
-          if(is_vertical(he)) {
+          if(base::is_vertical(he)) {
             update_property_map(vertical_properties_above, vp.second);
             vertical_edge_above = he;
           } else {
@@ -2472,6 +2474,7 @@
   template <typename Unit>
   class arbitrary_boolean_op : public scanline_base<Unit> {
   private:
+    typedef scanline_base<Unit> base;
     
     typedef int property_type;
     typedef typename scanline_base<Unit>::Point Point;
@@ -2523,7 +2526,7 @@
         elem.first = edge;
         elem.second = 1;
         if(edge.second < edge.first) elem.second *= -1;
-        if(is_vertical(edge)) elem.second *= -1;
+        if(base::is_vertical(edge)) elem.second *= -1;
 #ifdef BOOST_POLYGON_MSVC
 #pragma warning (disable: 4127)
 #endif
