mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Fixed some more warnings, moved function to get ExtrusionRole name into ExtrusionEntity.hpp
So it can be called from wherever it may be needed
This commit is contained in:
		
							parent
							
								
									3f988b314c
								
							
						
					
					
						commit
						a985a2720f
					
				
					 9 changed files with 105 additions and 123 deletions
				
			
		|  | @ -8,6 +8,8 @@ | |||
| #include <limits> | ||||
| #include <sstream> | ||||
| 
 | ||||
| #define L(s) (s) | ||||
| 
 | ||||
| namespace Slic3r { | ||||
|      | ||||
| void | ||||
|  | @ -318,4 +320,39 @@ ExtrusionLoop::min_mm3_per_mm() const | |||
|     return min_mm3_per_mm; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| std::string ExtrusionEntity::role_to_string(ExtrusionRole role) | ||||
| { | ||||
|     switch (role) { | ||||
|         case erNone                         : return L("None"); | ||||
|         case erPerimeter                    : return L("Perimeter"); | ||||
|         case erExternalPerimeter            : return L("External perimeter"); | ||||
|         case erOverhangPerimeter            : return L("Overhang perimeter"); | ||||
|         case erInternalInfill               : return L("Internal infill"); | ||||
|         case erSolidInfill                  : return L("Solid infill"); | ||||
|         case erTopSolidInfill               : return L("Top solid infill"); | ||||
|         case erBridgeInfill                 : return L("Bridge infill"); | ||||
|         case erGapFill                      : return L("Gap fill"); | ||||
|         case erSkirt                        : return L("Skirt"); | ||||
|         case erSupportMaterial              : return L("Support material"); | ||||
|         case erSupportMaterialInterface     : return L("Support material interface"); | ||||
|         case erWipeTower                    : return L("Wipe tower"); | ||||
|         case erCustom                       : return L("Custom"); | ||||
|         case erMixed                        : return L("Mixed"); | ||||
|         default                             : assert(false); | ||||
|     } | ||||
|     return ""; | ||||
| } | ||||
| 
 | ||||
| //std::string ExtrusionLoop::role_to_string(ExtrusionLoopRole role)
 | ||||
| //{
 | ||||
| //    switch (role) {
 | ||||
| //        case elrDefault                 : return "elrDefault";
 | ||||
| //        case elrContourInternalPerimeter: return "elrContourInternalPerimeter";
 | ||||
| //        case elrSkirt                   : return "elrSkirt";
 | ||||
| //        default                         : assert(false);
 | ||||
| //    }
 | ||||
| //};
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ class ExPolygonCollection; | |||
| class ExtrusionEntityCollection; | ||||
| class Extruder; | ||||
| 
 | ||||
| /* Each ExtrusionRole value identifies a distinct set of { extruder, speed } */ | ||||
| // Each ExtrusionRole value identifies a distinct set of { extruder, speed }
 | ||||
| enum ExtrusionRole { | ||||
|     erNone, | ||||
|     erPerimeter, | ||||
|  | @ -29,9 +29,17 @@ enum ExtrusionRole { | |||
|     erCustom, | ||||
|     // Extrusion role for a collection with multiple extrusion roles.
 | ||||
|     erMixed, | ||||
|     erCount, | ||||
|     erCount | ||||
| }; | ||||
| 
 | ||||
| // Special flags describing loop
 | ||||
| enum ExtrusionLoopRole { | ||||
|     elrDefault, | ||||
|     elrContourInternalPerimeter, | ||||
|     elrSkirt, | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| inline bool is_perimeter(ExtrusionRole role) | ||||
| { | ||||
|     return role == erPerimeter | ||||
|  | @ -59,13 +67,6 @@ inline bool is_bridge(ExtrusionRole role) { | |||
|         || role == erOverhangPerimeter; | ||||
| } | ||||
| 
 | ||||
| /* Special flags describing loop */ | ||||
| enum ExtrusionLoopRole { | ||||
|     elrDefault, | ||||
|     elrContourInternalPerimeter, | ||||
|     elrSkirt, | ||||
| }; | ||||
| 
 | ||||
| class ExtrusionEntity | ||||
| { | ||||
| public: | ||||
|  | @ -74,7 +75,7 @@ public: | |||
|     virtual bool is_loop() const { return false; } | ||||
|     virtual bool can_reverse() const { return true; } | ||||
|     virtual ExtrusionEntity* clone() const = 0; | ||||
|     virtual ~ExtrusionEntity() {}; | ||||
|     virtual ~ExtrusionEntity() {} | ||||
|     virtual void reverse() = 0; | ||||
|     virtual Point first_point() const = 0; | ||||
|     virtual Point last_point() const = 0; | ||||
|  | @ -96,6 +97,8 @@ public: | |||
|     virtual Polylines as_polylines() const { Polylines dst; this->collect_polylines(dst); return dst; } | ||||
|     virtual double length() const = 0; | ||||
|     virtual double total_volume() const = 0; | ||||
| 
 | ||||
|     static std::string role_to_string(ExtrusionRole role); | ||||
| }; | ||||
| 
 | ||||
| typedef std::vector<ExtrusionEntity*> ExtrusionEntitiesPtr; | ||||
|  | @ -117,17 +120,17 @@ public: | |||
|     // Id of the color, used for visualization purposed in the color printing case.
 | ||||
|     unsigned int cp_color_id; | ||||
| 
 | ||||
|     ExtrusionPath(ExtrusionRole role) : mm3_per_mm(-1), width(-1), height(-1), feedrate(0.0f), extruder_id(0), cp_color_id(0), m_role(role) {}; | ||||
|     ExtrusionPath(ExtrusionRole role, double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height), feedrate(0.0f), extruder_id(0), cp_color_id(0), m_role(role) {}; | ||||
|     ExtrusionPath(ExtrusionRole role) : mm3_per_mm(-1), width(-1), height(-1), feedrate(0.0f), extruder_id(0), cp_color_id(0), m_role(role) {} | ||||
|     ExtrusionPath(ExtrusionRole role, double mm3_per_mm, float width, float height) : mm3_per_mm(mm3_per_mm), width(width), height(height), feedrate(0.0f), extruder_id(0), cp_color_id(0), m_role(role) {} | ||||
|     ExtrusionPath(const ExtrusionPath &rhs) : polyline(rhs.polyline), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), feedrate(rhs.feedrate), extruder_id(rhs.extruder_id), cp_color_id(rhs.cp_color_id), m_role(rhs.m_role) {} | ||||
|     ExtrusionPath(ExtrusionPath &&rhs) : polyline(std::move(rhs.polyline)), mm3_per_mm(rhs.mm3_per_mm), width(rhs.width), height(rhs.height), feedrate(rhs.feedrate), extruder_id(rhs.extruder_id), cp_color_id(rhs.cp_color_id), m_role(rhs.m_role) {} | ||||
| //    ExtrusionPath(ExtrusionRole role, const Flow &flow) : m_role(role), mm3_per_mm(flow.mm3_per_mm()), width(flow.width), height(flow.height), feedrate(0.0f), extruder_id(0) {};
 | ||||
| 
 | ||||
|     ExtrusionPath& operator=(const ExtrusionPath &rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->feedrate = rhs.feedrate, this->extruder_id = rhs.extruder_id, this->cp_color_id = rhs.cp_color_id, this->polyline = rhs.polyline; return *this; } | ||||
|     ExtrusionPath& operator=(ExtrusionPath &&rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->feedrate = rhs.feedrate, this->extruder_id = rhs.extruder_id, this->cp_color_id = rhs.cp_color_id, this->polyline = std::move(rhs.polyline); return *this; } | ||||
|     ExtrusionPath& operator=(const ExtrusionPath &rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->feedrate = rhs.feedrate; this->extruder_id = rhs.extruder_id; this->cp_color_id = rhs.cp_color_id; this->polyline = rhs.polyline; return *this; } | ||||
|     ExtrusionPath& operator=(ExtrusionPath &&rhs) { m_role = rhs.m_role; this->mm3_per_mm = rhs.mm3_per_mm; this->width = rhs.width; this->height = rhs.height; this->feedrate = rhs.feedrate; this->extruder_id = rhs.extruder_id; this->cp_color_id = rhs.cp_color_id; this->polyline = std::move(rhs.polyline); return *this; } | ||||
| 
 | ||||
|     ExtrusionPath* clone() const { return new ExtrusionPath (*this); } | ||||
|     void reverse() { this->polyline.reverse(); } | ||||
|     ExtrusionPath* clone() const override { return new ExtrusionPath (*this); } | ||||
|     void reverse() override { this->polyline.reverse(); } | ||||
|     Point first_point() const override { return this->polyline.points.front(); } | ||||
|     Point last_point() const override { return this->polyline.points.back(); } | ||||
|     size_t size() const { return this->polyline.size(); } | ||||
|  | @ -145,18 +148,18 @@ public: | |||
|     ExtrusionRole role() const override { return m_role; } | ||||
|     // Produce a list of 2D polygons covered by the extruded paths, offsetted by the extrusion width.
 | ||||
|     // Increase the offset by scaled_epsilon to achieve an overlap, so a union will produce no gaps.
 | ||||
|     void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const; | ||||
|     void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const override; | ||||
|     // Produce a list of 2D polygons covered by the extruded paths, offsetted by the extrusion spacing.
 | ||||
|     // Increase the offset by scaled_epsilon to achieve an overlap, so a union will produce no gaps.
 | ||||
|     // Useful to calculate area of an infill, which has been really filled in by a 100% rectilinear infill.
 | ||||
|     void polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const; | ||||
|     void polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const override; | ||||
|     Polygons polygons_covered_by_width(const float scaled_epsilon = 0.f) const | ||||
|         { Polygons out; this->polygons_covered_by_width(out, scaled_epsilon); return out; } | ||||
|     Polygons polygons_covered_by_spacing(const float scaled_epsilon = 0.f) const | ||||
|         { Polygons out; this->polygons_covered_by_spacing(out, scaled_epsilon); return out; } | ||||
|     // Minimum volumetric velocity of this extrusion entity. Used by the constant nozzle pressure algorithm.
 | ||||
|     double min_mm3_per_mm() const { return this->mm3_per_mm; } | ||||
|     Polyline as_polyline() const { return this->polyline; } | ||||
|     double min_mm3_per_mm() const override { return this->mm3_per_mm; } | ||||
|     Polyline as_polyline() const override { return this->polyline; } | ||||
|     void   collect_polylines(Polylines &dst) const override { if (! this->polyline.empty()) dst.emplace_back(this->polyline); } | ||||
|     double total_volume() const override { return mm3_per_mm * unscale<double>(length()); } | ||||
| 
 | ||||
|  | @ -174,37 +177,37 @@ class ExtrusionMultiPath : public ExtrusionEntity | |||
| public: | ||||
|     ExtrusionPaths paths; | ||||
|      | ||||
|     ExtrusionMultiPath() {}; | ||||
|     ExtrusionMultiPath() {} | ||||
|     ExtrusionMultiPath(const ExtrusionMultiPath &rhs) : paths(rhs.paths) {} | ||||
|     ExtrusionMultiPath(ExtrusionMultiPath &&rhs) : paths(std::move(rhs.paths)) {} | ||||
|     ExtrusionMultiPath(const ExtrusionPaths &paths) : paths(paths) {}; | ||||
|     ExtrusionMultiPath(const ExtrusionPaths &paths) : paths(paths) {} | ||||
|     ExtrusionMultiPath(const ExtrusionPath &path) { this->paths.push_back(path); } | ||||
| 
 | ||||
|     ExtrusionMultiPath& operator=(const ExtrusionMultiPath &rhs) { this->paths = rhs.paths; return *this; } | ||||
|     ExtrusionMultiPath& operator=(ExtrusionMultiPath &&rhs) { this->paths = std::move(rhs.paths); return *this; } | ||||
| 
 | ||||
|     bool is_loop() const { return false; } | ||||
|     bool can_reverse() const { return true; } | ||||
|     ExtrusionMultiPath* clone() const { return new ExtrusionMultiPath(*this); } | ||||
|     void reverse(); | ||||
|     bool is_loop() const override { return false; } | ||||
|     bool can_reverse() const override { return true; } | ||||
|     ExtrusionMultiPath* clone() const override { return new ExtrusionMultiPath(*this); } | ||||
|     void reverse() override; | ||||
|     Point first_point() const override { return this->paths.front().polyline.points.front(); } | ||||
|     Point last_point() const override { return this->paths.back().polyline.points.back(); } | ||||
|     double length() const override; | ||||
|     ExtrusionRole role() const override { return this->paths.empty() ? erNone : this->paths.front().role(); } | ||||
|     // Produce a list of 2D polygons covered by the extruded paths, offsetted by the extrusion width.
 | ||||
|     // Increase the offset by scaled_epsilon to achieve an overlap, so a union will produce no gaps.
 | ||||
|     void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const; | ||||
|     void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const override; | ||||
|     // Produce a list of 2D polygons covered by the extruded paths, offsetted by the extrusion spacing.
 | ||||
|     // Increase the offset by scaled_epsilon to achieve an overlap, so a union will produce no gaps.
 | ||||
|     // Useful to calculate area of an infill, which has been really filled in by a 100% rectilinear infill.
 | ||||
|     void polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const; | ||||
|     void polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const override; | ||||
|     Polygons polygons_covered_by_width(const float scaled_epsilon = 0.f) const | ||||
|         { Polygons out; this->polygons_covered_by_width(out, scaled_epsilon); return out; } | ||||
|     Polygons polygons_covered_by_spacing(const float scaled_epsilon = 0.f) const | ||||
|         { Polygons out; this->polygons_covered_by_spacing(out, scaled_epsilon); return out; } | ||||
|     // Minimum volumetric velocity of this extrusion entity. Used by the constant nozzle pressure algorithm.
 | ||||
|     double min_mm3_per_mm() const; | ||||
|     Polyline as_polyline() const; | ||||
|     double min_mm3_per_mm() const override; | ||||
|     Polyline as_polyline() const override; | ||||
|     void   collect_polylines(Polylines &dst) const override { Polyline pl = this->as_polyline(); if (! pl.empty()) dst.emplace_back(std::move(pl)); } | ||||
|     double total_volume() const override { double volume =0.; for (const auto& path : paths) volume += path.total_volume(); return volume; } | ||||
| }; | ||||
|  | @ -215,19 +218,19 @@ class ExtrusionLoop : public ExtrusionEntity | |||
| public: | ||||
|     ExtrusionPaths paths; | ||||
|      | ||||
|     ExtrusionLoop(ExtrusionLoopRole role = elrDefault) : m_loop_role(role) {}; | ||||
|     ExtrusionLoop(const ExtrusionPaths &paths, ExtrusionLoopRole role = elrDefault) : paths(paths), m_loop_role(role) {}; | ||||
|     ExtrusionLoop(ExtrusionPaths &&paths, ExtrusionLoopRole role = elrDefault) : paths(std::move(paths)), m_loop_role(role) {}; | ||||
|     ExtrusionLoop(ExtrusionLoopRole role = elrDefault) : m_loop_role(role) {} | ||||
|     ExtrusionLoop(const ExtrusionPaths &paths, ExtrusionLoopRole role = elrDefault) : paths(paths), m_loop_role(role) {} | ||||
|     ExtrusionLoop(ExtrusionPaths &&paths, ExtrusionLoopRole role = elrDefault) : paths(std::move(paths)), m_loop_role(role) {} | ||||
|     ExtrusionLoop(const ExtrusionPath &path, ExtrusionLoopRole role = elrDefault) : m_loop_role(role)  | ||||
|         { this->paths.push_back(path); }; | ||||
|         { this->paths.push_back(path); } | ||||
|     ExtrusionLoop(const ExtrusionPath &&path, ExtrusionLoopRole role = elrDefault) : m_loop_role(role) | ||||
|         { this->paths.emplace_back(std::move(path)); }; | ||||
|     bool is_loop() const { return true; } | ||||
|     bool can_reverse() const { return false; } | ||||
|     ExtrusionLoop* clone() const { return new ExtrusionLoop (*this); } | ||||
|         { this->paths.emplace_back(std::move(path)); } | ||||
|     bool is_loop() const override{ return true; } | ||||
|     bool can_reverse() const override { return false; } | ||||
|     ExtrusionLoop* clone() const override{ return new ExtrusionLoop (*this); } | ||||
|     bool make_clockwise(); | ||||
|     bool make_counter_clockwise(); | ||||
|     void reverse(); | ||||
|     void reverse() override; | ||||
|     Point first_point() const override { return this->paths.front().polyline.points.front(); } | ||||
|     Point last_point() const override { assert(first_point() == this->paths.back().polyline.points.back()); return first_point(); } | ||||
|     Polygon polygon() const; | ||||
|  | @ -242,21 +245,23 @@ public: | |||
|     ExtrusionLoopRole loop_role() const { return m_loop_role; } | ||||
|     // Produce a list of 2D polygons covered by the extruded paths, offsetted by the extrusion width.
 | ||||
|     // Increase the offset by scaled_epsilon to achieve an overlap, so a union will produce no gaps.
 | ||||
|     void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const; | ||||
|     void polygons_covered_by_width(Polygons &out, const float scaled_epsilon) const override; | ||||
|     // Produce a list of 2D polygons covered by the extruded paths, offsetted by the extrusion spacing.
 | ||||
|     // Increase the offset by scaled_epsilon to achieve an overlap, so a union will produce no gaps.
 | ||||
|     // Useful to calculate area of an infill, which has been really filled in by a 100% rectilinear infill.
 | ||||
|     void polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const; | ||||
|     void polygons_covered_by_spacing(Polygons &out, const float scaled_epsilon) const  override; | ||||
|     Polygons polygons_covered_by_width(const float scaled_epsilon = 0.f) const | ||||
|         { Polygons out; this->polygons_covered_by_width(out, scaled_epsilon); return out; } | ||||
|     Polygons polygons_covered_by_spacing(const float scaled_epsilon = 0.f) const | ||||
|         { Polygons out; this->polygons_covered_by_spacing(out, scaled_epsilon); return out; } | ||||
|     // Minimum volumetric velocity of this extrusion entity. Used by the constant nozzle pressure algorithm.
 | ||||
|     double min_mm3_per_mm() const; | ||||
|     Polyline as_polyline() const { return this->polygon().split_at_first_point(); } | ||||
|     double min_mm3_per_mm() const override; | ||||
|     Polyline as_polyline() const override { return this->polygon().split_at_first_point(); } | ||||
|     void   collect_polylines(Polylines &dst) const override { Polyline pl = this->as_polyline(); if (! pl.empty()) dst.emplace_back(std::move(pl)); } | ||||
|     double total_volume() const override { double volume =0.; for (const auto& path : paths) volume += path.total_volume(); return volume; } | ||||
| 
 | ||||
|     //static inline std::string role_to_string(ExtrusionLoopRole role);
 | ||||
| 
 | ||||
| private: | ||||
|     ExtrusionLoopRole m_loop_role; | ||||
| }; | ||||
|  |  | |||
|  | @ -1916,7 +1916,7 @@ void GCode::process_layer( | |||
|     _write(file, gcode); | ||||
|     BOOST_LOG_TRIVIAL(trace) << "Exported layer " << layer.id() << " print_z " << print_z <<  | ||||
|         ", time estimator memory: " << | ||||
|             format_memsize_MB(m_normal_time_estimator.memory_used() + m_silent_time_estimator_enabled ? m_silent_time_estimator.memory_used() : 0) << | ||||
|             format_memsize_MB(m_normal_time_estimator.memory_used() + (m_silent_time_estimator_enabled ? m_silent_time_estimator.memory_used() : 0)) << | ||||
|         ", analyzer memory: " << | ||||
|             format_memsize_MB(m_analyzer.memory_used()) << | ||||
|         log_memory_info(); | ||||
|  | @ -1997,38 +1997,6 @@ std::string GCode::change_layer(coordf_t print_z) | |||
|     return gcode; | ||||
| } | ||||
| 
 | ||||
| static inline const char* ExtrusionRole2String(const ExtrusionRole role) | ||||
| { | ||||
|     switch (role) { | ||||
|     case erNone:                        return "erNone"; | ||||
|     case erPerimeter:                   return "erPerimeter"; | ||||
|     case erExternalPerimeter:           return "erExternalPerimeter"; | ||||
|     case erOverhangPerimeter:           return "erOverhangPerimeter"; | ||||
|     case erInternalInfill:              return "erInternalInfill"; | ||||
|     case erSolidInfill:                 return "erSolidInfill"; | ||||
|     case erTopSolidInfill:              return "erTopSolidInfill"; | ||||
|     case erBridgeInfill:                return "erBridgeInfill"; | ||||
|     case erGapFill:                     return "erGapFill"; | ||||
|     case erSkirt:                       return "erSkirt"; | ||||
|     case erSupportMaterial:             return "erSupportMaterial"; | ||||
|     case erSupportMaterialInterface:    return "erSupportMaterialInterface"; | ||||
|     case erWipeTower:                   return "erWipeTower"; | ||||
|     case erMixed:                       return "erMixed"; | ||||
| 
 | ||||
|     default:                            return "erInvalid"; | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
| static inline const char* ExtrusionLoopRole2String(const ExtrusionLoopRole role) | ||||
| { | ||||
|     switch (role) { | ||||
|     case elrDefault:                    return "elrDefault"; | ||||
|     case elrContourInternalPerimeter:   return "elrContourInternalPerimeter"; | ||||
|     case elrSkirt:                      return "elrSkirt"; | ||||
|     default:                            return "elrInvalid"; | ||||
|     } | ||||
| }; | ||||
| 
 | ||||
| // Return a value in <0, 1> of a cubic B-spline kernel centered around zero.
 | ||||
| // The B-spline is re-scaled so it has value 1 at zero.
 | ||||
| static inline float bspline_kernel(float x) | ||||
|  | @ -2411,8 +2379,8 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou | |||
|     // extrude along the path
 | ||||
|     std::string gcode; | ||||
|     for (ExtrusionPaths::iterator path = paths.begin(); path != paths.end(); ++path) { | ||||
| //    description += ExtrusionLoopRole2String(loop.loop_role());
 | ||||
| //    description += ExtrusionRole2String(path->role);
 | ||||
| //    description += ExtrusionLoop::role_to_string(loop.loop_role());
 | ||||
| //    description += ExtrusionEntity::role_to_string(path->role);
 | ||||
|         path->simplify(SCALED_RESOLUTION); | ||||
|         gcode += this->_extrude(*path, description, speed); | ||||
|     } | ||||
|  | @ -2465,8 +2433,8 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, std::string | |||
|     // extrude along the path
 | ||||
|     std::string gcode; | ||||
|     for (ExtrusionPath path : multipath.paths) { | ||||
| //    description += ExtrusionLoopRole2String(loop.loop_role());
 | ||||
| //    description += ExtrusionRole2String(path->role);
 | ||||
| //    description += ExtrusionLoop::role_to_string(loop.loop_role());
 | ||||
| //    description += ExtrusionEntity::role_to_string(path->role);
 | ||||
|         path.simplify(SCALED_RESOLUTION); | ||||
|         gcode += this->_extrude(path, description, speed); | ||||
|     } | ||||
|  | @ -2495,7 +2463,7 @@ std::string GCode::extrude_entity(const ExtrusionEntity &entity, std::string des | |||
| 
 | ||||
| std::string GCode::extrude_path(ExtrusionPath path, std::string description, double speed) | ||||
| { | ||||
| //    description += ExtrusionRole2String(path.role());
 | ||||
| //    description += ExtrusionEntity::role_to_string(path.role());
 | ||||
|     path.simplify(SCALED_RESOLUTION); | ||||
|     std::string gcode = this->_extrude(path, description, speed); | ||||
|     if (m_wipe.enable) { | ||||
|  |  | |||
|  | @ -121,7 +121,7 @@ GCodePreviewData::LegendItem::LegendItem(const std::string& text, const GCodePre | |||
| { | ||||
| } | ||||
| 
 | ||||
| const GCodePreviewData::Color GCodePreviewData::Extrusion::Default_Extrusion_Role_Colors[Num_Extrusion_Roles] = | ||||
| const GCodePreviewData::Color GCodePreviewData::Extrusion::Default_Extrusion_Role_Colors[erCount] = | ||||
| { | ||||
|     Color(0.0f, 0.0f, 0.0f, 1.0f),   // erNone
 | ||||
|     Color(1.0f, 0.0f, 0.0f, 1.0f),   // erPerimeter
 | ||||
|  | @ -140,44 +140,20 @@ const GCodePreviewData::Color GCodePreviewData::Extrusion::Default_Extrusion_Rol | |||
|     Color(0.0f, 0.0f, 0.0f, 1.0f)    // erMixed
 | ||||
| }; | ||||
| 
 | ||||
| // todo: merge with Slic3r::ExtrusionRole2String() from GCode.cpp
 | ||||
| const std::string GCodePreviewData::Extrusion::Default_Extrusion_Role_Names[Num_Extrusion_Roles] | ||||
| { | ||||
|     L("None"), | ||||
|     L("Perimeter"), | ||||
|     L("External perimeter"), | ||||
|     L("Overhang perimeter"), | ||||
|     L("Internal infill"), | ||||
|     L("Solid infill"), | ||||
|     L("Top solid infill"), | ||||
|     L("Bridge infill"), | ||||
|     L("Gap fill"), | ||||
|     L("Skirt"), | ||||
|     L("Support material"), | ||||
|     L("Support material interface"), | ||||
|     L("Wipe tower"), | ||||
|     L("Custom"), | ||||
|     L("Mixed") | ||||
| }; | ||||
| 
 | ||||
| const GCodePreviewData::Extrusion::EViewType GCodePreviewData::Extrusion::Default_View_Type = GCodePreviewData::Extrusion::FeatureType; | ||||
| 
 | ||||
| void GCodePreviewData::Extrusion::set_default() | ||||
| { | ||||
|     view_type = Default_View_Type; | ||||
| 
 | ||||
|     ::memcpy((void*)role_colors, (const void*)Default_Extrusion_Role_Colors, Num_Extrusion_Roles * sizeof(Color)); | ||||
|     ::memcpy((void*)role_colors, (const void*)Default_Extrusion_Role_Colors, erCount * sizeof(Color)); | ||||
| 
 | ||||
|     for (unsigned int i = 0; i < Num_Extrusion_Roles; ++i) | ||||
|     { | ||||
|         role_names[i] = Default_Extrusion_Role_Names[i]; | ||||
|     } | ||||
|     for (unsigned int i = 0; i < erCount; ++i) | ||||
|         role_names[i] = ExtrusionEntity::role_to_string(ExtrusionRole(i)); | ||||
| 
 | ||||
|     role_flags = 0; | ||||
|     for (unsigned int i = 0; i < Num_Extrusion_Roles; ++i) | ||||
|     { | ||||
|     for (unsigned int i = 0; i < erCount; ++i) | ||||
|         role_flags |= 1 << i; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| bool GCodePreviewData::Extrusion::is_role_flag_set(ExtrusionRole role) const | ||||
|  | @ -318,7 +294,7 @@ GCodePreviewData::Color GCodePreviewData::get_volumetric_rate_color(float rate) | |||
| 
 | ||||
| void GCodePreviewData::set_extrusion_role_color(const std::string& role_name, float red, float green, float blue, float alpha) | ||||
| { | ||||
|     for (unsigned int i = 0; i < Extrusion::Num_Extrusion_Roles; ++i) | ||||
|     for (unsigned int i = 0; i < erCount; ++i) | ||||
|     { | ||||
|         if (role_name == extrusion.role_names[i]) | ||||
|         { | ||||
|  |  | |||
|  | @ -80,9 +80,8 @@ public: | |||
|             Num_View_Types | ||||
|         }; | ||||
| 
 | ||||
|         static const unsigned int Num_Extrusion_Roles = (unsigned int)erMixed + 1; | ||||
|         static const Color Default_Extrusion_Role_Colors[Num_Extrusion_Roles]; | ||||
|         static const std::string Default_Extrusion_Role_Names[Num_Extrusion_Roles]; | ||||
|         static const Color Default_Extrusion_Role_Colors[erCount]; | ||||
|         static const std::string Default_Extrusion_Role_Names[erCount]; | ||||
|         static const EViewType Default_View_Type; | ||||
| 
 | ||||
|         struct Layer | ||||
|  | @ -96,8 +95,8 @@ public: | |||
|         typedef std::vector<Layer> LayersList; | ||||
| 
 | ||||
|         EViewType view_type; | ||||
|         Color role_colors[Num_Extrusion_Roles]; | ||||
|         std::string role_names[Num_Extrusion_Roles]; | ||||
|         Color role_colors[erCount]; | ||||
|         std::string role_names[erCount]; | ||||
|         LayersList layers; | ||||
|         unsigned int role_flags; | ||||
| 
 | ||||
|  |  | |||
|  | @ -60,10 +60,6 @@ | |||
| #endif // ENABLE_RENDER_STATISTICS
 | ||||
| 
 | ||||
| static const float TRACKBALLSIZE = 0.8f; | ||||
| static const float GROUND_Z = -0.02f; | ||||
| 
 | ||||
| static const float GIZMO_RESET_BUTTON_HEIGHT = 22.0f; | ||||
| static const float GIZMO_RESET_BUTTON_WIDTH = 70.f; | ||||
| 
 | ||||
| static const float DEFAULT_BG_DARK_COLOR[3] = { 0.478f, 0.478f, 0.478f }; | ||||
| static const float DEFAULT_BG_LIGHT_COLOR[3] = { 0.753f, 0.753f, 0.753f }; | ||||
|  |  | |||
|  | @ -433,7 +433,6 @@ private: | |||
|     bool m_initialized; | ||||
|     bool m_apply_zoom_to_volumes_filter; | ||||
|     mutable std::vector<int> m_hover_volume_idxs; | ||||
|     bool m_warning_texture_enabled; | ||||
|     bool m_legend_texture_enabled; | ||||
|     bool m_picking_enabled; | ||||
|     bool m_moving_enabled; | ||||
|  |  | |||
|  | @ -1074,8 +1074,8 @@ const std::vector<std::string>& ObjectList::get_options_for_bundle(const wxStrin | |||
| static bool improper_category(const std::string& category, const int extruders_cnt, const bool is_object_settings = true) | ||||
| { | ||||
|     return  category.empty() ||  | ||||
|             extruders_cnt == 1 && (category == "Extruders" || category == "Wipe options" ) || | ||||
|             !is_object_settings && category == "Support material"; | ||||
|             (extruders_cnt == 1 && (category == "Extruders" || category == "Wipe options" )) || | ||||
|             (!is_object_settings && category == "Support material"); | ||||
| } | ||||
| 
 | ||||
| void ObjectList::get_options_menu(settings_menu_hierarchy& settings_menu, const bool is_part) | ||||
|  |  | |||
|  | @ -363,12 +363,14 @@ private: | |||
| 	MutableHistoryInterval& operator=(const MutableHistoryInterval &rhs); | ||||
| }; | ||||
| 
 | ||||
| #ifdef SLIC3R_UNDOREDO_DEBUG | ||||
| static inline std::string ptr_to_string(const void* ptr) | ||||
| { | ||||
| 	char buf[64]; | ||||
| 	sprintf(buf, "%p", ptr); | ||||
| 	return buf; | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| // Smaller objects (Model, ModelObject, ModelInstance, ModelVolume, DynamicPrintConfig)
 | ||||
| // are mutable and there is not tracking of the changes, therefore a snapshot needs to be
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Lukas Matena
						Lukas Matena