class RS_Entity;
class RS_EntityContainer;
-class RS_GraphicView;
+class GraphicView;
+class PaintInterface;
/**
* This class is used for snapping functions in a graphic view.
class RS_Snapper
{
public:
- RS_Snapper(RS_EntityContainer & container, RS_GraphicView & graphicView);
+ 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);
+ RS2::SnapMode getSnapMode(void);
+ RS2::SnapRestriction getSnapRestriction(void);
void setSnapRange(int r);
Vector snapPoint(QMouseEvent * e);
Vector snapMiddle(Vector coord);
Vector snapDist(Vector coord);
Vector snapIntersection(Vector coord);
- //Vector snapDirect(Vector coord, bool abs);
Vector restrictOrthogonal(Vector coord);
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);
virtual void hideOptions();
virtual void showOptions();
- void drawSnapper();
- void deleteSnapper();
+// void drawSnapper();
+// void deleteSnapper();
- private:
- void xorSnapper();
+/*
+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();
protected:
RS_EntityContainer * container;
- RS_GraphicView * graphicView;
+ GraphicView * graphicView;
RS_Entity * keyEntity;
Vector snapCoord;
Vector snapSpot;