class RS_Entity;
class RS_EntityContainer;
class GraphicView;
+class PaintInterface;
/**
* This class is used for snapping functions in a graphic view.
{
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);
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);
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();