view dox/define_backend.h @ 890:58a4e9bb8bb7 abs_n_rel_center

A SVG viewer
author Thinker K.F. Li <thinker@codemud.net>
date Sun, 26 Sep 2010 14:11:41 +0800
parents 1f900a67bd38
children 5dedeedf0408
line wrap: on
line source

/*! \page backend How to Define a Backend
 *
 * A backend is factory to initialize environment to make
 * MadBufferfly available.  A backend should provide resources
 * needed by MadButterfly, for example, to provide a surface
 * that will show everything drawing on it.  It also translate and
 * relay input events, mouse or keyboard, to MadButterfly.
 * The tasks that a backend should do are listed following,
 *  - to prepare a backend surface,
 *  - to prepare a front surface,
 *  - to translate and relay input events to MadButterfly,
 *  - to handle a timer, and relay timeout events to MadButterfly.
 * 
 * The output device surface for X Window is a surface return by
 * cairo_xlib_surface_create().  MadButterfly will copy everything
 * from front surface to backend surface to show graphy to user.
 * The copying is to avoid user find slowly redrawing.  The latency
 * between X client and server can be large.  For this situation,
 * we need a font surface as a buffer drawing, and copy image from
 * front surface to backend surface after completion of a series
 * of drawing.  A front surface can be an image surface for this
 * situation.
 *
 * The input events of X Window should be translated to raw events of
 * MadButterfly and sent them to rdman through notify_coord_or_shape()
 * function.
 *
 * \see X_supp.c
 */