Flake (software)

Flake or a Vector Shape is a programming library that is used in Calligra Suite and the KOffice 2 series. Flake provides the basic concept of a "shape". To the end user a shape appears as some piece of content such as an image or a text. A shape can be in any form (square, circle, etc.) and contain any kind of media since the Shape is responsible for drawing itself. All components of KOffice are being overhauled to use Flake as much as possible.

Functionality
The functionality of Flake is divided up between Shapes, which display content, and Tools, which manipulate content or the user interface. Different Shapes can be created to support different kinds of content, for example the text-shape in Calligra Words would support .txt and .odt formats while the KChart shape would just support chart-related document standard such as .odc. Shapes are packaged with a set of tools to manipulate that kind of content and UI elements that expose the functionality to the user. This provides an application with all the features it needs and also allows for easy embedding of Shapes in other applications. Shapes can load other shapes when needed, for example when images are in text documents the image shape will be loaded to handle the images.

Flake is the successor to the old design of embedding based on widgets in the KOffice 1 series. The widget embedding had three notable shortcomings, that widgets were always square, couldn't be rotated and were measured in pixels. All of these are corrected by Flake. Embedded document data can now be zoomed, rotated and skewed, be of any form and are measured in units such as millimeters. Flake also improves on the original design in several areas, for example, its extensibility. For example, in Google's Summer of Code 2007 Marijn Kruisselbrink created a MusicXML-based music notation Shape and Tools. Shapes can be made aware of other Shapes positions, moving an image through text will result in the text dynamically wrapping around the images. Shapes can even be grouped together and made to behave like a single Shape. Flake also supports printing to PDF and has full support for anti-aliased painting for smoother text.