1 #ifndef FSVG_H
2 #define FSVG_H
3 
4 #ifdef HAVE_RSVG
5 #define USE_SVG 1
6 #else
7 #define USE_SVG 0
8 #endif
9 
10 #include "PictureBase.h"
11 
12 #ifndef M_PI
13 #define M_PI 3.14159265358979323846
14 #endif
15 
16 #if USE_SVG
17 #	include <librsvg/rsvg.h>
18 #	include <cairo.h>
19 	typedef RsvgDimensionData		FRsvgDimensionData;
20 	typedef RsvgHandle			FRsvgHandle;
21 	typedef cairo_surface_t			Fcairo_surface_t;
22 	typedef cairo_t				Fcairo_t;
23 
24 #	define FCAIRO_FORMAT_ARGB32		CAIRO_FORMAT_ARGB32
25 #	define FCAIRO_STATUS_SUCCESS		CAIRO_STATUS_SUCCESS
26 
27 #	define FG_OBJECT(a)			G_OBJECT(a)
28 #	define Fg_object_unref(a)		g_object_unref(a)
29 #	define Frsvg_handle_get_dimensions(a, b) \
30 			rsvg_handle_get_dimensions(a, b)
31 #	define Frsvg_handle_new_from_file(a, b)	rsvg_handle_new_from_file(a, b)
32 #	define Frsvg_handle_render_cairo(a, b)	rsvg_handle_render_cairo(a, b)
33 
34 /* TA:  2013-01-22 -- rsvg_init() has been deprecated since version 2.36; but
35  * RSVG doesn't define a version of its own to check against.  Since RSVG uses
36  * glib, we can check its version instead.
37  */
38 #if !GLIB_CHECK_VERSION (2, 31, 0)
39 #	define Frsvg_init()			rsvg_init()
40 #endif
41 
42 #if !GLIB_CHECK_VERSION(2,35,0)
43 #	define Frsvg_init()			g_type_init()
44 #endif
45 
46 #	define Fcairo_create(a)			cairo_create(a)
47 #	define Fcairo_destroy(a)		cairo_destroy(a)
48 #	define Fcairo_image_surface_create_for_data(a,b,c,d,e) \
49  			cairo_image_surface_create_for_data(a,b,c,d,e)
50 #	define Fcairo_rotate(a, b)		cairo_rotate(a, b)
51 #	define Fcairo_scale(a, b, c)		cairo_scale(a, b, c)
52 #	define Fcairo_status(a)			cairo_status(a)
53 #	define Fcairo_surface_destroy(a)	cairo_surface_destroy(a)
54 #	define Fcairo_surface_status(a)		cairo_surface_status(a)
55 #	define Fcairo_translate(a, b, c)	cairo_translate(a, b, c)
56 #else
57 	typedef struct {
58 		int width;
59 		int height;
60 		double em;
61 		double ex;
62 	} FRsvgDimensionData;
63 	typedef void FRsvgHandle;
64 	typedef void Fcairo_surface_t;
65 	typedef void Fcairo_t;
66 
67 #	define FCAIRO_FORMAT_ARGB32 0
68 #	define FCAIRO_STATUS_SUCCESS 0
69 
70 #	define FG_OBJECT(a)
71 #	define Fg_object_unref(a)
72 #	define Frsvg_handle_get_dimensions(a, b)
73 #	define Frsvg_handle_new_from_file(a, b)	0
74 #	define Frsvg_handle_render_cairo(a, b)
75 #	define Frsvg_init()
76 
77 #	define Fcairo_create(a)	0
78 #	define Fcairo_destroy(a)
79 #	define Fcairo_image_surface_create_for_data(a,b,c,d,e) 0
80 #	define Fcairo_rotate(a, b)
81 #	define Fcairo_scale(a, b, c)
82 #	define Fcairo_status(a) 0
83 #	define Fcairo_surface_destroy(a)
84 #	define Fcairo_surface_status(a) 0
85 #	define Fcairo_translate(a, b, c)
86 #endif
87 
88 #endif /* FSVG_H */
89