changelog
- 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
- Thu, 09 Feb 2017 13:26:44 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 13:26:44 +0200] rev 1108
- Moved more editing-related methods to Canvas.
- Thu, 09 Feb 2017 13:17:22 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 13:17:22 +0200] rev 1107
- Removed the unneeded makeCurrent overload
- Thu, 09 Feb 2017 13:13:46 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 13:13:46 +0200] rev 1106
- Moved more methods only used by canvas code from GLRenderer to Canvas. Thin border pen is now a static constant.
- Thu, 09 Feb 2017 13:07:47 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 13:07:47 +0200] rev 1105
- Moved triangle count rendering to Canvas
- Thu, 09 Feb 2017 13:05:31 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 13:05:31 +0200] rev 1104
- Moved document editing methods from GLRenderer to Canvas
- Thu, 09 Feb 2017 11:53:55 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 11:53:55 +0200] rev 1103
- Created a new GLRenderer derivative class "Canvas" and made MainWindow use it
- Thu, 09 Feb 2017 01:08:57 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 01:08:57 +0200] rev 1102
- Cleaned up code in LDDocument and removed unnecessary flags and methods. Flags turned into bools.
- Thu, 09 Feb 2017 01:00:31 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 01:00:31 +0200] rev 1101
- Removed some unused code
- Thu, 09 Feb 2017 00:52:23 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 00:52:23 +0200] rev 1100
- 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.
- Thu, 09 Feb 2017 00:45:44 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 00:45:44 +0200] rev 1099
- GLRenderer no longer exposes the model pointer.
- Thu, 09 Feb 2017 00:43:30 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 00:43:30 +0200] rev 1098
- LDGLData merged into GLRenderer since it only deals with one document now. GLRenderer generalised from rendering documents to models.
- Thu, 09 Feb 2017 00:32:24 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 09 Feb 2017 00:32:24 +0200] rev 1097
- Made a new renderer be created for each document, instead of reusing the same renderer for all documents.
- Wed, 08 Feb 2017 17:07:19 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 08 Feb 2017 17:07:19 +0200] rev 1096
- 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.
- Wed, 08 Feb 2017 16:51:55 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 08 Feb 2017 16:51:55 +0200] rev 1095
- - Use a QGenericMatrix to store the matrix, instead of a C array
- Only reset angles when GL is initialized, otherwise bad things happen
- Fixed missing "}" in matrix string representation
- Wed, 08 Feb 2017 16:45:32 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 08 Feb 2017 16:45:32 +0200] rev 1094
- Changed from GLdouble to GLfloat. Apparently the performance difference is greater on the GPU..? It doesn't really matter but let's be consistent.
- Wed, 08 Feb 2017 16:38:59 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 08 Feb 2017 16:38:59 +0200] rev 1093
- GLRenderer::clampAngle is no longer used as of the previous commit so we can do away with it.
- Wed, 08 Feb 2017 16:25:06 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 08 Feb 2017 16:25:06 +0200] rev 1092
- Switched from euler angle rotation to matrix rotation. Gimbal lock is now broken.
- Sat, 04 Feb 2017 14:44:39 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 04 Feb 2017 14:44:39 +0200] rev 1091
- Wrote documentation to the Model class.
- Sat, 04 Feb 2017 14:24:16 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 04 Feb 2017 14:24:16 +0200] rev 1090
- The current document pointer may no longer be null.
- Fri, 03 Feb 2017 10:51:08 +0200
- by Teemu Piippo <teemu@compsta2.com> [Fri, 03 Feb 2017 10:51:08 +0200] rev 1089
- minor amendment
- Fri, 03 Feb 2017 10:44:23 +0200
- by Teemu Piippo <teemu@compsta2.com> [Fri, 03 Feb 2017 10:44:23 +0200] rev 1088
- Reworked and cleaned up the circle mode
- Mon, 30 Jan 2017 14:30:55 +0200
- by Teemu Piippo <teemu@hecknology.net> [Mon, 30 Jan 2017 14:30:55 +0200] rev 1087
- Some code cleanup in abstract editing modes.
- Mon, 30 Jan 2017 02:41:45 +0200
- by Teemu Piippo <teemu@hecknology.net> [Mon, 30 Jan 2017 02:41:45 +0200] rev 1086
- Removed some unnecessary #include-directives.
- Mon, 30 Jan 2017 02:33:17 +0200
- by Teemu Piippo <teemu@hecknology.net> [Mon, 30 Jan 2017 02:33:17 +0200] rev 1085
- Removed the status bar, since it's not used for anything
- Mon, 30 Jan 2017 02:30:26 +0200
- by Teemu Piippo <teemu@hecknology.net> [Mon, 30 Jan 2017 02:30:26 +0200] rev 1084
- Split object list representation into virtual methods
- Mon, 30 Jan 2017 02:18:42 +0200
- by Teemu Piippo <teemu@hecknology.net> [Mon, 30 Jan 2017 02:18:42 +0200] rev 1083
- Removed LDDocument::getObjectCount (superceded by Model::size)
- Mon, 30 Jan 2017 00:59:06 +0200
- by Teemu Piippo <teemu@hecknology.net> [Mon, 30 Jan 2017 00:59:06 +0200] rev 1082
- The "all objects have valid models" invariant seems to be holding up now. At least basic drawing works again.
- Sun, 29 Jan 2017 21:17:43 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 21:17:43 +0200] rev 1081
- Made all LDObject constructors protected. Emplacement is now the only way to create objects.
- Sun, 29 Jan 2017 21:07:15 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 21:07:15 +0200] rev 1080
- Removed the LDSpawn function and replaced its last use cases.
- Sun, 29 Jan 2017 21:02:11 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 21:02:11 +0200] rev 1079
- More rework on model stuff, removals of LDSpawn calls. Most importantly, the LDraw code parsing function was moved to Model.
- Sun, 29 Jan 2017 15:49:36 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 15:49:36 +0200] rev 1078
- Removed uses of LDSpawn in the algorithm toolset
- Sun, 29 Jan 2017 15:39:35 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 15:39:35 +0200] rev 1077
- Replaced uses of LDSpawn with the Model class in edit modes
- Sun, 29 Jan 2017 15:28:48 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 15:28:48 +0200] rev 1076
- Removed dead code that's standing in the way of refactoring
- Sun, 29 Jan 2017 15:25:26 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 15:25:26 +0200] rev 1075
- Removed the AddObjectDialog. Garbage code that absolutely needs to be reimplemented.
- Sun, 29 Jan 2017 15:18:40 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 15:18:40 +0200] rev 1074
- 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!)
- Sun, 29 Jan 2017 15:05:14 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sun, 29 Jan 2017 15:05:14 +0200] rev 1073
- 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.
The LDObject::destroy method is also now gone. The model decides when objects are destroyed and calls the destructor directly. The end result removes a lot of cruft and adds structure to LDObject relations.
Notes:
- Inlining does not currently work (nothing simply gets inlined in)
- More work is required to ensure that each object actually goes into a model
- Sat, 28 Jan 2017 17:47:06 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 17:47:06 +0200] rev 1072
- Happy new year 2017!
- Sat, 28 Jan 2017 17:45:00 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 17:45:00 +0200] rev 1071
- Matrices are now input with 9 spinboxes instead of a MLCad-style line edit
- Sat, 28 Jan 2017 17:23:04 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 17:23:04 +0200] rev 1070
- Moved the identity matrix constant into Matrix's namespace
- Sat, 28 Jan 2017 17:20:16 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 17:20:16 +0200] rev 1069
- Removed the dangerous C-array constructor from the matrix - no need for it anyway since the matrix already is an array of doubles.
- Sat, 28 Jan 2017 17:14:05 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 17:14:05 +0200] rev 1068
- Reworked the Matrix interface so that less index math is involved
- Sat, 28 Jan 2017 16:30:27 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 16:30:27 +0200] rev 1067
- Fixed formatFileSize
- Sat, 28 Jan 2017 14:33:09 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 14:33:09 +0200] rev 1066
- Refactor roundToDecimals and formatFileSize
- Sat, 28 Jan 2017 14:14:28 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 14:14:28 +0200] rev 1065
- Actually, let's call it countof(). Makes more sense.
- Sat, 28 Jan 2017 14:13:01 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 14:13:01 +0200] rev 1064
- Replaced '.length()' with 'length()' where appropriate
- Sat, 28 Jan 2017 14:01:19 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 14:01:19 +0200] rev 1063
- Replaced uses of 'x.size()' with 'length(x)'
- Sat, 28 Jan 2017 13:49:09 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 13:49:09 +0200] rev 1062
- refactor: added the length() function that's like Python's len()
- Sat, 28 Jan 2017 13:32:55 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 28 Jan 2017 13:32:55 +0200] rev 1061
- refactor
- Sat, 19 Nov 2016 22:57:18 +0200
- by Teemu Piippo <teemu@hecknology.net> [Sat, 19 Nov 2016 22:57:18 +0200] rev 1060
- Display error string if unable to write a crash log.
- Fri, 18 Nov 2016 03:01:38 +0200
- by Teemu Piippo <teemu@hecknology.net> [Fri, 18 Nov 2016 03:01:38 +0200] rev 1059
- Made DEFINE_FLAG_ACCESS_METHODS a function macro
- Fri, 18 Nov 2016 02:56:53 +0200
- by Teemu Piippo <teemu@hecknology.net> [Fri, 18 Nov 2016 02:56:53 +0200] rev 1058
- Cleaned up crash catcher, fixed missing <math.h> include
- Thu, 17 Nov 2016 14:12:59 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 17 Nov 2016 14:12:59 +0200] rev 1057
- Fixed additive range selection not working properly.
- Thu, 17 Nov 2016 13:56:13 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 17 Nov 2016 13:56:13 +0200] rev 1056
- Cleanup in GL renderer...
- Thu, 17 Nov 2016 12:18:13 +0200
- by Teemu Piippo <teemu@hecknology.net> [Thu, 17 Nov 2016 12:18:13 +0200] rev 1055
- Cleaned up PrimitiveScanner
- Wed, 16 Nov 2016 01:43:37 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 16 Nov 2016 01:43:37 +0200] rev 1054
- Further cleanup
- Wed, 16 Nov 2016 01:28:42 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 16 Nov 2016 01:28:42 +0200] rev 1053
- Refactor primitives
- Wed, 16 Nov 2016 00:52:22 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 16 Nov 2016 00:52:22 +0200] rev 1052
- Refactor FileToolset
- Wed, 16 Nov 2016 00:44:35 +0200
- by Teemu Piippo <teemu@hecknology.net> [Wed, 16 Nov 2016 00:44:35 +0200] rev 1051
- Moved the about dialog into the file toolset and removed the mail button (the forums are better for this anyway)
- Tue, 15 Nov 2016 17:44:54 +0200
- by Teemu Piippo <teemu@hecknology.net> [Tue, 15 Nov 2016 17:44:54 +0200] rev 1050
- Removed the 'once' macro since it's not used
- Tue, 15 Nov 2016 17:42:42 +0200
- by Teemu Piippo <teemu@hecknology.net> [Tue, 15 Nov 2016 17:42:42 +0200] rev 1049
- Removed the USE_QT5 macro now that we're Qt5 only.
- Tue, 15 Nov 2016 17:40:51 +0200
- by Teemu Piippo <teemu@hecknology.net> [Tue, 15 Nov 2016 17:40:51 +0200] rev 1048
- Change "m_" prefix to "_" in members of PartDownloader
- Tue, 15 Nov 2016 17:39:04 +0200
- by Teemu Piippo <teemu@hecknology.net> [Tue, 15 Nov 2016 17:39:04 +0200] rev 1047
- Changed QList to QVector in PartDownloader
- Tue, 15 Nov 2016 17:37:31 +0200
- by Teemu Piippo <teemu@hecknology.net> [Tue, 15 Nov 2016 17:37:31 +0200] rev 1046
- Cleanup PartDownloader
- Tue, 15 Nov 2016 17:12:50 +0200
- by Teemu Piippo <teemu@hecknology.net> [Tue, 15 Nov 2016 17:12:50 +0200] rev 1045
- Unabbreviate "transform" to "transformationMatrix"
- Tue, 15 Nov 2016 13:52:44 +0200
- by Teemu Piippo <teemu@hecknology.net> [Tue, 15 Nov 2016 13:52:44 +0200] rev 1044
- Cleanup colors.cpp/.h
- Fri, 11 Nov 2016 13:59:27 +0200
- by Teemu Piippo <teemu@hecknology.net> [Fri, 11 Nov 2016 13:59:27 +0200] rev 1043
- Refactor GuiUtilities
- Fri, 11 Nov 2016 13:34:51 +0200
- by Teemu Piippo <teemu@hecknology.net> [Fri, 11 Nov 2016 13:34:51 +0200] rev 1042
- Some cleanup
- Sun, 16 Oct 2016 18:28:56 +0300
- by Teemu Piippo <teemu@hecknology.net> [Sun, 16 Oct 2016 18:28:56 +0300] rev 1041
- Draw line lengths to 2 decimal points only.
- Sun, 16 Oct 2016 17:54:42 +0300
- by Teemu Piippo <teemu@hecknology.net> [Sun, 16 Oct 2016 17:54:42 +0300] rev 1040
- Dropped Qt 4 support. We're Qt 5 only now.
- Sun, 16 Oct 2016 17:54:22 +0300
- by Teemu Piippo <teemu@hecknology.net> [Sun, 16 Oct 2016 17:54:22 +0300] rev 1039
- Fixed compilation.
- Thu, 16 Jun 2016 14:13:04 +0300
- by Teemu Piippo <teemu@compsta2.com> [Thu, 16 Jun 2016 14:13:04 +0300] rev 1038
- Added doxygen.ini
- Sun, 08 May 2016 20:54:52 +0300
- by Teemu Piippo <teemu@compsta2.com> [Sun, 08 May 2016 20:54:52 +0300] rev 1037
- Moved matrix into new source/header pair in types/
- Sun, 08 May 2016 20:12:54 +0300
- by Teemu Piippo <teemu@compsta2.com> [Sun, 08 May 2016 20:12:54 +0300] rev 1036
- Replaced the ugly for_enum macro with a generator class
Fixed: qHash(const Vertex&) got sucked into infinite recursion
- Sun, 08 May 2016 16:26:16 +0300
- by Teemu Piippo <teemu@compsta2.com> [Sun, 08 May 2016 16:26:16 +0300] rev 1035
- Further improved enum handling
- Sun, 08 May 2016 16:11:40 +0300
- by Teemu Piippo <teemu@compsta2.com> [Sun, 08 May 2016 16:11:40 +0300] rev 1034
- Enum stuff
- Sun, 08 May 2016 15:26:58 +0300
- by Teemu Piippo <teemu@compsta2.com> [Sun, 08 May 2016 15:26:58 +0300] rev 1033
- - Refactoring...
- Camera icons don't have to be heap allocated anymore
- Sun, 08 May 2016 13:25:12 +0300
- by Teemu Piippo <teemu@compsta2.com> [Sun, 08 May 2016 13:25:12 +0300] rev 1032
- Unabbreviated overlay member names
- Wed, 17 Feb 2016 19:54:21 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 19:54:21 +0200] rev 1031
- removed removeDuplicates in favor of QSet, and the unused ObjectList class
- Wed, 17 Feb 2016 03:24:07 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 03:24:07 +0200] rev 1030
- Fixed circle mode not building the circle anymore
- Wed, 17 Feb 2016 03:15:10 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 03:15:10 +0200] rev 1029
- Removed unneeded includes from main.cpp
- Wed, 17 Feb 2016 03:10:12 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 03:10:12 +0200] rev 1028
- Moved PreferredLicenseText into HierarchyElement and made the config pointer be passed to LDPaths. Now I can finally remove the Config global pointer.
- Wed, 17 Feb 2016 02:56:59 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 02:56:59 +0200] rev 1027
- Moved LDObject::moveObjects into MoveToolset
- Wed, 17 Feb 2016 00:54:02 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 00:54:02 +0200] rev 1026
- Rename Pi to lowercase pi
- Wed, 17 Feb 2016 00:47:48 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 00:47:48 +0200] rev 1025
- Renamed ldObjectMath.cpp/.h to mathfunctions.cpp/.h
- Wed, 17 Feb 2016 00:43:17 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Wed, 17 Feb 2016 00:43:17 +0200] rev 1024
- Moved rotation point handling to ldObjectMath.cpp and encapsulated it into new class MathFunctions
- Tue, 16 Feb 2016 19:59:43 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Tue, 16 Feb 2016 19:59:43 +0200] rev 1023
- Split grid stuff into a new class Grid in grid.cpp/grid.h
- Tue, 16 Feb 2016 16:28:44 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Tue, 16 Feb 2016 16:28:44 +0200] rev 1022
- Use a better gcd algorithm, some style fixes
- Tue, 16 Feb 2016 02:11:33 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Tue, 16 Feb 2016 02:11:33 +0200] rev 1021
- Replaced GetRecursiveFilenames with QDirIterator
- Tue, 16 Feb 2016 01:51:00 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Tue, 16 Feb 2016 01:51:00 +0200] rev 1020
- Reformatted primitives.cpp
Added license headers to generateprimitivedialog.cpp and .h
- Tue, 16 Feb 2016 01:39:06 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Tue, 16 Feb 2016 01:39:06 +0200] rev 1019
- Split PrimitivePrompt into its new source files, renamed it to GeneratePrimitivePrompt
Added PrimitiveSpec structure and used it to pass primitive specifications instead of 4 separate variables
- Tue, 16 Feb 2016 00:59:50 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Tue, 16 Feb 2016 00:59:50 +0200] rev 1018
- Transformed primitive management into a new class PrimitiveManager that is a member of MainWindow
- Sun, 14 Feb 2016 03:19:28 +0200
- by Teemu Piippo <crimsondusk64@gmail.com> [Sun, 14 Feb 2016 03:19:28 +0200] rev 1017
- Renamed ConfigurationValueBag to Configuration and added a pointer to it into HierarchyElement. This helps with the fight against global variables.
Added transform.h that may or may not prove useful sometime
Added linelength.py that was missing from a prior commit
Converted the various boolean members of LDDocument to flags