GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
cairodriver.h
Go to the documentation of this file.
1/*!
2 \file cairodriver/cairodriver.h
3
4 \brief GRASS cairo display driver - header file
5
6 (C) 2007-2008 by Lars Ahlzen and the GRASS Development Team
7
8 This program is free software under the GNU General Public License
9 (>=v2). Read the file COPYING that comes with GRASS for details.
10
11 \author Lars Ahlzen <lars ahlzen.com> (original contributor)
12 \author Glynn Clements
13 */
14
15#ifndef __CAIRODRIVER_H__
16#define __CAIRODRIVER_H__
17
18#include <grass/config.h>
19
20#include <stdio.h>
21#include <stdlib.h>
22#include <string.h>
23
24#include <cairo.h>
25
26#if !defined(USE_X11) || !CAIRO_HAS_XLIB_SURFACE || \
27 CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 6, 0)
28#undef CAIRO_HAS_XLIB_XRENDER_SURFACE
29#define CAIRO_HAS_XLIB_XRENDER_SURFACE 0
30#endif
31
32#if CAIRO_HAS_XLIB_XRENDER_SURFACE
33#include <X11/X.h>
34#include <X11/Xlib.h>
35#include <X11/Xutil.h>
36#include <X11/extensions/Xrender.h>
37#endif
38
39#include <grass/gis.h>
40
41#include "driver.h"
42#include "driverlib.h"
43
44#define DEFAULT_FILE_NAME "map.png"
45
46#define HEADER_SIZE 64
47
48/* Scale for converting colors from [0..255] to cairo's [0.0..1.0] */
49#define COLORSCALE (1.0 / 255.0)
50#define CAIROCOLOR(a) (((double)(a)) * COLORSCALE)
51
52/* File types */
53#define FTYPE_UNKNOWN 0
54#define FTYPE_PPM 1
55#define FTYPE_BMP 2
56#define FTYPE_PNG 3
57#define FTYPE_PDF 4
58#define FTYPE_PS 5
59#define FTYPE_SVG 6
60#define FTYPE_X11 7
61
62extern cairo_surface_t *surface;
63extern cairo_t *cairo;
64
66 char *file_name;
69 unsigned char *grid;
72 int mapped;
73#if CAIRO_HAS_XLIB_XRENDER_SURFACE
74 Display *dpy;
75 Drawable win;
76 Screen *screen;
77 XRenderPictFormat *format;
78 int depth;
79#endif
80};
81
82extern struct cairo_state ca;
83
84extern const struct driver *Cairo_Driver(void);
85
86extern void Cairo_Client_Close(void);
87extern int Cairo_Graph_set(void);
88extern const char *Cairo_Graph_get_file(void);
89extern void Cairo_Graph_close(void);
90extern void Cairo_Box(double, double, double, double);
91extern void Cairo_Set_window(double, double, double, double);
92extern void Cairo_Bitmap(int, int, int, const unsigned char *);
93extern void Cairo_Color(int, int, int);
94extern void Cairo_Erase(void);
95extern void Cairo_begin_raster(int, int[2][2], double[2][2]);
96extern int Cairo_raster(int, int, const unsigned char *, const unsigned char *,
97 const unsigned char *, const unsigned char *);
98extern void Cairo_end_raster(void);
99extern void Cairo_Begin(void);
100extern void Cairo_Move(double, double);
101extern void Cairo_Cont(double, double);
102extern void Cairo_Close(void);
103extern void Cairo_Stroke(void);
104extern void Cairo_Fill(void);
105extern void Cairo_Point(double, double);
106extern void Cairo_Line_width(double);
107extern void Cairo_Text(const char *);
108extern void Cairo_text_box(const char *, double *, double *, double *,
109 double *);
110extern void Cairo_set_font(const char *);
111extern void Cairo_font_list(char ***, int *);
112extern void Cairo_font_info(char ***, int *);
113
114/* read.c */
115extern void cairo_read_image(void);
116extern void cairo_read_ppm(void);
117extern void cairo_read_bmp(void);
118extern void cairo_read_xid(void);
119
120/* write.c */
121extern void cairo_write_image(void);
122extern void cairo_write_ppm(void);
123extern void cairo_write_bmp(void);
124extern void cairo_write_xid(void);
125
126#endif /* __CAIRODRIVER_H__ */
void Cairo_Point(double, double)
void Cairo_Color(int, int, int)
Set source color (opaque)
void cairo_write_ppm(void)
const struct driver * Cairo_Driver(void)
Initialize display driver.
const char * Cairo_Graph_get_file(void)
Get render file.
void cairo_write_bmp(void)
void Cairo_Begin(void)
void Cairo_Erase(void)
Erase screen.
void Cairo_Move(double, double)
void Cairo_Close(void)
void Cairo_Stroke(void)
int Cairo_raster(int, int, const unsigned char *, const unsigned char *, const unsigned char *, const unsigned char *)
Draw raster row.
void cairo_read_bmp(void)
void cairo_read_xid(void)
Definition read_xid.c:5
void Cairo_Fill(void)
void cairo_read_image(void)
void Cairo_font_info(char ***, int *)
Get fonts into.
void Cairo_Line_width(double)
Set line width.
void Cairo_font_list(char ***, int *)
Get list of fonts.
cairo_surface_t * surface
void Cairo_Cont(double, double)
void cairo_write_image(void)
void Cairo_end_raster(void)
Finish drawing raster.
void Cairo_Box(double, double, double, double)
Draw a (filled) rectangle.
struct cairo_state ca
void Cairo_set_font(const char *)
Set font.
int Cairo_Graph_set(void)
Initialize driver.
void cairo_write_xid(void)
Definition write_xid.c:5
void Cairo_Client_Close(void)
void Cairo_Graph_close(void)
Close driver.
void Cairo_Text(const char *)
Draw text.
void Cairo_begin_raster(int, int[2][2], double[2][2])
Start drawing raster.
void Cairo_Bitmap(int, int, int, const unsigned char *)
Draw bitmap.
cairo_t * cairo
void Cairo_Set_window(double, double, double, double)
Set window.
void cairo_read_ppm(void)
void Cairo_text_box(const char *, double *, double *, double *, double *)
double bgcolor_r
Definition cairodriver.h:70
unsigned char * grid
Definition cairodriver.h:69
double bgcolor_a
Definition cairodriver.h:70
double bgcolor_g
Definition cairodriver.h:70
char * file_name
Definition cairodriver.h:66
double bgcolor_b
Definition cairodriver.h:70