| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| #ifndef RS_CREATION_H |
| #define RS_CREATION_H |
|
|
| #include <QString> |
| #include <memory> |
|
|
| #include "rs_preview.h" |
| #include "rs_vector.h" |
|
|
| class RS_Document; |
| class RS_EntityContainer; |
| class RS_GraphicView; |
| class RS_Graphic; |
| class RS_Entity; |
| class RS_Arc; |
| class RS_Circle; |
| class RS_Ellipse; |
| class RS_Line; |
| class LC_SplinePoints; |
| struct RS_BlockData; |
| struct RS_ImageData; |
| class RS_Image; |
| struct RS_InsertData; |
| class RS_Insert; |
| class RS_Block; |
| class QString; |
| class LC_GraphicViewport; |
|
|
| |
| |
| |
| struct RS_LibraryInsertData { |
| QString file; |
| RS_Vector insertionPoint; |
| double factor = 0.; |
| double angle = 0.; |
| RS_Graphic * graphic; |
| }; |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| class RS_Creation { |
| public: |
| RS_Creation(RS_EntityContainer* container, |
| LC_GraphicViewport* viewport = nullptr, |
| bool handleUndo=true); |
|
|
| ~RS_Creation()=default; |
|
|
| RS_Entity* createParallelThrough(const RS_Vector& coord, |
| int number, |
| RS_Entity* e, |
| bool symmetric); |
|
|
| RS_Entity* createParallel(const RS_Vector& coord, |
| double distance, |
| int number, |
| RS_Entity* e, bool symmetric = false); |
|
|
| RS_Line* createParallelLine(const RS_Vector& coord, |
| double distance, int number, |
| RS_Line* e, bool symmetric = false); |
|
|
| RS_Arc* createParallelArc(const RS_Vector& coord, |
| double distance, int number, |
| RS_Arc* e); |
|
|
| RS_Circle* createParallelCircle(const RS_Vector& coord, |
| double distance, int number, |
| RS_Circle* e); |
|
|
| LC_SplinePoints* createParallelSplinePoints(const RS_Vector& coord, |
| double distance, int number, |
| LC_SplinePoints* e); |
|
|
| RS_Line* createBisector(const RS_Vector& coord1, |
| const RS_Vector& coord2, |
| double length, |
| int num, |
| RS_Line* l1, |
| RS_Line* l2); |
|
|
| RS_Line* createTangent1(const RS_Vector& coord, |
| const RS_Vector& point, |
| RS_Entity* circle, |
| RS_Vector& tangentPoint, |
| RS_Vector& altTangentPoint); |
| |
| |
| |
| std::unique_ptr<RS_Line> createLineOrthTan(const RS_Vector& coord, |
| RS_Line* normal, |
| RS_Entity* circle, |
| RS_Vector& alternativeTangent); |
| std::vector<std::unique_ptr<RS_Line>> createTangent2( |
| RS_Entity* circle1, |
| RS_Entity* circle2); |
|
|
| std::unique_ptr<RS_Line> createLineRelAngle(const RS_Vector& coord, |
| RS_Entity* entity, |
| double angle, |
| double length); |
|
|
| RS_Line* createPolygon(const RS_Vector& center, |
| const RS_Vector& corner, |
| int number); |
|
|
| RS_Line* createPolygon2(const RS_Vector& corner1, |
| const RS_Vector& corner2, |
| int number); |
|
|
| RS_Line* createPolygon3(const RS_Vector& center, |
| const RS_Vector& tangent, |
| int number); |
|
|
| RS_Insert* createInsert(const RS_InsertData* pdata); |
|
|
| RS_Image* createImage(const RS_ImageData* pdata); |
|
|
| RS_Block* createBlock(const RS_BlockData* data, |
| const RS_Vector& referencePoint, |
| const bool remove); |
|
|
| RS_Insert* createLibraryInsert(RS_LibraryInsertData& data); |
|
|
| private: |
| RS_EntityContainer* m_container{nullptr}; |
| RS_Graphic* m_graphic{nullptr}; |
| RS_Document* m_document{nullptr}; |
| LC_GraphicViewport* m_viewport{nullptr}; |
| bool handleUndo = false; |
| |
| |
| |
| |
| |
| bool setupAndAddEntity(RS_Entity* en) const; |
| }; |
|
|
| #endif |
|
|