2015-05-14 08:43:25 -05:00
// 6 april 2015
2016-12-03 10:31:11 -06:00
2017-01-20 02:24:06 -06:00
// this must go outside other extern "C" blocks, otherwise we'll get double-declaration errors
# include "utf.h"
2015-11-17 18:18:55 -06:00
# ifdef __cplusplus
extern " C " {
# endif
2016-05-13 19:20:15 -05:00
# include <stdarg.h>
2017-01-17 12:05:40 -06:00
# include <string.h>
2016-04-24 14:46:29 -05:00
# include "controlsigs.h"
2015-05-14 08:43:25 -05:00
extern uiInitOptions options ;
extern void * uiAlloc ( size_t , const char * ) ;
# define uiNew(T) ((T *) uiAlloc(sizeof (T), #T))
extern void * uiRealloc ( void * , size_t , const char * ) ;
extern void uiFree ( void * ) ;
2016-05-13 22:29:41 -05:00
// ugh, this was only introduced in MSVC 2015...
# ifdef _MSC_VER
# define __func__ __FUNCTION__
# endif
2016-05-13 19:20:15 -05:00
extern void realbug ( const char * file , const char * line , const char * func , const char * prefix , const char * format , va_list ap ) ;
2016-05-13 19:14:46 -05:00
# define _ns2(s) #s
# define _ns(s) _ns2(s)
2016-05-13 17:27:08 -05:00
extern void _implbug ( const char * file , const char * line , const char * func , const char * format , . . . ) ;
2016-05-13 19:14:46 -05:00
# define implbug(...) _implbug(__FILE__, _ns(__LINE__), __func__, __VA_ARGS__)
2016-05-13 17:27:08 -05:00
extern void _userbug ( const char * file , const char * line , const char * func , const char * format , . . . ) ;
2016-05-13 20:00:12 -05:00
# define userbug(...) _userbug(__FILE__, _ns(__LINE__), __func__, __VA_ARGS__)
2015-05-14 08:43:25 -05:00
2016-04-24 15:14:19 -05:00
// control.c
2016-04-24 16:38:48 -05:00
extern uiControl * newControl ( size_t size , uint32_t OSsig , uint32_t typesig , const char * typenamestr ) ;
2016-04-24 15:14:19 -05:00
2015-05-14 08:43:25 -05:00
// shouldquit.c
2015-05-29 13:56:11 -05:00
extern int shouldQuit ( void ) ;
2015-10-08 17:24:09 -05:00
// areaevents.c
typedef struct clickCounter clickCounter ;
// you should call Reset() to zero-initialize a new instance
// it doesn't matter that all the non-count fields are zero: the first click will fail the curButton test straightaway, so it'll return 1 and set the rest of the structure accordingly
struct clickCounter {
2016-06-13 20:37:50 -05:00
int curButton ;
int rectX0 ;
int rectY0 ;
int rectX1 ;
int rectY1 ;
2015-10-08 17:24:09 -05:00
uintptr_t prevTime ;
2016-06-13 20:37:50 -05:00
int count ;
2015-10-08 17:24:09 -05:00
} ;
2016-06-13 20:38:48 -05:00
int clickCounterClick ( clickCounter * c , int button , int x , int y , uintptr_t time , uintptr_t maxTime , int32_t xdist , int32_t ydist ) ;
2015-10-08 17:24:09 -05:00
extern void clickCounterReset ( clickCounter * ) ;
extern int fromScancode ( uintptr_t , uiAreaKeyEvent * ) ;
2015-10-11 10:13:01 -05:00
// matrix.c
2015-10-12 06:58:07 -05:00
extern void fallbackSkew ( uiDrawMatrix * , double , double , double , double ) ;
2015-10-12 00:43:12 -05:00
extern void scaleCenter ( double , double , double * , double * ) ;
2015-10-11 11:36:48 -05:00
extern void fallbackTransformSize ( uiDrawMatrix * , double * , double * ) ;
2015-11-17 18:18:55 -06:00
# ifdef __cplusplus
}
# endif