Tue, 11 Mar 2014 16:42:37 +0200
- fixed: an overlay that failed to load no longer attempts to reload it over and over again
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
1 | /* | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
2 | * LDForge: LDraw parts authoring CAD | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
3 | * Copyright (C) 2013, 2014 Santeri Piippo | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
4 | * | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
5 | * This program is free software: you can redistribute it and/or modify | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
6 | * it under the terms of the GNU General Public License as published by | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
7 | * the Free Software Foundation, either version 3 of the License, or | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
8 | * (at your option) any later version. | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
9 | * | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
10 | * This program is distributed in the hope that it will be useful, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
13 | * GNU General Public License for more details. | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
14 | * | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
15 | * You should have received a copy of the GNU General Public License | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
17 | */ | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
18 | |
| 
641
 
425b169a82aa
- changed header guards into #pragma once
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
629 
diff
changeset
 | 
19 | #pragma once | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
20 | #include <QGLWidget> | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
21 | #include "Main.h" | 
| 
644
 
93dcd1a0e4bd
- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
642 
diff
changeset
 | 
22 | #include "Macros.h" | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
23 | #include "LDObject.h" | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
24 | #include "Document.h" | 
| 
675
 
450827da2376
Merge ../ldforge into gl
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
629 
diff
changeset
 | 
25 | #include "GLShared.h" | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
26 | |
| 
679
 
dd7545e00a8f
- now actually renders stuff correctly
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
676 
diff
changeset
 | 
27 | class GLCompiler; | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
28 | class MessageManager; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
29 | class QDialogButtonBox; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
30 | class RadioGroup; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
31 | class QDoubleSpinBox; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
32 | class QSpinBox; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
33 | class QLineEdit; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
34 | class QTimer; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
35 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
36 | enum EditMode | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
37 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
38 | ESelectMode, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
39 | EDrawMode, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
40 | ECircleMode, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
41 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
42 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
43 | // Meta for overlays | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
44 | struct LDGLOverlay | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
45 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
46 | Vertex v0, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
47 | v1; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
48 | int ox, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
49 | oy; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
50 | double lw, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
51 | lh; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
52 | QString fname; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
53 | QImage* img; | 
| 
704
 
d19213bec2f9
- fixed: an overlay that failed to load no longer attempts to reload it over and over again
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
699 
diff
changeset
 | 
54 | bool invalid; | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
55 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
56 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
57 | struct LDFixedCameraInfo | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
58 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
59 | const char glrotate[3]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
60 | const Axis axisX, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
61 | axisY; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
62 | const bool negX, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
63 | negY; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
64 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
65 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
66 | // ============================================================================= | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
67 | // Document-specific data | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
68 | // | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
69 | struct LDGLData | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
70 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
71 | double rotX, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
72 | rotY, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
73 | rotZ, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
74 | panX[7], | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
75 | panY[7], | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
76 | zoom[7]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
77 | double depthValues[6]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
78 | LDGLOverlay overlays[6]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
79 | bool init; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
80 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
81 | LDGLData() | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
82 | { | 
| 
699
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
83 | for (int i = 0; i < 7; ++i) | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
84 | { | 
| 
699
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
85 | if (i < 6) | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
86 | { | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
87 | overlays[i].img = null; | 
| 
704
 
d19213bec2f9
- fixed: an overlay that failed to load no longer attempts to reload it over and over again
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
699 
diff
changeset
 | 
88 | overlays[i].invalid = false; | 
| 
699
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
89 | depthValues[i] = 0.0f; | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
90 | } | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
91 | |
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
92 | zoom[i] = 30.0; | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
93 | panX[i] = 0.0; | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
94 | panY[i] = 0.0; | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
95 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
96 | |
| 
699
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
97 | rotX = 0; | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
98 | rotY = 0; | 
| 
 
aca63a3cce36
- fixed zoom value not being initialized properly + some other minor things
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
694 
diff
changeset
 | 
99 | rotZ = 0; | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
100 | init = false; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
101 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
102 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
103 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
104 | // ============================================================================= | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
105 | // The main renderer object, draws the brick on the screen, manages the camera | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
106 | // and selection picking. The instance of GLRenderer is accessible as | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
107 | // g_win->R() | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
108 | // | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
109 | class GLRenderer : public QGLWidget | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
110 | { | 
| 
642
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
111 | public: | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
112 | enum EFixedCamera | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
113 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
114 | ETopCamera, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
115 | EFrontCamera, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
116 | ELeftCamera, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
117 | EBottomCamera, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
118 | EBackCamera, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
119 | ERightCamera, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
120 | EFreeCamera | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
121 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
122 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
123 | enum ListType | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
124 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
125 | NormalList, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
126 | PickList, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
127 | BFCFrontList, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
128 | BFCBackList | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
129 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
130 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
131 | // CameraIcon::img is a heap-allocated QPixmap because otherwise it gets | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
132 | // initialized before program gets to main() and constructs a QApplication | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
133 | // and Qt doesn't like that. | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
134 | struct CameraIcon | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
135 | { | 
| 
694
 
3868f52da6b9
- the GL compiler now supports multiple documents
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
690 
diff
changeset
 | 
136 | QPixmap* img; | 
| 
 
3868f52da6b9
- the GL compiler now supports multiple documents
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
690 
diff
changeset
 | 
137 | QRect srcRect, | 
| 
 
3868f52da6b9
- the GL compiler now supports multiple documents
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
690 
diff
changeset
 | 
138 | destRect, | 
| 
 
3868f52da6b9
- the GL compiler now supports multiple documents
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
690 
diff
changeset
 | 
139 | selRect; | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
140 | EFixedCamera cam; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
141 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
142 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
143 | Q_OBJECT | 
| 
642
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
144 | PROPERTY (public, bool, isDrawOnly, setDrawOnly, STOCK_WRITE) | 
| 
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
145 | PROPERTY (public, MessageManager*, messageLog, setMessageLog, STOCK_WRITE) | 
| 
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
146 | PROPERTY (private, bool, isPicking, setPicking, STOCK_WRITE) | 
| 
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
147 | PROPERTY (public, LDDocument*, document, setDocument, CUSTOM_WRITE) | 
| 
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
148 | PROPERTY (public, EditMode, editMode, setEditMode, CUSTOM_WRITE) | 
| 
694
 
3868f52da6b9
- the GL compiler now supports multiple documents
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
690 
diff
changeset
 | 
149 | PROPERTY (private, GLCompiler*, compiler, setCompiler, STOCK_WRITE) | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
150 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
151 | public: | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
152 | GLRenderer (QWidget* parent = null); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
153 | ~GLRenderer(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
154 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
155 | inline EFixedCamera camera() const | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
156 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
157 | return m_camera; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
158 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
159 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
160 | void clearOverlay(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
161 | void compileObject (LDObject* obj); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
162 | void drawGLScene(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
163 | void endDraw (bool accept); | 
| 
681
 
c1cc036c6e1f
- work on improved rendering performance
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
679 
diff
changeset
 | 
164 | void forgetObject (LDObject* obj); | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
165 | Axis getCameraAxis (bool y, EFixedCamera camid = (EFixedCamera) - 1); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
166 | const char* getCameraName() const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
167 | double getDepthValue() const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
168 | LDGLOverlay& getOverlay (int newcam); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
169 | uchar* getScreencap (int& w, int& h); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
170 | void hardRefresh(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
171 | void initGLData(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
172 | void initOverlaysFromObjects(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
173 | void refresh(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
174 | void resetAngles(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
175 | void resetAllAngles(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
176 | void setBackground(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
177 | void setCamera (const EFixedCamera cam); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
178 | void setDepthValue (double depth); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
179 | bool setupOverlay (EFixedCamera cam, QString file, int x, int y, int w, int h); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
180 | void updateOverlayObjects(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
181 | void zoomNotch (bool inward); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
182 | void zoomToFit(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
183 | void zoomAllToFit(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
184 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
185 | static void deleteLists (LDObject* obj); | 
| 
675
 
450827da2376
Merge ../ldforge into gl
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
629 
diff
changeset
 | 
186 | static QColor getMainColor(); | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
187 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
188 | protected: | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
189 | void contextMenuEvent (QContextMenuEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
190 | void initializeGL(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
191 | void keyPressEvent (QKeyEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
192 | void keyReleaseEvent (QKeyEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
193 | void leaveEvent (QEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
194 | void mouseDoubleClickEvent (QMouseEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
195 | void mousePressEvent (QMouseEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
196 | void mouseMoveEvent (QMouseEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
197 | void mouseReleaseEvent (QMouseEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
198 | void paintEvent (QPaintEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
199 | void resizeGL (int w, int h); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
200 | void wheelEvent (QWheelEvent* ev); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
201 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
202 | private: | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
203 | CameraIcon m_cameraIcons[7]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
204 | QTimer* m_toolTipTimer; | 
| 
642
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
205 | Qt::MouseButtons m_lastButtons; | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
206 | Qt::KeyboardModifiers m_keymods; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
207 | Vertex m_hoverpos; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
208 | double m_virtWidth, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
209 | m_virtHeight; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
210 | bool m_darkbg, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
211 | m_rangepick, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
212 | m_addpick, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
213 | m_drawToolTip, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
214 | m_screencap, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
215 | m_panning; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
216 | QPoint m_pos, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
217 | m_globalpos, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
218 | m_rangeStart; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
219 | QPen m_thickBorderPen, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
220 | m_thinBorderPen; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
221 | EFixedCamera m_camera, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
222 | m_toolTipCamera; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
223 | GLuint m_axeslist; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
224 | int m_width, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
225 | m_height, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
226 | m_totalmove; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
227 | QList<Vertex> m_drawedVerts; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
228 | bool m_rectdraw; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
229 | Vertex m_rectverts[4]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
230 | QColor m_bgcolor; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
231 | QList<Vertex> m_knownVerts; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
232 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
233 | void addDrawnVertex (Vertex m_hoverpos); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
234 | LDOverlay* findOverlayObject (EFixedCamera cam); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
235 | void updateRectVerts(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
236 | void getRelativeAxes (Axis& relX, Axis& relY) const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
237 | Matrix getCircleDrawMatrix (double scale); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
238 | void drawBlip (QPainter& paint, QPoint pos) const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
239 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
240 | // Compute geometry for camera icons | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
241 | void calcCameraIcons(); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
242 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
243 | // How large is the circle we're drawing right now? | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
244 | double getCircleDrawDist (int pos) const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
245 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
246 | // Clamps an angle to [0, 360] | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
247 | void clampAngle (double& angle) const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
248 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
249 | // Compile one of the lists of an object | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
250 | void compileList (LDObject* obj, const ListType list); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
251 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
252 | // Sub-routine for object compiling | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
253 | void compileSubObject (LDObject* obj, const GLenum gltype); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
254 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
255 | // Compile a single vertex to a list | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
256 | void compileVertex (const Vertex& vrt); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
257 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
258 | // Convert a 2D point to a 3D point | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
259 | Vertex coordconv2_3 (const QPoint& pos2d, bool snap) const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
260 | |
| 
676
 
f7f965742fd5
- converted to VBO
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
675 
diff
changeset
 | 
261 | // Draw a VBO array | 
| 
684
 
8a56b1d4d44d
- greatly improved the GL compiler, now deals colors and object removal properly
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
681 
diff
changeset
 | 
262 | void drawVBOs (EVBOSurface surface, EVBOComplement colors, GLenum type); | 
| 
675
 
450827da2376
Merge ../ldforge into gl
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
629 
diff
changeset
 | 
263 | |
| 
 
450827da2376
Merge ../ldforge into gl
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
629 
diff
changeset
 | 
264 | // Determine which color to draw text with | 
| 
 
450827da2376
Merge ../ldforge into gl
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
629 
diff
changeset
 | 
265 | QColor getTextPen() const; | 
| 
 
450827da2376
Merge ../ldforge into gl
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
629 
diff
changeset
 | 
266 | |
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
267 | // Convert a 3D point to a 2D point | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
268 | QPoint coordconv3_2 (const Vertex& pos3d) const; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
269 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
270 | // Perform object selection | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
271 | void pick (int mouseX, int mouseY); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
272 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
273 | // Set the color to an object list | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
274 | void setObjectColor (LDObject* obj, const ListType list); | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
275 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
276 | LDGLData& currentDocumentData() const | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
277 | { | 
| 
642
 
751a8df42842
- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
641 
diff
changeset
 | 
278 | return *document()->getGLData(); | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
279 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
280 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
281 | // Get a rotation value | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
282 | inline double& rot (Axis ax) | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
283 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
284 | return | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
285 | (ax == X) ? currentDocumentData().rotX : | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
286 | (ax == Y) ? currentDocumentData().rotY : | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
287 | currentDocumentData().rotZ; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
288 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
289 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
290 | // Get a panning value | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
291 | inline double& pan (Axis ax) | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
292 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
293 | return (ax == X) ? currentDocumentData().panX[camera()] : | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
294 | currentDocumentData().panY[camera()]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
295 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
296 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
297 | // Same except const (can be used in const methods) | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
298 | inline const double& pan (Axis ax) const | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
299 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
300 | return (ax == X) ? currentDocumentData().panX[camera()] : | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
301 | currentDocumentData().panY[camera()]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
302 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
303 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
304 | // Get the zoom value | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
305 | inline double& zoom() | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
306 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
307 | return currentDocumentData().zoom[camera()]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
308 | } | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
309 | |
| 
644
 
93dcd1a0e4bd
- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
642 
diff
changeset
 | 
310 | template<typename... Args> | 
| 
 
93dcd1a0e4bd
- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
642 
diff
changeset
 | 
311 | inline QString format (QString fmtstr, Args... args) | 
| 
 
93dcd1a0e4bd
- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
642 
diff
changeset
 | 
312 | { | 
| 
 
93dcd1a0e4bd
- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
642 
diff
changeset
 | 
313 | return ::format (fmtstr, args...); | 
| 
 
93dcd1a0e4bd
- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
642 
diff
changeset
 | 
314 | } | 
| 
 
93dcd1a0e4bd
- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
642 
diff
changeset
 | 
315 | |
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
316 | private slots: | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
317 | void slot_toolTipTimer(); | 
| 
679
 
dd7545e00a8f
- now actually renders stuff correctly
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents: 
676 
diff
changeset
 | 
318 | void initializeAxes(); | 
| 
629
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
319 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
320 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
321 | // Alias for short namespaces | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
322 | typedef GLRenderer GL; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
323 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
324 | static const GLRenderer::ListType g_glListTypes[] = | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
325 | { | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
326 | GL::NormalList, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
327 | GL::PickList, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
328 | GL::BFCFrontList, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
329 | GL::BFCBackList, | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
330 | }; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
331 | |
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
332 | extern const GL::EFixedCamera g_Cameras[7]; | 
| 
 
b75c6cce02e2
- refactored filenames
 
Santeri Piippo <crimsondusk64@gmail.com> 
parents:  
diff
changeset
 | 
333 | extern const char* g_CameraNames[7]; |