Wed, 16 Oct 2013 17:11:16 +0300
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
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 |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
3 | * Copyright (C) 2013 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:
448
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 |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
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:
448
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:
448
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 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
19 | #include <QGLWidget> |
200
5583af82087e
Merged new part and LDraw path dialogs into dialogs.cpp
Santeri Piippo <crimsondusk64@gmail.com>
parents:
198
diff
changeset
|
20 | #include <QWheelEvent> |
5583af82087e
Merged new part and LDraw path dialogs into dialogs.cpp
Santeri Piippo <crimsondusk64@gmail.com>
parents:
198
diff
changeset
|
21 | #include <QMouseEvent> |
5583af82087e
Merged new part and LDraw path dialogs into dialogs.cpp
Santeri Piippo <crimsondusk64@gmail.com>
parents:
198
diff
changeset
|
22 | #include <QContextMenuEvent> |
219
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
23 | #include <QInputDialog> |
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:
448
diff
changeset
|
24 | #include <QToolTip> |
253
0737c217a54d
Added ability to have multiple GLRenderers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
252
diff
changeset
|
25 | #include <QTimer> |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
26 | #include <GL/glu.h> |
198
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
27 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
28 | #include "common.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
29 | #include "config.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
30 | #include "file.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
31 | #include "gldraw.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
32 | #include "colors.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
33 | #include "gui.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
34 | #include "misc.h" |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
35 | #include "history.h" |
198
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
36 | #include "dialogs.h" |
285
836e77323ab0
Also allow objects to be edited by double-click in the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
282
diff
changeset
|
37 | #include "addObjectDialog.h" |
351 | 38 | #include "messagelog.h" |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
39 | #include "primitives.h" |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
40 | #include "moc_gldraw.cpp" |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
41 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
42 | static const LDFixedCameraInfo g_FixedCameras[6] = |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
43 | { {{ 1, 0, 0 }, X, Z, false, false }, |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
44 | {{ 0, 0, 0 }, X, Y, false, true }, |
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
45 | {{ 0, 1, 0 }, Z, Y, true, true }, |
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
46 | {{ -1, 0, 0 }, X, Z, false, true }, |
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
47 | {{ 0, 0, 0 }, X, Y, true, true }, |
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
48 | {{ 0, -1, 0 }, Z, Y, false, true }, |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
49 | }; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
50 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
51 | static const matrix g_circleDrawTransforms[3] = |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
52 | { { 2, 0, 0, 0, 1, 0, 0, 0, 2 }, |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
53 | { 2, 0, 0, 0, 0, 2, 0, 1, 0 }, |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
54 | { 0, 1, 0, 2, 0, 0, 0, 0, 2 }, |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
55 | }; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
56 | |
461
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
57 | cfg (String, gl_bgcolor, "#CCCCD9"); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
58 | cfg (String, gl_maincolor, "#707078"); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
59 | cfg (Float, gl_maincolor_alpha, 1.0); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
60 | cfg (Int, gl_linethickness, 2); |
469
f2faed654633
more changes. Spawn the config prompt on first start, on the profile tab. gl_colorbfc and gl_blackedges now default to false.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
61 | cfg (Bool, gl_colorbfc, false); |
461
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
62 | cfg (Int, gl_camera, GLRenderer::Free); |
469
f2faed654633
more changes. Spawn the config prompt on first start, on the profile tab. gl_colorbfc and gl_blackedges now default to false.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
461
diff
changeset
|
63 | cfg (Bool, gl_blackedges, false); |
461
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
64 | cfg (Bool, gl_axes, false); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
65 | cfg (Bool, gl_wireframe, false); |
fbcc91ae1dd2
- added "Go to line" action, renamed the config classes to proper camelcase
Santeri Piippo <crimsondusk64@gmail.com>
parents:
460
diff
changeset
|
66 | cfg (Bool, gl_logostuds, false); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
67 | |
321
48e429bfd58c
Apply tr() for possible future translations
Santeri Piippo <crimsondusk64@gmail.com>
parents:
319
diff
changeset
|
68 | // argh |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
69 | const char* g_CameraNames[7] = |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
70 | { QT_TRANSLATE_NOOP ("GLRenderer", "Top"), |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
71 | QT_TRANSLATE_NOOP ("GLRenderer", "Front"), |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
72 | QT_TRANSLATE_NOOP ("GLRenderer", "Left"), |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
73 | QT_TRANSLATE_NOOP ("GLRenderer", "Bottom"), |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
74 | QT_TRANSLATE_NOOP ("GLRenderer", "Back"), |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
75 | QT_TRANSLATE_NOOP ("GLRenderer", "Right"), |
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
76 | QT_TRANSLATE_NOOP ("GLRenderer", "Free") |
321
48e429bfd58c
Apply tr() for possible future translations
Santeri Piippo <crimsondusk64@gmail.com>
parents:
319
diff
changeset
|
77 | }; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
78 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
79 | const GL::Camera g_Cameras[7] = |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
80 | { GL::Top, |
198
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
81 | GL::Front, |
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
82 | GL::Left, |
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
83 | GL::Bottom, |
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
84 | GL::Back, |
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
85 | GL::Right, |
f246725199dc
Split some stuff into separate files
Santeri Piippo <crimsondusk64@gmail.com>
parents:
197
diff
changeset
|
86 | GL::Free |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
87 | }; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
88 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
89 | const struct LDGLAxis |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
90 | { const QColor col; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
91 | const vertex vert; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
92 | } g_GLAxes[3] = |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
93 | { { QColor (255, 0, 0), vertex (10000, 0, 0) }, |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
94 | { QColor (80, 192, 0), vertex (0, 10000, 0) }, |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
95 | { QColor (0, 160, 192), vertex (0, 0, 10000) }, |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
96 | }; |
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:
448
diff
changeset
|
97 | |
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:
448
diff
changeset
|
98 | static bool g_glInvert = false; |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
99 | static QList<short> g_warnedColors; |
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:
448
diff
changeset
|
100 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
101 | // ============================================================================= |
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:
448
diff
changeset
|
102 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
103 | GLRenderer::GLRenderer (QWidget* parent) : QGLWidget (parent) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
104 | { m_picking = m_rangepick = false; |
412 | 105 | m_camera = (GL::Camera) gl_camera.value; |
106 | m_drawToolTip = false; | |
107 | m_editMode = Select; | |
108 | m_rectdraw = false; | |
109 | m_panning = false; | |
110 | setFile (null); | |
253
0737c217a54d
Added ability to have multiple GLRenderers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
252
diff
changeset
|
111 | setDrawOnly (false); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
112 | resetAngles(); |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
113 | setMessageLog (null); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
114 | |
412 | 115 | m_toolTipTimer = new QTimer (this); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
116 | m_toolTipTimer->setSingleShot (true); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
117 | connect (m_toolTipTimer, SIGNAL (timeout()), this, SLOT (slot_toolTipTimer())); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
118 | |
412 | 119 | m_thickBorderPen = QPen (QColor (0, 0, 0, 208), 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); |
120 | m_thinBorderPen = m_thickBorderPen; | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
121 | m_thinBorderPen.setWidth (1); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
122 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
123 | // Init camera icons |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
124 | for (const GL::Camera cam : g_Cameras) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
125 | { str iconname = fmt ("camera-%1", tr (g_CameraNames[cam]).toLower()); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
126 | |
291
c8547f780861
Make camera icons a member of GLRenderer so multiple renderers won't conflict about them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
286
diff
changeset
|
127 | CameraIcon* info = &m_cameraIcons[cam]; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
128 | info->img = new QPixmap (getIcon (iconname)); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
129 | info->cam = cam; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
130 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
131 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
132 | for (int i = 0; i < 6; ++i) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
133 | { m_overlays[i].img = null; |
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:
250
diff
changeset
|
134 | m_depthValues[i] = 0.0f; |
219
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
135 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
136 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
137 | calcCameraIcons(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
138 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
139 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
140 | // ============================================================================= |
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:
448
diff
changeset
|
141 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
142 | GLRenderer::~GLRenderer() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
143 | { for (int i = 0; i < 6; ++i) |
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:
250
diff
changeset
|
144 | delete m_overlays[i].img; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
145 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
146 | for (CameraIcon& info : m_cameraIcons) |
291
c8547f780861
Make camera icons a member of GLRenderer so multiple renderers won't conflict about them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
286
diff
changeset
|
147 | delete info.img; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
148 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
149 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
150 | // ============================================================================= |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
151 | // Calculates the "hitboxes" of the camera icons so that we can tell when the |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
152 | // cursor is pointing at the camera icon. |
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:
448
diff
changeset
|
153 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
154 | void GLRenderer::calcCameraIcons() |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
155 | { int i = 0; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
156 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
157 | for (CameraIcon& info : m_cameraIcons) |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
158 | { // MATH |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
159 | const long x1 = (m_width - (info.cam != Free ? 48 : 16)) + ((i % 3) * 16) - 1, |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
160 | y1 = ((i / 3) * 16) + 1; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
161 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
162 | info.srcRect = QRect (0, 0, 16, 16); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
163 | info.destRect = QRect (x1, y1, 16, 16); |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
164 | info.selRect = QRect ( |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
165 | info.destRect.x(), |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
166 | info.destRect.y(), |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
167 | info.destRect.width() + 1, |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
168 | info.destRect.height() + 1 |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
169 | ); |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
170 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
171 | ++i; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
172 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
173 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
174 | |
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:
448
diff
changeset
|
175 | // ============================================================================= |
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:
448
diff
changeset
|
176 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
177 | void GLRenderer::initGLData() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
178 | { glEnable (GL_BLEND); |
230
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
179 | glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
180 | glEnable (GL_POLYGON_OFFSET_FILL); |
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
181 | glPolygonOffset (1.0f, 1.0f); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
182 | |
230
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
183 | glEnable (GL_DEPTH_TEST); |
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
184 | glShadeModel (GL_SMOOTH); |
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
185 | glEnable (GL_MULTISAMPLE); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
186 | |
230
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
187 | glEnable (GL_LINE_SMOOTH); |
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
188 | glHint (GL_LINE_SMOOTH_HINT, GL_NICEST); |
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
189 | } |
43d722c255d3
Added support for overpaint-less mode since I'm having serious trouble with that
Santeri Piippo <crimsondusk64@gmail.com>
parents:
223
diff
changeset
|
190 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
191 | // ============================================================================= |
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:
448
diff
changeset
|
192 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
193 | void GLRenderer::resetAngles() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
194 | { m_rotX = 30.0f; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
195 | m_rotY = 325.f; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
196 | m_panX = m_panY = m_rotZ = 0.0f; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
197 | zoomToFit(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
198 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
199 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
200 | // ============================================================================= |
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:
448
diff
changeset
|
201 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
202 | void GLRenderer::initializeGL() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
203 | { setBackground(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
204 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
205 | glLineWidth (gl_linethickness); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
206 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
207 | setAutoFillBackground (false); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
208 | setMouseTracking (true); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
209 | setFocusPolicy (Qt::WheelFocus); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
210 | compileAllObjects(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
211 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
212 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
213 | // ============================================================================= |
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:
448
diff
changeset
|
214 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
215 | QColor GLRenderer::getMainColor() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
216 | { QColor col (gl_maincolor); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
217 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
218 | if (!col.isValid()) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
219 | return QColor (0, 0, 0); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
220 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
221 | col.setAlpha (gl_maincolor_alpha * 255.f); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
222 | return col; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
223 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
224 | |
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:
448
diff
changeset
|
225 | // ============================================================================= |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
226 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
227 | void GLRenderer::setBackground() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
228 | { QColor col (gl_bgcolor); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
229 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
230 | if (!col.isValid()) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
231 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
232 | |
210
58a3cbb49374
Better support for dark backgrounds..
Santeri Piippo <crimsondusk64@gmail.com>
parents:
209
diff
changeset
|
233 | col.setAlpha (255); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
234 | |
210
58a3cbb49374
Better support for dark backgrounds..
Santeri Piippo <crimsondusk64@gmail.com>
parents:
209
diff
changeset
|
235 | m_darkbg = luma (col) < 80; |
58a3cbb49374
Better support for dark backgrounds..
Santeri Piippo <crimsondusk64@gmail.com>
parents:
209
diff
changeset
|
236 | m_bgcolor = col; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
237 | qglClearColor (col); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
238 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
239 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
240 | // ============================================================================= |
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:
448
diff
changeset
|
241 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
242 | void GLRenderer::setObjectColor (LDObject* obj, const ListType list) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
243 | { QColor qcol; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
244 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
245 | if (!obj->isColored()) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
246 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
247 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
248 | if (list == GL::PickList) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
249 | { // Make the color by the object's ID if we're picking, so we can make the |
307
c731a22899a3
Use unique IDs instead of file indices in picking lists, this is much less prone to error
Santeri Piippo <crimsondusk64@gmail.com>
parents:
296
diff
changeset
|
250 | // ID again from the color we get from the picking results. Be sure to use |
c731a22899a3
Use unique IDs instead of file indices in picking lists, this is much less prone to error
Santeri Piippo <crimsondusk64@gmail.com>
parents:
296
diff
changeset
|
251 | // the top level parent's index since we want a subfile's children point |
c731a22899a3
Use unique IDs instead of file indices in picking lists, this is much less prone to error
Santeri Piippo <crimsondusk64@gmail.com>
parents:
296
diff
changeset
|
252 | // to the subfile itself. |
c731a22899a3
Use unique IDs instead of file indices in picking lists, this is much less prone to error
Santeri Piippo <crimsondusk64@gmail.com>
parents:
296
diff
changeset
|
253 | long i = obj->topLevelParent()->id(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
254 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
255 | // Calculate a color based from this index. This method caters for |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
256 | // 16777216 objects. I don't think that'll be exceeded anytime soon. :) |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
257 | // ATM biggest is 53588.dat with 12600 lines. |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
258 | double r = (i / (256 * 256)) % 256, |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
259 | g = (i / 256) % 256, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
260 | b = i % 256; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
261 | |
210
58a3cbb49374
Better support for dark backgrounds..
Santeri Piippo <crimsondusk64@gmail.com>
parents:
209
diff
changeset
|
262 | qglColor (QColor (r, g, b)); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
263 | return; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
264 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
265 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
266 | if ( (list == BFCFrontList || list == BFCBackList) && |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
267 | obj->getType() != LDObject::Line && |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
268 | obj->getType() != LDObject::CndLine) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
269 | { |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
270 | |
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:
189
diff
changeset
|
271 | if (list == GL::BFCFrontList) |
296
d544de09c93b
Use a more greenish green rather than yellowish lime, added some constraints to when double-clicking in the viewport should edit the given object to prevent unwanted popups
Santeri Piippo <crimsondusk64@gmail.com>
parents:
291
diff
changeset
|
272 | qcol = QColor (40, 192, 0); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
273 | else |
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:
189
diff
changeset
|
274 | qcol = QColor (224, 0, 0); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
275 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
276 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
277 | { if (obj->color() == maincolor) |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
278 | qcol = getMainColor(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
279 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
280 | { LDColor* col = getColor (obj->color()); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
281 | |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
282 | if (col) |
363
75583c9f289d
primitive generator: add conditional lines to cylinders; improved bad color handling
Santeri Piippo <crimsondusk64@gmail.com>
parents:
361
diff
changeset
|
283 | qcol = col->faceColor; |
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:
189
diff
changeset
|
284 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
285 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
286 | if (obj->color() == edgecolor) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
287 | { qcol = luma (m_bgcolor) < 40 ? QColor (64, 64, 64) : Qt::black; |
364
7c3af0a6f8ab
Renamed the color class to LDColor for clarity
Santeri Piippo <crimsondusk64@gmail.com>
parents:
363
diff
changeset
|
288 | LDColor* col; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
289 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
290 | if (!gl_blackedges && obj->parent() && (col = getColor (obj->parent()->color()))) |
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:
189
diff
changeset
|
291 | qcol = col->edgeColor; |
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:
189
diff
changeset
|
292 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
293 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
294 | if (qcol.isValid() == false) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
295 | { // The color was unknown. Use main color to make the object at least |
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:
189
diff
changeset
|
296 | // not appear pitch-black. |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
297 | if (obj->color() != edgecolor) |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
298 | qcol = getMainColor(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
299 | |
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:
189
diff
changeset
|
300 | // Warn about the unknown colors, but only once. |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
301 | for (short i : g_warnedColors) |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
302 | if (obj->color() == i) |
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:
189
diff
changeset
|
303 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
304 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
305 | print ("%1: Unknown color %2!\n", __func__, obj->color()); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
306 | g_warnedColors << obj->color(); |
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:
189
diff
changeset
|
307 | return; |
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:
189
diff
changeset
|
308 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
309 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
310 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
311 | long r = qcol.red(), |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
312 | g = qcol.green(), |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
313 | b = qcol.blue(), |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
314 | a = qcol.alpha(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
315 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
316 | if (obj->topLevelParent()->selected()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
317 | { // Brighten it up for the select list. |
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
|
318 | const uchar add = 51; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
319 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
320 | r = min (r + add, 255l); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
321 | g = min (g + add, 255l); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
322 | b = min (b + add, 255l); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
323 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
324 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
325 | glColor4f ( |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
326 | ((double) r) / 255.0f, |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
327 | ((double) g) / 255.0f, |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
328 | ((double) b) / 255.0f, |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
329 | ((double) a) / 255.0f); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
330 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
331 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
332 | // ============================================================================= |
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:
448
diff
changeset
|
333 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
334 | void GLRenderer::refresh() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
335 | { update(); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
336 | swapBuffers(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
337 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
338 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
339 | // ============================================================================= |
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:
448
diff
changeset
|
340 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
341 | void GLRenderer::hardRefresh() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
342 | { compileAllObjects(); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
343 | refresh(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
344 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
345 | glLineWidth (gl_linethickness); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
346 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
347 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
348 | // ============================================================================= |
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:
448
diff
changeset
|
349 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
350 | void GLRenderer::resizeGL (int w, int h) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
351 | { m_width = w; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
352 | m_height = h; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
353 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
354 | calcCameraIcons(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
355 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
356 | glViewport (0, 0, w, h); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
357 | glMatrixMode (GL_PROJECTION); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
358 | glLoadIdentity(); |
210
58a3cbb49374
Better support for dark backgrounds..
Santeri Piippo <crimsondusk64@gmail.com>
parents:
209
diff
changeset
|
359 | gluPerspective (45.0f, (double) w / (double) h, 1.0f, 10000.0f); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
360 | glMatrixMode (GL_MODELVIEW); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
361 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
362 | |
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:
448
diff
changeset
|
363 | // ============================================================================= |
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:
448
diff
changeset
|
364 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
365 | void GLRenderer::drawGLScene() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
366 | { if (file() == null) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
367 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
368 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
369 | if (gl_wireframe && !picking()) |
193
ce8e25ccbaf6
Added wireframe mode
Santeri Piippo <crimsondusk64@gmail.com>
parents:
192
diff
changeset
|
370 | glPolygonMode (GL_FRONT_AND_BACK, GL_LINE); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
371 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
372 | glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
373 | glEnable (GL_DEPTH_TEST); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
374 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
375 | if (m_camera != Free) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
376 | { glMatrixMode (GL_PROJECTION); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
377 | glPushMatrix(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
378 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
379 | glLoadIdentity(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
380 | glOrtho (-m_virtWidth, m_virtWidth, -m_virtHeight, m_virtHeight, -100.0f, 100.0f); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
381 | glTranslatef (m_panX, m_panY, 0.0f); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
382 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
383 | if (m_camera != Front && m_camera != Back) |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
384 | { glRotatef (90.0f, g_FixedCameras[m_camera].glrotate[0], |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
385 | g_FixedCameras[m_camera].glrotate[1], |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
386 | g_FixedCameras[m_camera].glrotate[2]); |
476
baa35b4b67dc
fixed: front and back camera wouldn't render anything
Santeri Piippo <crimsondusk64@gmail.com>
parents:
475
diff
changeset
|
387 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
388 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
389 | // Back camera needs to be handled differently |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
390 | if (m_camera == GLRenderer::Back) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
391 | { glRotatef (180.0f, 1.0f, 0.0f, 0.0f); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
392 | glRotatef (180.0f, 0.0f, 0.0f, 1.0f); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
393 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
394 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
395 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
396 | { glMatrixMode (GL_MODELVIEW); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
397 | glPushMatrix(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
398 | glLoadIdentity(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
399 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
400 | glTranslatef (0.0f, 0.0f, -2.0f); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
401 | glTranslatef (m_panX, m_panY, -zoom()); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
402 | glRotatef (m_rotX, 1.0f, 0.0f, 0.0f); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
403 | glRotatef (m_rotY, 0.0f, 1.0f, 0.0f); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
404 | glRotatef (m_rotZ, 0.0f, 0.0f, 1.0f); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
405 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
406 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
407 | const GL::ListType list = (!drawOnly() && m_picking) ? PickList : NormalList; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
408 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
409 | if (gl_colorbfc && !m_picking && !drawOnly()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
410 | { glEnable (GL_CULL_FACE); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
411 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
412 | for (LDObject* obj : file()->objects()) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
413 | { if (obj->hidden()) |
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:
189
diff
changeset
|
414 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
415 | |
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:
189
diff
changeset
|
416 | glCullFace (GL_BACK); |
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:
189
diff
changeset
|
417 | glCallList (obj->glLists[BFCFrontList]); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
418 | |
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:
189
diff
changeset
|
419 | glCullFace (GL_FRONT); |
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:
189
diff
changeset
|
420 | glCallList (obj->glLists[BFCBackList]); |
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:
189
diff
changeset
|
421 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
422 | |
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:
189
diff
changeset
|
423 | glDisable (GL_CULL_FACE); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
424 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
425 | else |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
426 | { for (LDObject* obj : file()->objects()) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
427 | { if (obj->hidden()) |
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:
189
diff
changeset
|
428 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
429 | |
253
0737c217a54d
Added ability to have multiple GLRenderers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
252
diff
changeset
|
430 | glCallList (obj->glLists[list]); |
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:
189
diff
changeset
|
431 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
432 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
433 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
434 | if (gl_axes && !m_picking && !drawOnly()) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
435 | glCallList (m_axeslist); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
436 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
437 | glPopMatrix(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
438 | glMatrixMode (GL_MODELVIEW); |
193
ce8e25ccbaf6
Added wireframe mode
Santeri Piippo <crimsondusk64@gmail.com>
parents:
192
diff
changeset
|
439 | glPolygonMode (GL_FRONT_AND_BACK, GL_FILL); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
440 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
441 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
442 | // ============================================================================= |
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:
448
diff
changeset
|
443 | // ----------------------------------------------------------------------------- |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
444 | // This converts a 2D point on the screen to a 3D point in the model. If 'snap' |
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
445 | // is true, the 3D point will snap to the current grid. |
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:
448
diff
changeset
|
446 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
447 | vertex GLRenderer::coordconv2_3 (const QPoint& pos2d, bool snap) const |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
448 | { assert (camera() != Free); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
449 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
450 | vertex pos3d; |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
451 | const LDFixedCameraInfo* cam = &g_FixedCameras[m_camera]; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
452 | const Axis axisX = cam->axisX; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
453 | const Axis axisY = cam->axisY; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
454 | const short negXFac = cam->negX ? -1 : 1, |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
455 | negYFac = cam->negY ? -1 : 1; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
456 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
457 | // Calculate cx and cy - these are the LDraw unit coords the cursor is at. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
458 | double cx = (-m_virtWidth + ( (2 * pos2d.x() * m_virtWidth) / m_width) - m_panX); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
459 | double cy = (m_virtHeight - ( (2 * pos2d.y() * m_virtHeight) / m_height) - m_panY); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
460 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
461 | if (snap) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
462 | { cx = Grid::snap (cx, (Grid::Config) axisX); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
463 | cy = Grid::snap (cy, (Grid::Config) axisY); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
464 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
465 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
466 | cx *= negXFac; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
467 | cy *= negYFac; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
468 | |
286
7a562bf3d829
Converted to 16-bit strings.. again
Santeri Piippo <crimsondusk64@gmail.com>
parents:
285
diff
changeset
|
469 | str tmp; |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
470 | // Create the vertex from the coordinates |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
471 | pos3d[axisX] = tmp.sprintf ("%.3f", cx).toDouble(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
472 | pos3d[axisY] = tmp.sprintf ("%.3f", cy).toDouble(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
473 | pos3d[3 - axisX - axisY] = depthValue(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
474 | return pos3d; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
475 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
476 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
477 | // ============================================================================= |
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:
448
diff
changeset
|
478 | // ----------------------------------------------------------------------------- |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
479 | // Inverse operation for the above - convert a 3D position to a 2D screen |
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
480 | // position |
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:
448
diff
changeset
|
481 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
482 | QPoint GLRenderer::coordconv3_2 (const vertex& pos3d) const |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
483 | { GLfloat m[16]; |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
484 | const LDFixedCameraInfo* cam = &g_FixedCameras[m_camera]; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
485 | const Axis axisX = cam->axisX; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
486 | const Axis axisY = cam->axisY; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
487 | const short negXFac = cam->negX ? -1 : 1, |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
488 | negYFac = cam->negY ? -1 : 1; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
489 | |
194
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
490 | glGetFloatv (GL_MODELVIEW_MATRIX, m); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
491 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
492 | const double x = pos3d.x(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
493 | const double y = pos3d.y(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
494 | const double z = pos3d.z(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
495 | |
194
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
496 | vertex transformed; |
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
497 | transformed[X] = (m[0] * x) + (m[1] * y) + (m[2] * z) + m[3]; |
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
498 | transformed[Y] = (m[4] * x) + (m[5] * y) + (m[6] * z) + m[7]; |
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
499 | transformed[Z] = (m[8] * x) + (m[9] * y) + (m[10] * z) + m[11]; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
500 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
501 | double rx = ( ( (transformed[axisX] * negXFac) + m_virtWidth + m_panX) * m_width) / (2 * m_virtWidth); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
502 | double ry = ( ( (transformed[axisY] * negYFac) - m_virtHeight + m_panY) * m_height) / (2 * m_virtHeight); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
503 | |
194
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
504 | return QPoint (rx, -ry); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
505 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
506 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
507 | // ============================================================================= |
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:
448
diff
changeset
|
508 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
509 | void GLRenderer::paintEvent (QPaintEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
510 | { Q_UNUSED (ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
511 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
512 | makeCurrent(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
513 | m_virtWidth = zoom(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
514 | m_virtHeight = (m_height * m_virtWidth) / m_width; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
515 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
516 | initGLData(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
517 | drawGLScene(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
518 | |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
519 | const QPen textpen = getTextPen(); |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
520 | const QBrush polybrush (QColor (64, 192, 0, 128)); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
521 | QPainter paint (this); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
522 | QFontMetrics metrics = QFontMetrics (QFont()); |
209
d3bdd13bce4d
Don't do any object offsetting, instead use origin as the rotation point for the free camera.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
208
diff
changeset
|
523 | paint.setRenderHint (QPainter::HighQualityAntialiasing); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
524 | |
253
0737c217a54d
Added ability to have multiple GLRenderers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
252
diff
changeset
|
525 | // If we wish to only draw the brick, stop here |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
526 | if (drawOnly()) |
253
0737c217a54d
Added ability to have multiple GLRenderers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
252
diff
changeset
|
527 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
528 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
529 | if (m_camera != Free && !picking()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
530 | { // Paint the overlay image if we have one |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
531 | const LDGLOverlay& overlay = m_overlays[m_camera]; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
532 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
533 | if (overlay.img != null) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
534 | { QPoint v0 = coordconv3_2 (m_overlays[m_camera].v0), |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
535 | v1 = coordconv3_2 (m_overlays[m_camera].v1); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
536 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
537 | QRect targRect (v0.x(), v0.y(), abs (v1.x() - v0.x()), abs (v1.y() - v0.y())), |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
538 | srcRect (0, 0, overlay.img->width(), overlay.img->height()); |
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
|
539 | paint.drawImage (targRect, *overlay.img, srcRect); |
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
|
540 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
541 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
542 | // Paint the coordinates onto the screen. |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
543 | str text = fmt (tr ("X: %1, Y: %2, Z: %3"), m_hoverpos[X], m_hoverpos[Y], m_hoverpos[Z]); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
544 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
545 | QFontMetrics metrics = QFontMetrics (font()); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
546 | QRect textSize = metrics.boundingRect (0, 0, m_width, m_height, Qt::AlignCenter, text); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
547 | |
447
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
548 | paint.setPen (getTextPen()); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
549 | paint.drawText (m_width - textSize.width(), m_height - 16, textSize.width(), |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
550 | textSize.height(), Qt::AlignCenter, text); |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
551 | |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
552 | QPen linepen = m_thinBorderPen; |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
553 | linepen.setWidth (2); |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
554 | linepen.setColor (luma (m_bgcolor) < 40 ? Qt::white : Qt::black); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
555 | |
207
e8c47e51e03d
Made drawing an edit mode, allowing me to add more modes in the future
Santeri Piippo <crimsondusk64@gmail.com>
parents:
200
diff
changeset
|
556 | // If we're drawing, draw the vertices onto the screen. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
557 | if (editMode() == Draw) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
558 | { int numverts = 4; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
559 | |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
560 | if (!m_rectdraw) |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
561 | numverts = m_drawedVerts.size() + 1; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
562 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
563 | if (numverts > 0) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
564 | { QPoint poly[4]; |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
565 | vertex polyverts[4]; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
566 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
567 | if (!m_rectdraw) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
568 | { uchar i = 0; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
569 | |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
570 | for (vertex& vert : m_drawedVerts) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
571 | { poly[i] = coordconv3_2 (vert); |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
572 | polyverts[i] = vert; |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
573 | ++i; |
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
574 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
575 | |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
576 | // Draw the cursor vertex as the last one in the list. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
577 | if (numverts <= 4) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
578 | { poly[i] = coordconv3_2 (m_hoverpos); |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
579 | polyverts[i] = m_hoverpos; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
580 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
581 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
582 | { numverts = 4; |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
583 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
584 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
585 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
586 | { if (m_drawedVerts.size() > 0) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
587 | { // Get vertex information from m_rectverts |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
588 | for (int i = 0; i < numverts; ++i) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
589 | { polyverts[i] = m_rectverts[i]; |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
590 | poly[i] = coordconv3_2 (polyverts[i]); |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
591 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
592 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
593 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
594 | { poly[0] = coordconv3_2 (m_hoverpos); |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
595 | polyverts[0] = m_hoverpos; |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
596 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
597 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
598 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
599 | // Draw the polygon-to-be |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
600 | paint.setPen (linepen); |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
601 | paint.setBrush (polybrush); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
602 | paint.drawPolygon (poly, numverts); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
603 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
604 | // Draw vertex blips |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
605 | for (int i = 0; i < numverts; ++i) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
606 | { QPoint& blip = poly[i]; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
607 | drawBlip (paint, blip); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
608 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
609 | // Draw their coordinates |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
610 | paint.drawText (blip.x(), blip.y() - 8, polyverts[i].stringRep (true)); |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
611 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
612 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
613 | } |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
614 | elif (editMode() == CircleMode) |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
615 | { // If we have not specified the center point of the circle yet, preview it on the screen. |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
616 | if (m_drawedVerts.size() == 0) |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
617 | drawBlip (paint, coordconv3_2 (m_hoverpos)); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
618 | else |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
619 | { QVector<vertex> verts, verts2; |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
620 | const double dist0 = circleDrawDist(0), |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
621 | dist1 = (m_drawedVerts.size() >= 2) ? circleDrawDist (1) : -1; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
622 | const int segs = lores; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
623 | const double angleUnit = (2 * pi) / segs; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
624 | Axis relX, relY; |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
625 | QVector<QPoint> ringpoints, circlepoints, circle2points; |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
626 | |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
627 | getRelativeAxes (relX, relY); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
628 | |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
629 | // Calculate the preview positions of vertices |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
630 | for (int i = 0; i < segs; ++i) |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
631 | { vertex v = g_origin; |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
632 | v[relX] = m_drawedVerts[0][relX] + (cos (i * angleUnit) * dist0); |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
633 | v[relY] = m_drawedVerts[0][relY] + (sin (i * angleUnit) * dist0); |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
634 | verts << v; |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
635 | |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
636 | if (dist1 != -1) |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
637 | { v[relX] = m_drawedVerts[0][relX] + (cos (i * angleUnit) * dist1); |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
638 | v[relY] = m_drawedVerts[0][relY] + (sin (i * angleUnit) * dist1); |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
639 | verts2 << v; |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
640 | } |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
641 | } |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
642 | |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
643 | int i = 0; |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
644 | for (const vertex& v : verts + verts2) |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
645 | { // Calculate the 2D point of the vertex |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
646 | QPoint point = coordconv3_2 (v); |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
647 | |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
648 | // Draw a green blip at where it is |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
649 | drawBlip (paint, point); |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
650 | |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
651 | // Add it to the list of points for the green ring fill. |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
652 | ringpoints << point; |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
653 | |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
654 | // Also add the circle points to separate lists |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
655 | if (i < verts.size()) |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
656 | circlepoints << point; |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
657 | else |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
658 | circle2points << point; |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
659 | |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
660 | ++i; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
661 | } |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
662 | |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
663 | // Insert the first point as the seventeenth one so that |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
664 | // the ring polygon is closed properly. |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
665 | if (ringpoints.size() >= 16) |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
666 | ringpoints.insert (16, ringpoints[0]); |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
667 | |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
668 | // Same for the outer ring. Note that the indices are offset by 1 |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
669 | // because of the insertion done above bumps the values. |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
670 | if (ringpoints.size() >= 33) |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
671 | ringpoints.insert (33, ringpoints[17]); |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
672 | |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
673 | // Draw the ring |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
674 | paint.setBrush ((m_drawedVerts.size() >= 2) ? polybrush : Qt::NoBrush); |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
675 | paint.setPen (Qt::NoPen); |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
676 | paint.drawPolygon (QPolygon (ringpoints)); |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
677 | |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
678 | // Draw the circles |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
679 | paint.setBrush (Qt::NoBrush); |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
680 | paint.setPen (linepen); |
505
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
681 | paint.drawPolygon (QPolygon (circlepoints)); |
a01482cdf8a7
Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn
Santeri Piippo <crimsondusk64@gmail.com>
parents:
504
diff
changeset
|
682 | paint.drawPolygon (QPolygon (circle2points)); |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
683 | |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
684 | { // Draw the current radius in the middle of the circle. |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
685 | QPoint origin = coordconv3_2 (m_drawedVerts[0]); |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
686 | str label = str::number (dist0); |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
687 | paint.setPen (textpen); |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
688 | paint.drawText (origin.x() - (metrics.width (label) / 2), origin.y(), label); |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
689 | |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
690 | if (m_drawedVerts.size() >= 2) |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
691 | { label = str::number (dist1); |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
692 | paint.drawText (origin.x() - (metrics.width (label) / 2), origin.y() + metrics.height(), label); |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
693 | } |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
694 | } |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
695 | } |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
696 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
697 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
698 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
699 | // Camera icons |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
700 | if (!m_picking) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
701 | { // Draw a background for the selected camera |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
702 | paint.setPen (m_thinBorderPen); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
703 | paint.setBrush (QBrush (QColor (0, 128, 160, 128))); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
704 | paint.drawRect (m_cameraIcons[camera()].selRect); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
705 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
706 | // Draw the actual icons |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
707 | for (CameraIcon& info : m_cameraIcons) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
708 | { // Don't draw the free camera icon when in draw mode |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
709 | if (&info == &m_cameraIcons[GL::Free] && editMode() != Select) |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
710 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
711 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
712 | paint.drawPixmap (info.destRect, *info.img, info.srcRect); |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
713 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
714 | |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
715 | str fmtstr = tr ("%1 Camera"); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
716 | |
447
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
717 | // Draw a label for the current camera in the bottom left corner |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
718 | { const int margin = 4; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
719 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
720 | str label; |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
721 | label = fmt (fmtstr, tr (g_CameraNames[camera()])); |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
722 | paint.setPen (textpen); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
723 | paint.drawText (QPoint (margin, height() - (margin + metrics.descent())), label); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
724 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
725 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
726 | // Tool tips |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
727 | if (m_drawToolTip) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
728 | { if (m_cameraIcons[m_toolTipCamera].destRect.contains (m_pos) == false) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
729 | m_drawToolTip = false; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
730 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
731 | { str label = fmt (fmtstr, tr (g_CameraNames[m_toolTipCamera])); |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
732 | QToolTip::showText (m_globalpos, label); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
733 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
734 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
735 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
736 | |
322
5e701c3c3d8e
Re-added the message log, now draws into the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
321
diff
changeset
|
737 | // Message log |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
738 | if (msglog()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
739 | { int y = 0; |
322
5e701c3c3d8e
Re-added the message log, now draws into the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
321
diff
changeset
|
740 | const int margin = 2; |
447
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
741 | QColor penColor = getTextPen(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
742 | |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
743 | for (const MessageManager::Line& line : msglog()->getLines()) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
744 | { penColor.setAlphaF (line.alpha); |
447
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
745 | paint.setPen (penColor); |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
746 | paint.drawText (QPoint (margin, y + margin + metrics.ascent()), line.text); |
322
5e701c3c3d8e
Re-added the message log, now draws into the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
321
diff
changeset
|
747 | y += metrics.height(); |
5e701c3c3d8e
Re-added the message log, now draws into the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
321
diff
changeset
|
748 | } |
5e701c3c3d8e
Re-added the message log, now draws into the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
321
diff
changeset
|
749 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
750 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
751 | // If we're range-picking, draw a rectangle encompassing the selection area. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
752 | if (m_rangepick && !m_picking && m_totalmove >= 10) |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
753 | { int x0 = m_rangeStart.x(), |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
754 | y0 = m_rangeStart.y(), |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
755 | x1 = m_pos.x(), |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
756 | y1 = m_pos.y(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
757 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
758 | QRect rect (x0, y0, x1 - x0, y1 - y0); |
296
d544de09c93b
Use a more greenish green rather than yellowish lime, added some constraints to when double-clicking in the viewport should edit the given object to prevent unwanted popups
Santeri Piippo <crimsondusk64@gmail.com>
parents:
291
diff
changeset
|
759 | QColor fillColor = (m_addpick ? "#40FF00" : "#00CCFF"); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
760 | fillColor.setAlphaF (0.2f); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
761 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
762 | paint.setPen (m_thickBorderPen); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
763 | paint.setBrush (QBrush (fillColor)); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
764 | paint.drawRect (rect); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
765 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
766 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
767 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
768 | // ============================================================================= |
447
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
769 | // ----------------------------------------------------------------------------- |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
770 | void GLRenderer::drawBlip (QPainter& paint, QPoint pos) const |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
771 | { QPen pen = m_thinBorderPen; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
772 | const int blipsize = 8; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
773 | pen.setWidth (1); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
774 | paint.setPen (pen); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
775 | paint.setBrush (QColor (64, 192, 0)); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
776 | paint.drawEllipse (pos.x() - blipsize / 2, pos.y() - blipsize / 2, blipsize, blipsize); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
777 | } |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
778 | |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
779 | // ============================================================================= |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
780 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
781 | QColor GLRenderer::getTextPen () const |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
782 | { return m_darkbg ? Qt::white : Qt::black; |
447
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
783 | } |
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
784 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
785 | // ============================================================================= |
447
b2bd8fb41781
Use brighter text color with dark backgrounds for the message manager
Santeri Piippo <crimsondusk64@gmail.com>
parents:
440
diff
changeset
|
786 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
787 | void GLRenderer::compileAllObjects() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
788 | { if (!file()) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
789 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
790 | |
448
9b854708a5c8
Use a busy cursor while compiling all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
447
diff
changeset
|
791 | // Compiling all is a big job, use a busy cursor |
9b854708a5c8
Use a busy cursor while compiling all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
447
diff
changeset
|
792 | setCursor (Qt::BusyCursor); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
793 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
794 | m_knownVerts.clear(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
795 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
796 | for (LDObject * obj : file()->objects()) |
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
|
797 | compileObject (obj); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
798 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
799 | // Compile axes |
194
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
800 | glDeleteLists (m_axeslist, 1); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
801 | m_axeslist = glGenLists (1); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
802 | glNewList (m_axeslist, GL_COMPILE); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
803 | glBegin (GL_LINES); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
804 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
805 | for (const LDGLAxis & ax : g_GLAxes) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
806 | { qglColor (ax.col); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
807 | compileVertex (ax.vert); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
808 | compileVertex (-ax.vert); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
809 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
810 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
811 | glEnd(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
812 | glEndList(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
813 | |
448
9b854708a5c8
Use a busy cursor while compiling all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
447
diff
changeset
|
814 | setCursor (Qt::ArrowCursor); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
815 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
816 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
817 | // ============================================================================= |
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:
448
diff
changeset
|
818 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
819 | void GLRenderer::compileSubObject (LDObject* obj, const GLenum gltype) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
820 | { glBegin (gltype); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
821 | |
460
b230ae09c8e5
Cut the Object-suffix from LDObject types, it doesn't help things at all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
458
diff
changeset
|
822 | const short numverts = (obj->getType() != LDObject::CndLine) ? obj->vertices() : 2; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
823 | |
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:
189
diff
changeset
|
824 | if (g_glInvert == false) |
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:
189
diff
changeset
|
825 | for (short i = 0; i < numverts; ++i) |
276
a21e49914264
Made history work with most things
Santeri Piippo <crimsondusk64@gmail.com>
parents:
274
diff
changeset
|
826 | compileVertex (obj->m_coords[i]); |
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:
189
diff
changeset
|
827 | else |
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:
189
diff
changeset
|
828 | for (short i = numverts - 1; i >= 0; --i) |
276
a21e49914264
Made history work with most things
Santeri Piippo <crimsondusk64@gmail.com>
parents:
274
diff
changeset
|
829 | compileVertex (obj->m_coords[i]); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
830 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
831 | glEnd(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
832 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
833 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
834 | // ============================================================================= |
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:
448
diff
changeset
|
835 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
836 | void GLRenderer::compileList (LDObject* obj, const GLRenderer::ListType list) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
837 | { setObjectColor (obj, list); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
838 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
839 | switch (obj->getType()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
840 | { case LDObject::Line: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
841 | compileSubObject (obj, GL_LINES); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
842 | break; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
843 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
844 | case LDObject::CndLine: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
845 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
846 | // Draw conditional lines with a dash pattern - however, use a full |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
847 | // line when drawing a pick list to make selecting them easier. |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
848 | if (list != GL::PickList) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
849 | { glLineStipple (1, 0x6666); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
850 | glEnable (GL_LINE_STIPPLE); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
851 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
852 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
853 | compileSubObject (obj, GL_LINES); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
854 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
855 | glDisable (GL_LINE_STIPPLE); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
856 | break; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
857 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
858 | case LDObject::Triangle: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
859 | compileSubObject (obj, GL_TRIANGLES); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
860 | break; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
861 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
862 | case LDObject::Quad: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
863 | compileSubObject (obj, GL_QUADS); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
864 | break; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
865 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
866 | case LDObject::Subfile: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
867 | { LDSubfile* ref = static_cast<LDSubfile*> (obj); |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
868 | QList<LDObject*> objs; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
869 | |
458
cb360f4d8979
Rewrote stud logo support, restructuring inlining stuff in the process. Logoed studs must only be used for rendering scenes, otherwise they will for instance get inlined in and that's not desired, or the vertex snapper will catch onto the logo's coordinates.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
455
diff
changeset
|
870 | objs = ref->inlineContents ( |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
871 | LDSubfile::DeepInline | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
872 | LDSubfile::CacheInline | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
873 | LDSubfile::RendererInline); |
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:
189
diff
changeset
|
874 | bool oldinvert = g_glInvert; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
875 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
876 | if (ref->transform().determinant() < 0) |
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:
189
diff
changeset
|
877 | g_glInvert = !g_glInvert; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
878 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
879 | LDObject* prev = ref->prev(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
880 | |
460
b230ae09c8e5
Cut the Object-suffix from LDObject types, it doesn't help things at all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
458
diff
changeset
|
881 | if (prev && prev->getType() == LDObject::BFC && static_cast<LDBFC*> (prev)->type == LDBFC::InvertNext) |
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:
189
diff
changeset
|
882 | g_glInvert = !g_glInvert; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
883 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
884 | for (LDObject * obj : objs) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
885 | { compileList (obj, list); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
886 | delete obj; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
887 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
888 | |
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:
189
diff
changeset
|
889 | g_glInvert = oldinvert; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
890 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
891 | break; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
892 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
893 | default: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
894 | break; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
895 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
896 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
897 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
898 | // ============================================================================= |
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:
448
diff
changeset
|
899 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
900 | void GLRenderer::compileVertex (const vertex& vrt) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
901 | { glVertex3d (vrt[X], -vrt[Y], -vrt[Z]); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
902 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
903 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
904 | // ============================================================================= |
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:
448
diff
changeset
|
905 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
906 | void GLRenderer::clampAngle (double& angle) const |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
907 | { while (angle < 0) |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
908 | angle += 360.0; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
909 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
910 | while (angle > 360.0) |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
911 | angle -= 360.0; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
912 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
913 | |
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:
448
diff
changeset
|
914 | // ============================================================================= |
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:
448
diff
changeset
|
915 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
916 | void GLRenderer::addDrawnVertex (vertex pos) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
917 | { // If we picked an already-existing vertex, stop drawing |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
918 | if (editMode() != CircleMode) |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
919 | { for (vertex& vert : m_drawedVerts) |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
920 | { if (vert == pos) |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
921 | { endDraw (true); |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
922 | return; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
923 | } |
262
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
924 | } |
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
925 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
926 | |
262
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
927 | m_drawedVerts << pos; |
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
928 | } |
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
929 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
930 | // ============================================================================= |
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:
448
diff
changeset
|
931 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
932 | void GLRenderer::mouseReleaseEvent (QMouseEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
933 | { const bool wasLeft = (m_lastButtons & Qt::LeftButton) && ! (ev->buttons() & Qt::LeftButton), |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
934 | wasRight = (m_lastButtons & Qt::RightButton) && ! (ev->buttons() & Qt::RightButton), |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
935 | wasMid = (m_lastButtons & Qt::MidButton) && ! (ev->buttons() & Qt::MidButton); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
936 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
937 | if (m_panning) |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
938 | m_panning = false; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
939 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
940 | if (wasLeft) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
941 | { // Check if we selected a camera icon |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
942 | if (!m_rangepick) |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
943 | { for (CameraIcon & info : m_cameraIcons) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
944 | { if (info.destRect.contains (ev->pos())) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
945 | { setCamera (info.cam); |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
946 | goto end; |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
947 | } |
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
|
948 | } |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
949 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
950 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
951 | switch (editMode()) |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
952 | { |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
953 | case Draw: |
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
954 | { if (m_rectdraw) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
955 | { if (m_drawedVerts.size() == 2) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
956 | { endDraw (true); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
957 | return; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
958 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
959 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
960 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
961 | { // If we have 4 verts, stop drawing. |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
962 | if (m_drawedVerts.size() >= 4) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
963 | { endDraw (true); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
964 | return; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
965 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
966 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
967 | if (m_drawedVerts.size() == 0 && ev->modifiers() & Qt::ShiftModifier) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
968 | { m_rectdraw = true; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
969 | updateRectVerts(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
970 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
971 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
972 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
973 | addDrawnVertex (m_hoverpos); |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
974 | } break; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
975 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
976 | case CircleMode: |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
977 | { if (m_drawedVerts.size() == 3) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
978 | { endDraw (true); |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
979 | return; |
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
980 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
981 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
982 | addDrawnVertex (m_hoverpos); |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
983 | } break; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
984 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
985 | case Select: |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
986 | { if (!drawOnly()) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
987 | { if (m_totalmove < 10) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
988 | m_rangepick = false; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
989 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
990 | if (!m_rangepick) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
991 | m_addpick = (m_keymods & Qt::ControlModifier); |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
992 | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
993 | if (m_totalmove < 10 || m_rangepick) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
994 | pick (ev->x(), ev->y()); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
995 | } |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
996 | } break; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
997 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
998 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
999 | m_rangepick = false; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1000 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1001 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1002 | if (wasMid && editMode() != Select && m_drawedVerts.size() < 4 && m_totalmove < 10) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1003 | { // Find the closest vertex to our cursor |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1004 | double mindist = 1024.0f; |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1005 | vertex closest; |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1006 | bool valid = false; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1007 | |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1008 | QPoint curspos = coordconv3_2 (m_hoverpos); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1009 | |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
1010 | for (const vertex& pos3d: m_knownVerts) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1011 | { QPoint pos2d = coordconv3_2 (pos3d); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1012 | |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1013 | // Measure squared distance |
419
d21b0a61d3b7
If the vertex snapper finds a vertex closer than 4 pixels, it likely is the vertex being looked for and the algorithm can terminate early, hopefully this will save a few cycles on large parts.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
418
diff
changeset
|
1014 | const double dx = abs (pos2d.x() - curspos.x()), |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1015 | dy = abs (pos2d.y() - curspos.y()), |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1016 | distsq = (dx * dx) + (dy * dy); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1017 | |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1018 | if (distsq >= 1024.0f) // 32.0f ** 2 |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1019 | continue; // too far away |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1020 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1021 | if (distsq < mindist) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1022 | { mindist = distsq; |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1023 | closest = pos3d; |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1024 | valid = true; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1025 | |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1026 | // If it's only 4 pixels away, I think we found our vertex now. |
419
d21b0a61d3b7
If the vertex snapper finds a vertex closer than 4 pixels, it likely is the vertex being looked for and the algorithm can terminate early, hopefully this will save a few cycles on large parts.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
418
diff
changeset
|
1027 | if (distsq <= 16.0f) // 4.0f ** 2 |
d21b0a61d3b7
If the vertex snapper finds a vertex closer than 4 pixels, it likely is the vertex being looked for and the algorithm can terminate early, hopefully this will save a few cycles on large parts.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
418
diff
changeset
|
1028 | break; |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1029 | } |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1030 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1031 | |
262
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
1032 | if (valid) |
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
1033 | addDrawnVertex (closest); |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1034 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1035 | |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1036 | if (wasRight && !m_drawedVerts.isEmpty()) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1037 | { // Remove the last vertex |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1038 | m_drawedVerts.removeLast(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1039 | |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1040 | if (m_drawedVerts.isEmpty()) |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
1041 | m_rectdraw = false; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1042 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1043 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1044 | end: |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1045 | update(); |
262
56f8987f4c7c
Fixed behavior of mid-button vertex selector, add ability to all-replace and relative moving to replace coords
Santeri Piippo <crimsondusk64@gmail.com>
parents:
261
diff
changeset
|
1046 | m_totalmove = 0; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1047 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1048 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1049 | // ============================================================================= |
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:
448
diff
changeset
|
1050 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1051 | void GLRenderer::mousePressEvent (QMouseEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1052 | { m_totalmove = 0; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1053 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1054 | if (ev->modifiers() & Qt::ControlModifier) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1055 | { m_rangepick = true; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1056 | m_rangeStart.setX (ev->x()); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1057 | m_rangeStart.setY (ev->y()); |
264
4299b818a816
Made range selection be done with Ctrl+Left rather than Shift+Left, additive is Ctrl+Alt+Left. Shift+Left is now an aliasing for panning alongside Mid.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
263
diff
changeset
|
1058 | m_addpick = (m_keymods & Qt::AltModifier); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1059 | ev->accept(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1060 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1061 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1062 | m_lastButtons = ev->buttons(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1063 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1064 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1065 | // ============================================================================= |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1066 | // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1067 | // ============================================================================= |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1068 | void GLRenderer::mouseMoveEvent (QMouseEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1069 | { int dx = ev->x() - m_pos.x(); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1070 | int dy = ev->y() - m_pos.y(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1071 | m_totalmove += abs (dx) + abs (dy); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1072 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1073 | const bool left = ev->buttons() & Qt::LeftButton, |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1074 | mid = ev->buttons() & Qt::MidButton, |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1075 | shift = ev->modifiers() & Qt::ShiftModifier; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1076 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1077 | if (mid || (left && shift)) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1078 | { m_panX += 0.03f * dx * (zoom() / 7.5f); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1079 | m_panY -= 0.03f * dy * (zoom() / 7.5f); |
264
4299b818a816
Made range selection be done with Ctrl+Left rather than Shift+Left, additive is Ctrl+Alt+Left. Shift+Left is now an aliasing for panning alongside Mid.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
263
diff
changeset
|
1080 | m_panning = true; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1081 | } elif (left && !m_rangepick && camera() == Free) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1082 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1083 | { m_rotX = m_rotX + (dy); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1084 | m_rotY = m_rotY + (dx); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1085 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1086 | clampAngle (m_rotX); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1087 | clampAngle (m_rotY); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1088 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1089 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1090 | // Start the tool tip timer |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1091 | if (!m_drawToolTip) |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
1092 | m_toolTipTimer->start (500); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1093 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1094 | // Update 2d position |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1095 | m_pos = ev->pos(); |
440
ce2009d50c61
camera icons now draw real tooltips instead of faking them
Santeri Piippo <crimsondusk64@gmail.com>
parents:
421
diff
changeset
|
1096 | m_globalpos = ev->globalPos(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1097 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1098 | // Calculate 3d position of the cursor |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1099 | m_hoverpos = (camera() != Free) ? coordconv2_3 (m_pos, true) : g_origin; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1100 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1101 | // Update rect vertices since m_hoverpos may have changed |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1102 | updateRectVerts(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1103 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1104 | update(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1105 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1106 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1107 | // ============================================================================= |
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:
448
diff
changeset
|
1108 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1109 | void GLRenderer::keyPressEvent (QKeyEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1110 | { m_keymods = ev->modifiers(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1111 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1112 | |
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:
448
diff
changeset
|
1113 | // ============================================================================= |
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:
448
diff
changeset
|
1114 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1115 | void GLRenderer::keyReleaseEvent (QKeyEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1116 | { m_keymods = ev->modifiers(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1117 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1118 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1119 | // ============================================================================= |
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:
448
diff
changeset
|
1120 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1121 | void GLRenderer::wheelEvent (QWheelEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1122 | { makeCurrent(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1123 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1124 | zoomNotch (ev->delta() > 0); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1125 | setZoom (clamp<double> (zoom(), 0.01f, 10000.0f)); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1126 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1127 | update(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1128 | ev->accept(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1129 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1130 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1131 | // ============================================================================= |
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:
448
diff
changeset
|
1132 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1133 | void GLRenderer::leaveEvent (QEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1134 | { (void) ev; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1135 | m_drawToolTip = false; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1136 | m_toolTipTimer->stop(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1137 | update(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1138 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1139 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1140 | // ============================================================================= |
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:
448
diff
changeset
|
1141 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1142 | void GLRenderer::contextMenuEvent (QContextMenuEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1143 | { g_win->spawnContextMenu (ev->globalPos()); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1144 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1145 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1146 | // ============================================================================= |
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:
448
diff
changeset
|
1147 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1148 | void GLRenderer::setCamera (const GL::Camera cam) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1149 | { m_camera = cam; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1150 | gl_camera = (int) cam; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1151 | g_win->updateEditModeActions(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1152 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1153 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1154 | // ============================================================================= |
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:
448
diff
changeset
|
1155 | // ----------------------------------------------------------------------------- |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
497
diff
changeset
|
1156 | void GLRenderer::pick (int mouseX, int mouseY) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1157 | { GLint viewport[4]; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1158 | makeCurrent(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1159 | |
212
79c5205b807c
Fixed: rotation point dialog didn't accept negative custom coords; objects were rotated by the grid angle's half
Santeri Piippo <crimsondusk64@gmail.com>
parents:
211
diff
changeset
|
1160 | // Use particularly thick lines while picking ease up selecting lines. |
79c5205b807c
Fixed: rotation point dialog didn't accept negative custom coords; objects were rotated by the grid angle's half
Santeri Piippo <crimsondusk64@gmail.com>
parents:
211
diff
changeset
|
1161 | glLineWidth (max<double> (gl_linethickness, 6.5f)); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1162 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1163 | // Clear the selection if we do not wish to add to it. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1164 | if (!m_addpick) |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1165 | { QList<LDObject*> oldsel = g_win->sel(); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1166 | g_win->sel().clear(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1167 | |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1168 | for (LDObject* obj : oldsel) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1169 | { obj->setSelected (false); |
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
|
1170 | compileObject (obj); |
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:
189
diff
changeset
|
1171 | } |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1172 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1173 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1174 | m_picking = true; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1175 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1176 | // Paint the picking scene |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1177 | glDisable (GL_DITHER); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1178 | glClearColor (1.0f, 1.0f, 1.0f, 1.0f); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1179 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1180 | drawGLScene(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1181 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1182 | glGetIntegerv (GL_VIEWPORT, viewport); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1183 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1184 | short x0 = mouseX, |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1185 | y0 = mouseY; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1186 | short x1, y1; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1187 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1188 | // Determine how big an area to read - with range picking, we pick by |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1189 | // the area given, with single pixel picking, we use an 1 x 1 area. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1190 | if (m_rangepick) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1191 | { x1 = m_rangeStart.x(); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1192 | y1 = m_rangeStart.y(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1193 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1194 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1195 | { x1 = x0 + 1; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1196 | y1 = y0 + 1; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1197 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1198 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1199 | // x0 and y0 must be less than x1 and y1, respectively. |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1200 | if (x0 > x1) |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1201 | dataswap (x0, x1); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1202 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1203 | if (y0 > y1) |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1204 | dataswap (y0, y1); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1205 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1206 | // Clamp the values to ensure they're within bounds |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1207 | x0 = max<short> (0, x0); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1208 | y0 = max<short> (0, y0); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1209 | x1 = min<short> (x1, m_width); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1210 | y1 = min<short> (y1, m_height); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1211 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1212 | const short areawidth = (x1 - x0); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1213 | const short areaheight = (y1 - y0); |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1214 | const long numpixels = areawidth * areaheight; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1215 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1216 | // Allocate space for the pixel data. |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1217 | uchar* const pixeldata = new uchar[4 * numpixels]; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1218 | uchar* pixelptr = &pixeldata[0]; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1219 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1220 | assert (viewport[3] == m_height); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1221 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1222 | // Read pixels from the color buffer. |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1223 | glReadPixels (x0, viewport[3] - y1, areawidth, areaheight, GL_RGBA, GL_UNSIGNED_BYTE, pixeldata); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1224 | |
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
|
1225 | LDObject* removedObj = null; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1226 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1227 | // Go through each pixel read and add them to the selection. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1228 | for (long i = 0; i < numpixels; ++i) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1229 | { long idx = |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1230 | (* (pixelptr + 0) * 0x10000) + |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1231 | (* (pixelptr + 1) * 0x00100) + |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1232 | (* (pixelptr + 2) * 0x00001); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1233 | pixelptr += 4; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1234 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1235 | if (idx == 0xFFFFFF) |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1236 | continue; // White is background; skip |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1237 | |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
1238 | LDObject* obj = LDObject::fromID (idx); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1239 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1240 | // If this is an additive single pick and the object is currently selected, |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1241 | // we remove it from selection instead. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1242 | if (!m_rangepick && m_addpick) |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1243 | { int pos = g_win->sel().indexOf (obj); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1244 | |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1245 | if (pos != -1) |
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1246 | { g_win->sel().removeAt (i); |
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1247 | obj->setSelected (false); |
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1248 | removedObj = obj; |
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1249 | break; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1250 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1251 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1252 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1253 | g_win->sel() << obj; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1254 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1255 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1256 | delete[] pixeldata; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1257 | |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1258 | // Remove duplicated entries |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1259 | removeDuplicates (g_win->sel()); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1260 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1261 | // Update everything now. |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1262 | g_win->updateSelection(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1263 | |
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
|
1264 | // Recompile the objects now to update their color |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1265 | for (LDObject* obj : g_win->sel()) |
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
|
1266 | compileObject (obj); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1267 | |
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:
189
diff
changeset
|
1268 | if (removedObj) |
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:
189
diff
changeset
|
1269 | compileObject (removedObj); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1270 | |
212
79c5205b807c
Fixed: rotation point dialog didn't accept negative custom coords; objects were rotated by the grid angle's half
Santeri Piippo <crimsondusk64@gmail.com>
parents:
211
diff
changeset
|
1271 | // Restore line thickness |
79c5205b807c
Fixed: rotation point dialog didn't accept negative custom coords; objects were rotated by the grid angle's half
Santeri Piippo <crimsondusk64@gmail.com>
parents:
211
diff
changeset
|
1272 | glLineWidth (gl_linethickness); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1273 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1274 | m_picking = false; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1275 | m_rangepick = false; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1276 | glEnable (GL_DITHER); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1277 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1278 | setBackground(); |
401
89a9235b47d3
Use repaint() instead of update() when redrawing the scene after a pick so that the new scene is repainted immediately.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
392
diff
changeset
|
1279 | repaint(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1280 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1281 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1282 | // ============================================================================= |
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:
448
diff
changeset
|
1283 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1284 | READ_ACCESSOR (EditMode, GLRenderer::editMode) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1285 | { return m_editMode; |
274
d232fe4d88a6
Reworked properties a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
271
diff
changeset
|
1286 | } |
d232fe4d88a6
Reworked properties a bit
Santeri Piippo <crimsondusk64@gmail.com>
parents:
271
diff
changeset
|
1287 | |
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:
448
diff
changeset
|
1288 | // ============================================================================= |
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:
448
diff
changeset
|
1289 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1290 | SET_ACCESSOR (EditMode, GLRenderer::setEditMode) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1291 | { m_editMode = val; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1292 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1293 | switch (editMode()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1294 | { case Select: |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
1295 | { unsetCursor(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1296 | setContextMenuPolicy (Qt::DefaultContextMenu); |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
1297 | } break; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1298 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1299 | case Draw: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1300 | case CircleMode: |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
1301 | { // Cannot draw into the free camera - use top instead. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1302 | if (m_camera == Free) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1303 | setCamera (Top); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1304 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1305 | // Disable the context menu - we need the right mouse button |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1306 | // for removing vertices. |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1307 | setContextMenuPolicy (Qt::NoContextMenu); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1308 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1309 | // Use the crosshair cursor when drawing. |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1310 | setCursor (Qt::CrossCursor); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1311 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1312 | // Clear the selection when beginning to draw. |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1313 | // FIXME: make the selection clearing stuff in ::pick a method and use it |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1314 | // here! This code doesn't update the GL lists. |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1315 | g_win->sel().clear(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1316 | g_win->updateSelection(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1317 | m_drawedVerts.clear(); |
495
cb931c2d1e8b
When drawing circles, draw the radius in the middle
Santeri Piippo <crimsondusk64@gmail.com>
parents:
494
diff
changeset
|
1318 | } break; |
207
e8c47e51e03d
Made drawing an edit mode, allowing me to add more modes in the future
Santeri Piippo <crimsondusk64@gmail.com>
parents:
200
diff
changeset
|
1319 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1320 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1321 | g_win->updateEditModeActions(); |
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1322 | update(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1323 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1324 | |
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:
448
diff
changeset
|
1325 | // ============================================================================= |
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:
448
diff
changeset
|
1326 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1327 | READ_ACCESSOR (LDFile*, GLRenderer::file) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1328 | { return m_file; |
318 | 1329 | } |
1330 | ||
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:
448
diff
changeset
|
1331 | // ============================================================================= |
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:
448
diff
changeset
|
1332 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1333 | SET_ACCESSOR (LDFile*, GLRenderer::setFile) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1334 | { m_file = val; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1335 | |
421
7d26db0be944
style cleanup - it should be all unified now
Santeri Piippo <crimsondusk64@gmail.com>
parents:
419
diff
changeset
|
1336 | if (val != null) |
318 | 1337 | overlaysFromObjects(); |
1338 | } | |
1339 | ||
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1340 | // ============================================================================= |
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:
448
diff
changeset
|
1341 | // ----------------------------------------------------------------------------- |
501
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1342 | matrix GLRenderer::getCircleDrawMatrix (double scale) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1343 | { matrix transform = g_circleDrawTransforms[camera() % 3]; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1344 | |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1345 | for (int i = 0; i < 9; ++i) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1346 | { if (transform[i] == 2) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1347 | transform[i] = scale; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1348 | elif (transform[i] == 1 && camera() >= 3) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1349 | transform[i] = -1; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1350 | } |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1351 | |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1352 | return transform; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1353 | } |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1354 | |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1355 | // ============================================================================= |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1356 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1357 | void GLRenderer::endDraw (bool accept) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1358 | { (void) accept; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1359 | |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
1360 | // Clean the selection and create the object |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1361 | QList<vertex>& verts = m_drawedVerts; |
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1362 | QList<LDObject*> objs; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1363 | |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1364 | switch (editMode()) |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1365 | { case Draw: |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1366 | { if (m_rectdraw) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1367 | { LDQuad* quad = new LDQuad; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1368 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1369 | // Copy the vertices from m_rectverts |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1370 | updateRectVerts(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1371 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1372 | for (int i = 0; i < quad->vertices(); ++i) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1373 | quad->setVertex (i, m_rectverts[i]); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1374 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1375 | quad->setColor (maincolor); |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1376 | objs << quad; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1377 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1378 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1379 | { switch (verts.size()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1380 | { case 1: |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1381 | { // 1 vertex - add a vertex object |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1382 | LDVertex* obj = new LDVertex; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1383 | obj->pos = verts[0]; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1384 | obj->setColor (maincolor); |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1385 | objs << obj; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1386 | } break; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1387 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1388 | case 2: |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1389 | { // 2 verts - make a line |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1390 | LDLine* obj = new LDLine (verts[0], verts[1]); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1391 | obj->setColor (edgecolor); |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1392 | objs << obj; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1393 | } break; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1394 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1395 | case 3: |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1396 | case 4: |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1397 | { LDObject* obj = (verts.size() == 3) ? |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1398 | static_cast<LDObject*> (new LDTriangle) : |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1399 | static_cast<LDObject*> (new LDQuad); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1400 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1401 | obj->setColor (maincolor); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1402 | |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
497
diff
changeset
|
1403 | for (int i = 0; i < obj->vertices(); ++i) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1404 | obj->setVertex (i, verts[i]); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1405 | |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1406 | objs << obj; |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1407 | } break; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1408 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1409 | } |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1410 | } break; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1411 | |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1412 | case CircleMode: |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1413 | { const int segs = lores, divs = lores; // TODO: make customizable |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1414 | double dist0 = circleDrawDist (0), |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1415 | dist1 = circleDrawDist (1); |
501
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1416 | LDFile* refFile = null; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1417 | matrix transform; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1418 | bool circleOrDisc = false; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1419 | |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1420 | if (dist1 < dist0) |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1421 | std::swap<double> (dist0, dist1); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1422 | |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1423 | if (dist0 == dist1) |
501
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1424 | { refFile = getFile ("4-4edge.dat"); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1425 | transform = getCircleDrawMatrix (dist0); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1426 | circleOrDisc = true; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1427 | } |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1428 | elif (dist0 == 0 || dist1 == 0) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1429 | { refFile = getFile ("4-4disc.dat"); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1430 | transform = getCircleDrawMatrix ((dist0 != 0) ? dist0 : dist1); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1431 | circleOrDisc = true; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1432 | } |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1433 | elif (g_RingFinder (dist0, dist1) /* && g_RingFinder.solution().size() <= 3 */) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1434 | { for (const RingFinder::SolutionComponent& cmp : g_RingFinder.solution()) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1435 | { if ((refFile = getFile (radialFileName (::Ring, lores, lores, cmp.num))) == null) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1436 | { refFile = generatePrimitive (::Ring, lores, lores, cmp.num); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1437 | refFile->setImplicit (false); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1438 | } |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1439 | |
501
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1440 | LDSubfile* ref = new LDSubfile; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1441 | ref->setFileInfo (refFile); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1442 | ref->setTransform (getCircleDrawMatrix (cmp.scale)); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1443 | ref->setPosition (m_drawedVerts[0]); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1444 | ref->setColor (maincolor); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1445 | objs << ref; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1446 | } |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1447 | } |
501
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1448 | else |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1449 | { // Last resort: draw the ring with quads |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1450 | QList<QLineF> c0, c1; |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1451 | |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1452 | makeCircle (segs, divs, dist0, c0); |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1453 | makeCircle (segs, divs, dist1, c1); |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1454 | |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1455 | for (int i = 0; i < 16; ++i) |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1456 | { |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1457 | } |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1458 | } |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1459 | |
501
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1460 | if (circleOrDisc) |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1461 | { LDSubfile* ref = new LDSubfile; |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1462 | ref->setFileInfo (refFile); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1463 | ref->setTransform (transform); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1464 | ref->setPosition (m_drawedVerts[0]); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1465 | ref->setColor (maincolor); |
8f314f3f5054
ring finder integrated! it lives!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
500
diff
changeset
|
1466 | objs << ref; |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1467 | } |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1468 | } break; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1469 | |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1470 | case Select: |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1471 | { assert (false); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1472 | return; |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1473 | } break; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1474 | } |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1475 | |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1476 | if (objs.size() > 0) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1477 | { g_win->beginAction (null); |
500
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1478 | |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1479 | for (LDObject* obj : objs) |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1480 | { file()->addObject (obj); |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1481 | compileObject (obj); |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1482 | } |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1483 | |
cad8cdc42a64
Finally got the ringfinder working! Working on integrating it to ring drawing...
Santeri Piippo <crimsondusk64@gmail.com>
parents:
499
diff
changeset
|
1484 | g_win->refresh(); |
384
f4622b79133d
updates on file list
Santeri Piippo <crimsondusk64@gmail.com>
parents:
382
diff
changeset
|
1485 | g_win->endAction(); |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
1486 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1487 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1488 | m_drawedVerts.clear(); |
208
0bb57b81c92a
Allow rectangle drawing by pressing shift when inserting the first vertex.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
207
diff
changeset
|
1489 | m_rectdraw = false; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1490 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1491 | |
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:
448
diff
changeset
|
1492 | // ============================================================================= |
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:
448
diff
changeset
|
1493 | // ----------------------------------------------------------------------------- |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
1494 | double GLRenderer::circleDrawDist (int pos) const |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
1495 | { assert (m_drawedVerts.size() >= pos + 1); |
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
1496 | const vertex& v1 = (m_drawedVerts.size() >= pos + 2) ? m_drawedVerts[pos + 1] : m_hoverpos; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1497 | Axis relX, relY; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1498 | getRelativeAxes (relX, relY); |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1499 | |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1500 | const double dx = m_drawedVerts[0][relX] - v1[relX]; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1501 | const double dy = m_drawedVerts[0][relY] - v1[relY]; |
499
ebd30d9eb667
Ring drawing: previewing complete
Santeri Piippo <crimsondusk64@gmail.com>
parents:
498
diff
changeset
|
1502 | return sqrt ((dx * dx) + (dy * dy)); |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1503 | } |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1504 | |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1505 | // ============================================================================= |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1506 | // ----------------------------------------------------------------------------- |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1507 | void GLRenderer::getRelativeAxes (Axis& relX, Axis& relY) const |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1508 | { const LDFixedCameraInfo* cam = &g_FixedCameras[m_camera]; |
492
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1509 | relX = cam->axisX; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1510 | relY = cam->axisY; |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1511 | } |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1512 | |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1513 | // ============================================================================= |
e964085e6913
Added a new editing mode for drawing circles.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
491
diff
changeset
|
1514 | // ----------------------------------------------------------------------------- |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1515 | static QList<vertex> getVertices (LDObject* obj) |
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1516 | { QList<vertex> verts; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1517 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1518 | if (obj->vertices() >= 2) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1519 | { for (int i = 0; i < obj->vertices(); ++i) |
276
a21e49914264
Made history work with most things
Santeri Piippo <crimsondusk64@gmail.com>
parents:
274
diff
changeset
|
1520 | verts << obj->getVertex (i); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1521 | } elif (obj->getType() == LDObject::Subfile) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1522 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1523 | { LDSubfile* ref = static_cast<LDSubfile*> (obj); |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1524 | QList<LDObject*> objs = ref->inlineContents (LDSubfile::DeepCacheInline); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1525 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1526 | for (LDObject * obj : objs) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1527 | { verts << getVertices (obj); |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1528 | delete obj; |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1529 | } |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1530 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1531 | |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1532 | return verts; |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1533 | } |
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1534 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1535 | // ============================================================================= |
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:
448
diff
changeset
|
1536 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1537 | void GLRenderer::compileObject (LDObject* obj) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1538 | { deleteLists (obj); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1539 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1540 | for (const GL::ListType listType : g_glListTypes) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1541 | { if (drawOnly() && listType != GL::NormalList) |
253
0737c217a54d
Added ability to have multiple GLRenderers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
252
diff
changeset
|
1542 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1543 | |
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
|
1544 | GLuint list = glGenLists (1); |
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
|
1545 | glNewList (list, GL_COMPILE); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1546 | |
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
|
1547 | obj->glLists[listType] = list; |
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
|
1548 | compileList (obj, listType); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1549 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1550 | glEndList(); |
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
|
1551 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1552 | |
261
c4ad4e3c6839
Added ability to snap to pre-existing vertices while drawing, added changelog
Santeri Piippo <crimsondusk64@gmail.com>
parents:
260
diff
changeset
|
1553 | // Mark in known vertices of this object |
504
6a1fa662bfc1
Removed the List -> QList alias, use QList directly
Santeri Piippo <crimsondusk64@gmail.com>
parents:
503
diff
changeset
|
1554 | QList<vertex> verts = getVertices (obj); |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1555 | m_knownVerts << verts; |
503
bebe09014dd6
removed the List class in favor of QList
Santeri Piippo <crimsondusk64@gmail.com>
parents:
501
diff
changeset
|
1556 | removeDuplicates (m_knownVerts); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1557 | |
216
c8882ff62d61
Hopefully fixed the problem regarding objects not getting drawn at first
Santeri Piippo <crimsondusk64@gmail.com>
parents:
212
diff
changeset
|
1558 | obj->m_glinit = true; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1559 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1560 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1561 | // ============================================================================= |
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:
448
diff
changeset
|
1562 | // ----------------------------------------------------------------------------- |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
497
diff
changeset
|
1563 | uchar* GLRenderer::screencap (int& w, int& h) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1564 | { w = m_width; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1565 | h = m_height; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1566 | uchar* cap = new uchar[4 * w * h]; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1567 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1568 | m_screencap = true; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1569 | update(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1570 | m_screencap = false; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1571 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1572 | // Capture the pixels |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1573 | glReadPixels (0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, cap); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1574 | |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1575 | return cap; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1576 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1577 | |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1578 | // ============================================================================= |
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:
448
diff
changeset
|
1579 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1580 | void GLRenderer::slot_toolTipTimer() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1581 | { // We come here if the cursor has stayed in one place for longer than a |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1582 | // a second. Check if we're holding it over a camera icon - if so, draw |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1583 | // a tooltip. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1584 | for (CameraIcon & icon : m_cameraIcons) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1585 | { if (icon.destRect.contains (m_pos)) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1586 | { m_toolTipCamera = icon.cam; |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1587 | m_drawToolTip = true; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1588 | update(); |
183
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1589 | break; |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1590 | } |
f1b8cb53d2a2
Moved source files to src/, removed zz_ prefix off dialog files.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
diff
changeset
|
1591 | } |
194
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
1592 | } |
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
1593 | |
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
1594 | // ============================================================================= |
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:
448
diff
changeset
|
1595 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1596 | void GLRenderer::deleteLists (LDObject* obj) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1597 | { // Delete the lists but only if they have been initialized |
216
c8882ff62d61
Hopefully fixed the problem regarding objects not getting drawn at first
Santeri Piippo <crimsondusk64@gmail.com>
parents:
212
diff
changeset
|
1598 | if (!obj->m_glinit) |
c8882ff62d61
Hopefully fixed the problem regarding objects not getting drawn at first
Santeri Piippo <crimsondusk64@gmail.com>
parents:
212
diff
changeset
|
1599 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1600 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1601 | for (const GL::ListType listType : g_glListTypes) |
194
cfe9ae5f1124
Fixed coordconv3_2 algorithm, plane drawing works on any of the fixed cameras now.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
193
diff
changeset
|
1602 | glDeleteLists (obj->glLists[listType], 1); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1603 | |
216
c8882ff62d61
Hopefully fixed the problem regarding objects not getting drawn at first
Santeri Piippo <crimsondusk64@gmail.com>
parents:
212
diff
changeset
|
1604 | obj->m_glinit = false; |
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
|
1605 | } |
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
|
1606 | |
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
|
1607 | // ============================================================================= |
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:
448
diff
changeset
|
1608 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1609 | Axis GLRenderer::cameraAxis (bool y, GL::Camera camid) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1610 | { if (camid == (GL::Camera) - 1) |
336
9dd47cc12ab8
fixed: overlays coudln't be defined for other cameras than the one used currently
Santeri Piippo <crimsondusk64@gmail.com>
parents:
324
diff
changeset
|
1611 | camid = m_camera; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1612 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1613 | const LDFixedCameraInfo* cam = &g_FixedCameras[camid]; |
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
|
1614 | return (y) ? cam->axisY : cam->axisX; |
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
|
1615 | } |
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
|
1616 | |
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
|
1617 | // ============================================================================= |
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:
448
diff
changeset
|
1618 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1619 | bool GLRenderer::setupOverlay (GL::Camera cam, str file, int x, int y, int w, int h) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1620 | { QImage* img = new QImage (file); |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1621 | LDGLOverlay& info = getOverlay (cam); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1622 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1623 | if (img->isNull()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1624 | { critical (tr ("Failed to load overlay image!")); |
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
|
1625 | delete img; |
317
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
1626 | return false; |
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
|
1627 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1628 | |
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
|
1629 | delete info.img; // delete the old image |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1630 | |
317
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
1631 | info.fname = file; |
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
1632 | info.lw = w; |
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
1633 | info.lh = h; |
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
1634 | info.ox = x; |
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
1635 | info.oy = y; |
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
|
1636 | info.img = img; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1637 | |
378 | 1638 | if (info.lw == 0) |
1639 | info.lw = (info.lh * img->width()) / img->height(); | |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1640 | |
378 | 1641 | elif (info.lh == 0) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1642 | info.lh = (info.lw * img->height()) / img->width(); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1643 | |
378 | 1644 | const Axis x2d = cameraAxis (false, cam), |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1645 | y2d = cameraAxis (true, cam); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1646 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1647 | double negXFac = g_FixedCameras[cam].negX ? -1 : 1, |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1648 | negYFac = g_FixedCameras[cam].negY ? -1 : 1; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1649 | |
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
|
1650 | info.v0 = info.v1 = g_origin; |
378 | 1651 | info.v0[x2d] = - (info.ox * info.lw * negXFac) / img->width(); |
1652 | info.v0[y2d] = (info.oy * info.lh * negYFac) / img->height(); | |
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
|
1653 | info.v1[x2d] = info.v0[x2d] + info.lw; |
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
|
1654 | info.v1[y2d] = info.v0[y2d] + info.lh; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1655 | |
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
|
1656 | // Set alpha of all pixels to 0.5 |
378 | 1657 | for (long i = 0; i < img->width(); ++i) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1658 | for (long j = 0; j < img->height(); ++j) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1659 | { uint32 pixel = img->pixel (i, j); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1660 | img->setPixel (i, j, 0x80000000 | (pixel & 0x00FFFFFF)); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1661 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1662 | |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1663 | updateOverlayObjects(); |
317
e41ab239ed28
Added ability to load the overlay meta
Santeri Piippo <crimsondusk64@gmail.com>
parents:
316
diff
changeset
|
1664 | return true; |
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
|
1665 | } |
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
|
1666 | |
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:
448
diff
changeset
|
1667 | // ============================================================================= |
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:
448
diff
changeset
|
1668 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1669 | void GLRenderer::clearOverlay() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1670 | { if (camera() == Free) |
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
|
1671 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1672 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1673 | LDGLOverlay& info = m_overlays[camera()]; |
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
|
1674 | delete info.img; |
196
47f4f4543152
Allow one of the dimensions be filled via aspect ratio
Santeri Piippo <crimsondusk64@gmail.com>
parents:
195
diff
changeset
|
1675 | info.img = null; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1676 | |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1677 | updateOverlayObjects(); |
219
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
1678 | } |
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
1679 | |
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:
448
diff
changeset
|
1680 | // ============================================================================= |
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:
448
diff
changeset
|
1681 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1682 | void GLRenderer::setDepthValue (double depth) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1683 | { assert (camera() < Free); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1684 | m_depthValues[camera()] = depth; |
219
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
1685 | } |
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
1686 | |
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:
448
diff
changeset
|
1687 | // ============================================================================= |
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:
448
diff
changeset
|
1688 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1689 | double GLRenderer::depthValue() const |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1690 | { assert (camera() < Free); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1691 | return m_depthValues[camera()]; |
219
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
1692 | } |
70eb948a2b02
Added ability to set the depth value to something else than 0.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
216
diff
changeset
|
1693 | |
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:
448
diff
changeset
|
1694 | // ============================================================================= |
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:
448
diff
changeset
|
1695 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1696 | const char* GLRenderer::cameraName() const |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1697 | { return g_CameraNames[camera()]; |
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:
250
diff
changeset
|
1698 | } |
c4b96bc41298
Made a vector class which wraps around std::vector... finally I have an operator<< for the thing.
Santeri Piippo <crimsondusk64@gmail.com>
parents:
250
diff
changeset
|
1699 | |
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:
448
diff
changeset
|
1700 | // ============================================================================= |
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:
448
diff
changeset
|
1701 | // ----------------------------------------------------------------------------- |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1702 | LDGLOverlay& GLRenderer::getOverlay (int newcam) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1703 | { return m_overlays[newcam]; |
254
434c9844e45d
Further work on image generation experiment
Santeri Piippo <crimsondusk64@gmail.com>
parents:
253
diff
changeset
|
1704 | } |
434c9844e45d
Further work on image generation experiment
Santeri Piippo <crimsondusk64@gmail.com>
parents:
253
diff
changeset
|
1705 | |
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:
448
diff
changeset
|
1706 | // ============================================================================= |
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:
448
diff
changeset
|
1707 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1708 | void GLRenderer::zoomNotch (bool inward) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1709 | { if (zoom() > 15) |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1710 | setZoom (zoom() * (inward ? 0.833f : 1.2f)); |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1711 | else |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1712 | setZoom (zoom() + (inward ? -1.2f : 1.2f)); |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1713 | } |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1714 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1715 | // ============================================================================= |
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:
448
diff
changeset
|
1716 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1717 | void GLRenderer::zoomToFit() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1718 | { if (file() == null) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1719 | { setZoom (30.0f); |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1720 | return; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1721 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1722 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1723 | bool lastfilled = false; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1724 | bool firstrun = true; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1725 | const uint32 white = 0xFFFFFFFF; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1726 | bool inward = true; |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1727 | int run = 0; |
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1728 | const int w = m_width, h = m_height; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1729 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1730 | glClearColor (1.0, 1.0, 1.0, 1.0); |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1731 | glDisable (GL_DITHER); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1732 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1733 | // Use the pick list while drawing the scene, this way we can tell whether borders |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1734 | // are background or not. |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1735 | m_picking = true; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1736 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1737 | for (;;) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1738 | { if (zoom() > 10000.0f || zoom() < 0.0f) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1739 | { // Obviously, there's nothing to draw if we get here. |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1740 | // Default to 30.0f and break out. |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1741 | setZoom (30.0f); |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1742 | break; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1743 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1744 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1745 | zoomNotch (inward); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1746 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1747 | uchar* cap = new uchar[4 * w * h]; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1748 | drawGLScene(); |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1749 | glReadPixels (0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, cap); |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1750 | uint32* imgdata = reinterpret_cast<uint32*> (cap); |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1751 | bool filled = false; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1752 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1753 | // Check the top and bottom rows |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
497
diff
changeset
|
1754 | for (int i = 0; i < w && !filled; ++i) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1755 | if (imgdata[i] != white || imgdata[ ( (h - 1) * w) + i] != white) |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1756 | filled = true; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1757 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1758 | // Left and right edges |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
497
diff
changeset
|
1759 | for (int i = 0; i < h && !filled; ++i) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1760 | if (imgdata[i * w] != white || imgdata[ (i * w) + (w - 1)] != white) |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1761 | filled = true; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1762 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1763 | if (firstrun) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1764 | { // If this is the first run, we don't know enough to determine |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1765 | // whether the zoom was to fit, so we mark in our knowledge so |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1766 | // far and start over. |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1767 | inward = !filled; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1768 | firstrun = false; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1769 | } |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1770 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1771 | { // If this run filled the screen and the last one did not, the |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1772 | // last run had ideal zoom - zoom a bit back and we should reach it. |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1773 | if (filled && !lastfilled) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1774 | { zoomNotch (false); |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1775 | break; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1776 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1777 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1778 | // If this run did not fill the screen and the last one did, we've |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1779 | // now reached ideal zoom so we're done here. |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1780 | if (!filled && lastfilled) |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1781 | break; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1782 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1783 | inward = !filled; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1784 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1785 | |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1786 | delete[] cap; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1787 | lastfilled = filled; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1788 | ++run; |
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1789 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1790 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1791 | setBackground(); |
255
67d4aedf1041
Added method for zooming to fit, fixed zoom being inappropriate when parts are first loaded
Santeri Piippo <crimsondusk64@gmail.com>
parents:
254
diff
changeset
|
1792 | m_picking = false; |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1793 | } |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1794 | |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1795 | // ============================================================================= |
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:
448
diff
changeset
|
1796 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1797 | void GLRenderer::updateRectVerts() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1798 | { if (!m_rectdraw) |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1799 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1800 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1801 | if (m_drawedVerts.size() == 0) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1802 | { for (int i = 0; i < 4; ++i) |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1803 | m_rectverts[i] = m_hoverpos; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1804 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1805 | return; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1806 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1807 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1808 | vertex v0 = m_drawedVerts[0], |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1809 | v1 = (m_drawedVerts.size() >= 2) ? m_drawedVerts[1] : m_hoverpos; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1810 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1811 | const Axis ax = cameraAxis (false), |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1812 | ay = cameraAxis (true), |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1813 | az = (Axis) (3 - ax - ay); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1814 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1815 | for (int i = 0; i < 4; ++i) |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1816 | m_rectverts[i][az] = depthValue(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1817 | |
263
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1818 | m_rectverts[0][ax] = v0[ax]; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1819 | m_rectverts[0][ay] = v0[ay]; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1820 | m_rectverts[1][ax] = v1[ax]; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1821 | m_rectverts[1][ay] = v0[ay]; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1822 | m_rectverts[2][ax] = v1[ax]; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1823 | m_rectverts[2][ay] = v1[ay]; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1824 | m_rectverts[3][ax] = v0[ax]; |
d7b534057d61
Make drawn vertices display a label containing coordinate informations, round down calculated coordinates
Santeri Piippo <crimsondusk64@gmail.com>
parents:
262
diff
changeset
|
1825 | m_rectverts[3][ay] = v1[ay]; |
285
836e77323ab0
Also allow objects to be edited by double-click in the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
282
diff
changeset
|
1826 | } |
836e77323ab0
Also allow objects to be edited by double-click in the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
282
diff
changeset
|
1827 | |
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:
448
diff
changeset
|
1828 | // ============================================================================= |
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:
448
diff
changeset
|
1829 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1830 | void GLRenderer::mouseDoubleClickEvent (QMouseEvent* ev) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1831 | { if (! (ev->buttons() & Qt::LeftButton) || editMode() != Select) |
296
d544de09c93b
Use a more greenish green rather than yellowish lime, added some constraints to when double-clicking in the viewport should edit the given object to prevent unwanted popups
Santeri Piippo <crimsondusk64@gmail.com>
parents:
291
diff
changeset
|
1832 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1833 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1834 | pick (ev->x(), ev->y()); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1835 | |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1836 | if (g_win->sel().size() == 0) |
285
836e77323ab0
Also allow objects to be edited by double-click in the viewport
Santeri Piippo <crimsondusk64@gmail.com>
parents:
282
diff
changeset
|
1837 | return; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1838 | |
384
f4622b79133d
updates on file list
Santeri Piippo <crimsondusk64@gmail.com>
parents:
382
diff
changeset
|
1839 | g_win->beginAction (null); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1840 | LDObject* obj = g_win->sel() [0]; |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1841 | AddObjectDialog::staticDialog (obj->getType(), obj); |
384
f4622b79133d
updates on file list
Santeri Piippo <crimsondusk64@gmail.com>
parents:
382
diff
changeset
|
1842 | g_win->endAction(); |
377
271d1da66b7e
Appended 'Object' to the names of all LDObject derivatives so even though the LD prefix isn't reserved for just LDObjects anymore, these classes remain distinct
Santeri Piippo <crimsondusk64@gmail.com>
parents:
364
diff
changeset
|
1843 | ev->accept(); |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1844 | } |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1845 | |
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:
448
diff
changeset
|
1846 | // ============================================================================= |
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:
448
diff
changeset
|
1847 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1848 | LDOverlay* GLRenderer::findOverlayObject (GLRenderer::Camera cam) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1849 | { LDOverlay* ovlobj = null; |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1850 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1851 | for (LDObject * obj : file()->objects()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1852 | { if (obj->getType() == LDObject::Overlay && static_cast<LDOverlay*> (obj)->camera() == cam) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1853 | { ovlobj = static_cast<LDOverlay*> (obj); |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1854 | break; |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1855 | } |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1856 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1857 | |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1858 | return ovlobj; |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1859 | } |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1860 | |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1861 | // ============================================================================= |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1862 | // ----------------------------------------------------------------------------- |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1863 | // Read in overlays from the current file and update overlay info accordingly. |
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:
448
diff
changeset
|
1864 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1865 | void GLRenderer::overlaysFromObjects() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1866 | { for (Camera cam : g_Cameras) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1867 | { if (cam == Free) |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1868 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1869 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1870 | LDGLOverlay& meta = m_overlays[cam]; |
460
b230ae09c8e5
Cut the Object-suffix from LDObject types, it doesn't help things at all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
458
diff
changeset
|
1871 | LDOverlay* ovlobj = findOverlayObject (cam); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1872 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1873 | if (!ovlobj && meta.img) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1874 | { delete meta.img; |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1875 | meta.img = null; |
378 | 1876 | } elif (ovlobj && (!meta.img || meta.fname != ovlobj->filename())) |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1877 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1878 | setupOverlay (cam, ovlobj->filename(), ovlobj->x(), ovlobj->y(), ovlobj->width(), ovlobj->height()); |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1879 | } |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1880 | } |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1881 | |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1882 | // ============================================================================= |
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:
448
diff
changeset
|
1883 | // ----------------------------------------------------------------------------- |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1884 | void GLRenderer::updateOverlayObjects() |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1885 | { for (Camera cam : g_Cameras) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1886 | { if (cam == Free) |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1887 | continue; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1888 | |
497
c51941e590b6
a bit more cleanup
Santeri Piippo <crimsondusk64@gmail.com>
parents:
495
diff
changeset
|
1889 | LDGLOverlay& meta = m_overlays[cam]; |
460
b230ae09c8e5
Cut the Object-suffix from LDObject types, it doesn't help things at all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
458
diff
changeset
|
1890 | LDOverlay* ovlobj = findOverlayObject (cam); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1891 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1892 | if (!meta.img && ovlobj) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1893 | { // If this is the last overlay image, we need to remove the empty space after it as well. |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1894 | LDObject* nextobj = ovlobj->next(); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1895 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1896 | if (nextobj && nextobj->getType() == LDObject::Empty) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1897 | { m_file->forgetObject (nextobj); |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1898 | delete nextobj; |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1899 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1900 | |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1901 | // If the overlay object was there and the overlay itself is |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1902 | // not, remove the object. |
378 | 1903 | m_file->forgetObject (ovlobj); |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1904 | delete ovlobj; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1905 | } elif (meta.img && !ovlobj) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1906 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1907 | { // Inverse case: image is there but the overlay object is |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1908 | // not, thus create the object. |
460
b230ae09c8e5
Cut the Object-suffix from LDObject types, it doesn't help things at all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
458
diff
changeset
|
1909 | ovlobj = new LDOverlay; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1910 | |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1911 | // Find a suitable position to place this object. We want to place |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1912 | // this into the header, which is everything up to the first scemantic |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1913 | // object. If we find another overlay object, place this object after |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1914 | // the last one found. Otherwise, place it before the first schemantic |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1915 | // object and put an empty object after it (though don't do this if |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1916 | // there was no schemantic elements at all) |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
497
diff
changeset
|
1917 | int i, lastOverlay = -1; |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1918 | bool found = false; |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1919 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1920 | for (i = 0; i < file()->numObjs(); ++i) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1921 | { LDObject* obj = file()->obj (i); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1922 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1923 | if (obj->isScemantic()) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1924 | { found = true; |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1925 | break; |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1926 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1927 | |
378 | 1928 | if (obj->getType() == LDObject::Overlay) |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1929 | lastOverlay = i; |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1930 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1931 | |
498
791c831c8020
further cleansing - removed most uses of unsigned ints, removed list reversers
Santeri Piippo <crimsondusk64@gmail.com>
parents:
497
diff
changeset
|
1932 | if (lastOverlay != -1) |
378 | 1933 | file()->insertObj (lastOverlay + 1, ovlobj); |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1934 | else |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1935 | { file()->insertObj (i, ovlobj); |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1936 | |
378 | 1937 | if (found) |
460
b230ae09c8e5
Cut the Object-suffix from LDObject types, it doesn't help things at all
Santeri Piippo <crimsondusk64@gmail.com>
parents:
458
diff
changeset
|
1938 | file()->insertObj (i + 1, new LDEmpty); |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1939 | } |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1940 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1941 | |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1942 | if (meta.img && ovlobj) |
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1943 | { ovlobj->setCamera (cam); |
378 | 1944 | ovlobj->setFilename (meta.fname); |
1945 | ovlobj->setX (meta.ox); | |
1946 | ovlobj->setY (meta.oy); | |
1947 | ovlobj->setWidth (meta.lw); | |
1948 | ovlobj->setHeight (meta.lh); | |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1949 | } |
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1950 | } |
493
16766ac1bbd9
last code reformatting i swear
Santeri Piippo <crimsondusk64@gmail.com>
parents:
492
diff
changeset
|
1951 | |
378 | 1952 | if (g_win->R() == this) |
316
b4fefda58f43
Made overlay data be contained in the part files, still wip
Santeri Piippo <crimsondusk64@gmail.com>
parents:
312
diff
changeset
|
1953 | g_win->refresh(); |
491
7d1b5ecd76c0
it's LDForge's 1st birthday!
Santeri Piippo <crimsondusk64@gmail.com>
parents:
484
diff
changeset
|
1954 | } |