16#if CAIRO_HAS_PS_SURFACE
19#if CAIRO_HAS_PDF_SURFACE
22#if CAIRO_HAS_SVG_SURFACE
25#if CAIRO_HAS_XLIB_XRENDER_SURFACE
26#include <cairo-xlib.h>
27#include <cairo-xlib-xrender.h>
47static void init_cairo(
void);
48static int ends_with(
const char *
string,
const char *
suffix);
49static void map_file(
void);
51#if CAIRO_HAS_XLIB_XRENDER_SURFACE
68 p =
getenv(
"GRASS_RENDER_CAIRO_SCREEN");
70 G_debug(1,
"cairo: GRASS_RENDER_CAIRO_SCREEN=%s", p);
74 p =
getenv(
"GRASS_RENDER_CAIRO_VISUAL");
76 G_debug(1,
"cairo: GRASS_RENDER_CAIRO_VISUAL=%s", p);
100 ca.height,
ca.depth);
110static void init_file(
void)
114#if CAIRO_HAS_XLIB_XRENDER_SURFACE
124 ca.stride =
ca.width * 4;
127 p =
getenv(
"GRASS_RENDER_FILE");
130 G_debug(1,
"cairo: GRASS_RENDER_FILE=%s", p);
135 if (ends_with(
ca.file_name,
".ppm"))
137 else if (ends_with(
ca.file_name,
".bmp"))
139#if CAIRO_HAS_PNG_FUNCTIONS
140 else if (ends_with(
ca.file_name,
".png"))
143#if CAIRO_HAS_PDF_SURFACE
144 else if (ends_with(
ca.file_name,
".pdf"))
147#if CAIRO_HAS_PS_SURFACE
148 else if (ends_with(
ca.file_name,
".ps"))
151#if CAIRO_HAS_SVG_SURFACE
152 else if (ends_with(
ca.file_name,
".svg"))
155#if CAIRO_HAS_XLIB_XRENDER_SURFACE
156 else if (ends_with(
ca.file_name,
".xid"))
161 G_debug(1,
"cairo: file type=%d",
ca.file_type);
163 switch (
ca.file_type) {
169#if CAIRO_HAS_XLIB_XRENDER_SURFACE
176 p =
getenv(
"GRASS_RENDER_FILE_MAPPED");
177 do_map = p &&
strcmp(p,
"TRUE") == 0 && ends_with(
ca.file_name,
".bmp");
180 p =
getenv(
"GRASS_RENDER_FILE_READ");
198#if CAIRO_HAS_XLIB_XRENDER_SURFACE
244 p =
getenv(
"GRASS_RENDER_BACKGROUNDCOLOR");
256 G_debug(1,
"cairo: GRASS_RENDER_BACKGROUNDCOLOR=%s", p);
259 ca.bgcolor_r =
ca.bgcolor_g =
ca.bgcolor_b = 1.0;
262 p =
getenv(
"GRASS_RENDER_TRANSPARENT");
263 if (p &&
strcmp(p,
"TRUE") == 0)
267 G_debug(1,
"cairo: GRASS_RENDER_TRANSPARENT=%s", p ? p :
"FALSE");
270 p =
getenv(
"GRASS_RENDER_ANTIALIAS");
279 G_debug(1,
"cairo: GRASS_RENDER_ANTIALIAS=%s", p ? p :
"FALSE");
303 G_debug(1,
"Cairo_Graph_close");
305#if CAIRO_HAS_XLIB_XRENDER_SURFACE
323#if CAIRO_HAS_XLIB_XRENDER_SURFACE
329static void init_cairo(
void)
334 switch (
ca.file_type) {
341#if CAIRO_HAS_PDF_SURFACE
347#if CAIRO_HAS_PS_SURFACE
353#if CAIRO_HAS_SVG_SURFACE
359#if CAIRO_HAS_XLIB_XRENDER_SURFACE
363 ca.dpy,
ca.win,
ca.screen,
ca.format,
ca.width,
ca.height);
373 " (width: %d, height: %d): %s"),
381static int ends_with(
const char *
string,
const char *
suffix)
389static 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.