Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Enable: low-level drawing and interaction
C C++ Python Makefile DIGITAL Command Language Objective-C Other

Merge pull request #203 from enthought/fix/rank-deprecated

BUG: numpy.rank() is deprecated.
latest commit 4c918cc8a3
@jwiggins jwiggins authored
Failed to load latest commit information.
docs fix minor errors in shinx build
enable add comment
examples Merge branch 'master' into feature/apptools-undo-tools
integrationtests/kiva/agg adjust kiva imports
kiva BUG: numpy.rank() is deprecated.
.coveragerc add coverall to the travis ci builds
.gitignore Add the auto-generated enable/ to .gitignore
.travis.yml correct silly error
CHANGES.txt Start development of version 4.6.0
LICENSE.txt * Egg-building infrastructure improvements (adding README.txt, LICENS… Add tests that read from .png files.
README.rst update Readme
TODO.txt Update TODO.txt
dev_requirements_pil.txt use unittest2 to run tests for the kiva backends since nose has problems
dev_requirements_pillow.txt use unittest2 to run tests for the kiva backends since nose has problems
image_LICENSE.txt fixed imports to new locations
image_LICENSE_CP.txt Updating license files to match the format of the other projects.
image_LICENSE_Eclipse.txt converting to unix line endings and removing excess whitespace
image_LICENSE_Nuvola.txt converting to unix line endings and removing excess whitespace
image_LICENSE_OOo.txt converting to unix line endings and removing excess whitespace
requirements-2.6.txt Update requirements-2.6.txt Update revert to using `cd`


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:



Something went wrong with that request. Please try again.