Moved all UI files from ui/ into src/dialogs/.

Removed unused class RadioGroup.

Replaced LDObjectList with QVector<LDObject*>

Removed the Origin and axes global constants.

At long last, the g_win pointer has been removed. Down with global variables!

print() is no longer a global function but is tied to HierarchyElement.

Made the GL renderer recieve information of object deletion via signals.

Moved GetIcon and makeSettings into the MainWindow namespace as static methods.

Removed the Critical and Question functions, replaced with direct QMessageBox uses. Removed unused code from mainwindow.h.

Removed dead code

Some cleanup in mainwindow.cpp, use QSet<QString> for the 'ignore' variable.

Reformat colors.cpp.

Removed unused code from macros.h.

Made fixed cameras matrix-based. This simplifies some math.

Added gnomon.dat to version control. It helps me sort out the cameras as I rework them.

Moved LDQuadrilateral into its own source pair.

Moved LDTriangle into its own source pair.

Renamed ldObject.cpp → linetypes/modelobject.cpp

Renamed glCompiler.cpp → glcompiler.cpp

Renamed ldDocument.cpp → lddocument.cpp

Renamed glRenderer.cpp → glrenderer.cpp

Cleanup AlgorithmToolset::replaceCoordinates()

Fixed possible memory leak in AlgorithmToolset::editRaw().

Split LDConditionalEdge and LDEdgeLine into new source pairs

Removed the GLCamera::FreeToken name

LDObject subclass renaming:

Updated comments

Inlined away the LDOBJ macros in ldobject.h.

Rearranged declarations in basics.h

Removed the intXX type aliases and removed uses of intXX_t in favor of qintXX

Moved more stuff to GLCamera

Some documentation and cleanup in GLRenderer...

Fixed the free camera icon not showing up anymore.

Simplified camera tooltip code.

Moved camera names to GLCamera, other adjustments

Exported GLRenderer cameras into a new class, GLCamera.

Fixed some compilation problems

Commented GLCompiler::getColorForPolygon

Refactored configcollector.py

Moved the definitions of all configuration options into a new text file and made the configuration collector read that.

Moved definition of MainWindow::ToolInfo into mainwindow.cpp

Reworked iterable enums: they all are enum classes now and the end value is marked with "_End"

Added the RingAdapter class and interfacing ring() function and simplified some math in GLCompiler with it

Replaced uses of currentDocument() in GLRenderer with m_model

Axes are not rendered with normals so the normals client state has to be disabled when drawing them.

Implemented lighting. Yay! Unfortunately, faces that show up the wrong way around in BFC red/green mode also show up with inverted lighting here.

Grah

Moved LDComment and LDEmpty into their own source file pairs.

Moved dialogs.cpp to dialogs/externalprogrampathdialog.cpp

Cleaned up ExternalProgramPathDialog

Moved some global constants into appropriate namespaces.

Cleaned up GLCompiler. Among other changes, the compiler no longer has to be told what to compile.

Fixed potential memory leak

Replaced GLRenderer::m_width and GLRenderer::m_height with width() and height() calls.

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.

Made GLRenderer's Model pointer const

Moved more editing-related methods to Canvas.

Removed the unneeded makeCurrent overload

Moved more methods only used by canvas code from GLRenderer to Canvas. Thin border pen is now a static constant.

Moved triangle count rendering to Canvas

Moved document editing methods from GLRenderer to Canvas

Created a new GLRenderer derivative class "Canvas" and made MainWindow use it

Cleaned up code in LDDocument and removed unnecessary flags and methods. Flags turned into bools.

Removed some unused code

Removed all overlay support. It's a messy pile of mess and I will reimplement it later as background images and it will be much better then.

GLRenderer no longer exposes the model pointer.

LDGLData merged into GLRenderer since it only deals with one document now. GLRenderer generalised from rendering documents to models.

Made a new renderer be created for each document, instead of reusing the same renderer for all documents.

Simplified GLRenderer::convert3dTo2d. The multiplication with the modelview matrix is not necessary, it's identity all the time... with that, I think the function makes much more sense now.

- Use a QGenericMatrix to store the matrix, instead of a C array

Changed from GLdouble to GLfloat. Apparently the performance difference is greater on the GPU..? It doesn't really matter but let's be consistent.

GLRenderer::clampAngle is no longer used as of the previous commit so we can do away with it.

Switched from euler angle rotation to matrix rotation. Gimbal lock is now broken.

Wrote documentation to the Model class.

The current document pointer may no longer be null.

minor amendment

Reworked and cleaned up the circle mode

Some code cleanup in abstract editing modes.

Removed some unnecessary #include-directives.

Removed the status bar, since it's not used for anything

Split object list representation into virtual methods

Removed LDDocument::getObjectCount (superceded by Model::size)

The "all objects have valid models" invariant seems to be holding up now. At least basic drawing works again.

Made all LDObject constructors protected. Emplacement is now the only way to create objects.

Removed the LDSpawn function and replaced its last use cases.

More rework on model stuff, removals of LDSpawn calls. Most importantly, the LDraw code parsing function was moved to Model.

Removed uses of LDSpawn in the algorithm toolset

Replaced uses of LDSpawn with the Model class in edit modes

Removed dead code that's standing in the way of refactoring

Removed the AddObjectDialog. Garbage code that absolutely needs to be reimplemented.

Made the quad→triangles use emplacement. However, now it crashes because of problems in the underlying system (the LDObject constructor shouldn't do anything in regard to the model!)

Major overhaul of object→document relationship: added the Model class which models the object buffer. Each object is to be included in a model (an invariant that currently does not hold). A document is a subclass of a model. The LDObject is also now agnostic about selection, and the selection is now a set. A lot of things are probably broken now but it's a major step forward.

Happy new year 2017!

Matrices are now input with 9 spinboxes instead of a MLCad-style line edit

Moved the identity matrix constant into Matrix's namespace

Removed the dangerous C-array constructor from the matrix - no need for it anyway since the matrix already is an array of doubles.

(0) -1000 -300 -100 -96 +96 +100 tip

mercurial