[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Introduction

The cl-cffi-gtk library is a Lisp binding to GTK+ (GIMP Toolkit) which is a library for creating graphical user interfaces. GTK+ is licensed using the LGPL which has been adopted for the cl-cffi-gtk library with a preamble that clarifies the terms for use with Lisp programs and is referred as the LLGPL.

This work is based on the cl-gtk2 library which has been developed by Kalyanov Dmitry and already is a fairly complete Lisp binding to GTK+. The focus of the cl-cffi-gtk library is to document the Lisp library much more complete and to do the implementation as consistent as possible. Most informations about GTK+ can be gained by reading the C documentation. Therefore, the C documentation from http://www.gtk.org is included into the Lisp files as an API documentation to document the Lisp binding to the GTK+ library. This way the calling conventions are easier to determine and missing functionality is easier to detect. The API documentation is available online at http://www.crategus.com/books/cl-cffi-gtk.

The GTK+ library is called the GIMP toolkit because GTK+ was originally written for developing the GNU Image Manipulation Program (GIMP), but GTK+ has now been used in a large number of software projects, including the GNU Network Object Model Environment (GNOME) project. GTK+ is built on top of GDK (GIMP Drawing Kit) which is basically a wrapper around the low-level functions for accessing the underlying windowing functions (Xlib in the case of the X windows system), and GdkPixbuf, a library for client-side image manipulation.

GTK+ is essentially an object oriented application programmers interface (API). Although written completely in C, GTK+ is implemented using the idea of classes and callback functions (pointers to functions).

A third component is called GLib which contains replacements for standard calls, as well as additional functions for handling linked lists, etc. The replacement functions are used to increase the portability of GTK+, as some of the functions implemented here are not available or are non standard on other Unixes such as g_strerror(). Some also contain enhancements to the libc versions, such as g_malloc() that has enhanced debugging utilities.

In version 2.0, GLib has picked up the type system which forms the foundation for the class hierarchy of GTK+, the signal system which is used throughout GTK+, a thread API which abstracts the different native thread APIs of the various platforms and a facility for loading modules.

As the last components, GTK+ uses the Pango library for internationalized text output, the Cario library, which is a 2D graphics library with support for multiple output devices, and the GIO library, which is a modern easy-to-use VFS API including abstractions for files, drives, volumes, stream IO, as well as network programming and DBus communication.

This tutorial describes the Lisp interface to GTK+. It inclucdes a lot of material and code from different resources. See Licenses.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Crategus on January, 10 2016 using texi2html 1.76.