MeshLib C++ Docs
Loading...
Searching...
No Matches
MRObjectGcode.h
Go to the documentation of this file.
1#pragma once
3#include "MRGcodeProcessor.h"
4#include "MRColor.h"
5
6namespace MR
7{
8
9using GcodeSource = std::vector<std::string>;
10
14{
15public:
17 ObjectGcode( ObjectGcode&& ) = default;
19
20 constexpr static const char* TypeName() noexcept { return "ObjectGcode"; }
21 virtual const char* typeName() const override { return TypeName(); }
22
23 constexpr static const char* ClassName() noexcept { return "G-code"; }
24 virtual std::string className() const override { return ClassName(); }
25
26 constexpr static const char* ClassNameInPlural() noexcept { return "G-codes"; }
27 virtual std::string classNameInPlural() const override { return ClassNameInPlural(); }
28
29 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
30 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
31
32 MRMESH_API virtual void setCNCMachineSettings( const CNCMachineSettings& cncSettings );
33 virtual const CNCMachineSettings& getCNCMachineSettings() const { return cncMachineSettings_; }
34
35 MRMESH_API virtual void setGcodeSource( const std::shared_ptr<GcodeSource>& gcodeSource );
36 virtual const std::shared_ptr<GcodeSource>& gcodeSource() const { return gcodeSource_; }
37 // get action list (produced from g-code source)
38 virtual const std::vector<GcodeProcessor::MoveAction>& actionList() const { return actionList_; }
39 // get mapping of tool path polyline segment id to source line number of g-code source
40 virtual const std::vector<int>& segmentToSourceLineMap() const { return segmentToSourceLineMap_; }
41
42 MRMESH_API virtual void setDirtyFlags( uint32_t mask, bool invalidateCaches = true ) override;
43
46
47 MRMESH_API virtual std::vector<std::string> getInfoLines() const override;
48
49 // set drawing feedrate as gradient of brightness
50 MRMESH_API void switchFeedrateGradient( bool isFeedrateGradientEnabled );
51 bool isFeedrateGradient() const { return feedrateGradientEnabled_; }
52
53 MRMESH_API void setIdleColor( const Color& color );
54 const Color& getIdleColor() const { return idleColor_; }
55
57 using GcodeChangedSignal = Signal<void( uint32_t mask )>;
59
60 MRMESH_API virtual bool select( bool isSelected ) override;
61 MRMESH_API virtual void setFrontColor( const Color& color, bool selected, ViewportId viewportId = {} ) override;
62
64 [[nodiscard]] MRMESH_API virtual size_t heapBytes() const override;
65
66protected:
67 ObjectGcode( const ObjectGcode& other ) = default;
68
70 MRMESH_API virtual void swapBase_( Object& other ) override;
73 MRMESH_API virtual void swapSignals_( Object& other ) override;
74
75 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
76
77 MRMESH_API void deserializeFields_( const Json::Value& root ) override;
78
79private:
80 std::shared_ptr<GcodeSource> gcodeSource_;
81 std::vector<GcodeProcessor::MoveAction> actionList_;
82 CNCMachineSettings cncMachineSettings_;
83 void updateHeapUsageCache_();
84 size_t nonTrivialHeapUsageCache_{ 0 };
85
86 std::vector<int> segmentToSourceLineMap_;
87
88 Color idleColor_ = Color(0.3f, 0.3f, 0.3f);
89 float maxFeedrate_ = 0.f;
90 bool feedrateGradientEnabled_ = true;
91
92 void updateColors_();
93 void updateAll_();
94};
95
96}
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMesh/MRMeshFwd.h:84
class with CNC machine emulation settings
Definition MRCNCMachineSettings.h:16
Definition MRObjectGcode.h:14
static constexpr const char * ClassNameInPlural() noexcept
Definition MRObjectGcode.h:26
MRMESH_API void setIdleColor(const Color &color)
virtual MRMESH_API void setGcodeSource(const std::shared_ptr< GcodeSource > &gcodeSource)
virtual const CNCMachineSettings & getCNCMachineSettings() const
Definition MRObjectGcode.h:33
MRMESH_API ObjectGcode()
const Color & getIdleColor() const
Definition MRObjectGcode.h:54
virtual MRMESH_API bool select(bool isSelected) override
selects the object, returns true if value changed, otherwise returns false
virtual const std::vector< GcodeProcessor::MoveAction > & actionList() const
Definition MRObjectGcode.h:38
virtual MRMESH_API void swapBase_(Object &other) override
swaps this object with other
virtual const std::vector< int > & segmentToSourceLineMap() const
Definition MRObjectGcode.h:40
MRMESH_API void switchFeedrateGradient(bool isFeedrateGradientEnabled)
virtual std::string className() const override
Definition MRObjectGcode.h:24
virtual MRMESH_API size_t heapBytes() const override
returns the amount of memory this object occupies on heap
bool isFeedrateGradient() const
Definition MRObjectGcode.h:51
ObjectGcode(ProtectedStruct, const ObjectGcode &obj)
Definition MRObjectGcode.h:45
virtual MRMESH_API std::vector< std::string > getInfoLines() const override
return several info lines that can better describe the object in the UI
virtual MRMESH_API void serializeFields_(Json::Value &root) const override
serializeFields_: serializeBaseFields_ plus polyline serialization
virtual MRMESH_API void setCNCMachineSettings(const CNCMachineSettings &cncSettings)
virtual const std::shared_ptr< GcodeSource > & gcodeSource() const
Definition MRObjectGcode.h:36
ObjectGcode(const ObjectGcode &other)=default
virtual MRMESH_API void setFrontColor(const Color &color, bool selected, ViewportId viewportId={}) override
sets color of object when it is selected/not-selected (depending on argument) in given viewport
ObjectGcode & operator=(ObjectGcode &&)=default
virtual std::string classNameInPlural() const override
Definition MRObjectGcode.h:27
static constexpr const char * TypeName() noexcept
Definition MRObjectGcode.h:20
virtual MRMESH_API std::shared_ptr< Object > shallowClone() const override
virtual MRMESH_API void swapSignals_(Object &other) override
virtual MRMESH_API void setDirtyFlags(uint32_t mask, bool invalidateCaches=true) override
ObjectGcode(ObjectGcode &&)=default
virtual const char * typeName() const override
Definition MRObjectGcode.h:21
virtual MRMESH_API std::shared_ptr< Object > clone() const override
static constexpr const char * ClassName() noexcept
Definition MRObjectGcode.h:23
GcodeChangedSignal gcodeChangedSignal
Definition MRObjectGcode.h:58
MRMESH_API void deserializeFields_(const Json::Value &root) override
deserializeFields_: deserializeBaseFields_ plus polyline deserialization
Definition MRObjectLinesHolder.h:27
named object in the data model
Definition MRObject.h:62
Definition MRViewportId.h:16
Definition MRCameraOrientationPlugin.h:8
std::vector< std::string > GcodeSource
Definition MRMesh/MRMeshFwd.h:669
Definition MRMesh/MRColor.h:9
Definition MRObject.h:279