My favorites | Sign in
Project Logo
fog
                
Code license: MIT License
Labels: CPlusPlus, 2D, Graphics, UI, WindowingSystem, GUI
Show all Featured wiki pages:
Benchmarks Project_Goals
Blogs:
Feeds:
Groups:
People details
Project owners:
  kobalicek.petr
Project committers:
jardasmid, L8.jansson

Introduction

Fog is high performance 2d graphics library that comes with platform independent toolkit. Philosophy of Fog is to depend only to few libraries and to provide ease-of-use API for graphics oriented development. Fog can be divided to parts that can be understand as sub-libraries.

Parts

Fog library contains these parts:

In early stages Fog library contained these parts as a separate libraries, but now all these parts (or sub-libraries) have merged into one single shared library.

'Fog/UI' library not depends to operating windowing system directly, instead there is layer that supports it. The most interesting fact is that this layered architecture allows you to write console based application using Fog under Linux/BSDs without dependency to X Window System - in fact 'X11' support is only plugin that can be build later without rebuilding Fog library.

Originally UI backend was designed to allow more libraries to be used through Fog, but currently development backends are only Windows and X11. Also note that Fog/UI not depends to other GUI libraries like Gtk+ or Qt, it uses low level Win32/X11 API only (or no windowing system at all).

Fog/Core

Platform abstraction library that contains classes related to platform independent programming. It is very easy to create threads using Fog/Core library, running event loops, using directory iterators, working with unicode strings and more...

Fog/Graphics

High-performance 2d graphics library designed to take power of multithreading (there is also JIT compilation project but currently not integrated with Fog). Fog/Graphics is pure software rendering library that can guarantee that sequence of graphics commands will generate unified output on all supported architectures and operating systems.

Fog/Graphics library uses algorithms from AntiGrain project and FreeType to rasterize and work with vectors. Fog also contains own painting and blitting pipeline that is heavily optimized for multithreaded (but also singlethreaded) rendering. Understanding modern CPU architecture is key to make graphics libraries like Fog as fast as possible.

Fog/UI

Library that implements own windowing system and basic widgets. This is unique library that is designed to use native top-level windows only - this allows that UI backends are only plugins and your application not depends to X11 or other GUI libraries on Linux.

Fog/UI library contains abstract UISystem class that is reimplemented by plugins to support different backends. Through this mechanism your application not depends to one backend, but can be run by multiple backends without recompilation. Currently there is only Windows and X11 backend.

Note that UI toolkit is very small part of Fog library compared to Fog/Core and Fog/Graphics, it's mainly here to experiment with different approach of building UI applications and also to demonstrate how software rendered UI can be fast. If you want to use for as a pure graphics solution then you should just ignore this part (it's not needed to initialize UI to work with graphics).

Fog/Xml

Library that implements basic support for reading and writing xml files using DOM or event based parser. This library can be used to read or write configuration files and it is used by Fog/SVG to parse SVG documents. Fog/Xml package is designed to be very fast and it can be extended by custom elements and attributes (Svg module is using this feature).

Fog/Svg

Fog/Svg is latest experiment in Fog library that allows read, manipulate and render Svg documents. Currently there is very basic support for Svg documents.

Status

Fog library is not yet complete nor recommended for use. Everything is in development and time is needed to improve and stabilize the library.

Contribution and Feedback

Fog library is unique project that is quite complex and needs more active developers. All interested persons should join mailing list and discuss about future and usability of the library.

Download

Currently Fog is only available through SVN repository.

Related Projects

Google Groups and Mailing Lists

Fog google group:

Fog mailing list:









Hosted by Google Code