Features
-
Read/write of one-page one-frame pictures into String key-value pairs (if String value doesn't fit, BLOB also can be used)(That's not hard to extend property system to multipage files and animations because there is property subtree proxy.)
-
Many (RGBAX) bitmap memory formats are supported
-
File type can be determined through URL extension and through file signature ("magic") (and then file is manipulated through corresponding Dynamically Loadable library (".so") plugin)
-
Ability to store bitmap in user-supplied memory area (its required size can be calculated by the library)
-
No support (through it's easy to add) for conversion to, from palettized bitmaps - but palette storage and retrieval can be done
-
Doesn't do anything about graphical output (through there's included example of output with help of LibSDL)
-
Through library is for GCC on GNU/Linux, seems that porting is not hard
-
Fairly good class design and C++ language (mostly as in ISO/IEC 14882:2003)
-
Moderate number of external dependencies at compile time (see "INSTALL"), and even more: some of them are included in distribution (if you plan to use them, however, note their different licenses)
-
Even less compile time dependencies for user who isn't plugin developer (GNU C Library, C++ Standard Library; included in distribution LibBoost "boost/shared_ptr.hpp", "boost/make_shared.hpp"... Some more? Seems that none)
-
Nearly no external depencencies at library runtime (GNU C Library, maybe C++ Standard library and hmm... LibJPEG for JPEG plugin)
-
Distinct boundary between User API and Plugin API
-
Doxygen in-code documentation
-
Errors are reported through exceptions; also, there's mechanism to report warnings (and informational messages) to user-supplied callbacks
-
Wrapper for "emulation" of exception throwing from below C code (e.g. for error handling in LibJPEG)
-
There are examples of realizaton of plugin with help of (1) external C library (JPEG plugin) and (2) nothing but own hands (BMP plugin)
-
Property subtree proxy for manipulation identically-prefixed properties as distinct trees and even pictures
-
Many of warning, error messages are uniform (but not identical)
-
System unit testing (done with help of Google Test) is included
-
Distinct namespace for all identifiers exposed to public (but, surely, except macros)
-
Some useful templates are already instantiated
-
OOP patterns and other good programming techniques are used such as Singleton, own Iterator-s; Functor-s, Smart pointers, Pimpl-s, BLOB-s with copy-on-write feature, Wrappers, Proxy for Subtree
-
Autotools (Autoconf, Automake)
-
Everything excluding Software Requirements Specificaton and original task is in English language (former are in Russian language)
Generated on Sun May 29 18:23:53 2011 for libnebular by
1.6.3