75 for (
int y = 0;
y < lines;
y++) {
79 if (
y % chunk_height == 0) {
83 int dy =
y % chunk_height;
84 for (
int x=0;
x < width;
x++) {
88 marker[
x] = LutzMarker::ZERO;
90 bool in_object = value > 0.0;
104 marker[
x] = LutzMarker::S;
107 marker[
x] = LutzMarker::S0;
112 ps = LutzStatus::COMPLETE;
114 marker[
x] = LutzMarker::S;
120 if (last_marker != LutzMarker::ZERO) {
124 if (last_marker == LutzMarker::S) {
127 if (cs == LutzStatus::NONOBJECT) {
129 ps_stack.
push_back(LutzStatus::COMPLETE);
137 auto prev_group = inc_group_map.
at(
x);
145 if (last_marker == LutzMarker::S0) {
156 group_stack.
back().
start = old_group.start;
158 marker[old_group.start] = LutzMarker::S0;
165 ps = LutzStatus::INCOMPLETE;
168 if (last_marker == LutzMarker::F) {
171 ps = ps_stack.
back();
174 if (cs == LutzStatus::NONOBJECT && ps == LutzStatus::COMPLETE) {
178 if (old_group.start == -1) {
182 marker[old_group.end] = LutzMarker::F;
183 inc_group_map[old_group.start] = old_group;
185 ps = ps_stack.
back();
200 cs = LutzStatus::NONOBJECT;
202 if (ps != LutzStatus::COMPLETE) {
208 ps = ps_stack.
back();
211 marker[
x] = LutzMarker::F;
213 auto old_group = group_stack.
back();
216 inc_group_map[old_group.start] = old_group;
226 for (
auto& group : inc_group_map) {