#include <QtWidgets>
#include <stdint.h>
+#include "rect.h"
#include "structs.h"
enum { ToolMouseDown, ToolMouseMove, ToolMouseUp, ToolKeyDown, ToolKeyUp, ToolCleanup };
DrawingView(QWidget * parent = NULL);
public:
+ void DrawBackground(Painter *);
void SetGridSize(uint32_t);
+ void SetGridSize(double);
void UpdateGridBackground(void);
+ void UpdateGridBackgroundF(void);
Point SnapPointToGrid(Point);
- void RenderObjects(Painter *, std::vector<void *> &);
+ Point SnapPointToAngle(Point);
+ void RenderObjects(Painter *, VPVector &, int, bool ignoreLayer = false);
void AddHoveredToSelection(void);
- void GetSelection(std::vector<void *> &);
- void GetHovered(std::vector<void *> &);
+ VPVector GetSelection(void);
+ VPVector GetHovered(void);
void ToolHandler(int, Point);
void ToolDraw(Painter *);
void LineHandler(int, Point);
void CircleHandler(int, Point);
+ void ArcHandler(int, Point);
void RotateHandler(int, Point);
+ void MirrorHandler(int, Point);
+ void DimensionHandler(int, Point);
+ void TriangulateHandler(int, Point);
+ void TrimHandler(int, Point);
+ void ParallelHandler(int, Point);
+ Rect GetObjectExtents(Object *);
void CheckObjectBounds(void);
bool HitTestObjects(Point);
+ bool HitTest(Object *, Point);
+ bool HandleObjectClicked(void);
void HandleObjectMovement(Point);
+ void AddDimensionTo(void * obj);
public slots:
- void SetCurrentLayer(int);
+ void DeleteCurrentLayer(int);
+ void HandleLayerToggle(void);
+ void HandleLayerSwap(int, int);
+ void HandlePenWidth(float);
+ void HandlePenStyle(int);
+ void HandlePenColor(uint32_t);
+ void HandlePenStamp(void);
+
+ signals:
+ void ObjectHovered(Object *);
+ void ObjectSelected(Object *);
+ void NeedZoomUpdate(void);
protected:
+ void focusOutEvent(QFocusEvent * event);
void paintEvent(QPaintEvent * event);
void resizeEvent(QResizeEvent * event);
void mousePressEvent(QMouseEvent * event);
void keyReleaseEvent(QKeyEvent * event);
private:
+ void DrawSubGrid(Painter *, uint32_t, double, Vector, Vector);
QPoint GetAdjustedMousePosition(QMouseEvent * event);
QPoint GetAdjustedClientPosition(int x, int y);
public:
bool useAntialiasing;
- uint32_t numSelected;
uint32_t numHovered;
bool shiftDown;
bool ctrlDown;
+ bool altDown;
private:
QPixmap gridBackground;
public:
Container document;
uint32_t gridPixels; // Grid size in pixels
- private:
+ double gridPixelsF; // Grid size in pixels (float)
+// private:
+ public:
bool collided;
bool scrollDrag;
Vector oldPoint;
+ Vector oldScrollPoint;
QString informativeText;
public:
- std::vector<void *> select;
- std::vector<void *> hover;
- std::vector<void *> toolObjects;
+ VPVector select;
+ VPVector toolObjects;
std::vector<Object> toolScratch;
+ VPVector toolScratch2;
Point toolPoint[32];
-
-// public:
-// static Container document;
+ Object * toolObj[32];
+ Point intersectionPoint;
+ Point hoverPoint;
+ bool hoverPointValid;
+ bool hoveringIntersection;
+ Object * dragged;
+ bool draggingObject;
+ bool angleSnap;
+ bool dirty;
+ bool scrollWheelSeen;
};
#endif // __DRAWINGVIEW_H__