At the moment, LibreCAD 3 has following ready,
Implemented entities involve Line, Circle, Ellipse, Arc, Point, Text, Dimensions, Poly line, Spline. ( A few portions for polyline and spline might be missing. )
Input via DXF.
This version is Multithreaded.
Undo/Redo, Move, Copy, Rotate, Scale operations for most of the entities.
Maths has been ported from LibreCAD2. DLi's developed robust equation solvers :)
The viewer part is developed so that you can see the drawings,
It has implementation of Line, Circle, Ellipse, Arc, Text, Dimensions with multiple endcaps, It has some implementation of Polyline too, Not sure about that enough. Ries or Kedwin wrote that.
Pluggable Painter support. You can use Cario/Qt/OpenGL or Skia if you want. You just need to write the implementations for them. Cairo is implemented and usable.
A simple UI is developed that houses the viewer. Nothing enough specific in this portion I can comment about. It allows us to write Lua code which is used to interact with Kernel.
What I feel like we need at the moment,
we need some sort of message emitting interface for our LibreCAD 3.
We want to hide the detail of Underlying UI library from LibreCAD as much as possible. For instance if we now pass the mouse events to the libreCAD viewer, we need to do it through QT which we don't like very much. We want some sort of plug-gable interface for the UI Library as well.
Something like, we have our own classes for Mouse move, mouse click, mouse scroll etc that interacts with the LibreCAD kernel and viewer. and the UI library ( Wx/Qt/Gtk or anysuch ) interact with these interfaces. That's something on top of mind at the moment. We need some sort of framework to get event messages from UI library to LC viewer/kernel and as much as possible UI portion too. Like the creation of circle/line etc.
From my understanding the creation of circle could be something in this way,
UI Library -> The Event Framework for LibreCAD -> This event framework passes details of coordinates to the kernel as well as to painter to paint simultaneously.