LibreCAD
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
entitybuilder.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "entityops.h"
4 #include "documentoperation.h"
5 #include "undoable.h"
6 #include <vector>
8 
9 namespace lc {
10  class Document;
11  DECLARE_SHORT_SHARED_PTR(Document)
12 
13  namespace operation {
14 
16  friend class lc::operation::Base;
17 
18  public:
23  EntityBuilder(Document_SPtr document);
24 
30  EntityBuilder* appendEntity(entity::CADEntity_CSPtr cadEntity);
31 
37  EntityBuilder* appendOperation(Base_SPtr operation);
38 
39  virtual void undo() const;
40  virtual void redo() const;
41 
46  void processStack();
47 
48  protected:
49  virtual void processInternal();
50 
51  private:
52  std::vector<Base_SPtr> _stack;
53  std::vector<entity::CADEntity_CSPtr> _workingBuffer;
54 
55  std::vector<entity::CADEntity_CSPtr> _entitiesThatWhereUpdated;
56  std::vector<entity::CADEntity_CSPtr> _entitiesThatNeedsRemoval;
57  };
58 
60  }
61 }
std::vector< entity::CADEntity_CSPtr > _workingBuffer
Definition: entitybuilder.h:53
std::vector< entity::CADEntity_CSPtr > _entitiesThatNeedsRemoval
Definition: entitybuilder.h:56
std::vector< entity::CADEntity_CSPtr > _entitiesThatWhereUpdated
Definition: entitybuilder.h:55
DECLARE_SHORT_SHARED_PTR(Document)
Definition: cadentity.h:12
std::vector< Base_SPtr > _stack
Definition: entitybuilder.h:52