How otfried/ipe works
Ipe is an extensible drawing editor for creating figures and producing PDF for LaTeX or standalone use. Its principal workflow is authoring and editing a page of drawing objects, rendering it in the editor, and exporting or presenting the result. The repository also provides web and VS Code entry points, Lua/ipelet extensibility, PDF viewing, and conversion utilities. The graph reflects the documented product and sampled call sites; several native UI and export connections are based on module responsibilities rather than inspected wiring.
Main entry points: ipedoc.cpp Document model · ipepage.cpp Pages and layers · ipeui.ts Web UI · ipecanvas.cpp Canvas
Components 22
Editing experience
- Native app
src/ipe/main_qt.cpp - Editor UI
src/ipe/appui.cpp - Editing tools
src/ipe/tools.cpp - Canvas
src/ipecanvas/ipecanvas.cpp
Drawing and files
- Document model
src/ipelib/ipedoc.cpp - Pages and layers
src/ipelib/ipepage.cpp - Drawing objects
src/ipelib/ipeobject.cpp - Styles and attributes
src/ipelib/ipestyle.cpp - Ipe XML files
src/ipelib/ipexml.cpp - PDF parser
src/ipelib/ipepdfparser.cpp
Rendering and output
- Cairo painter
src/ipecairo/ipecairopainter.cpp - PDF writer
src/ipelib/ipepdfwriter.cpp - LaTeX rendering
src/ipelib/ipelatex.cpp - PDF presenter
src/ipepresenter/ipepresenter.cpp
Extensions and clients
- Web edition
src/ipe-web/src/main.ts - Web UI
src/ipe-web/src/ipe/ipeui.ts - VS Code extension
src/ipe-vscode/src/extension.ts - Lua bindings
src/ipelua/ipelib.cpp - Ipelets
src/ipe/uilua.cpp - Format converter
src/ipetoipe/ipetoipe.cpp
Other components
- Artist
- Pdflatex
Connections 20
- Artist → Native app: edits figures
- Artist → Web edition: opens editor
- Artist → VS Code extension: opens files
- Native app → Editor UI: starts UI
- Editor UI → Editing tools: dispatches edits
- Editing tools → Document model: edits document
- Document model → Pages and layers: manages pages
- Pages and layers → Drawing objects: holds objects
- Canvas → Cairo painter: draws objects
- Canvas → Pages and layers: renders page
- Document model → Ipe XML files: loads and saves
- PDF parser → PDF presenter: provides PDF data
- Document model → PDF writer: writes PDF
- LaTeX rendering → Pdflatex: renders text
- Web edition → Web UI: creates UI
- Web UI → Document model: starts editor
- VS Code extension → Web UI: hosts editor
- Lua bindings → Drawing objects: binds objects
- Ipelets → Lua bindings: uses bindings
- Format converter → Ipe XML files: converts files