src/glRenderer.h

changeset 762
d259256e1394
parent 760
e4e585f464b3
child 764
335d929c673e
equal deleted inserted replaced
761:64ea52bf685c 762:d259256e1394
101 panY[i] = 0.0; 101 panY[i] = 0.0;
102 } 102 }
103 } 103 }
104 }; 104 };
105 105
106 enum ECamera
107 {
108 ETopCamera,
109 EFrontCamera,
110 ELeftCamera,
111 EBottomCamera,
112 EBackCamera,
113 ERightCamera,
114 EFreeCamera,
115
116 ENumCameras,
117 EFirstCamera = ETopCamera
118 };
119
120 NUMERIC_ENUM_OPERATORS (ECamera)
121
106 // ============================================================================= 122 // =============================================================================
107 // The main renderer object, draws the brick on the screen, manages the camera 123 // The main renderer object, draws the brick on the screen, manages the camera
108 // and selection picking. The instance of GLRenderer is accessible as 124 // and selection picking. The instance of GLRenderer is accessible as
109 // g_win->R() 125 // g_win->R()
110 // 126 //
111 class GLRenderer : public QGLWidget 127 class GLRenderer : public QGLWidget
112 { 128 {
113 public: 129 public:
114 enum EFixedCamera
115 {
116 ETopCamera,
117 EFrontCamera,
118 ELeftCamera,
119 EBottomCamera,
120 EBackCamera,
121 ERightCamera,
122 EFreeCamera
123 };
124
125 enum ListType
126 {
127 NormalList,
128 PickList,
129 BFCFrontList,
130 BFCBackList
131 };
132
133 // CameraIcon::img is a heap-allocated QPixmap because otherwise it gets 130 // CameraIcon::img is a heap-allocated QPixmap because otherwise it gets
134 // initialized before program gets to main() and constructs a QApplication 131 // initialized before program gets to main() and constructs a QApplication
135 // and Qt doesn't like that. 132 // and Qt doesn't like that.
136 struct CameraIcon 133 struct CameraIcon
137 { 134 {
138 QPixmap* img; 135 QPixmap* img;
139 QRect srcRect, 136 QRect srcRect,
140 destRect, 137 destRect,
141 selRect; 138 selRect;
142 EFixedCamera cam; 139 ECamera cam;
143 }; 140 };
144 141
145 Q_OBJECT 142 Q_OBJECT
146 PROPERTY (public, bool, isDrawOnly, setDrawOnly, STOCK_WRITE) 143 PROPERTY (public, bool, isDrawOnly, setDrawOnly, STOCK_WRITE)
147 PROPERTY (public, MessageManager*, messageLog, setMessageLog, STOCK_WRITE) 144 PROPERTY (public, MessageManager*, messageLog, setMessageLog, STOCK_WRITE)
154 151
155 public: 152 public:
156 GLRenderer (QWidget* parent = null); 153 GLRenderer (QWidget* parent = null);
157 ~GLRenderer(); 154 ~GLRenderer();
158 155
159 inline EFixedCamera camera() const 156 inline ECamera camera() const
160 { 157 {
161 return m_camera; 158 return m_camera;
162 } 159 }
163 160
164 void clearOverlay(); 161 void clearOverlay();
165 void compileObject (LDObject* obj); 162 void compileObject (LDObject* obj);
166 void drawGLScene(); 163 void drawGLScene();
167 void endDraw (bool accept); 164 void endDraw (bool accept);
168 void forgetObject (LDObject* obj); 165 void forgetObject (LDObject* obj);
169 Axis getCameraAxis (bool y, EFixedCamera camid = (EFixedCamera) - 1); 166 Axis getCameraAxis (bool y, ECamera camid = (ECamera) -1);
170 const char* getCameraName() const; 167 const char* getCameraName() const;
171 double getDepthValue() const; 168 double getDepthValue() const;
172 LDGLOverlay& getOverlay (int newcam); 169 LDGLOverlay& getOverlay (int newcam);
173 uchar* getScreencap (int& w, int& h); 170 uchar* getScreencap (int& w, int& h);
174 void hardRefresh(); 171 void hardRefresh();
177 void needZoomToFit(); 174 void needZoomToFit();
178 void refresh(); 175 void refresh();
179 void resetAngles(); 176 void resetAngles();
180 void resetAllAngles(); 177 void resetAllAngles();
181 void setBackground(); 178 void setBackground();
182 void setCamera (const EFixedCamera cam); 179 void setCamera (const ECamera cam);
183 void setDepthValue (double depth); 180 void setDepthValue (double depth);
184 bool setupOverlay (EFixedCamera cam, String file, int x, int y, int w, int h); 181 bool setupOverlay (ECamera cam, String file, int x, int y, int w, int h);
185 void updateOverlayObjects(); 182 void updateOverlayObjects();
186 void zoomNotch (bool inward); 183 void zoomNotch (bool inward);
187 184
188 static QColor getMainColor(); 185 static QColor getMainColor();
189 void highlightCursorObject(); 186 void highlightCursorObject();
219 QPoint m_pos, 216 QPoint m_pos,
220 m_globalpos, 217 m_globalpos,
221 m_rangeStart; 218 m_rangeStart;
222 QPen m_thickBorderPen, 219 QPen m_thickBorderPen,
223 m_thinBorderPen; 220 m_thinBorderPen;
224 EFixedCamera m_camera, 221 ECamera m_camera,
225 m_toolTipCamera; 222 m_toolTipCamera;
226 GLuint m_axeslist; 223 GLuint m_axeslist;
227 int m_width, 224 int m_width,
228 m_height, 225 m_height,
229 m_totalmove; 226 m_totalmove;
231 bool m_rectdraw; 228 bool m_rectdraw;
232 Vertex m_rectverts[4]; 229 Vertex m_rectverts[4];
233 QColor m_bgcolor; 230 QColor m_bgcolor;
234 231
235 void addDrawnVertex (Vertex m_hoverpos); 232 void addDrawnVertex (Vertex m_hoverpos);
236 LDOverlay* findOverlayObject (EFixedCamera cam); 233 LDOverlay* findOverlayObject (ECamera cam);
237 void updateRectVerts(); 234 void updateRectVerts();
238 void getRelativeAxes (Axis& relX, Axis& relY) const; 235 void getRelativeAxes (Axis& relX, Axis& relY) const;
239 Axis getRelativeZ() const; 236 Axis getRelativeZ() const;
240 Matrix getCircleDrawMatrix (double scale); 237 Matrix getCircleDrawMatrix (double scale);
241 void drawBlip (QPainter& paint, QPoint pos) const; 238 void drawBlip (QPainter& paint, QPoint pos) const;
307 private slots: 304 private slots:
308 void slot_toolTipTimer(); 305 void slot_toolTipTimer();
309 void initializeAxes(); 306 void initializeAxes();
310 }; 307 };
311 308
312 // Alias for short namespaces
313 typedef GLRenderer GL;
314
315 static const GLRenderer::ListType g_glListTypes[] =
316 {
317 GL::NormalList,
318 GL::PickList,
319 GL::BFCFrontList,
320 GL::BFCBackList,
321 };
322
323 extern const GL::EFixedCamera g_Cameras[7];
324 extern const char* g_CameraNames[7]; 309 extern const char* g_CameraNames[7];

mercurial