Co-maintaining cairo:
cool community
cool code
Behdad Esfahbod

Carl Worthbehdad@redhat.com

cworth@redhat.com

GUADEC 2007, Birmingham, UK

IntroGUADEC 2007, Birmingham, UK

Rendering model

GUADEC 2007, Birmingham, UK

History
GUADEC 2007, Birmingham, UKtopleftrightbottom

GUADEC 2007, Birmingham, UK

April 2002

GUADEC 2007, Birmingham, UKSubject: Xr API strawman
To: Keith Packard <keithp@keithp.com>
Date: Tue, 4 Jun 2002 19:55:06 +0000
Hi Keith,I read up a bit on PostScript. It's the obvious source of theproposals you were making.
I like it much better than GL as a model for Xr. It's cleaner ingeneral, (IMHO). And PS has larger overlap with the primitives we wantin Xr, (eg. bezier curves as opposed to just triangle meshes).
So, here's what I'm thinking of so far. This sticks fairly close to
PostScript, (but with an explicit rather than an implicit stateobject).
Feedback welcome,-Carl

GUADEC 2007, Birmingham, UK

/* Opaque state structure */typedef struct _XrState XrState;/* Functions for manipulating state objects *//* XXX: Do we want to add `State' to any of these functions?
eg. XrStateCreate, XrStateClone? */XrState *XrCreate(void);void XrDestroy(XrState *xrs);
void XrSave(XrState *xrs);
void XrRestore(XrState *xrs);
XrState *XrClone(XrState *xrs);/* Modify state */void XrSetPicture(XrState *xrs, XrPicture)void XrSetColor(XrState *xrs, XrColor);/* XXX: XrSetLineWidth, XrSetLineCap, XrSetLineJoin, XrSetDash, ... *//* Path creation *//* XXX: I'm thinking that it might make sense to do away with thenotion of a "current path" in the state object and instead
provide functions to manipulate an opaque XrPath object. This
would add one more argument to XrStroke/XrFill, but it would
unify support for PS "user paths" */void XrNewPath(XrState *xrs);
void XrMoveTo(XrState *xrs, double x, double y);void XrLineTo(XrState *xrs, double x, double y);void XrClosePath(XrState *xrs);/* XXX: XrRLineTo, XrArc, XrCurveTo, XrRCurveTo, ... *//* Render current path */void XrStroke(XrState *xrs);
void XrFill(XrState *xrs);

GUADEC 2007, Birmingham, UKCommitters200222003
11200412200526200654200744
GUADEC 2007, Birmingham, UKBackends
2002-06 Xlib
2003-02 image
2003-10 PostScript
2004-04 XCB
2004-09 glitz
2005-01 Win32
2005-01 PDF
2005-01 Quartz
2005-12 SVG
2005-12 BeOS
2005-12 directfb
2006-09 OS/2
2007-02 Quartz (New!)
GUADEC 2007, Birmingham, UK

Bindings
C++
Common Lisp
DHaskellJava.NET
NickleO'CamlPerl
PHP
PythonRuby
SchemeSqueakGUADEC 2007, Birmingham, UKNewsGUADEC 2007, Birmingham, UKMutex rework
GUADEC 2007, Birmingham, UK

Error-handling
GUADEC 2007, Birmingham, UK

Great malloc hunt

GUADEC 2007, Birmingham, UK

PDF hotness
GUADEC 2007, Birmingham, UKXlib work queue

GUADEC 2007, Birmingham, UK

Lessons
GUADEC 2007, Birmingham, UK

If you don't git it,
you don't get it

GUADEC 2007, Birmingham, UK

If you don't git it,
you don't get it
It's theRight Thing To Do
GUADEC 2007, Birmingham, UKIf you don't git it,
you don't get it
It's theRight Thing To Do
GUADEC 2007, Birmingham, UKTiny commits

GUADEC 2007, Birmingham, UKTiny commits
Earn points faster
GUADEC 2007, Birmingham, UKTiny commits
Earn points faster
GUADEC 2007, Birmingham, UK

Commit-accessfor everyone!
GUADEC 2007, Birmingham, UKTricking others
into doing their work

GUADEC 2007, Birmingham, UK

Don't go AWOLGUADEC 2007, Birmingham, UK

Why do welove cairo?
GUADEC 2007, Birmingham, UK

Why do youlove cairo?
GUADEC 2007, Birmingham, UK