Mnemonic GTK-based layout implementation
General Info

Introduction
Screenshots
Mailing Lists and IRC
Alternative Browsers
Special Thanks

FAQ
Understanding Mnemonic
TODO list and ideas
Bug Reports


User Info

Download binaries
Platforms
Compiling Mnemonic
Other useful software


Developer Info

Core
Message modules
Library modules
Object modules
Coding Guidelines
Browse Source
Using CVS


View with any browser

Website questions to:
webmaster@mnemonic.org

Mnemonic questions to:
disc@mnemonic.org

 

GTK-based layout routines

The lib-gtklayout library contains an implementation of the box types defined in the lib-layout library. It is a very thin wrapper that only does the gtk stuff; all the actual layout algorithms are implemented in lib-layout.

Part of this library is a custom-made canvas widget. This widget can be used separately as well, so it will probably be separated out at some point. A gtkviewer is a lib-layout box based on this widget. Its sizes can be smaller than the actual content. In other words, it acts as a box of fixed size for all parent and sibling boxes, but it acts as a box of freely growing size for all child boxes.

For display of boxes with images, lib-gtklayout depends on lib-rasterimage.

NOTE: gtkboxes are NOT Gtk-- widgets. They can _contain_ Gtk-- widgets, accessible through the widget() member.

Multi-threaded use

As GTK routines cannot be called in multiple threads at the same time, it is necessary to interrupt the GTK main loop whenever lib-gtklayout uses the GTK library. To avoid spending too much time outside of the event loop (which makes the user interface unresponsive), use of the GTK library by lib-gtklayout is restricted to member functions that have to do with reflow and redraw. This, in particular, means that you can create instances of objects in lib-gtklayout at any time and add them to an existing lib-gtklayout box tree. Only when a reflow or redraw is requisted should the GTK main loop be interrupted.

Font handling

The library has support for drawing font boxes using the standard X11 fonts. Moreover, using T1-lib, it can draw type 1 postscript fonts too. This yields anti-aliased fonts, and is also used to provide mathematics typesetting using the Bluesky Computer Modern Roman postscript versions of the standard TeX fonts.