2. Introduction

I decided to write this handbook to help all libmtpixel users get the most out of the library. Like all software, libmtpixel is a tool, and in order to use it efficiently you will need to study what it does, and how it works. If you wish to understand some of the design decisions I have taken, you may be interested to read about why I created libmtpixel.

2.1 Life Before libmtpixel

Before creating libmtpixel I used various graphics libraries on different systems. With completely different goals and objectives these varied from very small home brew efforts right up to large corporate monoliths that catered for every graphical need. Sadly these libraries all left me very frustrated as they were either so small and simple that they didn't cater for my needs or they were so large and complicated they were very difficult to learn and operated too slowly.

2.2 Project Genesis

On the 11th August 2007 I started creating a pixel based graphics library by forking mtPaint version 3.14.42. I wanted to translate the success of mtPaint from a GUI context into a library so that I could use these features in my C programs.

2.3 General Philosophy

I have always wanted libmtpixel to be small, reliable, fast, and easy to use, as I think these are the qualities which will give me the best library for my needs. However, libmtpixel isn't a corporate effort, and it isn't a clone of another library so it may not conform to everybody's needs.

An important decision I have taken with libmtpixel is to release it as free software using the GNU General Public License. This gives all libmtpixel users various freedoms which are beneficial to both them and myself. If you are not aware of these freedoms and the work of the GNU project, I would strongly encourage you to read about them here: http://www.gnu.org/. As a result of using this license for mtPaint, many people have been able contribute ideas and source code that has improved the program.

I deliberately did not use the LGPL or any other 'loose' license as it would not protect the project from being exploited by those who do not respect free software or its practitioners.