| 680 | } |
| 681 | |
| 682 | void VPath::VPathData::addPath(const VPathData &path, const VMatrix *m) |
| 683 | { |
| 684 | size_t segment = path.segments(); |
| 685 | |
| 686 | // make sure enough memory available |
| 687 | if (m_points.capacity() < m_points.size() + path.m_points.size()) |
| 688 | m_points.reserve(m_points.size() + path.m_points.size()); |
| 689 | |
| 690 | if (m_elements.capacity() < m_elements.size() + path.m_elements.size()) |
| 691 | m_elements.reserve(m_elements.size() + path.m_elements.size()); |
| 692 | |
| 693 | if (m) { |
| 694 | for (const auto &i : path.m_points) { |
| 695 | m_points.push_back(m->map(i)); |
| 696 | } |
| 697 | } else { |
| 698 | std::copy(path.m_points.begin(), path.m_points.end(), |
| 699 | back_inserter(m_points)); |
| 700 | } |
| 701 | |
| 702 | std::copy(path.m_elements.begin(), path.m_elements.end(), |
| 703 | back_inserter(m_elements)); |
| 704 | |
| 705 | m_segments += segment; |
| 706 | mLengthDirty = true; |
| 707 | } |
| 708 | |
| 709 | V_END_NAMESPACE |