| 43 | } |
| 44 | |
| 45 | static void deconvergeEdge(EdgeHolder &edgeHolder, int param, Vector2 vector) { |
| 46 | switch (edgeHolder->type()) { |
| 47 | case (int) QuadraticSegment::EDGE_TYPE: |
| 48 | edgeHolder = static_cast<const QuadraticSegment *>(&*edgeHolder)->convertToCubic(); |
| 49 | // fallthrough |
| 50 | case (int) CubicSegment::EDGE_TYPE: |
| 51 | { |
| 52 | Point2 *p = static_cast<CubicSegment *>(&*edgeHolder)->p; |
| 53 | switch (param) { |
| 54 | case 0: |
| 55 | p[1] += (p[1]-p[0]).length()*vector; |
| 56 | break; |
| 57 | case 1: |
| 58 | p[2] += (p[2]-p[3]).length()*vector; |
| 59 | break; |
| 60 | } |
| 61 | } |
| 62 | } |
| 63 | } |
| 64 | |
| 65 | void Shape::normalize() { |
| 66 | for (std::vector<Contour>::iterator contour = contours.begin(); contour != contours.end(); ++contour) { |
no test coverage detected