Moved is_xx() test functions to ExtrusionRole enum class,
changed the tests to use the new ExtrusionRole bitmask.
Follow-up to 5991850db1f2d09d1b7713f42300e2bfe4a42128
e50e96bb26eab4f9d56c98706c03166635cf4fff
c64dbacf88c617e3d676bdaa6c8c81317ccaee5d
Co-authored-by: supermerill <merill@free.fr>
Based on the unfinished idea of @supermerill, defining ExtrusionRole
as a bit mask of ExtrusionRoleModifier.
Because the ExtrusionRole was used for both ExtrusionEntity and
G-code export / G-code viewer, the original ExtrusionRole had to be split
to ExtrusionRole and GCodeExtrusionRole to support bitmask attributes
for the former while keeing a low number of ordinary values for the latter.
with canceled / invalidated states.
Print / PrintObject infrastructure was extended with a cleanup()
callback, which may check for the new State::Canceled / State::Invalid
states of a particular milestone and turn it to State::Fresh
while releasing data of that particular milestone which is no more valid.
Also fixed a bug in 31fbfa56de70bf8093cea5fe56c73b0e6fa017c3
where the PrintObject shared data invalidation condition was flipped.
../src/slic3r/GUI/GLCanvas3D.cpp:3474:46: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<Slic3r::ModelObject*>::size_type’ {aka ‘unsigned int’} [-Wsign-compare]
../src/slic3r/GUI/GLCanvas3D.cpp:3477:58: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<Slic3r::ModelVolume*>::size_type’ {aka ‘unsigned int’} [-Wsign-compare]
../src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp:249:62: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<Slic3r::ModelObject*>::size_type’ {aka ‘unsigned int’} [-Wsign-compare]
../src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp:3603:39: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<Slic3r::ModelObject*>::size_type’ {aka ‘unsigned int’} [-Wsign-compare]
no has_mesh or get_mesh based on states, but specific methods to get the mesh type needed (support, pad, object)
Commented out everything that does not conform in frontend