Co-maintaining cairo: cool community cool code Behdad Esfahbod - - PowerPoint PPT Presentation

co maintaining cairo cool community cool code
SMART_READER_LITE
LIVE PREVIEW

Co-maintaining cairo: cool community cool code Behdad Esfahbod - - PowerPoint PPT Presentation

Co-maintaining cairo: cool community cool code Behdad Esfahbod Carl Worth behdad@redhat.com cworth@redhat.com GUADEC 2007, Birmingham, UK Intro GUADEC 2007, Birmingham, UK Rendering model GUADEC 2007, Birmingham, UK History GUADEC 2007,


slide-1
SLIDE 1 GUADEC 2007, Birmingham, UK

Co-maintaining cairo: cool community cool code

Behdad Esfahbod behdad@redhat.com Carl Worth cworth@redhat.com
slide-2
SLIDE 2 GUADEC 2007, Birmingham, UK

Intro

slide-3
SLIDE 3 GUADEC 2007, Birmingham, UK

Rendering model

slide-4
SLIDE 4
slide-5
SLIDE 5 GUADEC 2007, Birmingham, UK

History

slide-6
SLIDE 6 GUADEC 2007, Birmingham, UK

top bottom left right

slide-7
SLIDE 7 GUADEC 2007, Birmingham, UK

April 2002

slide-8
SLIDE 8 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 the proposals you were making. I like it much better than GL as a model for Xr. It's cleaner in general, (IMHO). And PS has larger overlap with the primitives we want in 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 state
  • bject).
Feedback welcome,
  • Carl
slide-9
SLIDE 9 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 the notion 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);
slide-10
SLIDE 10 GUADEC 2007, Birmingham, UK

Committers 2002 2 2003 11 2004 12 2005 26 2006 54 2007 44

slide-11
SLIDE 11 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!)

slide-12
SLIDE 12 GUADEC 2007, Birmingham, UK Bindings C++ Common Lisp D Haskell Java .NET Nickle O'Caml Perl PHP Python Ruby Scheme Squeak
slide-13
SLIDE 13 GUADEC 2007, Birmingham, UK

News

slide-14
SLIDE 14 GUADEC 2007, Birmingham, UK

Mutex rework

slide-15
SLIDE 15 GUADEC 2007, Birmingham, UK

Error-handling

slide-16
SLIDE 16 GUADEC 2007, Birmingham, UK

Great malloc hunt

slide-17
SLIDE 17 GUADEC 2007, Birmingham, UK

PDF hotness

slide-18
SLIDE 18 GUADEC 2007, Birmingham, UK

Xlib work queue

slide-19
SLIDE 19 GUADEC 2007, Birmingham, UK

Lessons

slide-20
SLIDE 20 GUADEC 2007, Birmingham, UK

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

slide-21
SLIDE 21 GUADEC 2007, Birmingham, UK

If you don't git it, you don't get it It's the Right Thing To Do

slide-22
SLIDE 22 GUADEC 2007, Birmingham, UK

If you don't git it, you don't get it It's the Right Thing To Do

slide-23
SLIDE 23 GUADEC 2007, Birmingham, UK

Tiny commits

slide-24
SLIDE 24 GUADEC 2007, Birmingham, UK

Tiny commits Earn points faster

slide-25
SLIDE 25 GUADEC 2007, Birmingham, UK

Tiny commits Earn points faster

slide-26
SLIDE 26 GUADEC 2007, Birmingham, UK

Commit-access for everyone!

slide-27
SLIDE 27 GUADEC 2007, Birmingham, UK

Tricking others into doing their work

slide-28
SLIDE 28 GUADEC 2007, Birmingham, UK

Don't go AWOL

slide-29
SLIDE 29 GUADEC 2007, Birmingham, UK

Why do we love cairo?

slide-30
SLIDE 30 GUADEC 2007, Birmingham, UK

Why do you love cairo?