LibNebular is C++ Linux library for uniform image file manipulation as String key-value pairs (with sometimes BLOB values) where different file types are intruduced through DL (".so") libraries. Includes BMP and JPEG plugins. Can easily be ported.

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) build system
  • Everything excluding Software Requirements Specificaton and original task is in English language (former are in Russian language)

Project Samples

Project Activity

See All Activity >

License

GNU Library or Lesser General Public License version 3.0 (LGPLv3)

Follow LibNebular

LibNebular Web Site

You Might Also Like
Our Free Plans just got better! | Auth0 by Okta Icon
Our Free Plans just got better! | Auth0 by Okta

With up to 25k MAUs and unlimited Okta connections, our Free Plan lets you focus on what you do best—building great apps.

You asked, we delivered! Auth0 is excited to expand our Free and Paid plans to include more options so you can focus on building, deploying, and scaling applications without having to worry about your secuirty. Auth0 now, thank yourself later.
Try free now
Rate This Project
Login To Rate This Project

User Ratings

★★★★★
★★★★
★★★
★★
1
0
0
0
0
ease 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5
features 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5
design 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5
support 1 of 5 2 of 5 3 of 5 4 of 5 5 of 5 0 / 5

User Reviews

  • Thanks for good program!
Read more reviews >

Additional Project Details

Operating Systems

Linux

Intended Audience

Information Technology, Developers

Programming Language

C++

Related Categories

C++ Data Formats Software, C++ Graphics Software

Registered

2011-05-28