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{
10
11
12using GcodeSource = std::vector<std::string>;
13
16class MRMESH_CLASS ObjectGcode : public ObjectLinesHolder
17{
18public:
19 MRMESH_API ObjectGcode();
20 ObjectGcode( ObjectGcode&& ) = default;
22
23 constexpr static const char* StaticTypeName() noexcept { return "ObjectGcode"; }
24 virtual const char* typeName() const override { return StaticTypeName(); }
25
26 constexpr static const char* StaticClassName() noexcept { return "G-code"; }
27 virtual std::string className() const override { return StaticClassName(); }
28
29 constexpr static const char* StaticClassNameInPlural() noexcept { return "G-codes"; }
30 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
31
32 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
33 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
34
35 MRMESH_API virtual void setCNCMachineSettings( const CNCMachineSettings& cncSettings );
36 virtual const CNCMachineSettings& getCNCMachineSettings() const { return cncMachineSettings_; }
37
38 MRMESH_API virtual void setGcodeSource( const std::shared_ptr<GcodeSource>& gcodeSource );
39 virtual const std::shared_ptr<GcodeSource>& gcodeSource() const { return gcodeSource_; }
41 virtual const std::vector<GcodeProcessor::MoveAction>& actionList() const { return actionList_; }
43 virtual const std::vector<int>& segmentToSourceLineMap() const { return segmentToSourceLineMap_; }
44
45 MRMESH_API virtual void setDirtyFlags( uint32_t mask, bool invalidateCaches = true ) override;
46
49
50 MRMESH_API virtual std::vector<std::string> getInfoLines() const override;
51
53 MRMESH_API void switchFeedrateGradient( bool isFeedrateGradientEnabled );
54 bool isFeedrateGradient() const { return feedrateGradientEnabled_; }
55
56 MRMESH_API void setIdleColor( const Color& color );
57 const Color& getIdleColor() const { return idleColor_; }
58
60 using GcodeChangedSignal = Signal<void( uint32_t mask )>;
62
63 MRMESH_API virtual bool select( bool isSelected ) override;
64 MRMESH_API virtual void setFrontColor( const Color& color, bool selected, ViewportId viewportId = {} ) override;
65
67 [[nodiscard]] MRMESH_API virtual size_t heapBytes() const override;
68
69protected:
70 ObjectGcode( const ObjectGcode& other ) = default;
71
73 MRMESH_API virtual void swapBase_( Object& other ) override;
76 MRMESH_API virtual void swapSignals_( Object& other ) override;
77
78 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
79
80 MRMESH_API void deserializeFields_( const Json::Value& root ) override;
81
82private:
83 std::shared_ptr<GcodeSource> gcodeSource_;
84 std::vector<GcodeProcessor::MoveAction> actionList_;
85 CNCMachineSettings cncMachineSettings_;
86 void updateHeapUsageCache_();
87 size_t nonTrivialHeapUsageCache_{ 0 };
88
89 std::vector<int> segmentToSourceLineMap_;
90
91 Color idleColor_ = Color(0.3f, 0.3f, 0.3f);
92 float maxFeedrate_ = 0.f;
93 bool feedrateGradientEnabled_ = true;
94
95 void updateColors_();
96 void updateAll_();
97};
98
99}
class with CNC machine emulation settings
Definition MRCNCMachineSettings.h:19
Definition MRObjectGcode.h:17
Definition MRObjectLinesHolder.h:30
named object in the data model
Definition MRObject.h:62
Definition MRViewportId.h:16
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:36
MRMESH_API ObjectGcode()
const Color & getIdleColor() const
Definition MRObjectGcode.h:57
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
get action list (produced from g-code source)
Definition MRObjectGcode.h:41
static constexpr const char * StaticTypeName() noexcept
Definition MRObjectGcode.h:23
virtual MRMESH_API void swapBase_(Object &other) override
swaps this object with other
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:43
MRMESH_API void switchFeedrateGradient(bool isFeedrateGradientEnabled)
set drawing feedrate as gradient of brightness
virtual std::string className() const override
Definition MRObjectGcode.h:27
virtual MRMESH_API size_t heapBytes() const override
returns the amount of memory this object occupies on heap
bool isFeedrateGradient() const
Definition MRObjectGcode.h:54
ObjectGcode(ProtectedStruct, const ObjectGcode &obj)
Definition MRObjectGcode.h:48
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:39
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:30
virtual MRMESH_API std::shared_ptr< Object > shallowClone() const override
virtual MRMESH_API void swapSignals_(Object &other) override
static constexpr const char * StaticClassNameInPlural() noexcept
Definition MRObjectGcode.h:29
virtual MRMESH_API void setDirtyFlags(uint32_t mask, bool invalidateCaches=true) override
reinterpret_cast to avoid making a copy of shared_ptr
ObjectGcode(ObjectGcode &&)=default
virtual const char * typeName() const override
Definition MRObjectGcode.h:24
virtual MRMESH_API std::shared_ptr< Object > clone() const override
std::vector< std::string > GcodeSource
Definition MRObjectGcode.h:12
static constexpr const char * StaticClassName() noexcept
Definition MRObjectGcode.h:26
GcodeChangedSignal gcodeChangedSignal
Definition MRObjectGcode.h:61
MRMESH_API void deserializeFields_(const Json::Value &root) override
deserializeFields_: deserializeBaseFields_ plus polyline deserialization
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRColor.h:12
Definition MRObject.h:284