ref: fbeb41d93d84b6f6dfa2ec8a8b43bafe0fe7696c
dir: /demos/graph/grdevice.h/
/*************************************************************************** * * grdevice.h * * Graphics device interface * * Copyright 1999 - The FreeType Development Team - www.freetype.org * * ***************************************************************************/ #ifndef GRDEVICE_H #define GRDEVICE_H #include "graph.h" /******************************************************************** * * <FuncType> * grDeviceInitFunc * * <Description> * Simple device initialiser function * * <Return> * error code. 0 means success * ********************************************************************/ typedef int (*grDeviceInitFunc)( void ); /******************************************************************** * * <FuncType> * grDeviceDoneFunc * * <Description> * Simple device finaliser function * * <Return> * error code. 0 means success * ********************************************************************/ typedef void (*grDeviceDoneFunc)( void ); /******************************************************************** * * <FuncType> * grDeviceInitSurfaceFunc * * <Description> * initializes a new surface for the device. This may be a window * or a video screen, depending on the device. * * <Input> * surface :: handle to target surface * * <InOut> * bitmap :: handle to bitmap descriptor * ********************************************************************/ typedef int (*grDeviceInitSurfaceFunc)( grSurface* surface, grBitmap* bitmap ); /******************************************************************** * * <Struct> * grDevice * * <Description> * Simple device interface structure * * <Fields> * surface_objsize :: size in bytes of a single surface object for * this device. * * device_name :: name of device, e.g. "x11", "os2pm", "directx" etc.. * init :: device initialisation routine * done :: device finalisation * new_surface :: function used to create a new surface (screen or * window) from the device * * num_pixel_modes :: the number of pixel modes supported by this * device. This value _must_ be set to -1 * default, unless the device provides a * static set of pixel modes (fullscreen). * * pixel_modes :: an array of pixel modes supported by this * device * * <Note> * the fields "num_pixel_modes" and "pixel_modes" must be * set by the "init" function. * * This allows windowed devices to "discover" at run-time the * available pixel modes they can provide depending on the * current screen depth. * ********************************************************************/ struct grDevice_ { int surface_objsize; const char* device_name; /* name of device */ grDeviceInitFunc init; grDeviceDoneFunc done; grDeviceInitSurfaceFunc init_surface; int num_pixel_modes; grPixelMode* pixel_modes; }; extern grDeviceChain gr_device_chain[]; extern int gr_num_devices; #endif /* GRDEVICE_H */