Merge branch 'master' of git://git.ucc.asn.au/ipdf/code
[ipdf/code.git] / src / document.cpp
index a4b20d0..a6c6fad 100644 (file)
@@ -282,16 +282,16 @@ void Document::LoadSVG(const string & filename, const Rect & bounds)
        input.close();
 
        // Combine all SVG tags into one thing because lazy
-       for (xml_node svg : doc_xml.children("svg"))
+       for (xml_node svg = doc_xml.child("svg"); svg; svg = svg.next_sibling("svg"))
        {
-               Real width = svg.attribute("width").as_float() * bounds.w;
-               Real height = svg.attribute("width").as_float() * bounds.h;
+               Real width = Real(svg.attribute("width").as_float()) * bounds.w;
+               Real height = Real(svg.attribute("width").as_float()) * bounds.h;
                
                
                // Rectangles
                Real coords[4];
                const char * attrib_names[] = {"x", "y", "width", "height"};
-               for (pugi::xml_node rect : svg.children("rect"))
+               for (pugi::xml_node rect = svg.child("rect"); rect; rect = rect.next_sibling("rect"))
                {
                        for (size_t i = 0; i < 4; ++i)
                                coords[i] = rect.attribute(attrib_names[i]).as_float();
@@ -302,7 +302,7 @@ void Document::LoadSVG(const string & filename, const Rect & bounds)
                }               
                
                // Circles
-               for (pugi::xml_node circle : svg.children("circle"))
+               for (pugi::xml_node circle = svg.child("circle"); circle; circle = circle.next_sibling("circle"))
                {
                        Real cx = circle.attribute("cx").as_float();
                        Real cy = circle.attribute("cy").as_float();
@@ -310,8 +310,8 @@ void Document::LoadSVG(const string & filename, const Rect & bounds)
                        
                        Real x = (cx - r)/width + bounds.x; 
                        Real y = (cy - r)/height + bounds.y; 
-                       Real w = 2*r/width; 
-                       Real h = 2*r/height;
+                       Real w = Real(2)*r/width; 
+                       Real h = Real(2)*r/height;
                        
                        Rect rect(x,y,w,h);
                        Add(CIRCLE_FILLED, rect,0);
@@ -320,7 +320,7 @@ void Document::LoadSVG(const string & filename, const Rect & bounds)
                }               
                
                // paths
-               for (pugi::xml_node path : svg.children("path"))
+               for (pugi::xml_node path = svg.child("path"); path; path = path.next_sibling("path"))
                {
                        
                        string d = path.attribute("d").as_string();
@@ -396,9 +396,9 @@ void Document::AddPathFromString(const string & d, const Rect & bounds)
                if (command == "m" || command == "M")
                {
                        Debug("Construct moveto command");
-                       Real dx = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.w;
+                       Real dx = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.w;
                        assert(GetToken(d,token,i) == ",");
-                       Real dy = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.h;
+                       Real dy = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.h;
                        
                        x[0] = (relative) ? x[0] + dx : dx;
                        y[0] = (relative) ? y[0] + dy : dy;
@@ -411,25 +411,25 @@ void Document::AddPathFromString(const string & d, const Rect & bounds)
                else if (command == "c" || command == "C" || command == "q" || command == "Q")
                {
                        Debug("Construct curveto command");
-                       Real dx = strtod(GetToken(d,token,i).c_str(),NULL)/bounds.w;
+                       Real dx = Real(strtod(GetToken(d,token,i).c_str(),NULL))/bounds.w;
                        assert(GetToken(d,token,i) == ",");
-                       Real dy = strtod(GetToken(d,token,i).c_str(),NULL)/bounds.h;
+                       Real dy = Real(strtod(GetToken(d,token,i).c_str(),NULL))/bounds.h;
                        
                        x[1] = (relative) ? x[0] + dx : dx;
                        y[1] = (relative) ? y[0] + dy : dy;
                        
-                       dx = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.w;
+                       dx = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.w;
                        assert(GetToken(d,token,i) == ",");
-                       dy = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.h;
+                       dy = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.h;
                        
                        x[2] = (relative) ? x[0] + dx : dx;
                        y[2] = (relative) ? y[0] + dy : dy;
                        
                        if (command != "q" && command != "Q")
                        {
-                               dx = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.w;
+                               dx = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.w;
                                assert(GetToken(d,token,i) == ",");
-                               dy = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.h;
+                               dy = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.h;
                                x[3] = (relative) ? x[0] + dx : dx;
                                y[3] = (relative) ? y[0] + dy : dy;
                        }
@@ -459,9 +459,9 @@ void Document::AddPathFromString(const string & d, const Rect & bounds)
                {
                        Debug("Construct lineto command");
                
-                       Real dx = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.w;
+                       Real dx = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.w;
                        assert(GetToken(d,token,i) == ",");
-                       Real dy = strtod(GetToken(d,token,i).c_str(),NULL) / bounds.h;
+                       Real dy = Real(strtod(GetToken(d,token,i).c_str(),NULL)) / bounds.h;
                        
                        x[1] = (relative) ? x[0] + dx : dx;
                        y[1] = (relative) ? y[0] + dy : dy;

UCC git Repository :: git.ucc.asn.au