- 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

- doxygenified Types.h

- made MessageLog.h and RingFinder.h suitable for doxygen

- added doxygen support for MainWindow.h

- added license header to format.h

- replaced the fmt/log/dlog/fprint macros in favor of template functions. renamed to format, print, dprint and fprint respectively.

- forgot macros.h out of the previous commit

- migrated the codebase to use a simpler PROPERTY macro, arrrrrrrrrrrrrrrrrrrrrgh

- changed header guards into #pragma once

- renamed LDObject::deleteSelf to LDObject::destroy

- unified separator styles

- renamed several LDObject methods

- removed debug stuff

- replaced the left-hand document list with a tab bar

- derp

- separated version stuff to new files to allow version changes be compiled near-instantly

- fixed compilation

- migrated to CMake again

- reorganized the toolbar a little bit

- updated the PROPERTY macro

- refactored filenames

- bleh, don't need IN_IDE_PARSER there..

- added dvalof debug macro

- some corrections to zoomtofit

- removed some pointless typedefs

- changed the default color toolbar

- forgot the invokation deferer files

- refactoring

- added .cfg files to .gitignore

- use the correct text color to draw coordinates on the viewport

- GL-variables that should be document-specific are now properly document-specific (i.e. pan and zoom won't be shared across documents anymore)

- make the remaining virtual methods of LDObject pure virtual

- added a type alias LDObjectList

- whoopsie, forgot to re-add the cache flag to that inline flagset there

- make subfile references subject to position transformation again

- improved rotation point finding behavior. not sure what did I even do to improve it...

- use QCoreApplication::applicationDirPath instead of a custom hack to get the application path

- changelog: the file loading fix was backported to 0.2.1

- configuration is now always situated and read from the application working directory

- did stuff to types, fixed primitive listing

- removed the File class in favor of QFile

- if loading another file to replace an explicitly loaded file, this file won't get closed automatically and thus needs to be manually closed. We also need to check that it's safe to close before doing this. Also fixed a rather argh problem with ::save not using the proper path...

- corrected relationships between documents: opening a main file with the same name as another document is to overload it and editing the document is to invalidate its cache so that it gets rendered properly in other documents possibly referencing it.

- removed the 'str' typedef, use QString directly

- use --long in the git describe command for the GIT_DESCRIBE macro definition

- some cleanup

- reformatting

- added Ball Joint-8 stuff to primitive categories

- updated copyright year in the about prompt

- updated copyright year. Best wishes for 2014!

- when configuration options are default, they need to be removed from the settings

- whoops, forgot an #include in gldraw.cc

- minor edit

- split the ring finder to separate files

- fixed: subfile rotation had matrix multiplication done with operands the wrong way around, causing morphing

- removed some unnecessary full refreshes

- added a configurable select color

- "black edges" now actually mean white edges when the background is dark

- removed debug code from ldobject::select

- refactored config code

- use a local file with QSettings at all times. Registry is such a pain..

- now recognizes the recently added 8\ subdirectory

- removed the horrible actions.h hack in favor of usage of Qt's meta object system

- updated .gitignore

- forgot this too!

- forgot these new files out...

- documents are now refcounted. This should seriously stabilize (and speed up!) the pruning of unused files

- OH MY FORKING GOD

- fixed configuration dialog not accepting values past 99.99 for grid angles

corrected angle display

further improved file behavior

- added visible line angles when drawing

removed some debug code

- bumped max amount of recent files from 5 to 10

- added selection auto-subfiling(!)

- line lengths are now displayed when drawing

- non-release builds now display git revision info if available. This turned out to be much simpler to implement than I expected..

- code parser no longer complains about scientific notation

- cleanup closing of unused files is now defered to the event loop using a new InvokationDeferer class. This prevents ldforge from closing unused files when it *really* shouldn't be doing that, instead waiting until everything is done before it begins the cleanup process.

- fixed minor goofup with for_axis

- ext programs requiring wine now properly display an error prompt if wine is missing

- convert overlay images explicitly to ARGB32 format, otherwise they might not be able to be made translucent properly

- added file headers to crashcatcher.cc and .h

- removed the version monikers, new version is now just 0.3 instead of 0.3-alpha. BUILD_ID can now only be INTERNAL and RELEASE. It was way too complicated to my tastes.

- history now works on object list moving as well

- implicit documents are now auto-closed when rendered unused, in general, a LOT better document closing behavior

- made history ignore file loading and undo/redo calls instead of having hard-coded ignore on the actions, this will probably save a lot of hair

- fixed: LDObject methods still used operator delete directly, causing *a very frustrating* crash to debug

History should now behave properly..

- corrected history behavior. LDObject::clone() is now off-limits, createCopy() must be used instead. LDObject::deleteSelf() must be used to delete LDObjects (destructor is protected now)

- fixed: cones with 3 digit numbers wouldn't go to the "Cones (48)" category properly

- LDEmpty now overrides getTypeName properly

- changed source file extension from .cpp to .cc

- LDObject::move is no longer virtual

- fixed: LDMatrixObject's position would be an invalid pointer if it was created with the default constructor, causing a crash

- Reworked primitive listing. No longer uses multi-threading.

- LDFile renamed to LDDocument, file.h -> document.h

net_autoclose is now true by default

renamed LDCndLine to LDCondLine

more stuff

Cleaned up download.cpp/.h, used PROPERTY. Added LIST_OPS to PROPERTY

minor cleanup

Renamed "quick colors" in the configuration to "color toolbar"

- re-added the external programs to the toolbar

updated README.md with a mention of the ring drawing

minor cleanup

- added build_shared to .gitignore

- Improved coordinate rounding, replaced the hack with a proper implementation, now rounds properly and works on subfiles as well

- Renamed common.h to main.h, split the PROPERTY macro and supporting macros to property.h

- Changed the callback parm of PROPERTY to a stock/custom write method argument.

- upgraded the PROPERTY macro, resulting in a major code refactor

- ensured header files' guards start with LDFORGE_

removed old and unused src.pro file

renamed the version to 0.3-alpha in the changelog

changelog entry

Made rotation/pan/zoom values camera-dependant (so now there's 7 sets of them instead of 1)

updated .gitignore

removed the legacy dir

forgot the new icons

- Added new actions "Hide" and "Reveal" which allow direct setting of objects' visibility setting instead of toggling it.

added a configuration option for line anti-aliasing

fixed: deleting objects would trigger a crash

more minor changes

style corrections

i'm dumb

also removed the if() case mentioned in the prior commit from addObjectDialog.cpp. :P

enclosed the assert replacement in braces. In release mode, the assert is replaced with nothing and there's a little bit of code in addObjectDialog which uses it as a statement in an one-line if(). With the assert disappearing in release builds this triggered a GCC warning, as the if would be left without a body.

- migrated selection from ForgeWindow to individual LDFiles. Should've done this long ago.

changeProperty(): don't change the property if the value would not change, this should save some procecssing..

initialize GLRenderer::m_hoverpos to (0, 0, 0)

cosmetic fixes

fixed: the file loader would skip every 300th line. And I thought I was going nuts when my quads kept disappearing...

Made the config dialog use a list widget for navigation over a tab widget.

- added LDSharedVertex class for holding copy-on-write vertices. Will need this for future features..

now displays build type in the window title (unless a release build of a release), fixed some macro shenanigans

made messagelog handle messages with newlines

Added a crash catcher which trigger under Linux. It calls GDB and tries to get a backtrace. Also integrated assertion failure handling to this new system. Removed the print() function in the process (because the new bomb box uses a text edit and QTextDocuments's print method clashes with the macro and I figured it was a good idea to rid it anyway) and replaced all calls with log().

fixed: LDForge would crash if message log got full - the older lines would be removed with ::erase, which now expects an iterator because of the recent transition to QList. Why does QList::iterator allow 0 to be passed?

fixed a small memory leak

Fixed: LDForge would sometimes crash over unitialized data in the GL renderer. This crash sure eluded me for a while. Turned out zoomToFit(), which uses m_width and m_height is called before resizeGL() which initializes these variables. This data is used in an operator new[] call.

- added debug/release build configuration. Debug builds are really useful things!

removed some custom functions in favor of Qt implementations

reworked the ring finder algorithm greatly, tries harder to find the optimal solution

Added last-resort ring draw with quads

Ring draw: maintain separate polygons for the ring circles and draw them separately of the ring fill to prevent artifact lines from being drawn

Removed the List -> QList alias, use QList directly

removed the List class in favor of QList

removed debug prints from the ring finder

ring finder integrated! it lives!

Finally got the ringfinder working! Working on integrating it to ring drawing...

Ring drawing: previewing complete

further cleansing - removed most uses of unsigned ints, removed list reversers

a bit more cleanup

nuked "container_cast"

When drawing circles, draw the radius in the middle

further cleanup

last code reformatting i swear

Added a new editing mode for drawing circles.

it's LDForge's 1st birthday!

Stuff

Further work on VAO rendering

VAO rendering works now! woo!

Merge branch 'master' into gl, reworked stuff

For some reason, of all changesets, 4fb5763 made compiling subfiles extremely slow. WTF? Reverted the change to restore compilation speed.

down with cmake!

made LDFile interfacing a bit clearer

removed unused LabeledWidget

redirect the user to configuration if the download path is not given

err

rework quick color code a tad

rename RadioBox to RadioGroup

bit of a clarification

fixed: couldn't open larger files because of a type mismatch in moc method calling, leading into runtime problems

fixed: front and back camera wouldn't render anything

Apparently CMake requires the moc files to be compiled separately.. qt4_wrap_cpp does nothing if I don't include the results in the executable... why?

add .kdev_include_paths to gitignore

Changed build system from qmake to CMake.

merged aboutDialog.cpp to dialogs.cpp

stuff

Fixed crash with closing: since logoed studs are now loaded, the first file in g_loadedFiles is not explicit anymore. the closing code assumed this

more changes. Spawn the config prompt on first start, on the profile tab. gl_colorbfc and gl_blackedges now default to false.

woo smallification!

Added ListConfig type, using it in recent files now

minor cleanup

removed broken config type check

added profile data auto-filling

ensure that all Configs are polymorphic

bit more cleanup

- added "Go to line" action, renamed the config classes to proper camelcase

Cut the Object-suffix from LDObject types, it doesn't help things at all

Use QFlags for the inlining flags, type-safety++

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.

added support for logoed studs

more cleanup

Code formatting: use same separators everywhere, remove extra spaces from license headers, simplified message manager api a bit

ask the user for isecalc's path if adding edges to intersector output and no path is defined

added missing UI file

ask the user for ext prog paths instead of telling to go to configuration if no path is defined

minor change

made config dialog default to the correct tab again

made downloaded files be stored into recent files

Use a busy cursor while compiling all

Use brighter text color with dark backgrounds for the message manager

::getIndex() should never return -1 if ::file() is not null so no check needed there..

fixed: LDObject's various methods still assumed that the current file wouldn't change

Added action "add history line" for adding new history entries

rework

Picking now works with the VAO setup

BIG COMMIT -- Moving from display lists to VAOs.

(0) -256 +256 tip

mercurial