changelog
    
    
    - Thu, 23 Feb 2017 23:36:59 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 23:36:59 +0200] rev 1172
 
    - Changed QByteArray to QVector to avoid that ugly reinterpret_cast.
 
    - Thu, 23 Feb 2017 23:29:16 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 23:29:16 +0200] rev 1171
 
    - Turned GLRenderer::pixelCapture to GLRenderer::screenCapture() which encapsulates screen capturing properly and returns a ready image.
 
    - Thu, 23 Feb 2017 23:17:10 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 23:17:10 +0200] rev 1170
 
    - Hardened the GLRenderer interface, made methods more private.
 
    - Thu, 23 Feb 2017 23:11:33 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 23:11:33 +0200] rev 1169
 
    - Cleanup GLRenderer::initializeAxes()
 
    - Thu, 23 Feb 2017 22:55:09 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 22:55:09 +0200] rev 1168
 
    - Removed GLRenderer::refresh(), update() does the job just as fine.
 
    - Thu, 23 Feb 2017 22:52:45 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 22:52:45 +0200] rev 1167
 
    - GLRenderer::drawVbos no longer needs to be told the GL type
 
    - Thu, 23 Feb 2017 22:51:55 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 22:51:55 +0200] rev 1166
 
    - Cleanup AlgorithmToolset::subfileSelection.
 
    - Thu, 23 Feb 2017 21:03:59 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 21:03:59 +0200] rev 1165
 
    - Fixed more dialog instances in AlgorithmToolset.
 
    - Thu, 23 Feb 2017 21:02:14 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 21:02:14 +0200] rev 1164
 
    - Moved all UI files from ui/ into src/dialogs/.
 
    - Thu, 23 Feb 2017 20:29:44 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 20:29:44 +0200] rev 1163
 
    - Removed unused class RadioGroup.
 
    - Thu, 23 Feb 2017 20:28:17 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 20:28:17 +0200] rev 1162
 
    - Replaced LDObjectList with QVector<LDObject*>
 
    - Thu, 23 Feb 2017 20:25:47 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 20:25:47 +0200] rev 1161
 
    - Removed the Origin and axes global constants.
 
    - Thu, 23 Feb 2017 20:21:40 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 20:21:40 +0200] rev 1160
 
    - At long last, the g_win pointer has been removed. Down with global variables!
 
    - Thu, 23 Feb 2017 20:18:39 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 20:18:39 +0200] rev 1159
 
    - print() is no longer a global function but is tied to HierarchyElement.
 
    - Thu, 23 Feb 2017 20:06:22 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 20:06:22 +0200] rev 1158
 
    - Made the GL renderer recieve information of object deletion via signals.
 
    - Thu, 23 Feb 2017 20:03:31 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 20:03:31 +0200] rev 1157
 
    - Moved GetIcon and makeSettings into the MainWindow namespace as static methods.
 
    - Thu, 23 Feb 2017 19:56:21 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 19:56:21 +0200] rev 1156
 
    - Removed the Critical and Question functions, replaced with direct QMessageBox uses. Removed unused code from mainwindow.h.
 
    - Thu, 23 Feb 2017 19:33:56 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 19:33:56 +0200] rev 1155
 
    - Removed dead code
 
    - Thu, 23 Feb 2017 19:32:36 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 19:32:36 +0200] rev 1154
 
    - Some cleanup in mainwindow.cpp, use QSet<QString> for the 'ignore' variable.
 
    - Thu, 23 Feb 2017 18:47:15 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 18:47:15 +0200] rev 1153
 
    - Reformat colors.cpp.
 
    - Thu, 23 Feb 2017 18:38:30 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 23 Feb 2017 18:38:30 +0200] rev 1152
 
    - Removed unused code from macros.h.
 
    - Mon, 20 Feb 2017 07:56:21 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Mon, 20 Feb 2017 07:56:21 +0200] rev 1151
 
    - Made fixed cameras matrix-based. This simplifies some math.
 
    - Sat, 18 Feb 2017 02:02:29 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Sat, 18 Feb 2017 02:02:29 +0200] rev 1150
 
    - Added gnomon.dat to version control. It helps me sort out the cameras as I rework them.
 
    - Tue, 14 Feb 2017 15:21:34 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 15:21:34 +0200] rev 1149
 
    - Moved LDQuadrilateral into its own source pair.
 
    - Tue, 14 Feb 2017 15:11:33 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 15:11:33 +0200] rev 1148
 
    - Moved LDTriangle into its own source pair.
 
    - Tue, 14 Feb 2017 14:59:26 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 14:59:26 +0200] rev 1147
 
    - Renamed ldObject.cpp → linetypes/modelobject.cpp
 
    - Tue, 14 Feb 2017 14:53:06 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 14:53:06 +0200] rev 1146
 
    - Renamed glCompiler.cpp → glcompiler.cpp
 
    - Tue, 14 Feb 2017 14:52:01 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 14:52:01 +0200] rev 1145
 
    - Renamed ldDocument.cpp → lddocument.cpp
 
    - Tue, 14 Feb 2017 14:51:04 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 14:51:04 +0200] rev 1144
 
    - Renamed glRenderer.cpp → glrenderer.cpp
 
    - Tue, 14 Feb 2017 13:37:58 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 13:37:58 +0200] rev 1143
 
    - Cleanup AlgorithmToolset::replaceCoordinates()
 
    - Tue, 14 Feb 2017 13:29:47 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 13:29:47 +0200] rev 1142
 
    - Fixed possible memory leak in AlgorithmToolset::editRaw().
 
    - Tue, 14 Feb 2017 13:25:43 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 13:25:43 +0200] rev 1141
 
    - Split LDConditionalEdge and LDEdgeLine into new source pairs
 
    - Tue, 14 Feb 2017 13:02:05 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 13:02:05 +0200] rev 1140
 
    - Removed the GLCamera::FreeToken name
 
    - Tue, 14 Feb 2017 12:58:53 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 12:58:53 +0200] rev 1139
 
    - LDObject subclass renaming:
· LDLine → LDEdgeLine
· LDCondLine → LDConditionalEdge
· LDQuad → LDQuadrilateral 
    - Tue, 14 Feb 2017 12:48:21 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 12:48:21 +0200] rev 1138
 
    - Updated comments
 
    - Tue, 14 Feb 2017 12:43:10 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 12:43:10 +0200] rev 1137
 
    - Inlined away the LDOBJ macros in ldobject.h.
 
    - Tue, 14 Feb 2017 09:53:13 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 09:53:13 +0200] rev 1136
 
    - Rearranged declarations in basics.h
 
    - Tue, 14 Feb 2017 09:48:51 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 09:48:51 +0200] rev 1135
 
    - Removed the intXX type aliases and removed uses of intXX_t in favor of qintXX
 
    - Tue, 14 Feb 2017 08:33:44 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 08:33:44 +0200] rev 1134
 
    - Moved more stuff to GLCamera
 
    - Tue, 14 Feb 2017 08:26:39 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 08:26:39 +0200] rev 1133
 
    - Some documentation and cleanup in GLRenderer...
 
    - Tue, 14 Feb 2017 08:15:58 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 08:15:58 +0200] rev 1132
 
    - Fixed the free camera icon not showing up anymore.
 
    - Tue, 14 Feb 2017 08:13:26 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 08:13:26 +0200] rev 1131
 
    - Simplified camera tooltip code.
 
    - Tue, 14 Feb 2017 08:08:17 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 08:08:17 +0200] rev 1130
 
    - Moved camera names to GLCamera, other adjustments
 
    - Tue, 14 Feb 2017 07:57:27 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Tue, 14 Feb 2017 07:57:27 +0200] rev 1129
 
    - Exported GLRenderer cameras into a new class, GLCamera.
 
    - Mon, 13 Feb 2017 20:59:16 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Mon, 13 Feb 2017 20:59:16 +0200] rev 1128
 
    - Fixed some compilation problems
 
    - Sun, 12 Feb 2017 17:28:22 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Sun, 12 Feb 2017 17:28:22 +0200] rev 1127
 
    - Commented GLCompiler::getColorForPolygon
 
    - Sun, 12 Feb 2017 17:18:14 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Sun, 12 Feb 2017 17:18:14 +0200] rev 1126
 
    - Refactored configcollector.py
 
    - Sun, 12 Feb 2017 16:59:35 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Sun, 12 Feb 2017 16:59:35 +0200] rev 1125
 
    - Moved the definitions of all configuration options into a new text file and made the configuration collector read that.
 
    - Sun, 12 Feb 2017 16:02:44 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Sun, 12 Feb 2017 16:02:44 +0200] rev 1124
 
    - Moved definition of MainWindow::ToolInfo into mainwindow.cpp
 
    - Sun, 12 Feb 2017 16:02:02 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Sun, 12 Feb 2017 16:02:02 +0200] rev 1123
 
    - Reworked iterable enums: they all are enum classes now and the end value is marked with "_End"
 
    - Fri, 10 Feb 2017 23:06:24 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Fri, 10 Feb 2017 23:06:24 +0200] rev 1122
 
    - Added the RingAdapter class and interfacing ring() function and simplified some math in GLCompiler with it
 
    - Thu, 09 Feb 2017 23:51:42 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 23:51:42 +0200] rev 1121
 
    - Replaced uses of currentDocument() in GLRenderer with m_model
 
    - Thu, 09 Feb 2017 23:50:11 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 23:50:11 +0200] rev 1120
 
    - Axes are not rendered with normals so the normals client state has to be disabled when drawing them.
 
    - Thu, 09 Feb 2017 23:46:45 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 23:46:45 +0200] rev 1119
 
    - Implemented lighting. Yay! Unfortunately, faces that show up the wrong way around in BFC red/green mode also show up with inverted lighting here.
 
    - Thu, 09 Feb 2017 23:45:53 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 23:45:53 +0200] rev 1118
 
    - Grah
 
    - Thu, 09 Feb 2017 22:46:37 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 22:46:37 +0200] rev 1117
 
    - Moved LDComment and LDEmpty into their own source file pairs.
 
    - Thu, 09 Feb 2017 21:04:33 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 21:04:33 +0200] rev 1116
 
    - Moved dialogs.cpp to dialogs/externalprogrampathdialog.cpp
 
    - Thu, 09 Feb 2017 21:01:12 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 21:01:12 +0200] rev 1115
 
    - Cleaned up ExternalProgramPathDialog
 
    - Thu, 09 Feb 2017 20:54:21 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 20:54:21 +0200] rev 1114
 
    - Moved some global constants into appropriate namespaces.
 
    - Thu, 09 Feb 2017 20:44:36 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 20:44:36 +0200] rev 1113
 
    - Cleaned up GLCompiler. Among other changes, the compiler no longer has to be told what to compile.
 
    - Thu, 09 Feb 2017 20:07:45 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 20:07:45 +0200] rev 1112
 
    - Fixed potential memory leak
 
    - Thu, 09 Feb 2017 19:59:27 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 19:59:27 +0200] rev 1111
 
    - Replaced GLRenderer::m_width and GLRenderer::m_height with width() and height() calls.
 
    - Thu, 09 Feb 2017 19:57:43 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 19:57:43 +0200] rev 1110
 
    - Moved more business logic out of GLRenderer into Canvas. GLRenderer::pick(const QRange&) now returns a set of LDObjects without modifying them. Replaced the GLRenderer::pick(int, int) overload with GLRenderer::pickOneObject.
 
    - Thu, 09 Feb 2017 19:32:41 +0200
 
    - by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 19:32:41 +0200] rev 1109
 
    - Made GLRenderer's Model pointer const