17#if CAIRO_HAS_PS_SURFACE
20#if CAIRO_HAS_PDF_SURFACE
23#if CAIRO_HAS_SVG_SURFACE
26#if CAIRO_HAS_XLIB_XRENDER_SURFACE
27#include <cairo-xlib.h>
28#include <cairo-xlib-xrender.h>
48static void init_cairo(
void);
49static int ends_with(
const char *
string,
const char *
suffix);
50static void map_file(
void);
52#if CAIRO_HAS_XLIB_XRENDER_SURFACE
69 p =
getenv(
"GRASS_RENDER_CAIRO_SCREEN");
71 G_debug(1,
"cairo: GRASS_RENDER_CAIRO_SCREEN=%s", p);
75 p =
getenv(
"GRASS_RENDER_CAIRO_VISUAL");
77 G_debug(1,
"cairo: GRASS_RENDER_CAIRO_VISUAL=%s", p);
101 ca.height,
ca.depth);
111static void init_file(
void)
115#if CAIRO_HAS_XLIB_XRENDER_SURFACE
125 ca.stride =
ca.width * 4;
128 p =
getenv(
"GRASS_RENDER_FILE");
131 G_debug(1,
"cairo: GRASS_RENDER_FILE=%s", p);
136 if (ends_with(
ca.file_name,
".ppm"))
138 else if (ends_with(
ca.file_name,
".bmp"))
140#if CAIRO_HAS_PNG_FUNCTIONS
141 else if (ends_with(
ca.file_name,
".png"))
144#if CAIRO_HAS_PDF_SURFACE
145 else if (ends_with(
ca.file_name,
".pdf"))
148#if CAIRO_HAS_PS_SURFACE
149 else if (ends_with(
ca.file_name,
".ps"))
152#if CAIRO_HAS_SVG_SURFACE
153 else if (ends_with(
ca.file_name,
".svg"))
156#if CAIRO_HAS_XLIB_XRENDER_SURFACE
157 else if (ends_with(
ca.file_name,
".xid"))
162 G_debug(1,
"cairo: file type=%d",
ca.file_type);
164 switch (
ca.file_type) {
170#if CAIRO_HAS_XLIB_XRENDER_SURFACE
177 p =
getenv(
"GRASS_RENDER_FILE_MAPPED");
178 do_map = p &&
strcmp(p,
"TRUE") == 0 && ends_with(
ca.file_name,
".bmp");
181 p =
getenv(
"GRASS_RENDER_FILE_READ");
199#if CAIRO_HAS_XLIB_XRENDER_SURFACE
245 p =
getenv(
"GRASS_RENDER_BACKGROUNDCOLOR");
257 G_debug(1,
"cairo: GRASS_RENDER_BACKGROUNDCOLOR=%s", p);
260 ca.bgcolor_r =
ca.bgcolor_g =
ca.bgcolor_b = 1.0;
263 p =
getenv(
"GRASS_RENDER_TRANSPARENT");
264 if (p &&
strcmp(p,
"TRUE") == 0)
268 G_debug(1,
"cairo: GRASS_RENDER_TRANSPARENT=%s", p ? p :
"FALSE");
271 p =
getenv(
"GRASS_RENDER_ANTIALIAS");
280 G_debug(1,
"cairo: GRASS_RENDER_ANTIALIAS=%s", p ? p :
"FALSE");
304 G_debug(1,
"Cairo_Graph_close");
306#if CAIRO_HAS_XLIB_XRENDER_SURFACE
324#if CAIRO_HAS_XLIB_XRENDER_SURFACE
330static void init_cairo(
void)
335 switch (
ca.file_type) {
342#if CAIRO_HAS_PDF_SURFACE
348#if CAIRO_HAS_PS_SURFACE
354#if CAIRO_HAS_SVG_SURFACE
360#if CAIRO_HAS_XLIB_XRENDER_SURFACE
364 ca.dpy,
ca.win,
ca.screen,
ca.format,
ca.width,
ca.height);
374 " (width: %d, height: %d): %s"),
382static int ends_with(
const char *
string,
const char *
suffix)
390static void map_file(
void)
const char * Cairo_Graph_get_file(void)
Get render file.
cairo_surface_t * surface
int Cairo_Graph_set(void)
Initialize driver.
void Cairo_Graph_close(void)
Close driver.
GRASS cairo display driver - header file.
void Cairo_Erase(void)
Erase screen.
void cairo_read_xid(void)
void cairo_read_image(void)
void cairo_write_image(void)
#define DEFAULT_FILE_NAME
int G_str_to_color(const char *, int *, int *, int *)
Parse color string and set red,green,blue.
void G_free(void *)
Free allocated memory.
void void void void G_fatal_error(const char *,...) __attribute__((format(printf
void G_warning(const char *,...) __attribute__((format(printf
void void G_verbose_message(const char *,...) __attribute__((format(printf
int int G_strcasecmp(const char *, const char *)
String compare ignoring case (upper or lower)
int G_debug(int, const char *,...) __attribute__((format(printf
Header file for msvc/fcntl.c.