Ipe is an extensible drawing editor, and you can write extensions to Ipe that will appear on the Ipe menu and can be called from inside Ipe like other Ipe functions.

Ipe extensions are called Ipelets. They are most easily written in the language Lua (www.lua.org), in which also most of Ipe's user interface is written. Lua is a high-level interpreted language, in which interesting classes like vectors, matrices, and Ipe objects are made available. See Programming in Lua for more information about programming with Ipelib in Lua.

Ipelets written in Lua explains how to write ipelets in Lua.

Often, however, you will already have code that provides some geometric computation in another programming language such as C++. In such a situation you can create Lua bindings for your code and use it from your Lua ipelet. Creating Lua bindings is not documented here, as Ipe also provides an easier solution that will suffice in many cases. You can implement your ipelet entirely in C++, and only need some boilerplate code in Lua that defines the labels and functions inside the ipelet. Ipe will take care of loading and calling your C++ code.

Ipelets written in C++ explains how to write ipelets in C++.