summaryrefslogtreecommitdiff
path: root/src/cairo-xlib-xrender-private.h
diff options
context:
space:
mode:
authorDamian Frank <damianf@ubuntu-vm.(none)>2009-08-14 11:35:55 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2009-08-29 17:10:05 +0100
commit06ca0b1475caf709fdf32b10a891dfb3b47cc6b1 (patch)
tree0e160a01520411e1590f18485d7f9331513e3219 /src/cairo-xlib-xrender-private.h
parent17ef949b6aaa812dd566f1db016055f8e1913320 (diff)
downloadcairo-06ca0b1475caf709fdf32b10a891dfb3b47cc6b1.tar.gz
Fix build on systems with older Xrender headers.
This patch revises xlib so that it doesn't depend on having recent Xrender headers to build. In particular, some definitions were added to the private xrender header file, and an ifdef render version check CAIRO_SURFACE_RENDER_SUPPORTS_OPERATOR was changed to a run-time check using CAIRO_SURFACE_RENDER_HAS_PDF_OPERATORS.
Diffstat (limited to 'src/cairo-xlib-xrender-private.h')
-rw-r--r--src/cairo-xlib-xrender-private.h90
1 files changed, 82 insertions, 8 deletions
diff --git a/src/cairo-xlib-xrender-private.h b/src/cairo-xlib-xrender-private.h
index eee585cc4..63a0ecbdc 100644
--- a/src/cairo-xlib-xrender-private.h
+++ b/src/cairo-xlib-xrender-private.h
@@ -45,6 +45,16 @@
#include <X11/extensions/Xrender.h>
#include <X11/extensions/renderproto.h>
+/* These prototypes are used when defining interfaces missing from the
+ * render headers. As it happens, it is the case that all libxrender
+ * functions take a pointer as first argument. */
+
+__attribute__((__unused__)) static void _void_consume (void *p, ...) { }
+__attribute__((__unused__)) static void * _voidp_consume (void *p, ...) { return (void *)0; }
+__attribute__((__unused__)) static int _int_consume (void *p, ...) { return 0; }
+__attribute__((__unused__)) static void _void_consume_free (Display *p, XID n) { }
+
+
/* We require Render >= 0.6. The following defines were only added in
* 0.10. Make sure they are defined.
*/
@@ -63,6 +73,57 @@
#endif
+#ifndef PictOptBlendMinimum
+/*
+ * Operators only available in version 0.11
+ */
+#define PictOpBlendMinimum 0x30
+#define PictOpMultiply 0x30
+#define PictOpScreen 0x31
+#define PictOpOverlay 0x32
+#define PictOpDarken 0x33
+#define PictOpLighten 0x34
+#define PictOpColorDodge 0x35
+#define PictOpColorBurn 0x36
+#define PictOpHardLight 0x37
+#define PictOpSoftLight 0x38
+#define PictOpDifference 0x39
+#define PictOpExclusion 0x3a
+#define PictOpHSLHue 0x3b
+#define PictOpHSLSaturation 0x3c
+#define PictOpHSLColor 0x3d
+#define PictOpHSLLuminosity 0x3e
+#define PictOpBlendMaximum 0x3e
+#endif
+
+/* There doesn't appear to be a simple #define that we can conditionalize
+ * on. Instead, use the version; gradients were introdiced in 0.10. */
+#if RENDER_MAJOR == 0 && RENDER_MINOR < 10
+#define XRenderCreateLinearGradient _int_consume
+#define XRenderCreateRadialGradient _int_consume
+#define XRenderCreateConicalGradient _int_consume
+typedef struct _XCircle {
+ XFixed x;
+ XFixed y;
+ XFixed radius;
+} XCircle;
+typedef struct _XLinearGradient {
+ XPointFixed p1;
+ XPointFixed p2;
+} XLinearGradient;
+
+typedef struct _XRadialGradient {
+ XCircle inner;
+ XCircle outer;
+} XRadialGradient;
+
+typedef struct _XConicalGradient {
+ XPointFixed center;
+ XFixed angle; /* in degrees */
+} XConicalGradient;
+#endif
+
+
#else /* !CAIRO_HAS_XLIB_XRENDER_SURFACE */
/* Provide dummy symbols and macros to get it compile and take the fallback
@@ -71,14 +132,6 @@
/* Functions */
-/* As it happens, it is the case that, all libxrender functions
- * take a pointer as first argument */
-
-__attribute__((__unused__)) static void _void_consume (void *p, ...) { }
-__attribute__((__unused__)) static void * _voidp_consume (void *p, ...) { return (void *)0; }
-__attribute__((__unused__)) static int _int_consume (void *p, ...) { return 0; }
-__attribute__((__unused__)) static void _void_consume_free (Display *p, XID n) { }
-
#define XRenderQueryExtension _int_consume
#define XRenderQueryVersion _int_consume
#define XRenderQueryFormats _int_consume
@@ -221,6 +274,27 @@ typedef unsigned long PictFormat;
#define PictOpConjointXor 0x2b
#define PictOpConjointMaximum 0x2b
+/*
+ * Operators only available in version 0.11
+ */
+#define PictOpBlendMinimum 0x30
+#define PictOpMultiply 0x30
+#define PictOpScreen 0x31
+#define PictOpOverlay 0x32
+#define PictOpDarken 0x33
+#define PictOpLighten 0x34
+#define PictOpColorDodge 0x35
+#define PictOpColorBurn 0x36
+#define PictOpHardLight 0x37
+#define PictOpSoftLight 0x38
+#define PictOpDifference 0x39
+#define PictOpExclusion 0x3a
+#define PictOpHSLHue 0x3b
+#define PictOpHSLSaturation 0x3c
+#define PictOpHSLColor 0x3d
+#define PictOpHSLLuminosity 0x3e
+#define PictOpBlendMaximum 0x3e
+
#define PolyEdgeSharp 0
#define PolyEdgeSmooth 1