Enable: low-level drawing and interaction
C C++ Python Makefile DIGITAL Command Language Objective-C Other
Latest commit 3e1594b Oct 26, 2016 @corranwebster corranwebster committed on GitHub Merge pull request #246 from enthought/demo/kiva-explorer
Kiva explorer demo
Failed to load latest commit information.
docs Read the docs version directly from enable._version Oct 1, 2015
enable Merge pull request #242 from enthought/fix/python3-osx Oct 24, 2016
examples And one stray unused import. Oct 26, 2016
kiva Remove support for Mac font suitcases. Oct 25, 2016
.coveragerc add coverall to the travis ci builds Feb 4, 2014
.gitignore Add the auto-generated enable/_version.py to .gitignore May 5, 2015
.travis.yml Remove cd to integration tests from .travis.yml; run tests from subdir. May 19, 2016
CHANGES.txt Start development of version 4.6.0 Mar 24, 2015
LICENSE.txt * Egg-building infrastructure improvements (adding README.txt, LICENS… Aug 13, 2007
MANIFEST.in add quartz cython and c files in manifest Sep 8, 2016
README.rst add six as a depedency Sep 12, 2015
TODO.txt Update TODO.txt Apr 9, 2015
build_pyside_wheel.sh Make build wheel script executable. Sep 11, 2015
codecov.yml Create codecov.yml May 11, 2016
image_LICENSE.txt fixed imports to new locations Apr 21, 2011
image_LICENSE_CP.txt Updating license files to match the format of the other projects. Jul 30, 2008
image_LICENSE_Eclipse.txt converting to unix line endings and removing excess whitespace Jan 28, 2011
image_LICENSE_Nuvola.txt converting to unix line endings and removing excess whitespace Jan 28, 2011
image_LICENSE_OOo.txt converting to unix line endings and removing excess whitespace Jan 28, 2011
setup.py Use build_py from setuptools instead of distutils; this supports use_… Oct 20, 2016
travis-ci-requirements Make savage compatible with newer PyParsing versions. Oct 21, 2016


enable: low-level drawing and interaction


Build status Coverage status

The Enable project provides two related multi-platform packages for drawing GUI objects.

  • Enable: An object drawing library that supports containment and event notification.
  • Kiva: A multi-platform DisplayPDF vector drawing engine.


The Enable package is a multi-platform object drawing library built on top of Kiva. The core of Enable is a container/component model for drawing and event notification. The core concepts of Enable are:

  • Component
  • Container
  • Events (mouse, drag, and key events)

Enable provides a high-level interface for creating GUI objects, while enabling a high level of control over user interaction. Enable is a supporting technology for the Chaco and BlockCanvas projects.


Kiva is a multi-platform DisplayPDF vector drawing engine that supports multiple output backends, including Windows, GTK, and Macintosh native windowing systems, a variety of raster image formats, PDF, and Postscript.

DisplayPDF is more of a convention than an actual specification. It is a path-based drawing API based on a subset of the Adobe PDF specification. Besides basic vector drawing concepts such as paths, rects, line sytles, and the graphics state stack, it also supports pattern fills, antialiasing, and transparency. Perhaps the most popular implementation of DisplayPDF is Apple's Quartz 2-D graphics API in Mac OS X.

Kiva Features

Kiva currently implements the following features:

  • paths and compiled paths; arcs, bezier curves, rectangles
  • graphics state stack
  • clip stack, disjoint rectangular clip regions
  • raster image blitting
  • arbitrary affine transforms of the graphics context
  • bevelled and mitered joins
  • line width, line dash
  • Freetype or native fonts
  • RGB, RGBA, or grayscale color depths
  • transparency


You must have the following libraries installed before building the Enable/Kiva project:

Enable/Kiva also have the following requirements: