We have moved to https://dokuwiki.librecad.org/

Lots of content was already moved to the new wiki, but there is still work to do. If you want to contribute, please register a new account at https://dokuwiki.librecad.org/

This wiki will be kept for a while to keep search engine results valid. Moved sites may be deleted here in future.

Difference between revisions of "LibreCAD 3 kickoff"

From LibreCAD wiki
Jump to: navigation, search
(Created page with " The Current version of LibreCAD was forked from QCad that was release in 2004 where QT 3 was 'mainstream' This makes the codebase at least 10 years old and there are still si...")
 
Line 12: Line 12:
 
The LibreCAD 3 kickoff will concentrate on the kernel only.
 
The LibreCAD 3 kickoff will concentrate on the kernel only.
  
This task involves making the current kernel which is pre-alpha more mature to a more alpha stage. For this we require the following changes:
+
This task involves making the current kernel which is pre-alpha more mature to a more alpha stage. We do expect that quite a bit of time will be spend on the design and re-visiting the current design to see if this can be well used for a CAD document.
 +
Our current codebase can be found here : http://github.com/rvt/kerneldev
  
 
=== Boost ===  
 
=== Boost ===  

Revision as of 02:09, 1 March 2014

The Current version of LibreCAD was forked from QCad that was release in 2004 where QT 3 was 'mainstream' This makes the codebase at least 10 years old and there are still sign's of the Qt 3 dependencies. Fixes have been made to work with Qt 4, specially in rendering area but the code base is at this point had to add features to.

LibreCAD 3 kickoff tries to make a new codebase, completely rewritten use modern techniques and design's. In 2012 a highly experimental 'kernel' was created to see of LibreCAD can be re-written with some idea's in mind and we want to continue on this code base for a new design of LibreCAD 3.

At this stage the new codebase has been designed with 3 main functions

  • kernel or document model : A Library where we can store CAD entities and do operations on these entities
  • CAD Viewer : A Qt Widget that allows to visualise a document stored in the kernel
  • A UI : The UI that call's functions to the kernel and CAD viewer to operate on the document in the kernel.

The LibreCAD 3 kickoff will concentrate on the kernel only.

This task involves making the current kernel which is pre-alpha more mature to a more alpha stage. We do expect that quite a bit of time will be spend on the design and re-visiting the current design to see if this can be well used for a CAD document. Our current codebase can be found here : http://github.com/rvt/kerneldev

Boost

We would like to see if some of our current entities can be based of Boost.

Operations

At this moment we only support Adding, deleting and trimming of operations. We would like to see the following operations to be added:

  • Copy
  • Move
  • Rotate

Visitor Pattern

For some operations we use the visitor pattern to have entities calculate the their interation point's. We would like to have them extended for all basic entities (Arc, Ellipse, Line)

Unit Tests

Within LibreCAD 2 we don't do any unit tests, this put's us into problems when we want to test some operations on different operating systems. We would like see unit tests being added to the code to test for correct behaviour of the system.

Requirements

Familiarity with C++

Familiarity with Boost

Familiarity with CAD

Beable to create API's