OWBAL Overview

The goal of Origyn Web Browser Abstraction Layer (OWBAL) is to clarify what is platform dependant and what is not.

In BAL directory you find some modules which split sources per family of feature:

  • Database: all files needed for HTML5 Database and Storage.
  • Events: all events definitions (input events)
  • Filesystem: methods to access the filesystem
  • Geolocation: methods to implement the html5 geolocation
  • ImageDecoder: Interface of ImageDecoder and all implementation (GIF, JPEG, PNG, BMP, ICO)
  • Media: Implementation of backend for HTML5 video/audio tag
  • Network: Implementation of network resource
  • Types: Base Type used by WebCore
  • Facilities: misceleanous facilities implementation
  • Fonts: Font engine implementation
  • Graphics: Graphic primitive implementation (drawline, ...)
  • Internationalization: I18N implementation
  • Memory: memory management implementation
  • SVG: SVG (graphic part, the parser is in WebCore) implementation
  • Timer: timer implementation
  • Widgets: widget implementation

Each Module, when needed, splits WebCore and WTF source for the compilation.

All files in BAL have the prefix "BC" for BAL Concretization and for the suffix the implementation name ( SDL, Gtk, Qt... ). This is done to avoid confusion between files in the BAL and WebCore. For example if you have a file ScrollView.cpp in WebCore, in BAL for SDL implementation it will be : BCScrollViewSDL.cpp

This way any filename self documents its target implementation.

We have a 2 others directories used for the "BALification" process:

  • Base: where stand definition of type and all configuration ( Platform.h, ... ). This makes a single place of information.
  • cmake: all definitions needed by cmake (our build mechanism) such as library check, header include, definitions by option.