MCPcopy Create free account
hub / github.com/MapServer/MapServer / rewind

Method rewind

renderers/agg/src/agg_vcgen_bspline.cpp:67–118  ·  view source on GitHub ↗

------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

65
66 //------------------------------------------------------------------------
67 void vcgen_bspline::rewind(unsigned)
68 {
69 m_cur_abscissa = 0.0;
70 m_max_abscissa = 0.0;
71 m_src_vertex = 0;
72 if(m_status == initial && m_src_vertices.size() > 2)
73 {
74 if(m_closed)
75 {
76 m_spline_x.init(m_src_vertices.size() + 8);
77 m_spline_y.init(m_src_vertices.size() + 8);
78 m_spline_x.add_point(0.0, m_src_vertices.prev(m_src_vertices.size() - 3).x);
79 m_spline_y.add_point(0.0, m_src_vertices.prev(m_src_vertices.size() - 3).y);
80 m_spline_x.add_point(1.0, m_src_vertices[m_src_vertices.size() - 3].x);
81 m_spline_y.add_point(1.0, m_src_vertices[m_src_vertices.size() - 3].y);
82 m_spline_x.add_point(2.0, m_src_vertices[m_src_vertices.size() - 2].x);
83 m_spline_y.add_point(2.0, m_src_vertices[m_src_vertices.size() - 2].y);
84 m_spline_x.add_point(3.0, m_src_vertices[m_src_vertices.size() - 1].x);
85 m_spline_y.add_point(3.0, m_src_vertices[m_src_vertices.size() - 1].y);
86 }
87 else
88 {
89 m_spline_x.init(m_src_vertices.size());
90 m_spline_y.init(m_src_vertices.size());
91 }
92 unsigned i;
93 for(i = 0; i < m_src_vertices.size(); i++)
94 {
95 double x = m_closed ? i + 4 : i;
96 m_spline_x.add_point(x, m_src_vertices[i].x);
97 m_spline_y.add_point(x, m_src_vertices[i].y);
98 }
99 m_cur_abscissa = 0.0;
100 m_max_abscissa = m_src_vertices.size() - 1;
101 if(m_closed)
102 {
103 m_cur_abscissa = 4.0;
104 m_max_abscissa += 5.0;
105 m_spline_x.add_point(m_src_vertices.size() + 4, m_src_vertices[0].x);
106 m_spline_y.add_point(m_src_vertices.size() + 4, m_src_vertices[0].y);
107 m_spline_x.add_point(m_src_vertices.size() + 5, m_src_vertices[1].x);
108 m_spline_y.add_point(m_src_vertices.size() + 5, m_src_vertices[1].y);
109 m_spline_x.add_point(m_src_vertices.size() + 6, m_src_vertices[2].x);
110 m_spline_y.add_point(m_src_vertices.size() + 6, m_src_vertices[2].y);
111 m_spline_x.add_point(m_src_vertices.size() + 7, m_src_vertices.next(2).x);
112 m_spline_y.add_point(m_src_vertices.size() + 7, m_src_vertices.next(2).y);
113 }
114 m_spline_x.prepare();
115 m_spline_y.prepare();
116 }
117 m_status = ready;
118 }
119
120
121

Callers

nothing calls this directly

Calls 5

add_pointMethod · 0.80
nextMethod · 0.80
sizeMethod · 0.45
initMethod · 0.45
prepareMethod · 0.45

Tested by

no test coverage detected