- for (int i = 0; i < oldCellSize; i++)
- {
- switch (compactState)
- {
- case lookHoleStart:
- if (this->Types->GetValue(i) == VTK_EMPTY_CELL)
- {
- MESSAGE(" -------- newCellSize, startHole " << i << " " << oldCellSize);
- startHole = i;
- compactState = lookHoleEnd;
- if (!alreadyCopied) // copy the first bloc
- {
- MESSAGE("--------- copy first bloc before hole " << i << " " << oldCellSize);
- copyBloc(newTypes, idCellsOldToNew, idNodesOldToNew, newConnectivity, newLocations, pointsCell,
- alreadyCopied, 0, startHole);
- }
- }
- break;
- case lookHoleEnd:
- if (this->Types->GetValue(i) != VTK_EMPTY_CELL)
- {
- MESSAGE(" -------- newCellSize, EndHole " << i << " " << oldCellSize);
- endHole = i;
- startBloc = i;
- compactState = lookBlocEnd;
- holes += endHole - startHole;
- }
- break;
- case lookBlocEnd:
- endBloc = 0;
- if (this->Types->GetValue(i) == VTK_EMPTY_CELL)
- endBloc = i;
- else if (i == (oldCellSize - 1))
- endBloc = i + 1;
- if (endBloc)
- {
- MESSAGE(" -------- newCellSize, endBloc " << endBloc << " " << oldCellSize);
- copyBloc(newTypes, idCellsOldToNew, idNodesOldToNew, newConnectivity, newLocations, pointsCell,
- alreadyCopied, startBloc, endBloc);
- compactState = lookHoleEnd;
- }
- break;
- }
- }
- if (!alreadyCopied) // no hole, but shorter
- {
- MESSAGE(" -------- newCellSize, shorter " << oldCellSize);
- copyBloc(newTypes, idCellsOldToNew, idNodesOldToNew, newConnectivity, newLocations, pointsCell, alreadyCopied, 0,
- oldCellSize);
- }
+ alreadyCopied = 0;
+ int i = 0;
+ while ( i < oldCellSize )
+ {
+ // skip a hole if any
+ while ( i < oldCellSize && this->Types->GetValue(i) == VTK_EMPTY_CELL )
+ ++i;
+ int startBloc = i;
+ // look for a block end
+ while ( i < oldCellSize && this->Types->GetValue(i) != VTK_EMPTY_CELL )
+ ++i;
+ int endBloc = i;
+ if ( endBloc > startBloc )
+ copyBloc(newTypes, idCellsOldToNew, idNodesOldToNew, newConnectivity, newLocations, pointsCell,
+ alreadyCopied, startBloc, endBloc);
+ }
+// for (int i = 0; i < oldCellSize; i++)
+// {
+// switch (compactState)
+// {
+// case lookHoleStart:
+// if (this->Types->GetValue(i) == VTK_EMPTY_CELL)
+// {
+// MESSAGE(" -------- newCellSize, startHole " << i << " " << oldCellSize);
+// startHole = i;
+// compactState = lookHoleEnd;
+// if (!alreadyCopied) // copy the first bloc
+// {
+// MESSAGE("--------- copy first bloc before hole " << i << " " << oldCellSize);
+// copyBloc(newTypes, idCellsOldToNew, idNodesOldToNew, newConnectivity, newLocations, pointsCell,
+// alreadyCopied, 0, startHole);
+// }
+// }
+// break;
+// case lookHoleEnd:
+// if (this->Types->GetValue(i) != VTK_EMPTY_CELL)
+// {
+// MESSAGE(" -------- newCellSize, EndHole " << i << " " << oldCellSize);
+// endHole = i;
+// startBloc = i;
+// compactState = lookBlocEnd;
+// holes += endHole - startHole;
+// }
+// break;
+// case lookBlocEnd:
+// endBloc = 0;
+// if (this->Types->GetValue(i) == VTK_EMPTY_CELL)
+// endBloc = i;
+// else if (i == (oldCellSize - 1))
+// endBloc = i + 1;
+// if (endBloc)
+// {
+// MESSAGE(" -------- newCellSize, endBloc " << endBloc << " " << oldCellSize);
+// copyBloc(newTypes, idCellsOldToNew, idNodesOldToNew, newConnectivity, newLocations, pointsCell,
+// alreadyCopied, startBloc, endBloc);
+// compactState = lookHoleEnd;
+// }
+// break;
+// }
+// }
+// if (!alreadyCopied) // no hole, but shorter
+// {
+// MESSAGE(" -------- newCellSize, shorter " << oldCellSize);
+// copyBloc(newTypes, idCellsOldToNew, idNodesOldToNew, newConnectivity, newLocations, pointsCell, alreadyCopied, 0,
+// oldCellSize);
+// }