]> Shamusworld >> Repos - architektonas/blobdiff - src/drawingview.h
Add pen toolbar widget.
[architektonas] / src / drawingview.h
index 2cc4bcdac8676e0118e2214eff3f5c4ddfbb9e5b..29a47a7083e7c2f801d5deda81e6c1f3d543fd03 100644 (file)
@@ -1,10 +1,14 @@
 #ifndef __DRAWINGVIEW_H__
 #define __DRAWINGVIEW_H__
 
-#include <QtGui>
+#include <QtWidgets>
 #include <stdint.h>
-#include "action.h"
-#include "container.h"
+#include "rect.h"
+#include "structs.h"
+
+enum { ToolMouseDown, ToolMouseMove, ToolMouseUp, ToolKeyDown, ToolKeyUp, ToolCleanup };
+
+class Painter;
 
 class DrawingView: public QWidget
 {
@@ -14,15 +18,39 @@ class DrawingView: public QWidget
                DrawingView(QWidget * parent = NULL);
 
        public:
-//             void SetRotateToolActive(bool state = true);
-               void SetToolActive(Action * action);
                void SetGridSize(uint32_t);
                void UpdateGridBackground(void);
+               Point SnapPointToGrid(Point);
+               Point SnapPointToAngle(Point);
+               void RenderObjects(Painter *, std::vector<void *> &, int, bool ignoreLayer = false);
+               void AddHoveredToSelection(void);
+               void GetSelection(std::vector<void *> &);
+               void GetHovered(std::vector<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);
+               Rect GetObjectExtents(Object *);
+               void CheckObjectBounds(void);
+               bool HitTestObjects(Point);
+               bool HitTest(Object *, Point);
+               bool HandleObjectClicked(void);
+               void HandleObjectMovement(Point);
 
        public slots:
-               void AddNewObjectToDocument(Object *);
-               void HandleActionUpdate(void);
-               void SetCurrentLayer(int);
+               void DeleteCurrentLayer(int);
+               void HandleLayerToggle(void);
+               void HandleLayerSwap(int, int);
+               void HandlePenWidth(float);
+               void HandlePenStyle(int);
+               void HandlePenColor(uint32_t);
+
+       signals:
+               void ObjectHovered(Object *);
+               void ObjectSelected(Object *);
 
        protected:
                void paintEvent(QPaintEvent * event);
@@ -40,6 +68,10 @@ class DrawingView: public QWidget
 
        public:
                bool useAntialiasing;
+//             uint32_t numSelected;
+               uint32_t numHovered;
+               bool shiftDown;
+               bool ctrlDown;
 
        private:
                QPixmap gridBackground;
@@ -50,21 +82,23 @@ class DrawingView: public QWidget
                uint32_t gridPixels;                                    // Grid size in pixels
        private:
                bool collided;
-//Should this go into Object's class variables???
-//maybe, maybe not... :-P
-//             bool rotateTool;
-//             double rx, ry;
                bool scrollDrag;
                Vector oldPoint;
-//             bool addLineTool;
-//             bool addCircleTool;
-//             bool addDimensionTool;
+               QString informativeText;
 
        public:
-               Action * toolAction;
-
-//     public:
-//             static Container document;
+               std::vector<void *> select;
+               std::vector<void *> hover;
+               std::vector<void *> toolObjects;
+               std::vector<Object> toolScratch;
+               Point toolPoint[32];
+               Point intersectionPoint;
+               Point hoverPoint;
+               bool hoverPointValid;
+               bool hoveringIntersection;
+               Object * dragged;
+               bool draggingObject;
+               bool angleSnap;
 };
 
 #endif // __DRAWINGVIEW_H__