root/src/swft/SVGPointsParser.cpp

/* [<][>][^][v][top][bottom][index][help] */
#include "SVGPointsParser.h"

#include <iostream>
#include <cstring>

using namespace std;

namespace SWF {

void PointsParser::parse(const char *points) {
        string tmp;

        coords.clear();
        
        for(int i = 0; i < strlen(points); i++) {
                char currentChar = points[i];
                
                if(currentChar == ',' || currentChar == ' ') {
                        if(tmp.length() > 0) {
                                coords.push_back(atof(tmp.c_str()));
                                tmp.clear();
                        }                       
                } else {
                        tmp += currentChar;
                }
        }
        
        if(tmp.length() > 0) {
                coords.push_back(atof(tmp.c_str()));
        }
        
        if(coords.size() % 2) {
                cerr << "WARNING: odd number of coordinates in points attribute" << endl;
        }
}

int PointsParser::getPointCount() {
        return coords.size() / 2;
}

Point PointsParser::getPoint() {
        double x = coords.front();
        coords.pop_front();
                
        double y = coords.front();
        coords.pop_front();
        
        return Point(x, y);
}
        
}

/* [<][>][^][v][top][bottom][index][help] */