uuid things default tip

reworked selection model handling

stuff

commit work done on mdi

moved GL stuff into a new gl namespace

removed the GuiUtilities class

removed unneeded stuff

reimplented shortcuts in the config dialog using model/view programming

Refactored the color toolbar editing into a new model/view system

things

refactor

added constexprs

fixed a crash when trying to open a document for the 3rd time after closing it 2 times

add const

fix object moving

added icons for circular primitives and enhanced some existing ones

removed a duplicate member

fixed rendering of bézier curves

simplified format()

Fixed cmake warning

added Cotire to speed up compilation

replaced uses of QList with QVector

used the new CircularSectionEditor in CircularPrimitiveEditor

refactored the segments/divisions editor in MainWindow to a new widget

fixed compile errors in some cases, bezier curve now stores the segment count in each object (not editable yet)

simplified more

simplified

added buttons to rotate circular primitives

added support for inverting circular primitives

fixed generation of disc negatives

simplified

fixed chord triangle count formula

fixed bugs regarding primitives, added chord substitution

added support for open/closed cylinders in LDCircularPrimitive

Circular primitive editor complete

replaced overloads with a new 'xyz' function

replaced GLRotationMatrix with QMatrix4x4

replaced the Matrix class with QMatrix4x4

some rework in description

fixed bugs regarding circular primitives

refactored LDPolygon

added the disc and disc negative to the circular primitive type

changed LDCylinder to LDCircularPrimitive and moved circles to it

cleaned up LDColor constructors

show the color index in the color button

separated the color button into a new widget

fixed cylinder rendering

changed rotation matrix to quaternion in GLRenderer

fix compiler warnings

added work done on cylinders

added draw plane feature (doesn't work with circle draw quite right yet)

refactored signal blocking

fixed that scaling factors could be negative

added a doublespinbox variant that uses "." as the decimal point and omits trailing zeros

added scaling vector editing into the subfile editing dialog

added vertex rendering

some fixes

fixed vertex cache spontaneously clearing

refactored the quick color toolbar

removed dead code

added a status bar and moved printed messages there

removed dead code

refactor

fixed changing a document not updating its references in other files

added an ini option to disable line stipple

refactor

fixed "edit selected object" not editing non-vertex objects

readded object editing by double click in list view

fixed the scene bounding box not getting updated as it should

automatically center the model in the renderer

reworked bounding box

added cull depth support

added some missing connections

fixed some problems

start rework

show subfile descriptions in the object list

fix warnings

started work on the pattern editor experimental

Branch close

Branch close

Branch close

Branch close scripting

Branch close projects

Branch close header experimental

Branch close integrity experimental

Branch close inspector experimental

Branch close bfc experimental

refactor

refactor

use 3 significant figures in file size representation

better representation of fractions and large numbers

The border between the canvas and left tool box is now resizable

fixed minimum values

refactor cylinder generation

reworked primitive generator

added support for new style primitive names

fixed rendering artifacts

fixed wording

added comment

added categories for 8/ and 48/ torii

more work on 8-primitives

Added support for 8-primitives

Whoops

some python cleanup

improved formatting of generated configuration code

MainWindow now stores its state in the config file so its state and geometry is preserved across instances

removed another unused class

removed unused include

replaced remaining DIRSLASH, Dirname and Basename uses with Qt file info stuff

used Qt file info stuff in the auto-subfiler

Used more Qt file info stuff

rewrote LDDocument::shortenName using Qt stuff

merged mathfunctions.cpp into algorithms/geometry.cpp

added comment

Happy new year 2018

Use 4 points of precision for circle point coordinates

roundToDecimals no longer needs an lvalue. applyToMatrix removed.

Config is now a namespace

renamed sink() to singleton()

used squared()

Moved includes, added squared() function

reorganized headers

removed unnecessary files and includes

removed the unused OpenProgressDialog

reworked includes

moved Vertex and BoundingBox into new code units

added stream operators to Vertex

reworked Vertex, no longer a QVector3D subclass

remove LDBfc

ported qOverload to drop minimum Qt requirement down to 5.5

remove LDPaths

reworked primitive scanning

Begin rework to add support for multiple libraries

fixed warning

red/green view rework complete

Bfc red/green view almost completely fixed

added more comments

reworked invert()

added license headers

moved inverting code into a new file

added comment editing

fixed color handling

fixed infinite recursion and integrated the subfilereference editor

added subfile reference editor

Added vertex object editing dialog

the header is now also saved

Added a new tool for clamping vertices

removed the old Add History Line tool

Part history can now be edited

Added basic header editing

Fixed crashing

add comments

Header parsing complete, moved all parsing code into a new class. Documents are now all loaded in one go.

begin work on document loading rework

added a document header structure

added signal emissions

moved emit calls

added an MVC interface to the primitives tree

fixed removing objects causing some other objects to disappear

optimized triangle count

fixed: LDDocument created one removal connection to the model for each object added, so removing an object from a model of 9 objects added 9 deletion entries to history

renamed signal

moved LDObject indices from a global array into Model

removed unused code

fixed object deleting not triggering the proper renderer updates

fixed DelHistoryEntries getting ignored...

removed some debug code

Implemented row moving in the model and replaced swapping with it

migrated model swapping to mvc and made Model::swapObjects to emit dataChanged signals as a temporary solution

removed some unneeded headers

Finally removed the cancer that is the LDObject::model pointer

Added LDObject serialization and refactored the internal resource managing to use it. No more tearing objects from one model into another, and this provides a stable way to keep an object's state in memory such as the edit history.

fix warning

removed another LDObject::model() use

removed LDError::fileReferenced

reimplemented detection of broken references in PartDownloadRequest::downloadFinished

reimplemented finding of broken document references

LDSubfileReference now contains the name of the subfile and not a pointer anymore. Some methods now require a DocumentManager* for context on resolving the name.

removed use of model() in LDSubfileReference::inlineContents

Removed LDObject::invert, inversion code moved to basic toolset

removed LDObject::swap

moved LDObject::next to the algorithm toolset

removed LDObject::lineNumber

more selection rework

removed LDDocument::clearSelection and replaced it with a MainWindow implementation

things #2

things

add operators to LDDocument

refactor

Converted magic wand mode and other selection stuff to mvc

more work on mvc

convert MainWindow::deleteSelection to mvc

made lighting more subtle

converted highlighting to mvc

used mvc selection models

more work on mvc

begin model rework

removed unneeded stuff

Removed LDConditionalEdge::becomeEdgeLine

hook up dataChanged

changed Model into an MVC list model and replaced the objects list with a view into the model

add missing switch case

disable lighting in the selection scene

moved matrix calculations, added inverted normals for BFC back sides

BFC INVERTNEXT objects are no longer individual objects

removed GL_POLYGON_SMOOTH because it causes artifacts

made GLCamera a non-QObject

remove GL_POLYGON_SMOOTH because it causes rendering artifacts

renderer rework

begin rendering rework

encoded division slash

added support for circular 8/-primitives

simplify

add support for 8/ in part downloader

drop Qt4 support

simplify

undo config change

simplified RoundToDecimals

happy new year 2018

revamped format.h

reduce main.cpp

simplified Matrix

replaced Origin with default-constructed Vertex

fix paren style

add autosave

replaced "Config->" with "config."

increased range of GLRenderer bounds

circlemode: don't wait for the last click

Worked more on the library collection thing

LibraryCollection now derives from QObject and QVector<Library>

More work on library collections

Laid groundwork for library collection support.

Some cleanup in LDPaths

Removed the unary min and max functions.

Better encapsulated the BaseConfiguration class.

Whoops

Split the configuration main interface to a new class, BaseInterface, so that moc can properly deal with it.

Configuration changes can now be detected with signals.

Added Python tools to CMake so that they show up in IDEs

Simplified GLCompiler vbo interface

PrimitiveScanner is no longer a HierarchyElement.

Grid is now a namespace.

MathFunctions is now a namespace.

Fixed NewPartDialog leaking the memory allocated by the user interface.

NewPartDialog is no longer a HierarchyElement.

ColorSelector is no longer a HierarchyElement.

GuiUtilities is now a namespace.

The Grid class is no longer a hierarchy element or a QObject.

Made configuration a global singleton. I think I can give in at least that much because it makes solving a lot of problems easier.

Also removed the copy constructor and copy assignment because those only are bad news for a resource managing vector...

and let's put a newline there...

Deleted the copy constructor version of ResourceVector<T>::insert, like with append

Sorted the methods in Model's public section.

Renamed some methods of the Model class to remove the 'emplace' word (however cromulent it is, being from STL...) from them.

Moved LDObject lifetime management from Model to ResourceVector. This is a large refactor that removes some hacks from the Model class.

Added a new type ResourceVector which manages object lifetimes, and used it to remove a bit of memory management.

Polar grid is now togglable.

CMake fixes

Added polar grid snapping code.

Added polar grid rendering (which is disabled for now).

Grid::snap now snaps points.

Simplified Grid::snap.

At long last, the grid is finally now rendered onto the viewport. Woop!

Added support for ideal co-ordinates, which should make writing editing tools a lot easier. For some reason they don't yet work with the back and right cameras.

Removed some unused class stubs and definitions.

No need for braces there...

Cleanup ColorSelector, moved direct color composition to a new LDColor constructor.

Cleanup ColorSelector::colorButtonClicked()

Changed QByteArray to QVector to avoid that ugly reinterpret_cast.

Turned GLRenderer::pixelCapture to GLRenderer::screenCapture() which encapsulates screen capturing properly and returns a ready image.

Hardened the GLRenderer interface, made methods more private.

Cleanup GLRenderer::initializeAxes()

Removed GLRenderer::refresh(), update() does the job just as fine.

GLRenderer::drawVbos no longer needs to be told the GL type

Cleanup AlgorithmToolset::subfileSelection.

Fixed more dialog instances in AlgorithmToolset.

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.

Reworked the Matrix interface so that less index math is involved

Fixed formatFileSize

Refactor roundToDecimals and formatFileSize

Actually, let's call it countof(). Makes more sense.

Replaced '.length()' with 'length()' where appropriate

Replaced uses of 'x.size()' with 'length(x)'

refactor: added the length() function that's like Python's len()

refactor

Display error string if unable to write a crash log.

Made DEFINE_FLAG_ACCESS_METHODS a function macro

Cleaned up crash catcher, fixed missing <math.h> include

Fixed additive range selection not working properly.

Cleanup in GL renderer...

Cleaned up PrimitiveScanner

Further cleanup

Refactor primitives

Refactor FileToolset

Moved the about dialog into the file toolset and removed the mail button (the forums are better for this anyway)

Removed the 'once' macro since it's not used

Removed the USE_QT5 macro now that we're Qt5 only.

Change "m_" prefix to "_" in members of PartDownloader

Changed QList to QVector in PartDownloader

Cleanup PartDownloader

Unabbreviate "transform" to "transformationMatrix"

Cleanup colors.cpp/.h

Refactor GuiUtilities

Some cleanup

Draw line lengths to 2 decimal points only.

Dropped Qt 4 support. We're Qt 5 only now.

Fixed compilation.

Added doxygen.ini

Moved matrix into new source/header pair in types/

Replaced the ugly for_enum macro with a generator class

Further improved enum handling

Enum stuff

- Refactoring...

Unabbreviated overlay member names

removed removeDuplicates in favor of QSet, and the unused ObjectList class

Fixed circle mode not building the circle anymore

Removed unneeded includes from main.cpp

Moved PreferredLicenseText into HierarchyElement and made the config pointer be passed to LDPaths. Now I can finally remove the Config global pointer.

Moved LDObject::moveObjects into MoveToolset

Rename Pi to lowercase pi

Renamed ldObjectMath.cpp/.h to mathfunctions.cpp/.h

Moved rotation point handling to ldObjectMath.cpp and encapsulated it into new class MathFunctions

Split grid stuff into a new class Grid in grid.cpp/grid.h

Use a better gcd algorithm, some style fixes

Replaced GetRecursiveFilenames with QDirIterator

Reformatted primitives.cpp

Split PrimitivePrompt into its new source files, renamed it to GeneratePrimitivePrompt

Transformed primitive management into a new class PrimitiveManager that is a member of MainWindow

Renamed ConfigurationValueBag to Configuration and added a pointer to it into HierarchyElement. This helps with the fight against global variables.

Fixed line length warnings

Added triangle count to viewport, added compile-time line length check

Happy new year 2016!

Cleanup miscallenous.cpp/.h

It worx again!

Rename LDSubfile to LDSubfileReference

A bit more cleanup. Finally removed the PROPERTY macro. (now let's see about making a new one sometime that isn't so terrible?)

Fix rectangle mode for real

Fixed circle, rectangle and line path modes not working anymore. Add blip coordinates to curve and line path modes. Circle mode for now only can show the coordinates of the initial blip

Branch close

Copyright header fix, some minor stuff

Subject Bézier curve fineness to the grid. By default, the coarse grid uses 8 segments, medium 16 and fine 32. Moved rasterization from demoting to inlining, it feels more sensible for it to be there.

Bézier curves now render in 3D

Bézier curves are now parsed correctly

Bézier curves may now be serialized down using the "Demote" function. I need to rename that now.

Added some pretty pics that I left out of the previous commit.

Begin work on Bézier curve support. They can be drawn but don't render in 3D and they load as comments.

And now it should work again too

Now compiles again

Commit work done on document manager. Happy 3rd birthday LDForge!

LDVertexObject stuff (ultimately not worth it)

Removed some unused methods

Split PartDownloadRequest into its own file

Refactor PartDownloader

(0) -1000 -448 tip

mercurial