1 /* cairo - a vector graphics library with display and print output
3 * Copyright © 2002 University of Southern California
4 * Copyright © 2005 Red Hat, Inc.
6 * This library is free software; you can redistribute it and/or
7 * modify it either under the terms of the GNU Lesser General Public
8 * License version 2.1 as published by the Free Software Foundation
9 * (the "LGPL") or, at your option, under the terms of the Mozilla
10 * Public License Version 1.1 (the "MPL"). If you do not alter this
11 * notice, a recipient may use your version of this file under either
12 * the MPL or the LGPL.
14 * You should have received a copy of the LGPL along with this library
15 * in the file COPYING-LGPL-2.1; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 * You should have received a copy of the MPL along with this library
18 * in the file COPYING-MPL-1.1
20 * The contents of this file are subject to the Mozilla Public License
21 * Version 1.1 (the "License"); you may not use this file except in
22 * compliance with the License. You may obtain a copy of the License at
23 * http://www.mozilla.org/MPL/
25 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
26 * OF ANY KIND, either express or implied. See the LGPL or the MPL for
27 * the specific language governing rights and limitations.
29 * The Original Code is the cairo graphics library.
31 * The Initial Developer of the Original Code is University of Southern
35 * Carl D. Worth <cworth@cworth.org>
39 * These definitions are solely for use by the implementation of cairo
40 * and constitute no kind of standard. If you need any of these
41 * functions, please drop me a note. Either the library needs new
42 * functionality, or there's a way to do what you need using the
43 * existing published interfaces. cworth@cworth.org
54 #define borast_public __declspec(dllexport)
64 #define _USE_MATH_DEFINES
70 #include "borast-minimal.h"
72 #include "borast-compiler-private.h"
76 #if _WIN32 && !_WIN32_WCE /* Permissions on WinCE? No worries! */
78 _borast_win32_tmpfile (void);
79 #define tmpfile() _borast_win32_tmpfile()
83 #define MIN(a, b) ((a) < (b) ? (a) : (b))
86 #define MAX(a, b) ((a) > (b) ? (a) : (b))
97 #define M_PI 3.14159265358979323846
101 #define M_SQRT2 1.41421356237309504880
105 #define M_SQRT1_2 0.707106781186547524400844362104849039
109 #define ARRAY_LENGTH(__array) ((int) (sizeof (__array) / sizeof (__array[0])))
113 #define STRINGIFY(macro_or_string) STRINGIFY_ARG (macro_or_string)
114 #define STRINGIFY_ARG(contents) #contents
116 #if defined (__GNUC__)
117 #define borast_container_of(ptr, type, member) ({ \
118 const __typeof__ (((type *) 0)->member) *mptr__ = (ptr); \
119 (type *) ((char *) mptr__ - offsetof (type, member)); \
122 #define borast_container_of(ptr, type, member) \
123 (type *)((char *) (ptr) - (char *) &((type *)0)->member)
127 /* Size in bytes of buffer to use off the stack per functions.
128 * Mostly used by text functions. For larger allocations, they'll
130 #ifndef BORAST_STACK_BUFFER_SIZE
131 #define BORAST_STACK_BUFFER_SIZE (512 * sizeof (int))
134 #define BORAST_STACK_ARRAY_LENGTH(T) (BORAST_STACK_BUFFER_SIZE / sizeof(T))
137 #include "borast-types-private.h"
140 # include <memcheck.h>