Evas

Evas is an object-oriented 2D canvas that uses retained renderer mode. It's part of Enlightenment Foundation Libraries. It's written in C but bindings for Python and Ruby exists.

Evas main goals are to be easy to use and optimized. The latter is one of its strongest points: it's very light on memory, blit functions are optimized in C and MMX, SSE or Altivec where possible. It can use rendering threads, splitting independent work among threads, reaching about sqrt(N-cores) improvements. Since it can know what changed from one frame to another, it can do employ dirty-rectangle optimizations to avoid repainting unchanged areas and will also merge dirty rectangles to avoid painting the same area twice (NP problem, solved with a good heuristic). There are also engines that use hardware acceleration, like OpenGL, DirectFB and XRender/X11. Evas ships with native 16bpp engines targeted at embedded systems.

Documentation

Evas is base of Edje, so its documentations can serve as guide as well.

Features

Optimized for raster and bitmaps

Basic Primitives:

Rectangles, Lines and Polygons

Gradients: includes different modes like linear, radial and more, with different configurations, stop points and even semi-transparent colors.

Images: includes different scaling methods, like nearest or smooth super and super-sampled. It can do image tiling and handles border properties so scale will scale them properly. Can load images from PNG, JPEG, TIFF, PPM, SVG and more.

Text: include effects as shadow (hard and soft), outline and glow. Can use fontconfig for font discovery, uses freetype rendering by default. Supports UTF-8.