]> Shamusworld >> Repos - architektonas/blobdiff - src/base/rs_snapper.h
In the middle of major refactoring...
[architektonas] / src / base / rs_snapper.h
index 30e4a0cd0d55d0bef05efcf36cc7fcbc42093c03..575bd7badfe72890408385943bcf1e396873a563 100644 (file)
@@ -8,6 +8,7 @@
 class RS_Entity;
 class RS_EntityContainer;
 class GraphicView;
+class PaintInterface;
 
 /**
  * This class is used for snapping functions in a graphic view.
@@ -23,11 +24,14 @@ class RS_Snapper
 {
        public:
                RS_Snapper(RS_EntityContainer & container, GraphicView & graphicView);
+               RS_Snapper();
                virtual ~RS_Snapper();
 
                void init();
                void finish();
 
+               void SetContainer(RS_EntityContainer *);
+               void SetGraphicView(GraphicView *);
                RS_Entity * getKeyEntity();
                void setSnapMode(RS2::SnapMode snapMode);
                void setSnapRestriction(RS2::SnapRestriction snapRes);
@@ -48,8 +52,6 @@ class RS_Snapper
                Vector restrictHorizontal(Vector coord);
                Vector restrictVertical(Vector coord);
 
-               //RS_Entity* catchLeafEntity(const Vector& pos);
-               //RS_Entity* catchLeafEntity(QMouseEvent* e);
                RS_Entity * catchEntity(const Vector & pos, RS2::ResolveLevel level = RS2::ResolveNone);
                RS_Entity * catchEntity(QMouseEvent * e, RS2::ResolveLevel level = RS2::ResolveNone);
 
@@ -61,6 +63,35 @@ class RS_Snapper
                void drawSnapper();
                void deleteSnapper();
 
+/*
+How should we handle this? All rendering goes through the GraphicView (QG_GraphicView to be
+precise, soon to be merged in) as it should. So shouldn't we control the snapper through
+that class as well? Unfortunately, all actions derive from this class...
+
+Should they?
+
+Not 100% sure. It does seem to make more sense to have them be a part of the GraphicView,
+since snapping is a function of the grid and the entities contained in the view. (This would
+also hold for the preview as well.)
+
+On to the interface:
+
+For allowing the crosshairs to be drawn, we'd have
+void ShowSnapper(void)
+
+and
+void HideSnapper(void)
+
+to hide it. Maybe
+void SetSnapperCoords(Vector, Vector)
+
+for setting the coordinates?
+*/
+       public://for now
+               void SetVisible(bool visibility = true);
+               bool Visible(void);
+               void Draw(GraphicView *, PaintInterface *);
+
        private:
                void xorSnapper();