Blame src/gdhelpers.h

Packit Service df60bb
#ifdef __cplusplus
Packit Service df60bb
extern "C" {
Packit Service df60bb
#endif
Packit Service df60bb
Packit Service df60bb
#ifndef GDHELPERS_H
Packit Service df60bb
#define GDHELPERS_H 1
Packit Service df60bb
Packit Service df60bb
	/* sys/types.h is needed for size_t on Sparc-SunOS-4.1 */
Packit Service df60bb
#ifndef _WIN32_WCE
Packit Service df60bb
#include <sys/types.h>
Packit Service df60bb
#else
Packit Service df60bb
#include <stdlib.h>
Packit Service df60bb
#endif /* _WIN32_WCE */
Packit Service df60bb
Packit Service df60bb
	/* TBB: strtok_r is not universal; provide an implementation of it. */
Packit Service df60bb
Packit Service df60bb
	char * gd_strtok_r (char *s, char *sep, char **state);
Packit Service df60bb
Packit Service df60bb
	/* These functions wrap memory management. gdFree is
Packit Service df60bb
		in gd.h, where callers can utilize it to correctly
Packit Service df60bb
		free memory allocated by these functions with the
Packit Service df60bb
		right version of free(). */
Packit Service df60bb
	void *gdCalloc (size_t nmemb, size_t size);
Packit Service df60bb
	void *gdMalloc (size_t size);
Packit Service df60bb
	void *gdRealloc (void *ptr, size_t size);
Packit Service df60bb
	/* The extended version of gdReallocEx will free *ptr if the
Packit Service df60bb
	 * realloc fails */
Packit Service df60bb
	void *gdReallocEx (void *ptr, size_t size);
Packit Service df60bb
Packit Service df60bb
	/* Returns nonzero if multiplying the two quantities will
Packit Service df60bb
		result in integer overflow. Also returns nonzero if
Packit Service df60bb
		either quantity is negative. By Phil Knirsch based on
Packit Service df60bb
		netpbm fixes by Alan Cox. */
Packit Service df60bb
Packit Service df60bb
	int overflow2(int a, int b);
Packit Service df60bb
Packit Service df60bb
	/* 2.0.16: portable mutex support for thread safety. */
Packit Service df60bb
#if defined(CPP_SHARP)
Packit Service df60bb
# define gdMutexDeclare(x)
Packit Service df60bb
# define gdMutexSetup(x)
Packit Service df60bb
# define gdMutexShutdown(x)
Packit Service df60bb
# define gdMutexLock(x)
Packit Service df60bb
# define gdMutexUnlock(x)
Packit Service df60bb
#elif defined(_WIN32)
Packit Service df60bb
	/* 2.0.18: must include windows.h to get CRITICAL_SECTION. */
Packit Service df60bb
# include <windows.h>
Packit Service df60bb
# define gdMutexDeclare(x) CRITICAL_SECTION x
Packit Service df60bb
# define gdMutexSetup(x) InitializeCriticalSection(&x)
Packit Service df60bb
# define gdMutexShutdown(x) DeleteCriticalSection(&x)
Packit Service df60bb
# define gdMutexLock(x) EnterCriticalSection(&x)
Packit Service df60bb
# define gdMutexUnlock(x) LeaveCriticalSection(&x)
Packit Service df60bb
#elif defined(HAVE_PTHREAD)
Packit Service df60bb
# include <pthread.h>
Packit Service df60bb
# define gdMutexDeclare(x) pthread_mutex_t x
Packit Service df60bb
# define gdMutexSetup(x) pthread_mutex_init(&x, 0)
Packit Service df60bb
# define gdMutexShutdown(x) pthread_mutex_destroy(&x)
Packit Service df60bb
# define gdMutexLock(x) pthread_mutex_lock(&x)
Packit Service df60bb
# define gdMutexUnlock(x) pthread_mutex_unlock(&x)
Packit Service df60bb
#else
Packit Service df60bb
# define gdMutexDeclare(x)
Packit Service df60bb
# define gdMutexSetup(x)
Packit Service df60bb
# define gdMutexShutdown(x)
Packit Service df60bb
# define gdMutexLock(x)
Packit Service df60bb
# define gdMutexUnlock(x)
Packit Service df60bb
#endif /* _WIN32 || HAVE_PTHREAD */
Packit Service df60bb
Packit Service df60bb
#define DPCM2DPI(dpcm) (unsigned int)((dpcm)*2.54 + 0.5)
Packit Service df60bb
#define DPM2DPI(dpm)   (unsigned int)((dpm)*0.0254 + 0.5)
Packit Service df60bb
#define DPI2DPCM(dpi)  (unsigned int)((dpi)/2.54 + 0.5)
Packit Service df60bb
#define DPI2DPM(dpi)   (unsigned int)((dpi)/0.0254 + 0.5)
Packit Service df60bb
Packit Service df60bb
#endif /* GDHELPERS_H */
Packit Service df60bb
Packit Service df60bb
#ifdef __cplusplus
Packit Service df60bb
}
Packit Service df60bb
#endif