Chapter 1. Preface

Let me show you that easy way, so others may easily follow.

The Perl Cookbook

There is a wonderful simile in the preface of the Perl Cookbook: approaching a programming problem is oftentimes similar to balancing Columbus's egg. The initial difficulties of dealing with, and more importantly solving, problems in the software engineering field sometimes can only be overcome if somebody shows you how to use a new tool. This is true for programming languages but also for programming libraries.

This book has been written to try and give you a reference on how to solve common issues that you might have to face when using the Clutter toolkit.

This book is not meant to be a replacement for the Clutter API reference, even though there will be descriptions of how Clutter works and how its API looks like. We will require knowledge of the Clutter API, but we will also point out where to find more information on the API that examples have used.

Indeed, this book should be used as a companion to the API reference, expanding its examples and showing how to achieve a specific result.

This is not a book for learning Clutter. This is also not a book for learning C, or GObject or even GUI development.

Above all, this is a book for learning more about Clutter, and about how to use it in the most efficient and easiest way. It is meant to help you move past the basic usage of Clutter.

This book is divided into chapters. Each chapter is dedicated to a specific class, like ClutterTexture, or a specific area, like animations. Each chapter starts with a short introduction, followed by different recipes. Each recipe starts with a problem, or a short statement describing what we want to achieve; a solution, containing the source code; and a discussion section, where the code is explained, where alternative approaches might be useful, and where caveats and references to the Clutter API for further studying can be found.

This book, in the cookbook spirit, can be accessed mostly at random.

1. About Clutter

Clutter is an free and open source software library for creating portable, dynamic, compelling and fast graphical user interfaces.

Clutter uses OpenGL (and, optionally, OpenGL ES on mobile and embedded platforms) for rendering the user interface elements, but at the same time it exposes an application program interface that hides the underlying complexity of the OpenGL state machine from the developer.

The program interface of Clutter is intended to be easy to use, efficient, flexible and as self-documenting as possible.