For the developers

The DaisyDuck project concerns two different projects. The graphical interface (DaisyDuck) is separated of the Daisy files parser (libduck). DaisyDuck is written in C++ whereas libduck is written in C.


DaisyDuck is based on the Qt libraries. Excepted for the audio playback which is done by libVLC, and the handling of the Daisy 2.02 files, which is done by libduck. This software is under the GPL3+ license.


The parsing of Daisy 2.02 files, NCC and SMIL is fully done by libduck. This library is under the LGPL2.1+ license. Although all Daisy 2.02 files should be readable, all parts of the specifications are not supported. This library was written mainly for the graphical DaisyDuck application. So, the particularities like the XHTML files support (tag <text> in the SMIL files) are just ignored.
Even for a part of the metadata provided by the Daisy 2.02 files. Only the fields used by DaisyDuck (in principle) are getable with the public API of the library. Note that it is easy to add more metadata, if necessary. The parsing is done with the help of libxml2.

The work on libduck is inspired by the libdaisy library of "The DaisyPlayer Project".

The sources / Git

The sources are available online with the help of Git, a distributed revision control system, similar in purpose to tools such as Hg, CVS, SCCS, SVN and Arch. It is used to keep track of the changes made in the sources and to help programmers combine and otherwise manipulate changes made by multiple people or at different times.

There are currently two ways of accessing to the Git tree. Via the command line or (to just have a look to some changes on a specific file, for example) via the web interface with your Internet browser.

daisyduck and libduck

In order to access to Git via command line, do the following (be sure that you have installed the git package).


The compilation of libduck and of DaisyDuck is made with the usual means via the `make` command (as well the building for GNU/Linux as for Windows). Although DaisyDuck is based on Qt4, the Makefiles do not depend of `qmake` and this one must not be used.

 make install 

To make a cross-compilation, nothing difficult (example for Windows):

 ./configure --cross-compile --cross-prefix=i586-mingw32msvc- --prefix=/usr/i586-mingw32msvc
 make install 

The configure script strongly relies on pkg-config. In the particular case of Qt4 with DaisyDuck, check that the .pc files for QtCore, QtGui, QtXml and QtNetwork are available. Otherwise, you must pass all necessary arguments CXXFLAGS and LDFLAGS or else you must create the pkg-config files manually.
According to your system settings, it can be necessary to proceed in this way (and especially in the case of Windows cross-compilation) :

 export PKG_CONFIG_PATH=/usr/i586-mingw32msvc/lib/pkgconfig
 export PKG_CONFIG_LIBDIR=/usr/i586-mingw32msvc/lib
 ./configure --cross-compile --cross-prefix=i586-mingw32msvc- --prefix=/usr/i586-mingw32msvc
 make install 

If the configure script fails, look the config.log file which was generated in the root of the sources.


The author of DaisyDuck and of libduck, Mathieu Schroeter, can be contacted by e-mail.