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#include "MRHeapBytes.h"
6
7namespace MR
8{
11
12
13using GcodeSource = std::vector<std::string>;
14
18{
19public:
21 ObjectGcode( ObjectGcode&& ) = default;
23
24 constexpr static const char* StaticTypeName() noexcept { return "ObjectGcode"; }
25 virtual const char* typeName() const override { return StaticTypeName(); }
26
27 constexpr static const char* StaticClassName() noexcept { return "G-code"; }
28 virtual std::string className() const override { return StaticClassName(); }
29
30 constexpr static const char* StaticClassNameInPlural() noexcept { return "G-codes"; }
31 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
32
33 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
34 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
35
36 MRMESH_API virtual void setCNCMachineSettings( const CNCMachineSettings& cncSettings );
37 virtual const CNCMachineSettings& getCNCMachineSettings() const { return cncMachineSettings_; }
38
39 MRMESH_API virtual void setGcodeSource( const std::shared_ptr<GcodeSource>& gcodeSource );
40 virtual const std::shared_ptr<GcodeSource>& gcodeSource() const { return gcodeSource_; }
42 virtual const std::vector<GcodeProcessor::MoveAction>& actionList() const { return actionList_; }
44 virtual const std::vector<int>& segmentToSourceLineMap() const { return segmentToSourceLineMap_; }
45
46 MRMESH_API virtual void setDirtyFlags( uint32_t mask, bool invalidateCaches = true ) override;
47
50
51 MRMESH_API virtual std::vector<std::string> getInfoLines() const override;
52
54 MRMESH_API void switchFeedrateGradient( bool isFeedrateGradientEnabled );
55 bool isFeedrateGradient() const { return feedrateGradientEnabled_; }
56
57 MRMESH_API void setIdleColor( const Color& color );
58 const Color& getIdleColor() const { return idleColor_; }
59
61 using GcodeChangedSignal = Signal<void( uint32_t mask )>;
63
64 MRMESH_API virtual bool select( bool isSelected ) override;
65 MRMESH_API virtual void setFrontColor( const Color& color, bool selected, ViewportId viewportId = {} ) override;
66
68 [[nodiscard]] MRMESH_API virtual size_t heapBytes() const override;
69
70protected:
71 ObjectGcode( const ObjectGcode& other ) = default;
72
74 MRMESH_API virtual void swapBase_( Object& other ) override;
77 MRMESH_API virtual void swapSignals_( Object& other ) override;
78
79 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
80
81 MRMESH_API void deserializeFields_( const Json::Value& root ) override;
82
83private:
84 std::shared_ptr<GcodeSource> gcodeSource_;
85 std::vector<GcodeProcessor::MoveAction> actionList_;
86 CNCMachineSettings cncMachineSettings_;
87 void updateHeapUsageCache_();
88 size_t nonTrivialHeapUsageCache_{ 0 };
89
90 std::vector<int> segmentToSourceLineMap_;
91
92 Color idleColor_ = Color(0.3f, 0.3f, 0.3f);
93 float maxFeedrate_ = 0.f;
94 bool feedrateGradientEnabled_ = true;
95
96 void updateColors_();
97 void updateAll_();
98};
99
100}
#define MRMESH_API
Definition MRMeshFwd.h:85
#define MRMESH_CLASS
Definition MRMeshFwd.h:92
class with CNC machine emulation settings
Definition MRCNCMachineSettings.h:19
named object in the data model
Definition MRObject.h:61
virtual bool isSelected() const
Definition MRObject.h:196
Definition MRViewportId.h:16
virtual void setDirtyFlags(uint32_t mask, bool invalidateCaches=true) override
reinterpret_cast to avoid making a copy of shared_ptr
std::vector< std::string > GcodeSource
Definition MRMeshFwd.h:685
virtual const CNCMachineSettings & getCNCMachineSettings() const
Definition MRObjectGcode.h:37
const Color & getIdleColor() const
Definition MRObjectGcode.h:58
virtual const std::vector< GcodeProcessor::MoveAction > & actionList() const
get action list (produced from g-code source)
Definition MRObjectGcode.h:42
static constexpr const char * StaticTypeName() noexcept
Definition MRObjectGcode.h:24
virtual const std::vector< int > & segmentToSourceLineMap() const
get mapping of tool path polyline segment id to source line number of g-code source
Definition MRObjectGcode.h:44
virtual 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
virtual std::string className() const override
Definition MRObjectGcode.h:28
void setIdleColor(const Color &color)
bool isFeedrateGradient() const
Definition MRObjectGcode.h:55
void switchFeedrateGradient(bool isFeedrateGradientEnabled)
set drawing feedrate as gradient of brightness
virtual std::shared_ptr< Object > clone() const override
ObjectGcode(ProtectedStruct, const ObjectGcode &obj)
Definition MRObjectGcode.h:49
virtual std::vector< std::string > getInfoLines() const override
return several info lines that can better describe the object in the UI
virtual void setGcodeSource(const std::shared_ptr< GcodeSource > &gcodeSource)
virtual void serializeFields_(Json::Value &root) const override
serializeFields_: serializeBaseFields_ plus polyline serialization
virtual size_t heapBytes() const override
returns the amount of memory this object occupies on heap
virtual void swapBase_(Object &other) override
swaps this object with other
virtual const std::shared_ptr< GcodeSource > & gcodeSource() const
Definition MRObjectGcode.h:40
virtual std::shared_ptr< Object > shallowClone() const override
ObjectGcode(const ObjectGcode &other)=default
ObjectGcode & operator=(ObjectGcode &&)=default
virtual std::string classNameInPlural() const override
Definition MRObjectGcode.h:31
virtual bool select(bool isSelected) override
selects the object, returns true if value changed, otherwise returns false
static constexpr const char * StaticClassNameInPlural() noexcept
Definition MRObjectGcode.h:30
ObjectGcode(ObjectGcode &&)=default
virtual const char * typeName() const override
Definition MRObjectGcode.h:25
virtual void swapSignals_(Object &other) override
virtual void setCNCMachineSettings(const CNCMachineSettings &cncSettings)
void deserializeFields_(const Json::Value &root) override
deserializeFields_: deserializeBaseFields_ plus polyline deserialization
Signal< void(uint32_t mask)> GcodeChangedSignal
signal about gcode changing, triggered in setDirtyFlag
Definition MRObjectGcode.h:61
static constexpr const char * StaticClassName() noexcept
Definition MRObjectGcode.h:27
GcodeChangedSignal gcodeChangedSignal
Definition MRObjectGcode.h:62
@ other
Angle, normally float. Measure in radians.
Definition MRFeatureObject.h:27
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRColor.h:12
Definition MRObject.h:289
Definition MRSignal.h:28