| |
|
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #ifndef SKETCHER_EXTERNALGEOMETRYEXTENSION_H
|
| | #define SKETCHER_EXTERNALGEOMETRYEXTENSION_H
|
| |
|
| | #include <array>
|
| | #include <bitset>
|
| |
|
| | #include <Mod/Part/App/Geometry.h>
|
| | #include <Mod/Part/App/GeometryMigrationExtension.h>
|
| | #include <Mod/Sketcher/SketcherGlobal.h>
|
| |
|
| |
|
| | namespace Sketcher
|
| | {
|
| |
|
| | class ISketchExternalGeometryExtension
|
| | {
|
| | public:
|
| |
|
| |
|
| |
|
| | virtual bool testFlag(int flag) const = 0;
|
| |
|
| | virtual void setFlag(int flag, bool v = true) = 0;
|
| |
|
| | virtual unsigned long getFlags() const = 0;
|
| |
|
| | virtual void setFlags(unsigned long flags) = 0;
|
| |
|
| |
|
| |
|
| | virtual bool isClear() const = 0;
|
| |
|
| | virtual size_t flagSize() const = 0;
|
| |
|
| | virtual const std::string& getRef() const = 0;
|
| |
|
| | virtual void setRef(const std::string& ref) = 0;
|
| |
|
| | virtual int getRefIndex() const = 0;
|
| |
|
| | virtual void setRefIndex(int index) = 0;
|
| | };
|
| |
|
| | class SketcherExport ExternalGeometryExtension: public Part::GeometryMigrationPersistenceExtension,
|
| | private ISketchExternalGeometryExtension
|
| | {
|
| | TYPESYSTEM_HEADER_WITH_OVERRIDE();
|
| |
|
| | public:
|
| |
|
| |
|
| | enum Flag
|
| | {
|
| | Defining = 0,
|
| | Frozen = 1,
|
| | Detached = 2,
|
| | Missing = 3,
|
| | Sync = 4,
|
| | NumFlags
|
| | };
|
| |
|
| |
|
| |
|
| | constexpr static std::array<const char*, NumFlags> flag2str {
|
| | {"Defining", "Frozen", "Detached", "Missing", "Sync"}
|
| | };
|
| |
|
| | public:
|
| | ExternalGeometryExtension() = default;
|
| |
|
| | ~ExternalGeometryExtension() override = default;
|
| |
|
| | std::unique_ptr<Part::GeometryExtension> copy() const override;
|
| |
|
| | PyObject* getPyObject() override;
|
| |
|
| |
|
| |
|
| | bool testFlag(int flag) const override
|
| | {
|
| | return Flags.test((size_t)(flag));
|
| | }
|
| |
|
| | void setFlag(int flag, bool v = true) override
|
| | {
|
| | Flags.set((size_t)(flag), v);
|
| | }
|
| |
|
| | unsigned long getFlags() const override
|
| | {
|
| | return Flags.to_ulong();
|
| | }
|
| |
|
| | void setFlags(unsigned long flags) override
|
| | {
|
| | Flags = flags;
|
| | }
|
| |
|
| |
|
| |
|
| | bool isClear() const override
|
| | {
|
| | return Flags.none();
|
| | }
|
| |
|
| | size_t flagSize() const override
|
| | {
|
| | return Flags.size();
|
| | }
|
| |
|
| | const std::string& getRef() const override
|
| | {
|
| | return Ref;
|
| | }
|
| |
|
| | void setRef(const std::string& ref) override
|
| | {
|
| | Ref = ref;
|
| | }
|
| |
|
| | int getRefIndex() const override
|
| | {
|
| | return RefIndex;
|
| | }
|
| |
|
| | void setRefIndex(int index) override
|
| | {
|
| | RefIndex = index;
|
| | }
|
| |
|
| | static bool getFlagsFromName(std::string str, ExternalGeometryExtension::Flag& flag);
|
| |
|
| | protected:
|
| | void copyAttributes(Part::GeometryExtension* cpy) const override;
|
| |
|
| | void restoreAttributes(Base::XMLReader& reader) override;
|
| |
|
| | void saveAttributes(Base::Writer& writer) const override;
|
| |
|
| | void preSave(Base::Writer& writer) const override;
|
| |
|
| | private:
|
| | ExternalGeometryExtension(const ExternalGeometryExtension&) = default;
|
| |
|
| | private:
|
| | using FlagType = std::bitset<32>;
|
| |
|
| |
|
| | std::string Ref;
|
| | int RefIndex = -1;
|
| | FlagType Flags;
|
| |
|
| |
|
| | };
|
| |
|
| | }
|
| |
|
| |
|
| | #endif
|
| |
|