- while(!result)
- {
- result = file->read_tag();
-
- if(!result)
- {
- if(file->tag.title_is("/MASK"))
- {
- result = 1;
- }
- else
- if(file->tag.title_is("POINT"))
- {
- XMLBuffer data;
- file->read_text_until("/POINT", &data);
-
- MaskPoint *point = new MaskPoint;
- char *ptr = data.cstr();
-//printf("MaskAuto::load 1 %s\n", ptr);
-
- point->x = atof(ptr);
- ptr = strchr(ptr, ',');
-//printf("MaskAuto::load 2 %s\n", ptr + 1);
- if(ptr)
- {
- point->y = atof(ptr + 1);
- ptr = strchr(ptr + 1, ',');
-
- if(ptr)
- {
-//printf("MaskAuto::load 3 %s\n", ptr + 1);
- point->control_x1 = atof(ptr + 1);
- ptr = strchr(ptr + 1, ',');
- if(ptr)
- {
-//printf("MaskAuto::load 4 %s\n", ptr + 1);
- point->control_y1 = atof(ptr + 1);
- ptr = strchr(ptr + 1, ',');
- if(ptr)
- {
-//printf("MaskAuto::load 5 %s\n", ptr + 1);
- point->control_x2 = atof(ptr + 1);
- ptr = strchr(ptr + 1, ',');
- if(ptr) point->control_y2 = atof(ptr + 1);
- }
- }
- }
-
- }
- points.append(point);
- }
+ while( !(result = file->read_tag()) ) {
+ if( file->tag.title_is("/MASK") ) break;
+ if( file->tag.title_is("POINT") ) {
+ XMLBuffer data;
+ file->read_text_until("/POINT", &data);
+ MaskPoint *point = new MaskPoint;
+ char *cp = data.cstr();
+ if( cp ) point->x = strtof(cp, &cp);
+ if( cp && *cp==',' ) point->y = strtof(cp+1, &cp);
+ if( cp && *cp==',' ) point->control_x1 = strtof(cp+1, &cp);
+ if( cp && *cp==',' ) point->control_y1 = strtof(cp+1, &cp);
+ if( cp && *cp==',' ) point->control_x2 = strtof(cp+1, &cp);
+ if( cp && *cp==',' ) point->control_y2 = strtof(cp+1, &cp);
+ points.append(point);