Using Evas in Mechapoint was a fairly obvious decision - it gives me a solid graphical functionality to build the application, instead of making me worry about having to load images, or use Freetype to render anti-aliased TrueType text, or writing code to perform potentially millions of transparency calculations a second. However, Evas doesn't give all the needed functionality - there was still some work for me to do. This is an overview of some of the functionality that I've added on top of Evas for Mechapoint.
While a lot of people cringe at the thought of C++, and while I'll admit that it does have it's problems, on the whole I personally find it a much nicer language to work with than pure C. Regardless of whether you're working in an OO manner or not, C++ has a bunch of features that come in very handy such as default function arguments, function overloading, and (gasp!) high-level string and container classes. How many C libraries or other projects include their own linked list implementation? The answer is plenty, and Evas is one such project.
Anyway, ranting aside, C++ seemed like the best language for Mechapoint, and while Evas's C API is nice and clean, I'm not a fan of verbose C APIs, so I decided to implement a simple C++ wrapper. This makes the syntax a little bit cleaner, as you can see in the examples below.
As you can see, the changes aren't drastic, but the C++ wrapper does make a slight reduction to the amount of code used. However, for me at least, it makes things much clearer, because the C++ object syntax shows quite clearly which object each of the operations is being applied to.