75 for (
int y = 0;
y < lines;
y++) {
79 if (
y % chunk_height == 0) {
84 int dy =
y % chunk_height;
85 for (
int x=0;
x < width;
x++) {
89 marker[
x] = LutzMarker::ZERO;
91 bool in_object = value > 0.0;
105 marker[
x] = LutzMarker::S;
108 marker[
x] = LutzMarker::S0;
113 ps = LutzStatus::COMPLETE;
115 marker[
x] = LutzMarker::S;
121 if (last_marker != LutzMarker::ZERO) {
125 if (last_marker == LutzMarker::S) {
128 if (cs == LutzStatus::NONOBJECT) {
130 ps_stack.
push_back(LutzStatus::COMPLETE);
138 auto prev_group = inc_group_map.
at(
x);
146 if (last_marker == LutzMarker::S0) {
157 group_stack.
back().
start = old_group.start;
159 marker[old_group.start] = LutzMarker::S0;
166 ps = LutzStatus::INCOMPLETE;
169 if (last_marker == LutzMarker::F) {
172 ps = ps_stack.
back();
175 if (cs == LutzStatus::NONOBJECT && ps == LutzStatus::COMPLETE) {
179 if (old_group.start == -1) {
183 marker[old_group.end] = LutzMarker::F;
184 inc_group_map[old_group.start] = old_group;
186 ps = ps_stack.
back();
201 cs = LutzStatus::NONOBJECT;
203 if (ps != LutzStatus::COMPLETE) {
209 ps = ps_stack.
back();
212 marker[
x] = LutzMarker::F;
214 auto old_group = group_stack.
back();
217 inc_group_map[old_group.start] = old_group;
227 for (
auto& group : inc_group_map) {