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

Refactor PartDownloadRequest

Use automoc so that it compiles again...

Add ${LDFORGE_HEADERS} into the add_executable call so that header files without corresponding source files show up in Qt Creator's project listing

Sort LDFORGE_HEADERS in CMakeLists.txt

Refactor LDObject API

Removed the exiting hacks

Refactor GLRenderer and GLCompiler

Remove "!= nullptr" expressions

null -> nullptr

Refactor edit history

Optimize QVariant in ConfigurationValueBag

Refactor MainWindow's API

Split LDFileLoader (now LDDocumentLoader) into its own files

Refactor LDDocument's API

Make documents members of the main window

More refactor and removal of g_win uses

Make ui a reference pointer in ConfigDialog

Move ConfigDialog into src/dialogs/ subfolder

Added a GuiUtilities class to contain useful non-MainWindow-related GUI functions

Change color config types into actual colors now that I can do that

Now doesn't crash anymore

Now compiles and links but crashes shortly after startup.

Commit configuration rework (doesn't work yet, more than most probably doesn't compile either)

Split actions.cpp and actionsEdit.cpp into toolsets.

Happy new year 2015

elif -> else if

Replaced Min/Max/Clamp/Abs with use of Qt versions of them.

MainWindow: "ui->" -> "ui."

More refactor

More through removal of the vertex object

Rename MainWindow files

Fix result reporting in "add borders"

Fix crash when using "add borders" with a triangle

Remove the vertex object type

Removed all asserts from the code. Removed assert handling and the bomb box dialog.

Refactor OpenProgressDialog out of dialogs.cpp

Replace LDIterate function with LDObjectIterator class

Remove g_win uses from actionsEdit.cpp

Refactor the new part dialog into a new class

Refactor LDrawPathDialog and LDPaths

Rename all .cc files to .cpp files.

Closed old branch

Move colorSelector.cc to dialogs/colorselector.cpp

actually added updaterevision.py, more fixing

Replaced updaterevision with a python script, more renames, clang fixes

ColorSelector: `ui->` -> `ui.`

Cleanup progresses

More sharedpointer removal

Replace casts

Commit work done on code cleanup

Commit work on scripting scripting

Refactoring update.

- fix spacing in cmakelists

- commit ldproject stuff projects

- more work on project files projects

- commit more work done on projects projects

- commit work done on projects projects

- merged with default projects

- fixed: actions did not fire anymore

- rewrote codegen in python and merged updaterevision into it

- moved ui files to src/

- renamed .cc files to .cpp

- added dependency to libarchive projects

- refactor MainWindow a tad

- removed the vertex object

- bump copyright year

- relaced updaterevision.c with a python script

- added/corrected license headers scripting

- ast: added root and macro nodes and processing of them scripting

- now parses to tokens scripting

- more work on scripting scripting

- commit work done on scripting scripting

- fixed stability problems

- closed old head experimental

- closed old head

- closed old head

- commit work done on header/body split experimental

- added integrity scan first steps experimental

- closed bad head experimental

- commit work done on inspector experimental

- merged experimental with default experimental

- merged with default experimental

- argh experimental

- merged two default heads

- fixed a rendering issue.. experimental

- bfc stuff (at least it works now...) experimental

- merged bfc with default experimental

- merged with default experimental

- added CMakeLists.txt.user to ignore list

- removed old .gitignore

- removed unneeded debug lines... whoops

- zoom-to-fit now works.. better than before

- commit work done on header/body split

- added integrity scan first steps

- bumped version to 0.4

- pressing ctrl while drawing now locks the draw to cardinal directions

- now remembers what toolbars are enabled and what are disabled in config

- merged with default experimental

- merged selection optimization from experimental into default

- removed the clock timer I forgot in the previous commit experimental

- rewritten updateSelection() core loop, a new algorithm there makes selection updating a ton lot faster than before experimental

- re-committed bfc work (this makes 903ec1e46298 a suitable common ancestor for experimental branch features) experimental

- backed out work done on bfc (re-committing later) experimental

- merged with default experimental

- improved part downloader: now asks for the path instead of just directing the user to settings. auto-fix download now configurable and opt-in

- interface fixes and changes: edit modes now use plain letter keybinds like gimp, fixed some edit modes missing from the menu, magic wand now follows the selection mode (in order to group selective/drawing modes together like that), etc

- fixed endless loop in prepareVBO due to badly incremented iterator

- commit work done on bfc support experimental

- fixed: missing WIN32 keyword in cmakelists caused the command prompt to show up when ldforge was executed

- fixed: due to a shared pointer called via reference called dismiss() in LDDocument::closeInitialFile, this could cause LDDocuments to delete themselves in setImplicit(true) as no shared pointers were left inside closeInitialFile to keep the refcount up.

- fixed compilation on windows

- a more elegant fix to the problem addressed in the previous commit

- fixed documentless objects being selected on document close

- if an external program fails to run properly, an stdout&stderr log is now printed

- changed the unorthodox color selection grid into a push button grid

- fixed infinite recursion when loading logoed studs

- renamed line loop to line path, updated changelog

- finished line loop mode

- added line loop mode (doesn't actually create anything yet)

- circle mode now locks the angle offset on final confirmation stage

- refactor

- display a label next to the spinbox showing the fraction

- axed an unused variable

- circle tool is now able to rotate the partial circular primitives spawned

- ring finder now also tries scaling by 10 (3.4, 6.4 -> 34, 64), fixed floating point math argghhhhhhhh

- now tries to download missing files off ldraw.org

- now able to spawn partial circular primitives

- circle mode can now do hi-res

- ldforge can now open files from command-line input

- got rid of an annoying debug message

- get rid of NUM_PRIMES

- major identifier renaming

- more refactor, updated .hgignore

- refactor

- use less verbose commit time/version string in the window title

- fixed crash-on-exit (simply by not running full destruction processing during program termination)

- and fixed compilation on linux systems too

- fixed compilation on windows systems

- fixed: changing the document of a subfile wasn't recorded into history properly

- whoah looks like I forgot to save in designer...

- down with all these unnecessary semicolons!

- refactored up the configuration dialog. Instead of setting all configuration values one-by-one, dynamically fill in the values and save them into config based on widget names and data

- changed configuration entry name from minuscule camelCase to majuscule CamelCase. reasoning for this being that these variables are globals.

- fixed: direct color support did not work properly with full-black #000000

- refactoring

- refactor

- use the untransformed subfile when testing whether a subfile is flat, otherwise it won't be considered flat if the subfile is rotated. or worse...

- added a code generator to produce a configuration.inc which replaces the old, DIABOLIC configuration indexing mechanism

- changed copyright lines to use my legal name instead of my nickname

- moved LDMatrixObject to be an abstract class deriving from LDObject. LDSubfile only inherits from LDMatrixObject.

- moved ringFinder into root source directory, clearing the src/misc/ directory

- split the rectangle ability out of the draw mode into its own edit mode

- changed `&&` and `||` operators to their named variants `and` and `or`

- part downloader: update the input widget with the corrected part name when guesswork is done

- initialize History as not ignoring or history will not work at all with new files

- altered the non-release version string format

- fixed incorrect conversions of weak pointers to strong ones

- reimplemented vertex tracking using a method similar to what the GL compiler uses

- now prints the filesize upon successful save

- magic wand: when flood-selecting surfaces, also pick any matching conditional lines

- fixed: ring finder's solutions' scale values would drop to 0.0 if it would not choose to upscale radii

- okay that was dumb

- updated filenames

- now with license headers

- and now it works fine too

- now compiles

- merged with main

- more work on edit modes

- more work on edit modes

- saving work done on edit mode revamp

- updated qrc

- draw the free camera icon when in magic wand mode

- changelog entry for magic wand

- update the object list when the magic wand empties the selection when clicking on background

- added the magic wand tool

- optimized simplify()

- refactor

- added ability to filter out surfaces/edgelines/condlines from the viewport

- refactored stuff

- refactor

- ringfinder: attempt to upscale fractional radii to integral ones. this improves results

- refactored up the ringfinder, apply -DDEBUG with RelWithDebInfo

- imported the .gitignore from the old git repository as .hgignore and adapted it slightly

README.md edited online with Bitbucket

- adapted the code to use hg-based updaterevision

- transitioned from git to hg

- moved most of LDColorData API into LDColor

- refactor. got rid of the LDSharedVertex nonsense, fixed up split lines action

- added split lines action, doesn't yet work very well

- allow 5 decimals for grid precision

- refactor glRenderer.h

- made transparent direct colors a compile-time opt-in since it appears to be non-standard

- got rid of the old numeric() function

- minor edit

- added close buttons to tabs

- removed obsolete stuff from colors.cc header

- disable the 'transparent' checkbox when there is no direct color selected

- changed all color usage to use LDColor classes instead of color indices. Added support for direct colors.

- source reformat

- added various hi-res counterpart primitive categories

- updated the fast-draw studs category to use the 8\ subdirectory, all existing fast-draw primitives have been moved-to so those now go to Other.

- sort primitive categories alphabetically

- added primitives toolbox

- String -> QString

- added an action for opening the subfiles pointed to by selected references as editable documents

- made select by color/type no longer require uniform selection

- LDObject::Type moved back to global namespace

- removed code rendered unnecessary

- made LDDocument use shared pointers, this eliminates a lot of document-related crashes

- subfile inverting now detects flatness and acts accordingly instead of naively applying invertnext to everything

- simplified parse error handling

- when saving, prepare the data first into a buffer and then write to disk, minimizing the time needed to perform the I/O operation.

- made coordinate rounding precision configurable

- further edits to crashcatcher

- crashcatcher: don't use the bomb box at all, instead just write the crashlog and then abort for good

- reformatted the changelog. 0.3-specific changes reformatted to use Zandronum-like version history, this is much easier to work with

- selecting an invertnext'd object now also selects the invertnext

- don't crash when inverting conditional lines

- removed the build time in favor of commit time which I think is much more important

- bfc red/green view and random colors are now mutually exclusive, enabling one disables the other.

- make pick scenes always use particularly thick lines so that the line picking behavior is relayed to the mouse-over highlight

- use a faster ID choosing setup, this should work so long as nobody goes to create 17 million objects

- hopefully stabilized the entire shared pointers deal now

- improved shared pointer behavior, still not there yet

- initial overhaul with smart pointers

- slight refactor in ldobject methods

- renamed some renderer members

- crashcatcher: hide the main window before doing anything and also write the crashlog into a file

- when an object is deleted, if it's the renderer's object-under-cursor the field needs to be cleared or ldforge crashes

- grid-snap the drawn circle radius, not the point used for the distance calculation

- added a macro for adding operator++ and operator-- to enums, less cast hell this way

- significantly sped up selecting all objects, it is now an actually fast operation

- made the mouse-hover object highlight togglable from configuration

- added a selection hover effect to the renderer. selecting objects just became a lot more convenient...

- cut unnecessary code from MainWindow::updateSelection. speeds it up a bit, especially when unselecting but it's not fast enough to my tastes yet

- overhauled configuration setup a bit: configuration entries renamed and are now in a cfg:: namespace

- changed the config dialog's grid ui from being dynamically generated into a static one in the designer interface

- use a function for utf16 type conversion instead of a macro

- grids now have a single coordinate snap value instead of individual X, Y and Z values

- buh

- optimized picking, black is background now in pick scenes

- don't let random colors be too dark (or fully white either for dark backgrounds which use white lines)

- more icons

- fixed: the random colors action wasn't being checked on startup if it was enabled in config, causing it to go out of sync

- some minor cleanup

- simplified the code handling bfc statements a bit

- don't simplify (aka remove extra whitespace from) comment texts

- added build time to window title properly

- removed rest of the uses of <anonymous>

- added changelog entries

- vertex snapping is now smarter, does a depth compare to favor vertices closer to camera and does a short-range 2d check + out-of-range 2d check

- removed some relics from the old immediate mode renderer

- apply #pragma once to glShared.h

- type-aliased QString to String

- resetAngles still needs to request a zoom to fit or the ctrl-0 action doesn't zoom to fit

- more elegant version of ded0a9b, do not zoom to fit in setDocument, instead zoom to fit before rendering

- use #pragma once for the gl compiler header

- when setting the current document, the GL compiler must be told that a merge is necessary *before* setting the renderer's document as setDocument will call zoomToFit which renders the scene. this rendering must trigger a merge or ldforge crashes if a new document is created when a document is already open.

- <anonymous> -> untitled

- reimplemented the Vertex class as a derivative of QVector3D

- more icons

- more icons

- more icons

- started work on new icon set

Merge ../ldforge into gl

- added an icon for random colors

- refactored the gl compiler a tad, made selection blend work with BFC/random colors

- added ability to draw with random colors

- fixed: rotating a subfile would make known verts go out of sync

- use less saturated colors for the axes

- conditional lines are now rendered with stippled lines again

- now works with selection subfiling

- removed more debug stuff

- sped up known vertex information gathering by an order of magnitude

- cleanup

- reimplemented vertex snapping

- removed the debug code

- fixed: use @surfacenum instead of @surfacevbo to GLCompiler::vboSize... this was causing these damn artifacts whose root cause I've been hunting for MONTHS

Merge ../ldforge into gl

- more debug stuff....

Merge ../ldforge into gl

Merge ../ldforge into gl

Merge ../ldforge into gl

- added safety check to the countof macro

- more debugging...

Merge ../ldforge into gl

Merge ../ldforge into gl

Merge ../ldforge into gl

- fixed: an overlay that failed to load no longer attempts to reload it over and over again

- renamed some enumerators, added license header to glcompiler.cc

- subfile coloring now works again

- renamed several GLCompiler members and methods

- only sort and strip duplicates from the objects-staged-to-compile list when actually compiling staged objects, this eliminates needless calls which slowed file loading down a ton.

- fixed zoom value not being initialized properly + some other minor things

- refactor

- hooked object compilation to low-level functions so as to remove the compileObject() crap from edit actions

- objects need to be compiled when added to the document

- ported over the selected color blend from master

- the GL compiler now supports multiple documents

- LDDocument must be initialized with m_needsGLReInit as true or it will not be compiled properly...

- fixed build errors

Merge ../ldforge into gl

Merge ../ldforge into gl

- minor stuff

Merge ../ldforge into gl

- axes are now drawn properly again

Merge ../ldforge into gl

Merge ../ldforge into gl

- greatly improved the GL compiler, now deals colors and object removal properly

Merge ../ldforge into gl

Merge ../ldforge into gl

- work on improved rendering performance

Merge ../ldforge into gl

- now actually renders stuff correctly

- renamed some member variables for clarity

- removed some unneeded code

- converted to VBO

Merge ../ldforge into gl

- refactoring

- rename GLCompiler::Vertex to GLCompiler::VAO to avoid name conflicts

- renamed VertexCompiler to GLCompiler

- reworked the vertex compiler, objects are now colorized properly

- Merge ../ldforge into gl

- Merge ../ldforge into gl

- now compiles again

- Merge commit '5c835eb' into HEAD

now compiles again

Merge branch 'master' into gl

Merge branch 'master' into gl

- moved the uncolorize action to the color toolbar, renamed to uncolor

- use the keyword 'not' in place of the exclamation mark for operator!, this is clearer. also converted uses of '== false' to this.

- renamed some cmake identifiers

- now compiles with clang

- doubled buffer sizes in updaterevision to prevent GIT_HASH from being truncated

- some tweaks to version.cc

- generate gitinfo.h in the build directory, not source directory. made ldforge depend on revision_check properly

- use index-based iterating in LDDocument::closeUnused because deleting documents while iterating over g_loadedFiles causes the iterator to become invalidated

- renamed files to camelCase

- added a long int overload to StringFormatArg

- fixed various compilation issues

- doxygen'd DocumentPointer.h

- doxygenified Version.h

- changed doxygen entity style from @argh to \argh

- whoah whoops

(0) -1000 -448 tip

mercurial