Tue, 07 Jan 2014 12:21:46 +0200
- removed the 'str' typedef, use QString directly
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1 | /* |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
2 | * LDForge: LDraw parts authoring CAD |
600
209e3f1f7b2c
- updated copyright year. Best wishes for 2014!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
578
diff
changeset
|
3 | * Copyright (C) 2013, 2014 Santeri Piippo |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
447
diff
changeset
|
4 | * |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
5 | * This program is free software: you can redistribute it and/or modify |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
6 | * it under the terms of the GNU General Public License as published by |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
7 | * the Free Software Foundation, either version 3 of the License, or |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
412
diff
changeset
|
8 | * (at your option) any later version. |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
447
diff
changeset
|
9 | * |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
10 | * This program is distributed in the hope that it will be useful, |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
13 | * GNU General Public License for more details. |
455
c5d14d112034
Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
447
diff
changeset
|
14 | * |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
15 | * You should have received a copy of the GNU General Public License |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
17 | */ |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
18 | |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
19 | #ifndef LDFORGE_GLDRAW_H |
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
20 | #define LDFORGE_GLDRAW_H |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
21 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
22 | #include <QGLWidget> |
541
0e38beeb050a
- Renamed common.h to main.h, split the PROPERTY macro and supporting macros to property.h
Santeri Piippo <crimsondusk64@gmail.com>
parents:
540
diff
changeset
|
23 | #include "main.h" |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
24 | #include "ldtypes.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
25 | |
322
5e701c3c3d8e
Re-added the message log, now draws into the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
318
diff
changeset
|
26 | class MessageManager; |
196
47f4f4543152
Allow one of the dimensions be filled via aspect ratio
Santeri Piippo <crimsondusk64@gmail.com>
parents:
195
diff
changeset
|
27 | class QDialogButtonBox; |
479
f179241a72a8
rename RadioBox to RadioGroup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
28 | class RadioGroup; |
195
7a776f6b0d2a
Added image overlays, these are offset and scaled photos drawn on top of the part model to help getting part data from pictures.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
194
diff
changeset
|
29 | class QDoubleSpinBox; |
7a776f6b0d2a
Added image overlays, these are offset and scaled photos drawn on top of the part model to help getting part data from pictures.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
194
diff
changeset
|
30 | class QSpinBox; |
7a776f6b0d2a
Added image overlays, these are offset and scaled photos drawn on top of the part model to help getting part data from pictures.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
194
diff
changeset
|
31 | class QLineEdit; |
553
2418d5955421
- LDFile renamed to LDDocument, file.h -> document.h
Santeri Piippo <crimsondusk64@gmail.com>
parents:
550
diff
changeset
|
32 | class LDDocument; |
253
0737c217a54d
Added ability to have multiple GLRenderers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
251
diff
changeset
|
33 | class QTimer; |
195
7a776f6b0d2a
Added image overlays, these are offset and scaled photos drawn on top of the part model to help getting part data from pictures.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
194
diff
changeset
|
34 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
35 | enum EditMode |
603 | 36 | { |
37 | ESelectMode, | |
550 | 38 | EDrawMode, |
39 | ECircleMode, | |
251
c4b96bc41298
Made a vector class which wraps around std::vector... finally I have an operator<< for the thing.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
240
diff
changeset
|
40 | }; |
c4b96bc41298
Made a vector class which wraps around std::vector... finally I have an operator<< for the thing.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
240
diff
changeset
|
41 | |
c4b96bc41298
Made a vector class which wraps around std::vector... finally I have an operator<< for the thing.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
240
diff
changeset
|
42 | // Meta for overlays |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
43 | struct LDGLOverlay |
603 | 44 | { |
604 | 45 | Vertex v0, |
550 | 46 | v1; |
47 | int ox, | |
48 | oy; | |
49 | double lw, | |
50 | lh; | |
606
3dd6f343ec06
- removed the 'str' typedef, use QString directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
604
diff
changeset
|
51 | QString fname; |
550 | 52 | QImage* img; |
251
c4b96bc41298
Made a vector class which wraps around std::vector... finally I have an operator<< for the thing.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
240
diff
changeset
|
53 | }; |
c4b96bc41298
Made a vector class which wraps around std::vector... finally I have an operator<< for the thing.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
240
diff
changeset
|
54 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
55 | struct LDFixedCameraInfo |
603 | 56 | { |
57 | const char glrotate[3]; | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
58 | const Axis axisX, axisY; |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
59 | const bool negX, negY; |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
60 | }; |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
61 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
62 | // ============================================================================= |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
63 | // GLRenderer |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
64 | // |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
65 | // The main renderer object, draws the brick on the screen, manages the camera |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
66 | // and selection picking. The instance of GLRenderer is accessible as |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
412
diff
changeset
|
67 | // g_win->R() |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
68 | // ============================================================================= |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
69 | class GLRenderer : public QGLWidget |
603 | 70 | { |
71 | typedefs: | |
550 | 72 | enum EFixedCamera |
603 | 73 | { |
74 | ETopCamera, | |
550 | 75 | EFrontCamera, |
76 | ELeftCamera, | |
77 | EBottomCamera, | |
78 | EBackCamera, | |
79 | ERightCamera, | |
80 | EFreeCamera | |
81 | }; | |
82 | ||
83 | enum ListType | |
603 | 84 | { |
85 | NormalList, | |
550 | 86 | PickList, |
87 | BFCFrontList, | |
88 | BFCBackList | |
89 | }; | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
90 | |
550 | 91 | // CameraIcon::img is a heap-allocated QPixmap because otherwise it gets |
92 | // initialized before program gets to main() and constructs a QApplication | |
93 | // and Qt doesn't like that. | |
94 | struct CameraIcon | |
603 | 95 | { |
96 | QPixmap* img; | |
550 | 97 | QRect srcRect, |
98 | destRect, | |
99 | selRect; | |
100 | EFixedCamera cam; | |
101 | }; | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
102 | |
550 | 103 | properties: |
104 | Q_OBJECT | |
105 | PROPERTY (public, bool, DrawOnly, BOOL_OPS, STOCK_WRITE) | |
106 | PROPERTY (public, MessageManager*, MessageLog, NO_OPS, STOCK_WRITE) | |
107 | PROPERTY (private, bool, Picking, BOOL_OPS, STOCK_WRITE) | |
578
a86ae85a277c
- added visible line angles when drawing
Santeri Piippo <crimsondusk64@gmail.com>
parents:
574
diff
changeset
|
108 | PROPERTY (public, LDDocument*, File, NO_OPS, CUSTOM_WRITE) |
550 | 109 | PROPERTY (public, EditMode, EditMode, NO_OPS, CUSTOM_WRITE) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
110 | |
603 | 111 | public: |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
112 | GLRenderer (QWidget* parent = null); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
113 | ~GLRenderer(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
114 | |
550 | 115 | inline EFixedCamera camera() const |
603 | 116 | { |
117 | return m_camera; | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
118 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
119 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
120 | void clearOverlay(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
121 | void compileObject (LDObject* obj); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
122 | void compileAllObjects(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
123 | void drawGLScene(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
124 | void endDraw (bool accept); |
550 | 125 | Axis getCameraAxis (bool y, EFixedCamera camid = (EFixedCamera) - 1); |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
126 | const char* getCameraName() const; |
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
127 | double getDepthValue() const; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
128 | QColor getMainColor(); |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
493
diff
changeset
|
129 | LDGLOverlay& getOverlay (int newcam); |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
130 | uchar* getScreencap (int& w, int& h); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
131 | void hardRefresh(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
132 | void initGLData(); |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
133 | void initOverlaysFromObjects(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
134 | void refresh(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
135 | void resetAngles(); |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
136 | void resetAllAngles(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
137 | void setBackground(); |
550 | 138 | void setCamera (const EFixedCamera cam); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
139 | void setDepthValue (double depth); |
606
3dd6f343ec06
- removed the 'str' typedef, use QString directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
604
diff
changeset
|
140 | bool setupOverlay (EFixedCamera cam, QString file, int x, int y, int w, int h); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
141 | void updateOverlayObjects(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
142 | void zoomNotch (bool inward); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
143 | void zoomToFit(); |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
144 | void zoomAllToFit(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
145 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
146 | static void deleteLists (LDObject* obj); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
147 | |
603 | 148 | protected: |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
149 | void contextMenuEvent (QContextMenuEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
150 | void initializeGL(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
151 | void keyPressEvent (QKeyEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
152 | void keyReleaseEvent (QKeyEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
153 | void leaveEvent (QEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
154 | void mouseDoubleClickEvent (QMouseEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
155 | void mousePressEvent (QMouseEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
156 | void mouseMoveEvent (QMouseEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
157 | void mouseReleaseEvent (QMouseEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
158 | void paintEvent (QPaintEvent* ev); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
159 | void resizeGL (int w, int h); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
160 | void wheelEvent (QWheelEvent* ev); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
161 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
162 | private: |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
163 | CameraIcon m_cameraIcons[7]; |
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
164 | QTimer* m_toolTipTimer; |
603 | 165 | Qt::MouseButtons m_lastButtons; |
166 | Qt::KeyboardModifiers m_keymods; | |
604 | 167 | Vertex m_hoverpos; |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
168 | double m_virtWidth, |
603 | 169 | m_virtHeight, |
170 | m_rotX[7], | |
171 | m_rotY[7], | |
172 | m_rotZ[7], | |
173 | m_panX[7], | |
174 | m_panY[7], | |
175 | m_zoom[7]; | |
176 | bool m_darkbg, | |
177 | m_rangepick, | |
178 | m_addpick, | |
179 | m_drawToolTip, | |
180 | m_screencap, | |
181 | m_panning; | |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
182 | QPoint m_pos, |
603 | 183 | m_globalpos, |
184 | m_rangeStart; | |
185 | QPen m_thickBorderPen, | |
186 | m_thinBorderPen; | |
550 | 187 | EFixedCamera m_camera, |
603 | 188 | m_toolTipCamera; |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
189 | GLuint m_axeslist; |
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
190 | int m_width, |
603 | 191 | m_height, |
192 | m_totalmove; | |
604 | 193 | QList<Vertex> m_drawedVerts; |
603 | 194 | bool m_rectdraw; |
604 | 195 | Vertex m_rectverts[4]; |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
196 | QColor m_bgcolor; |
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
197 | double m_depthValues[6]; |
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
198 | LDGLOverlay m_overlays[6]; |
604 | 199 | QList<Vertex> m_knownVerts; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
479
diff
changeset
|
200 | |
604 | 201 | void addDrawnVertex (Vertex m_hoverpos); |
550 | 202 | LDOverlay* findOverlayObject (EFixedCamera cam); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
203 | void updateRectVerts(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
204 | void getRelativeAxes (Axis& relX, Axis& relY) const; |
604 | 205 | Matrix getCircleDrawMatrix (double scale); |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
206 | void drawBlip (QPainter& paint, QPoint pos) const; |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
207 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
208 | // Compute geometry for camera icons |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
209 | void calcCameraIcons(); |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
210 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
211 | // How large is the circle we're drawing right now? |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
212 | double getCircleDrawDist (int pos) const; |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
213 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
214 | // Clamps an angle to [0, 360] |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
215 | void clampAngle (double& angle) const; |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
216 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
217 | // Compile one of the lists of an object |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
218 | void compileList (LDObject* obj, const ListType list); |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
219 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
220 | // Sub-routine for object compiling |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
221 | void compileSubObject (LDObject* obj, const GLenum gltype); |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
222 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
223 | // Compile a single vertex to a list |
604 | 224 | void compileVertex (const Vertex& vrt); |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
225 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
226 | // Convert a 2D point to a 3D point |
604 | 227 | Vertex coordconv2_3 (const QPoint& pos2d, bool snap) const; |
539
72ad83a67165
- upgraded the PROPERTY macro, resulting in a major code refactor
Santeri Piippo <crimsondusk64@gmail.com>
parents:
538
diff
changeset
|
228 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
229 | // Convert a 3D point to a 2D point |
604 | 230 | QPoint coordconv3_2 (const Vertex& pos3d) const; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
231 | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
232 | // Perform object selection |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
233 | void pick (int mouseX, int mouseY); |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
234 | |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
235 | // Set the color to an object list |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
236 | void setObjectColor (LDObject* obj, const ListType list); |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
237 | |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
238 | // Get a rotation value |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
239 | inline double& rot (Axis ax) |
603 | 240 | { |
241 | return | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
242 | (ax == X) ? m_rotX[camera()] : |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
243 | (ax == Y) ? m_rotY[camera()] : |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
244 | m_rotZ[camera()]; |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
245 | } |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
246 | |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
247 | // Get a panning value |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
248 | inline double& pan (Axis ax) |
603 | 249 | { |
250 | return (ax == X) ? m_panX[camera()] : m_panY[camera()]; | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
251 | } |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
252 | |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
253 | // Same except const (can be used in const methods) |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
254 | inline const double& pan (Axis ax) const |
603 | 255 | { |
256 | return (ax == X) ? m_panX[camera()] : m_panY[camera()]; | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
257 | } |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
258 | |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
259 | // Get the zoom value |
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
260 | inline double& zoom() |
603 | 261 | { |
262 | return m_zoom[camera()]; | |
534
3ed2ebcbc84f
Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
516
diff
changeset
|
263 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
264 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
265 | private slots: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
266 | void slot_toolTipTimer(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
267 | }; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
268 | |
317
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
269 | // Alias for short namespaces |
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
270 | typedef GLRenderer GL; |
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
271 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
272 | static const GLRenderer::ListType g_glListTypes[] = |
603 | 273 | { |
274 | GL::NormalList, | |
185
6fea53f1ffc2
Speed up picking - no need to rebuild the object list as its contents do not change while picking. Fixed transparent stuff always being opaque (although it still appears messed up for some reason)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
183
diff
changeset
|
275 | GL::PickList, |
191
9bb6a17305ad
Readded BFC red-green view, although determining inversion isn't always correct and it cannot handle CW-certified files...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
185
diff
changeset
|
276 | GL::BFCFrontList, |
9bb6a17305ad
Readded BFC red-green view, although determining inversion isn't always correct and it cannot handle CW-certified files...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
185
diff
changeset
|
277 | GL::BFCBackList, |
185
6fea53f1ffc2
Speed up picking - no need to rebuild the object list as its contents do not change while picking. Fixed transparent stuff always being opaque (although it still appears messed up for some reason)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
183
diff
changeset
|
278 | }; |
6fea53f1ffc2
Speed up picking - no need to rebuild the object list as its contents do not change while picking. Fixed transparent stuff always being opaque (although it still appears messed up for some reason)
Santeri Piippo <crimsondusk64@gmail.com>
parents:
183
diff
changeset
|
279 | |
550 | 280 | extern const GL::EFixedCamera g_Cameras[7]; |
198
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
281 | extern const char* g_CameraNames[7]; |
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
282 | |
538
2f85d4d286e5
- ensured header files' guards start with LDFORGE_
Santeri Piippo <crimsondusk64@gmail.com>
parents:
534
diff
changeset
|
283 | #endif // LDFORGE_GLDRAW_H |