/*! \file cairodriver/cairodriver.h \brief GRASS cairo display driver - header file (C) 2007-2008 by Lars Ahlzen and the GRASS Development Team This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details. \author Lars Ahlzen (original contibutor) \author Glynn Clements */ #ifndef __CAIRODRIVER_H__ #define __CAIRODRIVER_H__ #include #include #include #include #include #if !defined(USE_X11) || !CAIRO_HAS_XLIB_SURFACE || CAIRO_VERSION < CAIRO_VERSION_ENCODE(1,6,0) #undef CAIRO_HAS_XLIB_XRENDER_SURFACE #define CAIRO_HAS_XLIB_XRENDER_SURFACE 0 #endif #if CAIRO_HAS_XLIB_XRENDER_SURFACE #include #include #include #include #endif #include #include "driver.h" #include "driverlib.h" #define DEFAULT_FILE_NAME "map.png" #define HEADER_SIZE 64 /* Scale for converting colors from [0..255] to cairo's [0.0..1.0] */ #define COLORSCALE (1.0/255.0) #define CAIROCOLOR(a) (((double)(a))*COLORSCALE) /* File types */ #define FTYPE_UNKNOWN 0 #define FTYPE_PPM 1 #define FTYPE_BMP 2 #define FTYPE_PNG 3 #define FTYPE_PDF 4 #define FTYPE_PS 5 #define FTYPE_SVG 6 #define FTYPE_X11 7 extern cairo_surface_t *surface; extern cairo_t *cairo; struct cairo_state { char *file_name; int file_type; int width, height, stride; unsigned char *grid; double bgcolor_r, bgcolor_g, bgcolor_b, bgcolor_a; int modified; int mapped; #if CAIRO_HAS_XLIB_XRENDER_SURFACE Display *dpy; Drawable win; Screen *screen; XRenderPictFormat *format; int depth; #endif }; extern struct cairo_state ca; extern const struct driver *Cairo_Driver(void); extern void Cairo_Client_Close(void); extern int Cairo_Graph_set(void); extern const char *Cairo_Graph_get_file(void); extern void Cairo_Graph_close(void); extern void Cairo_Box(double, double, double, double); extern void Cairo_Set_window(double, double, double, double); extern void Cairo_Bitmap(int, int, int, const unsigned char *); extern void Cairo_Color(int, int, int); extern void Cairo_Erase(void); extern void Cairo_begin_raster(int, int[2][2], double[2][2]); extern int Cairo_raster(int, int, const unsigned char *, const unsigned char *, const unsigned char *, const unsigned char *); extern void Cairo_end_raster(void); extern void Cairo_Begin(void); extern void Cairo_Move(double, double); extern void Cairo_Cont(double, double); extern void Cairo_Close(void); extern void Cairo_Stroke(void); extern void Cairo_Fill(void); extern void Cairo_Point(double, double); extern void Cairo_Line_width(double); extern void Cairo_Text(const char *); extern void Cairo_text_box(const char *, double *, double *, double *, double *); extern void Cairo_set_font(const char *); extern void Cairo_font_list(char ***, int *); extern void Cairo_font_info(char ***, int *); /* read.c */ extern void cairo_read_image(void); extern void cairo_read_ppm(void); extern void cairo_read_bmp(void); extern void cairo_read_xid(void); /* write.c */ extern void cairo_write_image(void); extern void cairo_write_ppm(void); extern void cairo_write_bmp(void); extern void cairo_write_xid(void); #endif /* __CAIRODRIVER_H__ */