The GSoC 2017 has ended and my project plan was completed.
It was modified during the coding period, the drawing order and optimizations were replaced by the creation of an OpenGL backend.
You can see the list of my commits on GitHub from the June 1st to the August 20st.
The OpenGL backend commits are not present.
Modifications were made to libdxfrw as well, this wasn't planned but it was required to load and save application data (group code 102).
List of commits by features
db707e3 06/06 - Add blocks support
e556fb7 06/13 - Fix a bug when removing Insert
a5b3499 06/13 - Block support (missing changes)
3d348d4 06/16 - Add ByBlock linewidth support
1625261 06/22 - Render of ByBlock line width and color
3cdaa75 06/24 - Render of ByBlock line pattern
9868d99 06/24 - Render of selected insert
fd8a553 06/24 - Insert bounding box
dad86e6 06/14 - Add plugin manager
cbe7278 06/15 - Prevent layer "0" from being removed
ee9fc84 06/19 - Read/write files in Lua
abba6eb 06/21 - UI dialog to choose a file
2269ec9 06/24 - Remove test plugin
5edfa90 06/26 - Add custom entity storage
ba6b675 06/26 - Add block operations (AddBlock, RemoveBlock, ReplaceBlock)
fcb4b8d 06/30 - Add Insert Lua bindings
da1827e 06/30 - Save custom entity in libdxfrw
2899797 07/01 - Make CustomEntityStorage immutable
9d09b9d 07/06 - Create nearestPointOnPath and SnapPoints functions in Lua
d9a68be 07/07 - Keep references to Lua functions after doing an operation on the custom entity
bf661b3 07/07 - Drag points support for custom entities
9cb2673 07/12 - Create a custom entities "waiting list" (used for DXF load)
b2ad53c 07/15 - Allow plugins to manage custom entities if the plugin is loaded after the file
35e4944 07/22 - Rectangle plugin
086b38d 07/23 - Fractal plugin
c5958d5 07/23 - Gear plugin
0234b84 07/23 - Star plugin
1d2f8ab 07/23 - Spiral plugin
Rendering improvements and unit tests
0ec5de8 07/30 - Add rendering unit tests
0d2a4a4 07/31 - Rendering unit tests configurations
921429a 08/02 - Support of multiple rendering unit tests
da256b7 08/04 - Ellipse rendering fix
3f691b7 08/05 - Arc/LWPolyline rendering fix
69855f7 08/05 - Enable rendering unit tests
55723b5 08/06 - Fix ellipse bounding box
The OpenGL painter won't be merged to master, even if it works and offer better performance than Cairo painter.
It'll be used as a reference for OpenGL integration, and the nanovg library will be used. It offers support for gradients and paths, and uses VBO which gives better performance.
e545397 08/18 - OpenGL painter