diff options
author | Määttä Antti <antti.maatta@qt.io> | 2017-10-30 09:49:41 +0200 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2017-10-31 13:27:10 +0000 |
commit | 068784ead581f690c3677e29971b0e35489c5bdc (patch) | |
tree | 9debbffb147488059dfc3afc22a40ccb80c80188 | |
parent | e5c9fd87536e74146d82a494c15af865b9216660 (diff) |
Remove OpenKODE
Also remove unused functionality.
Task-number: QT3DS-14
Change-Id: I989dd321e0a885cc655a48ab22844718614caffa
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
49 files changed, 86 insertions, 10006 deletions
diff --git a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/MinKD.c b/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/MinKD.c deleted file mode 100644 index a96752bf..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/MinKD.c +++ /dev/null @@ -1,317 +0,0 @@ -#include "kd.h" -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <memory.h> -#include <pthread.h> -#include <dirent.h> - - -KDFile* kdFopen(const KDchar* pathname, const KDchar* mode) -{ - FILE* retval; - retval = fopen( pathname, mode ); - return (KDFile*)retval; -} - - -KDsize kdFread(void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fread( buffer, size, count, (FILE*)file ); -} - -/* kdFwrite: Write to a file. */ -KDsize kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fwrite( buffer, size, count, (FILE*)file ); -} - -KDint kdFclose(KDFile *file) -{ - return fclose( (FILE*)file ); -} - -/* kdCosf: Cosine function. */ -KDfloat32 kdCosf(KDfloat32 x) { return cosf( x ); } - -/* kdSinf: Sine function. */ -KDfloat32 kdSinf(KDfloat32 x) { return sinf( x ); } - -KDfloat32 kdSqrtf(KDfloat32 x ) { return sqrtf( x ); } - -KDfloat32 kdTanf( KDfloat32 x ) { return tanf( x ); } - -KDint kdAbs(KDint i) -{ - return i < 0 ? -i : i; -} - - -KDfloat32 kdFabsf(KDfloat32 i) { return fabs( i ); } - -/* kdStrcpy_s: Copy a string with an overrun check. */ - -KDint kdStrcpy_s(KDchar* buf, KDsize buflen, const KDchar* src) -{ - return kdStrncpy_s(buf, buflen, src, -1); -} - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KDint kdStrncpy_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srclen) -{ - if ( srclen == (KDsize)-1) - srclen = buflen; - const char* term = memchr(src, 0, srclen); - if (term) - srclen = term - src; - if (srclen >= buflen) { - if (buflen) - *buf = 0; - return KD_EINVAL; - } - memcpy(buf, src, srclen); - buf[srclen] = 0; - return 0; -} - -/* kdStrncat_s: Concatenate two strings. */ -KDint kdStrncat_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srcmaxlen) -{ - size_t origlen = strlen(buf); - const char* p = memchr(src, 0, srcmaxlen); - if (p) - srcmaxlen = p - src; - if (origlen + srcmaxlen >= buflen) - { - /* spec says "buf[0] is set to 0". But that's bad if buflen == 0! - * kdStrncpy_s's spec is better here. */ - if (buflen) - buf[0] = 0; - return KD_ERANGE; - } - memcpy(buf + origlen, src, srcmaxlen); - buf[origlen + srcmaxlen] = 0; - return 0; -} -/* kdMemset: Set bytes in memory to a value. */ -void* kdMemset(void *buf, KDint byte, KDsize len) { return memset( buf, byte, len ); } - -/* kdStrcmp: Compares two strings. */ -KDint kdStrcmp(const KDchar *str1, const KDchar *str2) { return strcmp( str1, str2); } - -/* kdStrlen: Determine the length of a string. */ -KDsize kdStrlen(const KDchar *str) { return strlen( str ); } - -void* kdMalloc( KDsize size ) { return malloc(size); } - -void kdFree( void* ptr ) { free( ptr ); } - -void* kdMemcpy(void *buf, const void *src, KDsize len) { return memcpy( buf, src, len ); } - -struct KDThreadMutex -{ - pthread_mutex_t p_mutex; -}; - -/* kdThreadMutexCreate: Create a mutex. */ -KD_API KDThreadMutex* kdThreadMutexCreate(const void *mutexattr) -{ - KDThreadMutex* mutex = malloc(sizeof(KDThreadMutex)); - if (mutex) - { - if (pthread_mutex_init(&mutex->p_mutex, NULL) == 0) - { - return mutex; - } - free(mutex); - } - - return KD_NULL; -} - -/* kdThreadMutexFree: Free a mutex. */ -KDint kdThreadMutexFree(KDThreadMutex *mutex) -{ - int res; - res = pthread_mutex_destroy(&mutex->p_mutex); - // If the mutex destroy failed, don't free the memory. - // Per OpenKODE spec, this is undefined behaviour, and - // we can leak the memory. The reason for this is that - // later allocations may fail if they happen to go - // to the same memory - if (!res) - free(mutex); - return 0; -} - -/* kdThreadMutexLock: Lock a mutex. */ -KDint kdThreadMutexLock(KDThreadMutex *mutex) -{ - (void)pthread_mutex_lock(&mutex->p_mutex); - return 0; -} - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KDint kdThreadMutexUnlock(KDThreadMutex *mutex) -{ - pthread_mutex_unlock(&mutex->p_mutex); - return 0; -} - -struct KDThreadAttr -{ - pthread_attr_t p_attr; -}; - -struct KDThread -{ - pthread_t Handle; - uint8_t Detached; - uint8_t IsRunning; - uint8_t UserThread; - void* (*UserThreadProc)(void*); - void* UserArg; -}; -/* kdThreadCreate: Create a new thread. */ -KDThread * kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg) -{ - pthread_t thread; - int retval; - const pthread_attr_t* p_attr; - if ( attr ) - p_attr = &attr->p_attr; - else - p_attr = KD_NULL; - - retval = pthread_create( &thread, p_attr, start_routine, arg ); - if ( retval != 0 ) - { - return KD_NULL; - } - KDThread* newThread = (KDThread*)malloc( sizeof( KDThread ) ); - if ( newThread == KD_NULL ) return KD_NULL; - newThread->Handle = thread; - newThread->Detached = 0; - newThread->IsRunning = 1; - newThread->UserThread = 1; - newThread->UserThreadProc = start_routine; - newThread->UserArg = arg; - return newThread; -} - -/* kdThreadExit: Terminate this thread. */ -void kdThreadExit(void *retval) -{ - pthread_exit( retval ); -} - -/* kdThreadJoin: Wait for termination of another thread. */ -KDint kdThreadJoin(KDThread *thread, void **retval) -{ - int join_retval; - join_retval = pthread_join( thread->Handle, retval ); - if ( join_retval == 0 ) free( thread ); - return join_retval; -} - -typedef struct KDDirInternal { - DIR *dir; - KDDirent ent; -} KDDirInternal; - -/* kdOpenDir: Open a directory ready for listing. */ -KDDir *kdOpenDir(const KDchar *pathname) -{ - DIR* dir = opendir( pathname ); - if ( dir == KD_NULL ) return KD_NULL; - KDDirInternal* retval = (KDDirInternal*)malloc( sizeof( KDDirInternal )); - if ( retval == KD_NULL ) return KD_NULL; - memset( retval, 0, sizeof( *retval ) ); - retval->dir = dir; - return (KDDir*)retval; -} - -/* kdReadDir: Return the next file in a directory. */ -KDDirent* kdReadDir(KDDir *dir) -{ - struct dirent *sysDirEnt; - KDDirent *dirent = NULL; - - sysDirEnt = readdir(((KDDirInternal *)dir)->dir); - - if (sysDirEnt) { - dirent = &((KDDirInternal *)dir)->ent; - dirent->d_name = sysDirEnt->d_name; - } - return dirent; -} - -/* kdCloseDir: Close a directory. */ -KDint kdCloseDir(KDDir *dir) -{ - closedir(((KDDirInternal *)dir)->dir); - free(dir); - return 0; -} - -KDint kdSetWindowPropertyiv(KDWindow * win, KDint prop, const KDint32 * val) -{ - return 0; -} - -void kdDefaultEvent(const KDEvent *event ) -{ - -} - -typedef long long NvS64; - -KDust kdGetTimeUST(void) -{ - struct timespec tp; - clock_gettime(CLOCK_MONOTONIC, &tp); - - return (NvS64)tp.tv_sec * (NvS64)1000000000 + - (NvS64)tp.tv_nsec; -} - -static KDTm* gmlocaltime( - const KDtime *timep, - KDTm *result, - struct tm* (* func)(const time_t* timep, struct tm* result)) -{ - struct tm tm; - time_t t = *timep; - (*func)(&t, &tm); - result->tm_sec = tm.tm_sec; - result->tm_min = tm.tm_min; - result->tm_hour = tm.tm_hour; - result->tm_mday = tm.tm_mday; - result->tm_mon = tm.tm_mon; - result->tm_year = tm.tm_year; - result->tm_wday = tm.tm_wday; - result->tm_yday = tm.tm_yday; - return result; -} - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -KDTm* kdGmtime_r(const KDtime* timep, KDTm* result) -{ - return gmlocaltime(timep, result, &gmtime_r); -} - -KDTm* kdLocaltime_r(const KDtime* timep, KDTm* result) -{ - return gmlocaltime(timep, result, &localtime_r); -} - -//=========================================================================== -// kdCreateEvent: Create an event for posting. -//=========================================================================== -KDEvent* kdCreateEvent(void) -{ - //Memory leak and there isn't much I am going to do about this now - KDEvent* newEvent = (KDEvent*)malloc( sizeof( KDEvent )); - memset( newEvent, 0, sizeof( KDEvent )); - return newEvent; -} diff --git a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/Qt3DS_extwindowprops.h b/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/Qt3DS_extwindowprops.h deleted file mode 100644 index 4428a568..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/Qt3DS_extwindowprops.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_extwindowprops_h_ -#define __kd_QT3DS_extwindowprops_h_ -#include <KD/kd.h> -#include <EGL/eglext.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_WINDOWPROPERTY_FULLSCREEN: Control over resizing a window to fill the complete screen */ - -// KDboolean - set the window to fullscreen mode -#define KD_WINDOWPROPERTY_FULLSCREEN_QT3DS 9999 - -// KDint - set which KD_DISPLAY_* display that the window should be opened on -#define KD_WINDOWPROPERTY_DISPLAY_QT3DS 9998 - -// KDboolean - sets whether overlay should be used to create window -#define KD_WINDOWPROPERTY_OVERLAY_QT3DS 9997 - -#define KD_DISPLAY_PRIMARY_QT3DS 0 -#define KD_DISPLAY_INTERNAL0_QT3DS 0 -#define KD_DISPLAY_INTERNAL1_QT3DS 1 -#define KD_DISPLAY_INTERNAL2_QT3DS 2 -#define KD_DISPLAY_INTERNAL3_QT3DS 3 -#define KD_DISPLAY_EXTERNAL0_QT3DS 1000 -#define KD_DISPLAY_EXTERNAL1_QT3DS 1001 -#define KD_DISPLAY_EXTERNAL2_QT3DS 1002 -#define KD_DISPLAY_EXTERNAL3_QT3DS 1003 - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_extwindowprops_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/Qt3DS_multitouch.h b/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/Qt3DS_multitouch.h deleted file mode 100644 index e230b029..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/Qt3DS_multitouch.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_multitouch_h_ -#define __kd_QT3DS_multitouch_h_ -#include <KD/kd.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_IOGROUP_MULTITOUCH: I/O group for Multitouch input devices. */ -#define KD_IOGROUP_MULTITOUCH_QT3DS 0x40004000 -#define KD_STATE_MULTITOUCH_AVAILABILITY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 0) -#define KD_INPUT_MULTITOUCH_FINGERS_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 1) -#define KD_INPUT_MULTITOUCH_WIDTH_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 2) -#define KD_INPUT_MULTITOUCH_X_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 3) -#define KD_INPUT_MULTITOUCH_Y_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 4) -#define KD_INPUT_MULTITOUCH_X2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 5) -#define KD_INPUT_MULTITOUCH_Y2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 6) -#define KD_INPUT_MULTITOUCH_PRESSURE_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 7) -#define KD_INPUT_MULTITOUCH_GESTURES_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 8) -#define KD_INPUT_MULTITOUCH_RELX_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 9) -#define KD_INPUT_MULTITOUCH_RELY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 10) - -/* KD_EVENT_INPUT_MULTITOUCH_QT3DS: Multitouch event. */ -#define KD_EVENT_INPUT_MULTITOUCH_QT3DS 1001 -typedef struct KDEventInputMultitouchDataNV -{ - KDint32 index; - KDint8 fingers; - KDint8 width; - KDint16 x; - KDint16 y; - KDint16 x2; - KDint16 y2; - KDint16 pressure; -} KDEventInputMultitouchDataNV; - -/* KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS: Multitouch gesture event. */ -#define KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS 1002 - -/* kdGetEventInputMultitouchDataNV: Get auxiliary event data for multitouch input. */ -KD_API KDint KD_APIENTRY kdGetEventInputMultitouchDataNV(const KDEvent *event, - KDEventInputMultitouchDataNV *data); - -/* kdSetEventInputMultitouchActiveNV: Activate Multitouch input events */ -KD_API KDint KD_APIENTRY kdSetEventInputMultitouchActiveNV(KDboolean activate); - -/* kdEnableEventInputMultitouchMergeNV: Activate merging of Multitouch input events */ -KD_API void KD_APIENTRY kdEnableEventInputMultitouchMergeNV(KDboolean enable); - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_multitouch_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/kd.h b/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/kd.h deleted file mode 100644 index f7ccea03..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/kd.h +++ /dev/null @@ -1,991 +0,0 @@ -/* Reference KD/kd.h for OpenKODE Core 1.0.3 */ -#ifndef __kd_h_ -#define __kd_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "kdplatform.h" - - - -/******************************************************* - * Introduction - *******************************************************/ - -/******************************************************* - * OpenKODE conformance - *******************************************************/ - -/******************************************************* - * Overview - *******************************************************/ - -/******************************************************* - * Programming environment - *******************************************************/ -#define KD_VERSION_1_0 1 -typedef char KDchar; -typedef signed char KDint8; -typedef unsigned char KDuint8; -typedef int KDint; -typedef unsigned int KDuint; -typedef float KDfloat32; -typedef KDint KDboolean; -typedef KDint64 KDtime; -typedef KDint64 KDust; -typedef KDint64 KDoff; -typedef KDuint32 KDmode; -#define KDINT32_MIN (-0x7fffffff-1) -#define KDINT32_MAX 0x7fffffff -#define KDUINT32_MAX 0xffffffffU -#define KD_TRUE 1 -#define KD_FALSE 0 -#ifdef __cplusplus - const int KD_NULL = 0; /* Yes, int. See Stroustrup 3rd edition. */ -#else - #define KD_NULL ((void *)0) -#endif - -/******************************************************* - * Errors - *******************************************************/ -#define KD_EACCES 1 -#define KD_EADDRINUSE 2 -#define KD_EADDRNOTAVAIL 3 -#define KD_EAFNOSUPPORT 4 -#define KD_EAGAIN (5) -#define KD_EALREADY 6 -#define KD_EBADF 7 -#define KD_EBUSY 8 -#define KD_ECONNREFUSED 9 -#define KD_ECONNRESET 10 -#define KD_EDEADLK 11 -#define KD_EDESTADDRREQ 12 -#define KD_EEXIST 13 -#define KD_EFBIG 14 -#define KD_EHOSTUNREACH 15 -#define KD_EHOST_NOT_FOUND 16 -#define KD_EINVAL 17 -#define KD_EIO 18 -#define KD_EILSEQ 19 -#define KD_EISCONN 20 -#define KD_EISDIR 21 -#define KD_EMFILE 22 -#define KD_ENAMETOOLONG 23 -#define KD_ENOENT 24 -#define KD_ENOMEM 25 -#define KD_ENOSPC 26 -#define KD_ENOSYS 27 -#define KD_ENOTCONN 28 -#define KD_ENO_DATA 29 -#define KD_ENO_RECOVERY 30 -#define KD_EOPNOTSUPP 31 -#define KD_EOVERFLOW 32 -#define KD_EPERM 33 -#define KD_ERANGE 35 -#define KD_ETIMEDOUT (36) -#define KD_ETRY_AGAIN 37 - -/* kdGetError: Get last error indication. */ -KD_API KDint KD_APIENTRY kdGetError(void); - -/* kdSetError: Set last error indication. */ -KD_API void KD_APIENTRY kdSetError(KDint error); - -/******************************************************* - * Versioning and attribute queries - *******************************************************/ - -/* kdQueryAttribi: Obtain the value of a numeric OpenKODE Core attribute. */ -KD_API KDint KD_APIENTRY kdQueryAttribi(KDint attribute, KDint *value); - -/* kdQueryAttribcv: Obtain the value of a string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryAttribcv(KDint attribute); -#define KD_ATTRIB_VENDOR 39 -#define KD_ATTRIB_VERSION 40 -#define KD_ATTRIB_PLATFORM 41 - -/* kdQueryIndexedAttribcv: Obtain the value of an indexed string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryIndexedAttribcv(KDint attribute, KDint index); - -/******************************************************* - * Threads and synchronization - *******************************************************/ - -/* kdThreadAttrCreate: Create a thread attribute object. */ -typedef struct KDThreadAttr KDThreadAttr; -KD_API KDThreadAttr *KD_APIENTRY kdThreadAttrCreate(void); - -/* kdThreadAttrFree: Free a thread attribute object. */ -KD_API KDint KD_APIENTRY kdThreadAttrFree(KDThreadAttr *attr); - -/* kdThreadAttrSetDetachState: Set detachstate attribute. */ -#define KD_THREAD_CREATE_JOINABLE 0 -#define KD_THREAD_CREATE_DETACHED 1 -KD_API KDint KD_APIENTRY kdThreadAttrSetDetachState(KDThreadAttr *attr, KDint detachstate); - -/* kdThreadAttrSetStackSize: Set stacksize attribute. */ -KD_API KDint KD_APIENTRY kdThreadAttrSetStackSize(KDThreadAttr *attr, KDsize stacksize); - -/* kdThreadCreate: Create a new thread. */ -typedef struct KDThread KDThread; -KD_API KDThread *KD_APIENTRY kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg); - -/* kdThreadExit: Terminate this thread. */ -KD_API KD_NORETURN void KD_APIENTRY kdThreadExit(void *retval); - -/* kdThreadJoin: Wait for termination of another thread. */ -KD_API KDint KD_APIENTRY kdThreadJoin(KDThread *thread, void **retval); - -/* kdThreadDetach: Allow resources to be freed as soon as a thread terminates. */ -KD_API KDint KD_APIENTRY kdThreadDetach(KDThread *thread); - -/* kdThreadSelf: Return calling thread’s ID. */ -KD_API KDThread *KD_APIENTRY kdThreadSelf(void); - -/* kdThreadOnce: Wrap initialization code so it is executed only once. */ -#ifndef KD_NO_STATIC_DATA -typedef struct KDThreadOnce { - void *impl; -} KDThreadOnce; -#define KD_THREAD_ONCE_INIT { 0 } -KD_API KDint KD_APIENTRY kdThreadOnce(KDThreadOnce *once_control, void (*init_routine)(void)); -#endif /* ndef KD_NO_STATIC_DATA */ - -/* kdThreadMutexCreate: Create a mutex. */ -typedef struct KDThreadMutex KDThreadMutex; -KD_API KDThreadMutex *KD_APIENTRY kdThreadMutexCreate(const void *mutexattr); - -/* kdThreadMutexFree: Free a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexFree(KDThreadMutex *mutex); - -/* kdThreadMutexLock: Lock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexLock(KDThreadMutex *mutex); - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexUnlock(KDThreadMutex *mutex); - -/* kdThreadCondCreate: Create a condition variable. */ -typedef struct KDThreadCond KDThreadCond; -KD_API KDThreadCond *KD_APIENTRY kdThreadCondCreate(const void *attr); - -/* kdThreadCondFree: Free a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondFree(KDThreadCond *cond); - -/* kdThreadCondSignal, kdThreadCondBroadcast: Signal a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondSignal(KDThreadCond *cond); -KD_API KDint KD_APIENTRY kdThreadCondBroadcast(KDThreadCond *cond); - -/* kdThreadCondWait: Wait for a condition variable to be signalled. */ -KD_API KDint KD_APIENTRY kdThreadCondWait(KDThreadCond *cond, KDThreadMutex *mutex); - -/* kdThreadSemCreate: Create a semaphore. */ -typedef struct KDThreadSem KDThreadSem; -KD_API KDThreadSem *KD_APIENTRY kdThreadSemCreate(KDuint value); - -/* kdThreadSemFree: Free a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemFree(KDThreadSem *sem); - -/* kdThreadSemWait: Lock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemWait(KDThreadSem *sem); - -/* kdThreadSemPost: Unlock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemPost(KDThreadSem *sem); - -/******************************************************* - * Events - *******************************************************/ - -/* KDEvent: Struct type containing an event. */ -typedef struct KDEvent KDEvent; -#define KD_EVENT_USER 0x40000000 - -/* kdWaitEvent: Get next event from thread’s event queue. */ -KD_API const KDEvent *KD_APIENTRY kdWaitEvent(KDust timeout); - -/* kdSetEventUserptr: Set the userptr for global events. */ -KD_API void KD_APIENTRY kdSetEventUserptr(void *userptr); - -/* kdDefaultEvent: Perform default processing on an unrecognized event. */ -KD_API void KD_APIENTRY kdDefaultEvent(const KDEvent *event); - -/* kdPumpEvents: Pump the thread’s event queue, performing callbacks. */ -KD_API KDint KD_APIENTRY kdPumpEvents(void); - -/* kdInstallCallback: Install or remove a callback function for event processing. */ -typedef void (KD_APIENTRY KDCallbackFunc)(const KDEvent *event); -KD_API KDint KD_APIENTRY kdInstallCallback(KDCallbackFunc *func, KDint eventtype, void *eventuserptr); - -/* kdCreateEvent: Create an event for posting. */ -KD_API KDEvent *KD_APIENTRY kdCreateEvent(void); - -/* kdPostEvent, kdPostThreadEvent: Post an event into a queue. */ -KD_API KDint KD_APIENTRY kdPostEvent(KDEvent *event); -KD_API KDint KD_APIENTRY kdPostThreadEvent(KDEvent *event, KDThread *thread); -typedef struct KDEventUser { - union { - KDint64 i64; - void *p; - struct { - KDint32 a; - KDint32 b; - } i32pair; - } value1; - union { - KDint64 i64; - struct { - union { - KDint32 i32; - void *p; - } value2; - union { - KDint32 i32; - void *p; - } value3; - } i32orp; - } value23; -} KDEventUser; - -/* kdFreeEvent: Abandon an event instead of posting it. */ -KD_API void KD_APIENTRY kdFreeEvent(KDEvent *event); - -/******************************************************* - * System events - *******************************************************/ - -/* KD_EVENT_QUIT: Event to request to quit application. */ -#define KD_EVENT_QUIT 43 - -/* KD_EVENT_PAUSE: Application pause event. */ -#define KD_EVENT_PAUSE 45 - -/* KD_EVENT_RESUME: Application resume event. */ -#define KD_EVENT_RESUME 46 - -/* KD_EVENT_ORIENTATION: Orientation change event. */ -#define KD_EVENT_ORIENTATION 48 - -/* KD_IOGROUP_EVENT: I/O group for OpenKODE Core system events implemented as state values. */ -#define KD_IOGROUP_EVENT 0x100 -#define KD_STATE_EVENT_USING_BATTERY (KD_IOGROUP_EVENT + 0) -#define KD_STATE_EVENT_LOW_BATTERY (KD_IOGROUP_EVENT + 1) - - -/* KD_IOGROUP_ORIENTATION: I/O group for OpenKODE Core orientation state. */ -#define KD_IOGROUP_ORIENTATION 0x200 -#define KD_STATE_ORIENTATION_OVERALL (KD_IOGROUP_ORIENTATION + 0) -#define KD_STATE_ORIENTATION_SCREEN (KD_IOGROUP_ORIENTATION + 1) -#define KD_STATE_ORIENTATION_RENDERING (KD_IOGROUP_ORIENTATION + 2) -#define KD_STATE_ORIENTATION_LOCKSURFACE (KD_IOGROUP_ORIENTATION + 3) - - -/******************************************************* - * Application startup and exit. - *******************************************************/ - -/* kdMain: The application-defined main function. */ -KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv); - -/* kdExit: Exit the application. */ -KD_API KD_NORETURN void KD_APIENTRY kdExit(KDint status); - -/******************************************************* - * Utility library functions - *******************************************************/ - -/* kdAbs: Compute the absolute value of an integer. */ -KD_API KDint KD_APIENTRY kdAbs(KDint i); - -/* kdStrtof: Convert a string to a floating point number. */ -KD_API KDfloat32 KD_APIENTRY kdStrtof(const KDchar *s, KDchar **endptr); - -/* kdStrtol, kdStrtoul: Convert a string to an integer. */ -KD_API KDint KD_APIENTRY kdStrtol(const KDchar *s, KDchar **endptr, KDint base); -KD_API KDuint KD_APIENTRY kdStrtoul(const KDchar *s, KDchar **endptr, KDint base); - -/* kdLtostr, kdUltostr: Convert an integer to a string. */ -#define KD_LTOSTR_MAXLEN ((sizeof(KDint)*8*3+6)/10+2) -#define KD_ULTOSTR_MAXLEN ((sizeof(KDint)*8+2)/3+1) -KD_API KDssize KD_APIENTRY kdLtostr(KDchar *buffer, KDsize buflen, KDint number); -KD_API KDssize KD_APIENTRY kdUltostr(KDchar *buffer, KDsize buflen, KDuint number, KDint base); - -/* kdFtostr: Convert a float to a string. */ -#define KD_FTOSTR_MAXLEN 16 -KD_API KDssize KD_APIENTRY kdFtostr(KDchar *buffer, KDsize buflen, KDfloat32 number); - -/* kdCryptoRandom: Return random data. */ -KD_API KDint KD_APIENTRY kdCryptoRandom(KDuint8 *buf, KDsize buflen); - -/******************************************************* - * Locale specific functions - *******************************************************/ - -/* kdGetLocale: Determine the current language and locale. */ -KD_API const KDchar *KD_APIENTRY kdGetLocale(void); - -/******************************************************* - * Memory allocation - *******************************************************/ - -/* kdMalloc: Allocate memory. */ -KD_API void *KD_APIENTRY kdMalloc(KDsize size); - -/* kdFree: Free allocated memory block. */ -KD_API void KD_APIENTRY kdFree(void *ptr); - -/* kdRealloc: Resize memory block. */ -KD_API void *KD_APIENTRY kdRealloc(void *ptr, KDsize size); - -/******************************************************* - * Thread-local storage. - *******************************************************/ - -/* kdGetTLS: Get the thread-local storage pointer. */ -KD_API void *KD_APIENTRY kdGetTLS(void); - -/* kdSetTLS: Set the thread-local storage pointer. */ -KD_API void KD_APIENTRY kdSetTLS(void *ptr); - -/******************************************************* - * Mathematical functions - *******************************************************/ -#define KD_E_F 2.71828175F -#define KD_PI_F 3.14159274F -#define KD_PI_2_F 1.57079637F -#define KD_2PI_F 6.28318548F -#define KD_LOG2E_F 1.44269502F -#define KD_LOG10E_F 0.434294492F -#define KD_LN2_F 0.693147182F -#define KD_LN10_F 2.30258512F -#define KD_PI_4_F 0.785398185F -#define KD_1_PI_F 0.318309873F -#define KD_2_PI_F 0.636619747F -#define KD_2_SQRTPI_F 1.12837923F -#define KD_SQRT2_F 1.41421354F -#define KD_SQRT1_2_F 0.707106769F -#define KD_FLT_EPSILON 1.19209290E-07F -#define KD_FLT_MAX 3.40282346638528860e+38F -#define KD_FLT_MIN 1.17549435e-38F -/* KD_INFINITY is defined in kdplatform.h since no portable definition - * is possible. */ -#define kdIsNan(x) (((x) != (x)) ? 1 : 0) -#define KD_HUGE_VALF KD_INFINITY -#define KD_DEG_TO_RAD_F 0.0174532924F -#define KD_RAD_TO_DEG_F 57.2957802F - -/* kdAcosf: Arc cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdAcosf(KDfloat32 x); - -/* kdAsinf: Arc sine function. */ -KD_API KDfloat32 KD_APIENTRY kdAsinf(KDfloat32 x); - -/* kdAtanf: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtanf(KDfloat32 x); - -/* kdAtan2f: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtan2f(KDfloat32 y, KDfloat32 x); - -/* kdCosf: Cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdCosf(KDfloat32 x); - -/* kdSinf: Sine function. */ -KD_API KDfloat32 KD_APIENTRY kdSinf(KDfloat32 x); - -/* kdTanf: Tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdTanf(KDfloat32 x); - -/* kdExpf: Exponential function. */ -KD_API KDfloat32 KD_APIENTRY kdExpf(KDfloat32 x); - -/* kdLogf: Natural logarithm function. */ -KD_API KDfloat32 KD_APIENTRY kdLogf(KDfloat32 x); - -/* kdFabsf: Absolute value. */ -KD_API KDfloat32 KD_APIENTRY kdFabsf(KDfloat32 x); - -/* kdPowf: Power function. */ -KD_API KDfloat32 KD_APIENTRY kdPowf(KDfloat32 x, KDfloat32 y); - -/* kdSqrtf: Square root function. */ -KD_API KDfloat32 KD_APIENTRY kdSqrtf(KDfloat32 x); - -/* kdCeilf: Return ceiling value. */ -KD_API KDfloat32 KD_APIENTRY kdCeilf(KDfloat32 x); - -/* kdFloorf: Return floor value. */ -KD_API KDfloat32 KD_APIENTRY kdFloorf(KDfloat32 x); - -/* kdRoundf: Round value to nearest integer. */ -KD_API KDfloat32 KD_APIENTRY kdRoundf(KDfloat32 x); - -/* kdInvsqrtf: Inverse square root function. */ -KD_API KDfloat32 KD_APIENTRY kdInvsqrtf(KDfloat32 x); - -/* kdFmodf: Calculate floating point remainder. */ -KD_API KDfloat32 KD_APIENTRY kdFmodf(KDfloat32 x, KDfloat32 y); - -/******************************************************* - * String and memory functions - *******************************************************/ - -/* kdMemchr: Scan memory for a byte value. */ -KD_API void *KD_APIENTRY kdMemchr(const void *src, KDint byte, KDsize len); - -/* kdMemcmp: Compare two memory regions. */ -KD_API KDint KD_APIENTRY kdMemcmp(const void *src1, const void *src2, KDsize len); - -/* kdMemcpy: Copy a memory region, no overlapping. */ -KD_API void *KD_APIENTRY kdMemcpy(void *buf, const void *src, KDsize len); - -/* kdMemmove: Copy a memory region, overlapping allowed. */ -KD_API void *KD_APIENTRY kdMemmove(void *buf, const void *src, KDsize len); - -/* kdMemset: Set bytes in memory to a value. */ -KD_API void *KD_APIENTRY kdMemset(void *buf, KDint byte, KDsize len); - -/* kdStrchr: Scan string for a byte value. */ -KD_API KDchar *KD_APIENTRY kdStrchr(const KDchar *str, KDint ch); - -/* kdStrcmp: Compares two strings. */ -KD_API KDint KD_APIENTRY kdStrcmp(const KDchar *str1, const KDchar *str2); - -/* kdStrlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrlen(const KDchar *str); - -/* kdStrnlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrnlen(const KDchar *str, KDsize maxlen); - -/* kdStrncat_s: Concatenate two strings. */ -KD_API KDint KD_APIENTRY kdStrncat_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srcmaxlen); - -/* kdStrncmp: Compares two strings with length limit. */ -KD_API KDint KD_APIENTRY kdStrncmp(const KDchar *str1, const KDchar *str2, KDsize maxlen); - -/* kdStrcpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrcpy_s(KDchar *buf, KDsize buflen, const KDchar *src); - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrncpy_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srclen); - -/******************************************************* - * Time functions - *******************************************************/ - -/* kdGetTimeUST: Get the current unadjusted system time. */ -KD_API KDust KD_APIENTRY kdGetTimeUST(void); - -/* kdTime: Get the current wall clock time. */ -KD_API KDtime KD_APIENTRY kdTime(KDtime *timep); - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -typedef struct KDTm { - KDint32 tm_sec; - KDint32 tm_min; - KDint32 tm_hour; - KDint32 tm_mday; - KDint32 tm_mon; - KDint32 tm_year; - KDint32 tm_wday; - KDint32 tm_yday; -} KDTm; -KD_API KDTm *KD_APIENTRY kdGmtime_r(const KDtime *timep, KDTm *result); -KD_API KDTm *KD_APIENTRY kdLocaltime_r(const KDtime *timep, KDTm *result); - -/* kdUSTAtEpoch: Get the UST corresponding to KDtime 0. */ -KD_API KDust KD_APIENTRY kdUSTAtEpoch(void); - -/******************************************************* - * Timer functions - *******************************************************/ - -/* kdSetTimer: Set timer. */ -#define KD_TIMER_ONESHOT 61 -#define KD_TIMER_PERIODIC_AVERAGE 62 -#define KD_TIMER_PERIODIC_MINIMUM 63 -typedef struct KDTimer KDTimer; -KD_API KDTimer *KD_APIENTRY kdSetTimer(KDint64 interval, KDint periodic, void *eventuserptr); - -/* kdCancelTimer: Cancel and free a timer. */ -KD_API KDint KD_APIENTRY kdCancelTimer(KDTimer *timer); - -/* KD_EVENT_TIMER: Timer fire event. */ -#define KD_EVENT_TIMER 42 - -/******************************************************* - * File system - *******************************************************/ -#define KD_EOF (-1) - -/* kdFopen: Open a file from the file system. */ -typedef struct KDFile KDFile; -KD_API KDFile *KD_APIENTRY kdFopen(const KDchar *pathname, const KDchar *mode); - -/* kdFclose: Close an open file. */ -KD_API KDint KD_APIENTRY kdFclose(KDFile *file); - -/* kdFflush: Flush an open file. */ -KD_API KDint KD_APIENTRY kdFflush(KDFile *file); - -/* kdFread: Read from a file. */ -KD_API KDsize KD_APIENTRY kdFread(void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdFwrite: Write to a file. */ -KD_API KDsize KD_APIENTRY kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdGetc: Read next byte from an open file. */ -KD_API KDint KD_APIENTRY kdGetc(KDFile *file); - -/* kdPutc: Write a byte to an open file. */ -KD_API KDint KD_APIENTRY kdPutc(KDint c, KDFile *file); - -/* kdFgets: Read a line of text from an open file. */ -KD_API KDchar *KD_APIENTRY kdFgets(KDchar *buffer, KDsize buflen, KDFile *file); - -/* kdFEOF: Check for end of file. */ -KD_API KDint KD_APIENTRY kdFEOF(KDFile *file); - -/* kdFerror: Check for an error condition on an open file. */ -KD_API KDint KD_APIENTRY kdFerror(KDFile *file); - -/* kdClearerr: Clear a file’s error and end-of-file indicators. */ -KD_API void KD_APIENTRY kdClearerr(KDFile *file); - -/* kdFseek: Reposition the file position indicator in a file. */ -typedef enum { - KD_SEEK_SET = 0, - KD_SEEK_CUR = 1, - KD_SEEK_END = 2 -} KDfileSeekOrigin; -KD_API KDint KD_APIENTRY kdFseek(KDFile *file, KDoff offset, KDfileSeekOrigin origin); - -/* kdFtell: Get the file position of an open file. */ -KD_API KDoff KD_APIENTRY kdFtell(KDFile *file); - -/* kdMkdir: Create new directory. */ -KD_API KDint KD_APIENTRY kdMkdir(const KDchar *pathname); - -/* kdRmdir: Delete a directory. */ -KD_API KDint KD_APIENTRY kdRmdir(const KDchar *pathname); - -/* kdRename: Rename a file. */ -KD_API KDint KD_APIENTRY kdRename(const KDchar *src, const KDchar *dest); - -/* kdRemove: Delete a file. */ -KD_API KDint KD_APIENTRY kdRemove(const KDchar *pathname); - -/* kdTruncate: Truncate or extend a file. */ -KD_API KDint KD_APIENTRY kdTruncate(const KDchar *pathname, KDoff length); - -/* kdStat, kdFstat: Return information about a file. */ -typedef struct KDStat { - KDmode st_mode; - KDoff st_size; - KDtime st_mtime; -} KDStat; -KD_API KDint KD_APIENTRY kdStat(const KDchar *pathname, struct KDStat *buf); -KD_API KDint KD_APIENTRY kdFstat(KDFile *file, struct KDStat *buf); -#define KD_ISREG(m) ((m) & 0x8000) -#define KD_ISDIR(m) ((m) & 0x4000) - -/* kdAccess: Determine whether the application can access a file or directory. */ -KD_API KDint KD_APIENTRY kdAccess(const KDchar *pathname, KDint amode); -#define KD_R_OK 4 -#define KD_W_OK 2 -#define KD_X_OK 1 - -/* kdOpenDir: Open a directory ready for listing. */ -typedef struct KDDir KDDir; -KD_API KDDir *KD_APIENTRY kdOpenDir(const KDchar *pathname); - -/* kdReadDir: Return the next file in a directory. */ -typedef struct KDDirent { - const KDchar *d_name; -} KDDirent; -KD_API KDDirent *KD_APIENTRY kdReadDir(KDDir *dir); - -/* kdCloseDir: Close a directory. */ -KD_API KDint KD_APIENTRY kdCloseDir(KDDir *dir); - -/* kdGetFree: Get free space on a drive. */ -KD_API KDoff KD_APIENTRY kdGetFree(const KDchar *pathname); - -/******************************************************* - * Network sockets - *******************************************************/ - -/* KDSockaddr: Struct type for socket address. */ -typedef struct KDSockaddr { - KDuint16 family; - union { -#define KD_AF_INET 70 - struct { - KDuint16 port; - KDuint32 address; - } sin; - } data; -} KDSockaddr; - -/* kdNameLookup: Look up a hostname. */ -KD_API KDint KD_APIENTRY kdNameLookup(KDint af, const KDchar *hostname, void *eventuserptr); - -/* kdNameLookupCancel: Selectively cancels ongoing kdNameLookup operations. */ -KD_API void KD_APIENTRY kdNameLookupCancel(void *eventuserptr); - -/* kdSocketCreate: Creates a socket. */ -typedef struct KDSocket KDSocket; -KD_API KDSocket *KD_APIENTRY kdSocketCreate(KDint type, void *eventuserptr); -#define KD_SOCK_TCP 64 -#define KD_SOCK_UDP 65 - -/* kdSocketClose: Closes a socket. */ -KD_API KDint KD_APIENTRY kdSocketClose(KDSocket *socket); - -/* kdSocketBind: Bind a socket. */ -KD_API KDint KD_APIENTRY kdSocketBind(KDSocket *socket, const struct KDSockaddr *addr, KDboolean reuse); -#define KD_INADDR_ANY 0 - -/* kdSocketGetName: Get the local address of a socket. */ -KD_API KDint KD_APIENTRY kdSocketGetName(KDSocket *socket, struct KDSockaddr *addr); - -/* kdSocketConnect: Connects a socket. */ -KD_API KDint KD_APIENTRY kdSocketConnect(KDSocket *socket, const KDSockaddr *addr); - -/* kdSocketListen: Listen on a socket. */ -KD_API KDint KD_APIENTRY kdSocketListen(KDSocket *socket, KDint backlog); - -/* kdSocketAccept: Accept an incoming connection. */ -KD_API KDSocket *KD_APIENTRY kdSocketAccept(KDSocket *socket, KDSockaddr *addr, void *eventuserptr); - -/* kdSocketSend, kdSocketSendTo: Send data to a socket. */ -KD_API KDint KD_APIENTRY kdSocketSend(KDSocket *socket, const void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketSendTo(KDSocket *socket, const void *buf, KDint len, const KDSockaddr *addr); - -/* kdSocketRecv, kdSocketRecvFrom: Receive data from a socket. */ -KD_API KDint KD_APIENTRY kdSocketRecv(KDSocket *socket, void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketRecvFrom(KDSocket *socket, void *buf, KDint len, KDSockaddr *addr); - -/* kdHtonl: Convert a 32-bit integer from host to network byte order. */ -KD_API KDuint32 KD_APIENTRY kdHtonl(KDuint32 hostlong); - -/* kdHtons: Convert a 16-bit integer from host to network byte order. */ -KD_API KDuint16 KD_APIENTRY kdHtons(KDuint16 hostshort); - -/* kdNtohl: Convert a 32-bit integer from network to host byte order. */ -KD_API KDuint32 KD_APIENTRY kdNtohl(KDuint32 netlong); - -/* kdNtohs: Convert a 16-bit integer from network to host byte order. */ -KD_API KDuint16 KD_APIENTRY kdNtohs(KDuint16 netshort); - -/* kdInetAton: Convert a “dotted quad” format address to an integer. */ -KD_API KDint KD_APIENTRY kdInetAton(const KDchar *cp, KDuint32 *inp); - -/* kdInetNtop: Convert a network address to textual form. */ -#define KD_INET_ADDRSTRLEN 16 -typedef struct KDInAddr { - KDuint32 s_address; // Renamed this from s_addr as it causes a conflict with winsock2.h -} KDInAddr; -KD_API const KDchar *KD_APIENTRY kdInetNtop(KDuint af, const void *src, KDchar *dst, KDsize cnt); - -/* KD_EVENT_SOCKET_READABLE: Event to indicate that a socket is readable. */ -#define KD_EVENT_SOCKET_READABLE 49 -typedef struct KDEventSocketReadable { - KDSocket *socket; -} KDEventSocketReadable; - -/* KD_EVENT_SOCKET_WRITABLE: Event to indicate that a socket is writable. */ -#define KD_EVENT_SOCKET_WRITABLE 50 -typedef struct KDEventSocketWritable { - KDSocket *socket; -} KDEventSocketWritable; - -/* KD_EVENT_SOCKET_CONNECT_COMPLETE: Event generated when a socket connect is complete */ -#define KD_EVENT_SOCKET_CONNECT_COMPLETE 51 -typedef struct KDEventSocketConnect { - KDSocket *socket; - KDint32 error; -} KDEventSocketConnect; - -/* KD_EVENT_SOCKET_INCOMING: Event generated when a listening socket detects an incoming connection or an error. */ -#define KD_EVENT_SOCKET_INCOMING 52 -typedef struct KDEventSocketIncoming { - KDSocket *socket; -} KDEventSocketIncoming; - -/* KD_EVENT_NAME_LOOKUP_COMPLETE: kdNameLookup complete event. */ -#define KD_EVENT_NAME_LOOKUP_COMPLETE 53 -typedef struct KDEventNameLookup { - KDint32 error; - KDint32 resultlen; - const KDSockaddr *result; - KDboolean more; -} KDEventNameLookup; - -/******************************************************* - * Input/output - *******************************************************/ - -/* KD_EVENT_STATE: State changed event. */ -#define KD_EVENT_STATE 55 - -typedef struct KDEventState { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventState; - -/* KD_EVENT_INPUT: Input changed event. */ -#define KD_EVENT_INPUT 56 - -typedef struct KDEventInput { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventInput; - -/* KD_EVENT_INPUT_JOG: Jogdial jog event. */ -#define KD_EVENT_INPUT_JOG 71 -typedef struct KDEventInputJog { - KDint32 index; - KDint32 count; -} KDEventInputJog; - -/* KD_EVENT_INPUT_POINTER: Pointer input changed event. */ -#define KD_EVENT_INPUT_POINTER 57 -typedef struct KDEventInputPointer { - KDint32 index; - KDint32 select; - KDint32 x; - KDint32 y; -} KDEventInputPointer; - -/* KD_EVENT_INPUT_STICK: Joystick stick changed event. */ -#define KD_EVENT_INPUT_STICK 58 -typedef struct KDEventInputStick { - KDint32 index; - KDint32 x; - KDint32 y; - KDint32 z; -} KDEventInputStick; - -/* kdStateGeti, kdStateGetl, kdStateGetf: get state value(s) */ -KD_API KDint KD_APIENTRY kdStateGeti(KDint startidx, KDuint numidxs, KDint32 *buffer); -KD_API KDint KD_APIENTRY kdStateGetl(KDint startidx, KDuint numidxs, KDint64 *buffer); -KD_API KDint KD_APIENTRY kdStateGetf(KDint startidx, KDuint numidxs, KDfloat32 *buffer); - -/* kdOutputSeti, kdOutputSetf: set outputs */ -KD_API KDint KD_APIENTRY kdOutputSeti(KDint startidx, KDuint numidxs, const KDint32 *buffer); -KD_API KDint KD_APIENTRY kdOutputSetf(KDint startidx, KDuint numidxs, const KDfloat32 *buffer); -#define KD_IO_CONTROLLER_STRIDE 64 - -/* KD_IOGROUP_GAMEKEYS: I/O group for game keys. */ -#define KD_IOGROUP_GAMEKEYS 0x1000 -#define KD_STATE_GAMEKEYS_AVAILABILITY (KD_IOGROUP_GAMEKEYS + 0) -#define KD_INPUT_GAMEKEYS_UP (KD_IOGROUP_GAMEKEYS + 1) -#define KD_INPUT_GAMEKEYS_LEFT (KD_IOGROUP_GAMEKEYS + 2) -#define KD_INPUT_GAMEKEYS_RIGHT (KD_IOGROUP_GAMEKEYS + 3) -#define KD_INPUT_GAMEKEYS_DOWN (KD_IOGROUP_GAMEKEYS + 4) -#define KD_INPUT_GAMEKEYS_FIRE (KD_IOGROUP_GAMEKEYS + 5) -#define KD_INPUT_GAMEKEYS_A (KD_IOGROUP_GAMEKEYS + 6) -#define KD_INPUT_GAMEKEYS_B (KD_IOGROUP_GAMEKEYS + 7) -#define KD_INPUT_GAMEKEYS_C (KD_IOGROUP_GAMEKEYS + 8) -#define KD_INPUT_GAMEKEYS_D (KD_IOGROUP_GAMEKEYS + 9) - -/* KD_IOGROUP_GAMEKEYSNC: I/O group for game keys, no chording. */ -#define KD_IOGROUP_GAMEKEYSNC 0x1100 -#define KD_STATE_GAMEKEYSNC_AVAILABILITY (KD_IOGROUP_GAMEKEYSNC + 0) -#define KD_INPUT_GAMEKEYSNC_UP (KD_IOGROUP_GAMEKEYSNC + 1) -#define KD_INPUT_GAMEKEYSNC_LEFT (KD_IOGROUP_GAMEKEYSNC + 2) -#define KD_INPUT_GAMEKEYSNC_RIGHT (KD_IOGROUP_GAMEKEYSNC + 3) -#define KD_INPUT_GAMEKEYSNC_DOWN (KD_IOGROUP_GAMEKEYSNC + 4) -#define KD_INPUT_GAMEKEYSNC_FIRE (KD_IOGROUP_GAMEKEYSNC + 5) -#define KD_INPUT_GAMEKEYSNC_A (KD_IOGROUP_GAMEKEYSNC + 6) -#define KD_INPUT_GAMEKEYSNC_B (KD_IOGROUP_GAMEKEYSNC + 7) -#define KD_INPUT_GAMEKEYSNC_C (KD_IOGROUP_GAMEKEYSNC + 8) -#define KD_INPUT_GAMEKEYSNC_D (KD_IOGROUP_GAMEKEYSNC + 9) - -/* KD_IOGROUP_PHONEKEYPAD: I/O group for phone keypad. */ -#define KD_IOGROUP_PHONEKEYPAD 0x2000 -#define KD_STATE_PHONEKEYPAD_AVAILABILITY (KD_IOGROUP_PHONEKEYPAD + 0) -#define KD_INPUT_PHONEKEYPAD_0 (KD_IOGROUP_PHONEKEYPAD + 1) -#define KD_INPUT_PHONEKEYPAD_1 (KD_IOGROUP_PHONEKEYPAD + 2) -#define KD_INPUT_PHONEKEYPAD_2 (KD_IOGROUP_PHONEKEYPAD + 3) -#define KD_INPUT_PHONEKEYPAD_3 (KD_IOGROUP_PHONEKEYPAD + 4) -#define KD_INPUT_PHONEKEYPAD_4 (KD_IOGROUP_PHONEKEYPAD + 5) -#define KD_INPUT_PHONEKEYPAD_5 (KD_IOGROUP_PHONEKEYPAD + 6) -#define KD_INPUT_PHONEKEYPAD_6 (KD_IOGROUP_PHONEKEYPAD + 7) -#define KD_INPUT_PHONEKEYPAD_7 (KD_IOGROUP_PHONEKEYPAD + 8) -#define KD_INPUT_PHONEKEYPAD_8 (KD_IOGROUP_PHONEKEYPAD + 9) -#define KD_INPUT_PHONEKEYPAD_9 (KD_IOGROUP_PHONEKEYPAD + 10) -#define KD_INPUT_PHONEKEYPAD_STAR (KD_IOGROUP_PHONEKEYPAD + 11) -#define KD_INPUT_PHONEKEYPAD_HASH (KD_IOGROUP_PHONEKEYPAD + 12) -#define KD_INPUT_PHONEKEYPAD_LEFTSOFT (KD_IOGROUP_PHONEKEYPAD + 13) -#define KD_INPUT_PHONEKEYPAD_RIGHTSOFT (KD_IOGROUP_PHONEKEYPAD + 14) -#define KD_STATE_PHONEKEYPAD_ORIENTATION (KD_IOGROUP_PHONEKEYPAD + 15) - -/* KD_IOGROUP_VIBRATE: I/O group for vibrate. */ -#define KD_IOGROUP_VIBRATE 0x3000 -#define KD_STATE_VIBRATE_AVAILABILITY (KD_IOGROUP_VIBRATE + 0) -#define KD_STATE_VIBRATE_MINFREQUENCY (KD_IOGROUP_VIBRATE + 1) -#define KD_STATE_VIBRATE_MAXFREQUENCY (KD_IOGROUP_VIBRATE + 2) -#define KD_OUTPUT_VIBRATE_VOLUME (KD_IOGROUP_VIBRATE + 3) -#define KD_OUTPUT_VIBRATE_FREQUENCY (KD_IOGROUP_VIBRATE + 4) - -/* KD_IOGROUP_POINTER: I/O group for pointer. */ -#define KD_IOGROUP_POINTER 0x4000 -#define KD_STATE_POINTER_AVAILABILITY (KD_IOGROUP_POINTER + 0) -#define KD_INPUT_POINTER_X (KD_IOGROUP_POINTER + 1) -#define KD_INPUT_POINTER_Y (KD_IOGROUP_POINTER + 2) -#define KD_INPUT_POINTER_SELECT (KD_IOGROUP_POINTER + 3) - -/* KD_IOGROUP_BACKLIGHT: I/O group for backlight. */ -#define KD_IOGROUP_BACKLIGHT 0x5000 -#define KD_STATE_BACKLIGHT_AVAILABILITY (KD_IOGROUP_BACKLIGHT + 0) -#define KD_OUTPUT_BACKLIGHT_FORCE (KD_IOGROUP_BACKLIGHT + 1) - -/* KD_IOGROUP_JOGDIAL: I/O group for a jog dial. */ -#define KD_IOGROUP_JOGDIAL 0x6000 -#define KD_STATE_JOGDIAL_AVAILABILITY (KD_IOGROUP_JOGDIAL + 0) -#define KD_INPUT_JOGDIAL_UP (KD_IOGROUP_JOGDIAL + 1) -#define KD_INPUT_JOGDIAL_LEFT (KD_IOGROUP_JOGDIAL + 2) -#define KD_INPUT_JOGDIAL_RIGHT (KD_IOGROUP_JOGDIAL + 3) -#define KD_INPUT_JOGDIAL_DOWN (KD_IOGROUP_JOGDIAL + 4) -#define KD_INPUT_JOGDIAL_SELECT (KD_IOGROUP_JOGDIAL + 5) - -/* KD_IOGROUP_STICK: I/O group for joystick. */ -#define KD_IOGROUP_STICK 0x7000 -#define KD_STATE_STICK_AVAILABILITY (KD_IOGROUP_STICK + 0) -#define KD_INPUT_STICK_X (KD_IOGROUP_STICK + 1) -#define KD_INPUT_STICK_Y (KD_IOGROUP_STICK + 2) -#define KD_INPUT_STICK_Z (KD_IOGROUP_STICK + 3) -#define KD_INPUT_STICK_BUTTON (KD_IOGROUP_STICK + 4) -#define KD_IO_STICK_STRIDE 8 - -/* KD_IOGROUP_DPAD: I/O group for D-pad. */ -#define KD_IOGROUP_DPAD 0x8000 -#define KD_STATE_DPAD_AVAILABILITY (KD_IOGROUP_DPAD + 0) -#define KD_STATE_DPAD_COPY (KD_IOGROUP_DPAD + 1) -#define KD_INPUT_DPAD_UP (KD_IOGROUP_DPAD + 2) -#define KD_INPUT_DPAD_LEFT (KD_IOGROUP_DPAD + 3) -#define KD_INPUT_DPAD_RIGHT (KD_IOGROUP_DPAD + 4) -#define KD_INPUT_DPAD_DOWN (KD_IOGROUP_DPAD + 5) -#define KD_INPUT_DPAD_SELECT (KD_IOGROUP_DPAD + 6) -#define KD_IO_DPAD_STRIDE 8 - -/* KD_IOGROUP_BUTTONS: I/O group for buttons associated with joystick or D-pad. */ -#define KD_IOGROUP_BUTTONS 0x9000 -#define KD_STATE_BUTTONS_AVAILABILITY (KD_IOGROUP_BUTTONS + 0) -#define KD_INPUT_BUTTONS_0 (KD_IOGROUP_BUTTONS + 1) - -/* KD_IO_UNDEFINED: I/O items reserved for implementation-dependent use. */ -#define KD_IO_UNDEFINED 0x40000000 - -/******************************************************* - * Windowing - *******************************************************/ -#ifdef KD_WINDOW_SUPPORTED -#include <EGL/egl.h> -typedef struct KDWindow KDWindow; - -/* kdCreateWindow: Create a window. */ -KD_API KDWindow *KD_APIENTRY kdCreateWindow(EGLDisplay display, EGLConfig config, void *eventuserptr); - -/* kdDestroyWindow: Destroy a window. */ -KD_API KDint KD_APIENTRY kdDestroyWindow(KDWindow *window); - -/* kdSetWindowPropertybv, kdSetWindowPropertyiv, kdSetWindowPropertycv: Set a window property to request a change in the on-screen representation of the window. */ -KD_API KDint KD_APIENTRY kdSetWindowPropertybv(KDWindow *window, KDint pname, const KDboolean *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertyiv(KDWindow *window, KDint pname, const KDint32 *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertycv(KDWindow *window, KDint pname, const KDchar *param); - -/* kdGetWindowPropertybv, kdGetWindowPropertyiv, kdGetWindowPropertycv: Get the current value of a window property. */ -KD_API KDint KD_APIENTRY kdGetWindowPropertybv(KDWindow *window, KDint pname, KDboolean *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertyiv(KDWindow *window, KDint pname, KDint32 *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertycv(KDWindow *window, KDint pname, KDchar *param, KDsize *size); - -/* kdRealizeWindow: Realize the window as a displayable entity and get the native window handle for passing to EGL. */ -KD_API KDint KD_APIENTRY kdRealizeWindow(KDWindow *window, EGLNativeWindowType *nativewindow); - -/* KD_WINDOWPROPERTY_SIZE: Window client area width and height. */ -#define KD_WINDOWPROPERTY_SIZE 66 - -/* KD_WINDOWPROPERTY_VISIBILITY: Window visibility status. */ -#define KD_WINDOWPROPERTY_VISIBILITY 67 - -/* KD_WINDOWPROPERTY_FOCUS: Window input focus status. */ -#define KD_WINDOWPROPERTY_FOCUS 68 - -/* KD_WINDOWPROPERTY_CAPTION: Window caption. */ -#define KD_WINDOWPROPERTY_CAPTION 69 - -/* KD_EVENT_WINDOW_CLOSE: Event to request to close window. */ -#define KD_EVENT_WINDOW_CLOSE 44 - -/* KD_EVENT_WINDOWPROPERTY_CHANGE: Notification about realized window property change. */ -#define KD_EVENT_WINDOWPROPERTY_CHANGE 47 -typedef struct KDEventWindowProperty { - KDint32 pname; -} KDEventWindowProperty; - -/* KD_EVENT_WINDOW_FOCUS: Event for change of window’s focus state. */ -#define KD_EVENT_WINDOW_FOCUS 60 -typedef struct KDEventWindowFocus { - KDint32 focusstate; -} KDEventWindowFocus; - -/* KD_EVENT_WINDOW_REDRAW: Event to notify need to redraw the window. */ -#define KD_EVENT_WINDOW_REDRAW 59 -#endif /* KD_WINDOW_SUPPORTED */ - -/******************************************************* - * Assertions and logging - *******************************************************/ - -/* kdHandleAssertion: Handle assertion failure. */ -KD_API void KD_APIENTRY kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber); - -/* kdLogMessage: Output a log message. */ -#ifdef KD_NDEBUG -#define kdLogMessage(s) -#else -KD_API void KD_APIENTRY kdLogMessage(const KDchar *string); -#endif - -/* struct KDEvent delayed to the end as it uses event data structs from - * other parts of the .h file. */ -struct KDEvent { - KDust timestamp; - KDint32 type; - void *userptr; - union KDEventData { - KDEventState state; - KDEventInput input; - KDEventInputJog inputjog; - KDEventInputPointer inputpointer; - KDEventInputStick inputstick; - KDEventSocketReadable socketreadable; - KDEventSocketWritable socketwritable; - KDEventSocketConnect socketconnect; - KDEventSocketIncoming socketincoming; - KDEventNameLookup namelookup; -#ifdef KD_WINDOW_SUPPORTED - KDEventWindowProperty windowproperty; - KDEventWindowFocus windowfocus; -#endif /* KD_WINDOW_SUPPORTED */ - KDEventUser user; - } data; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/kdplatform.h b/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/kdplatform.h deleted file mode 100644 index 3cf09f52..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Android/jni/Qt3DSLibs/KD/kdplatform.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* Sample KD/kdplatform.h for OpenKODE Core 1.0.3 */ -#ifndef __kdplatform_h_ -#define __kdplatform_h_ - -#define KD_API -#define KD_APIENTRY - -typedef int KDint32; -typedef unsigned int KDuint32; -typedef long long KDint64; -typedef unsigned long long KDuint64; -typedef short KDint16; -typedef unsigned short KDuint16; -typedef unsigned long KDuintptr; -typedef unsigned long KDsize; -typedef long KDssize; -#define KDINT_MIN (-0x7fffffff-1) -#define KDINT_MAX 0x7fffffff -#define KDUINT_MAX 0xffffffffU -#define KDINT64_MIN (-0x7fffffffffffffffLL-1) -#define KDINT64_MAX 0x7fffffffffffffffLL -#define KDUINT64_MAX 0xffffffffffffffffULL -#define KDSSIZE_MIN (-0x7fffffff-1) -#define KDSSIZE_MAX 0x7fffffff -#define KDSIZE_MAX 0xffffffffU -#define KDUINTPTR_MAX 0xffffffffU -#define KD_NORETURN -#define KD_WINDOW_SUPPORTED -#ifdef KD_NDEBUG -#define kdAssert(c) -#else -#define kdAssert(c) ((void)( (c) ? 0 : (kdHandleAssertion(#c, __FILE__, __LINE__), 0))) -#endif - -#define KD_INFINITY_BITS 0x7f800000u -#define KD_INFINITY (kdBitsToFloatNV(KD_INFINITY_BITS)) - -KD_API float KD_APIENTRY kdBitsToFloatNV(KDuint32 x); - - -/** KHR_formatted extension */ -#include <stdarg.h> -typedef va_list KDVaListKHR; - -// If there are problems with including stdarg.h here under any of the Windows -// operating systems, we might want to change it back to using char* instead of -// va_list -//typedef char *KDVaListKHR; - - -#define KD_VA_START_KHR(ap, parmN) \ - do {ap = (KDVaListKHR)&parmN + sizeof(parmN);} while(0) - -#define KD_VA_ARG_CHAR_KHR(ap) (KDchar)va_arg(ap, KDint) -#define KD_VA_ARG_CHARPTR_KHR(ap) (KDchar*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16_KHR(ap) (KDint16)va_arg(ap, KDint) -#define KD_VA_ARG_INT32_KHR(ap) va_arg(ap, KDint32) -#define KD_VA_ARG_INT_KHR(ap) va_arg(ap, KDint) -#define KD_VA_ARG_INT64_KHR(ap) va_arg(ap, KDint64) -#define KD_VA_ARG_INTPTR_KHR(ap) (KDint*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16PTR_KHR(ap) (KDint16*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_FLOAT32_KHR(ap) (KDfloat32)(va_arg(ap, double)) -#define KD_VA_ARG_PTR_KHR(ap) (void *)va_arg(ap, char *) - -#define KD_VA_END_KHR(ap) \ - do {ap = (KDVaListKHR)0;} while(0) - -#endif /* __kdplatform_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/Qt3DS_extwindowprops.h b/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/Qt3DS_extwindowprops.h deleted file mode 100644 index 4428a568..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/Qt3DS_extwindowprops.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_extwindowprops_h_ -#define __kd_QT3DS_extwindowprops_h_ -#include <KD/kd.h> -#include <EGL/eglext.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_WINDOWPROPERTY_FULLSCREEN: Control over resizing a window to fill the complete screen */ - -// KDboolean - set the window to fullscreen mode -#define KD_WINDOWPROPERTY_FULLSCREEN_QT3DS 9999 - -// KDint - set which KD_DISPLAY_* display that the window should be opened on -#define KD_WINDOWPROPERTY_DISPLAY_QT3DS 9998 - -// KDboolean - sets whether overlay should be used to create window -#define KD_WINDOWPROPERTY_OVERLAY_QT3DS 9997 - -#define KD_DISPLAY_PRIMARY_QT3DS 0 -#define KD_DISPLAY_INTERNAL0_QT3DS 0 -#define KD_DISPLAY_INTERNAL1_QT3DS 1 -#define KD_DISPLAY_INTERNAL2_QT3DS 2 -#define KD_DISPLAY_INTERNAL3_QT3DS 3 -#define KD_DISPLAY_EXTERNAL0_QT3DS 1000 -#define KD_DISPLAY_EXTERNAL1_QT3DS 1001 -#define KD_DISPLAY_EXTERNAL2_QT3DS 1002 -#define KD_DISPLAY_EXTERNAL3_QT3DS 1003 - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_extwindowprops_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/Qt3DS_multitouch.h b/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/Qt3DS_multitouch.h deleted file mode 100644 index e230b029..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/Qt3DS_multitouch.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_multitouch_h_ -#define __kd_QT3DS_multitouch_h_ -#include <KD/kd.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_IOGROUP_MULTITOUCH: I/O group for Multitouch input devices. */ -#define KD_IOGROUP_MULTITOUCH_QT3DS 0x40004000 -#define KD_STATE_MULTITOUCH_AVAILABILITY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 0) -#define KD_INPUT_MULTITOUCH_FINGERS_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 1) -#define KD_INPUT_MULTITOUCH_WIDTH_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 2) -#define KD_INPUT_MULTITOUCH_X_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 3) -#define KD_INPUT_MULTITOUCH_Y_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 4) -#define KD_INPUT_MULTITOUCH_X2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 5) -#define KD_INPUT_MULTITOUCH_Y2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 6) -#define KD_INPUT_MULTITOUCH_PRESSURE_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 7) -#define KD_INPUT_MULTITOUCH_GESTURES_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 8) -#define KD_INPUT_MULTITOUCH_RELX_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 9) -#define KD_INPUT_MULTITOUCH_RELY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 10) - -/* KD_EVENT_INPUT_MULTITOUCH_QT3DS: Multitouch event. */ -#define KD_EVENT_INPUT_MULTITOUCH_QT3DS 1001 -typedef struct KDEventInputMultitouchDataNV -{ - KDint32 index; - KDint8 fingers; - KDint8 width; - KDint16 x; - KDint16 y; - KDint16 x2; - KDint16 y2; - KDint16 pressure; -} KDEventInputMultitouchDataNV; - -/* KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS: Multitouch gesture event. */ -#define KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS 1002 - -/* kdGetEventInputMultitouchDataNV: Get auxiliary event data for multitouch input. */ -KD_API KDint KD_APIENTRY kdGetEventInputMultitouchDataNV(const KDEvent *event, - KDEventInputMultitouchDataNV *data); - -/* kdSetEventInputMultitouchActiveNV: Activate Multitouch input events */ -KD_API KDint KD_APIENTRY kdSetEventInputMultitouchActiveNV(KDboolean activate); - -/* kdEnableEventInputMultitouchMergeNV: Activate merging of Multitouch input events */ -KD_API void KD_APIENTRY kdEnableEventInputMultitouchMergeNV(KDboolean enable); - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_multitouch_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/kd.h b/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/kd.h deleted file mode 100644 index f7ccea03..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/kd.h +++ /dev/null @@ -1,991 +0,0 @@ -/* Reference KD/kd.h for OpenKODE Core 1.0.3 */ -#ifndef __kd_h_ -#define __kd_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "kdplatform.h" - - - -/******************************************************* - * Introduction - *******************************************************/ - -/******************************************************* - * OpenKODE conformance - *******************************************************/ - -/******************************************************* - * Overview - *******************************************************/ - -/******************************************************* - * Programming environment - *******************************************************/ -#define KD_VERSION_1_0 1 -typedef char KDchar; -typedef signed char KDint8; -typedef unsigned char KDuint8; -typedef int KDint; -typedef unsigned int KDuint; -typedef float KDfloat32; -typedef KDint KDboolean; -typedef KDint64 KDtime; -typedef KDint64 KDust; -typedef KDint64 KDoff; -typedef KDuint32 KDmode; -#define KDINT32_MIN (-0x7fffffff-1) -#define KDINT32_MAX 0x7fffffff -#define KDUINT32_MAX 0xffffffffU -#define KD_TRUE 1 -#define KD_FALSE 0 -#ifdef __cplusplus - const int KD_NULL = 0; /* Yes, int. See Stroustrup 3rd edition. */ -#else - #define KD_NULL ((void *)0) -#endif - -/******************************************************* - * Errors - *******************************************************/ -#define KD_EACCES 1 -#define KD_EADDRINUSE 2 -#define KD_EADDRNOTAVAIL 3 -#define KD_EAFNOSUPPORT 4 -#define KD_EAGAIN (5) -#define KD_EALREADY 6 -#define KD_EBADF 7 -#define KD_EBUSY 8 -#define KD_ECONNREFUSED 9 -#define KD_ECONNRESET 10 -#define KD_EDEADLK 11 -#define KD_EDESTADDRREQ 12 -#define KD_EEXIST 13 -#define KD_EFBIG 14 -#define KD_EHOSTUNREACH 15 -#define KD_EHOST_NOT_FOUND 16 -#define KD_EINVAL 17 -#define KD_EIO 18 -#define KD_EILSEQ 19 -#define KD_EISCONN 20 -#define KD_EISDIR 21 -#define KD_EMFILE 22 -#define KD_ENAMETOOLONG 23 -#define KD_ENOENT 24 -#define KD_ENOMEM 25 -#define KD_ENOSPC 26 -#define KD_ENOSYS 27 -#define KD_ENOTCONN 28 -#define KD_ENO_DATA 29 -#define KD_ENO_RECOVERY 30 -#define KD_EOPNOTSUPP 31 -#define KD_EOVERFLOW 32 -#define KD_EPERM 33 -#define KD_ERANGE 35 -#define KD_ETIMEDOUT (36) -#define KD_ETRY_AGAIN 37 - -/* kdGetError: Get last error indication. */ -KD_API KDint KD_APIENTRY kdGetError(void); - -/* kdSetError: Set last error indication. */ -KD_API void KD_APIENTRY kdSetError(KDint error); - -/******************************************************* - * Versioning and attribute queries - *******************************************************/ - -/* kdQueryAttribi: Obtain the value of a numeric OpenKODE Core attribute. */ -KD_API KDint KD_APIENTRY kdQueryAttribi(KDint attribute, KDint *value); - -/* kdQueryAttribcv: Obtain the value of a string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryAttribcv(KDint attribute); -#define KD_ATTRIB_VENDOR 39 -#define KD_ATTRIB_VERSION 40 -#define KD_ATTRIB_PLATFORM 41 - -/* kdQueryIndexedAttribcv: Obtain the value of an indexed string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryIndexedAttribcv(KDint attribute, KDint index); - -/******************************************************* - * Threads and synchronization - *******************************************************/ - -/* kdThreadAttrCreate: Create a thread attribute object. */ -typedef struct KDThreadAttr KDThreadAttr; -KD_API KDThreadAttr *KD_APIENTRY kdThreadAttrCreate(void); - -/* kdThreadAttrFree: Free a thread attribute object. */ -KD_API KDint KD_APIENTRY kdThreadAttrFree(KDThreadAttr *attr); - -/* kdThreadAttrSetDetachState: Set detachstate attribute. */ -#define KD_THREAD_CREATE_JOINABLE 0 -#define KD_THREAD_CREATE_DETACHED 1 -KD_API KDint KD_APIENTRY kdThreadAttrSetDetachState(KDThreadAttr *attr, KDint detachstate); - -/* kdThreadAttrSetStackSize: Set stacksize attribute. */ -KD_API KDint KD_APIENTRY kdThreadAttrSetStackSize(KDThreadAttr *attr, KDsize stacksize); - -/* kdThreadCreate: Create a new thread. */ -typedef struct KDThread KDThread; -KD_API KDThread *KD_APIENTRY kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg); - -/* kdThreadExit: Terminate this thread. */ -KD_API KD_NORETURN void KD_APIENTRY kdThreadExit(void *retval); - -/* kdThreadJoin: Wait for termination of another thread. */ -KD_API KDint KD_APIENTRY kdThreadJoin(KDThread *thread, void **retval); - -/* kdThreadDetach: Allow resources to be freed as soon as a thread terminates. */ -KD_API KDint KD_APIENTRY kdThreadDetach(KDThread *thread); - -/* kdThreadSelf: Return calling thread’s ID. */ -KD_API KDThread *KD_APIENTRY kdThreadSelf(void); - -/* kdThreadOnce: Wrap initialization code so it is executed only once. */ -#ifndef KD_NO_STATIC_DATA -typedef struct KDThreadOnce { - void *impl; -} KDThreadOnce; -#define KD_THREAD_ONCE_INIT { 0 } -KD_API KDint KD_APIENTRY kdThreadOnce(KDThreadOnce *once_control, void (*init_routine)(void)); -#endif /* ndef KD_NO_STATIC_DATA */ - -/* kdThreadMutexCreate: Create a mutex. */ -typedef struct KDThreadMutex KDThreadMutex; -KD_API KDThreadMutex *KD_APIENTRY kdThreadMutexCreate(const void *mutexattr); - -/* kdThreadMutexFree: Free a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexFree(KDThreadMutex *mutex); - -/* kdThreadMutexLock: Lock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexLock(KDThreadMutex *mutex); - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexUnlock(KDThreadMutex *mutex); - -/* kdThreadCondCreate: Create a condition variable. */ -typedef struct KDThreadCond KDThreadCond; -KD_API KDThreadCond *KD_APIENTRY kdThreadCondCreate(const void *attr); - -/* kdThreadCondFree: Free a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondFree(KDThreadCond *cond); - -/* kdThreadCondSignal, kdThreadCondBroadcast: Signal a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondSignal(KDThreadCond *cond); -KD_API KDint KD_APIENTRY kdThreadCondBroadcast(KDThreadCond *cond); - -/* kdThreadCondWait: Wait for a condition variable to be signalled. */ -KD_API KDint KD_APIENTRY kdThreadCondWait(KDThreadCond *cond, KDThreadMutex *mutex); - -/* kdThreadSemCreate: Create a semaphore. */ -typedef struct KDThreadSem KDThreadSem; -KD_API KDThreadSem *KD_APIENTRY kdThreadSemCreate(KDuint value); - -/* kdThreadSemFree: Free a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemFree(KDThreadSem *sem); - -/* kdThreadSemWait: Lock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemWait(KDThreadSem *sem); - -/* kdThreadSemPost: Unlock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemPost(KDThreadSem *sem); - -/******************************************************* - * Events - *******************************************************/ - -/* KDEvent: Struct type containing an event. */ -typedef struct KDEvent KDEvent; -#define KD_EVENT_USER 0x40000000 - -/* kdWaitEvent: Get next event from thread’s event queue. */ -KD_API const KDEvent *KD_APIENTRY kdWaitEvent(KDust timeout); - -/* kdSetEventUserptr: Set the userptr for global events. */ -KD_API void KD_APIENTRY kdSetEventUserptr(void *userptr); - -/* kdDefaultEvent: Perform default processing on an unrecognized event. */ -KD_API void KD_APIENTRY kdDefaultEvent(const KDEvent *event); - -/* kdPumpEvents: Pump the thread’s event queue, performing callbacks. */ -KD_API KDint KD_APIENTRY kdPumpEvents(void); - -/* kdInstallCallback: Install or remove a callback function for event processing. */ -typedef void (KD_APIENTRY KDCallbackFunc)(const KDEvent *event); -KD_API KDint KD_APIENTRY kdInstallCallback(KDCallbackFunc *func, KDint eventtype, void *eventuserptr); - -/* kdCreateEvent: Create an event for posting. */ -KD_API KDEvent *KD_APIENTRY kdCreateEvent(void); - -/* kdPostEvent, kdPostThreadEvent: Post an event into a queue. */ -KD_API KDint KD_APIENTRY kdPostEvent(KDEvent *event); -KD_API KDint KD_APIENTRY kdPostThreadEvent(KDEvent *event, KDThread *thread); -typedef struct KDEventUser { - union { - KDint64 i64; - void *p; - struct { - KDint32 a; - KDint32 b; - } i32pair; - } value1; - union { - KDint64 i64; - struct { - union { - KDint32 i32; - void *p; - } value2; - union { - KDint32 i32; - void *p; - } value3; - } i32orp; - } value23; -} KDEventUser; - -/* kdFreeEvent: Abandon an event instead of posting it. */ -KD_API void KD_APIENTRY kdFreeEvent(KDEvent *event); - -/******************************************************* - * System events - *******************************************************/ - -/* KD_EVENT_QUIT: Event to request to quit application. */ -#define KD_EVENT_QUIT 43 - -/* KD_EVENT_PAUSE: Application pause event. */ -#define KD_EVENT_PAUSE 45 - -/* KD_EVENT_RESUME: Application resume event. */ -#define KD_EVENT_RESUME 46 - -/* KD_EVENT_ORIENTATION: Orientation change event. */ -#define KD_EVENT_ORIENTATION 48 - -/* KD_IOGROUP_EVENT: I/O group for OpenKODE Core system events implemented as state values. */ -#define KD_IOGROUP_EVENT 0x100 -#define KD_STATE_EVENT_USING_BATTERY (KD_IOGROUP_EVENT + 0) -#define KD_STATE_EVENT_LOW_BATTERY (KD_IOGROUP_EVENT + 1) - - -/* KD_IOGROUP_ORIENTATION: I/O group for OpenKODE Core orientation state. */ -#define KD_IOGROUP_ORIENTATION 0x200 -#define KD_STATE_ORIENTATION_OVERALL (KD_IOGROUP_ORIENTATION + 0) -#define KD_STATE_ORIENTATION_SCREEN (KD_IOGROUP_ORIENTATION + 1) -#define KD_STATE_ORIENTATION_RENDERING (KD_IOGROUP_ORIENTATION + 2) -#define KD_STATE_ORIENTATION_LOCKSURFACE (KD_IOGROUP_ORIENTATION + 3) - - -/******************************************************* - * Application startup and exit. - *******************************************************/ - -/* kdMain: The application-defined main function. */ -KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv); - -/* kdExit: Exit the application. */ -KD_API KD_NORETURN void KD_APIENTRY kdExit(KDint status); - -/******************************************************* - * Utility library functions - *******************************************************/ - -/* kdAbs: Compute the absolute value of an integer. */ -KD_API KDint KD_APIENTRY kdAbs(KDint i); - -/* kdStrtof: Convert a string to a floating point number. */ -KD_API KDfloat32 KD_APIENTRY kdStrtof(const KDchar *s, KDchar **endptr); - -/* kdStrtol, kdStrtoul: Convert a string to an integer. */ -KD_API KDint KD_APIENTRY kdStrtol(const KDchar *s, KDchar **endptr, KDint base); -KD_API KDuint KD_APIENTRY kdStrtoul(const KDchar *s, KDchar **endptr, KDint base); - -/* kdLtostr, kdUltostr: Convert an integer to a string. */ -#define KD_LTOSTR_MAXLEN ((sizeof(KDint)*8*3+6)/10+2) -#define KD_ULTOSTR_MAXLEN ((sizeof(KDint)*8+2)/3+1) -KD_API KDssize KD_APIENTRY kdLtostr(KDchar *buffer, KDsize buflen, KDint number); -KD_API KDssize KD_APIENTRY kdUltostr(KDchar *buffer, KDsize buflen, KDuint number, KDint base); - -/* kdFtostr: Convert a float to a string. */ -#define KD_FTOSTR_MAXLEN 16 -KD_API KDssize KD_APIENTRY kdFtostr(KDchar *buffer, KDsize buflen, KDfloat32 number); - -/* kdCryptoRandom: Return random data. */ -KD_API KDint KD_APIENTRY kdCryptoRandom(KDuint8 *buf, KDsize buflen); - -/******************************************************* - * Locale specific functions - *******************************************************/ - -/* kdGetLocale: Determine the current language and locale. */ -KD_API const KDchar *KD_APIENTRY kdGetLocale(void); - -/******************************************************* - * Memory allocation - *******************************************************/ - -/* kdMalloc: Allocate memory. */ -KD_API void *KD_APIENTRY kdMalloc(KDsize size); - -/* kdFree: Free allocated memory block. */ -KD_API void KD_APIENTRY kdFree(void *ptr); - -/* kdRealloc: Resize memory block. */ -KD_API void *KD_APIENTRY kdRealloc(void *ptr, KDsize size); - -/******************************************************* - * Thread-local storage. - *******************************************************/ - -/* kdGetTLS: Get the thread-local storage pointer. */ -KD_API void *KD_APIENTRY kdGetTLS(void); - -/* kdSetTLS: Set the thread-local storage pointer. */ -KD_API void KD_APIENTRY kdSetTLS(void *ptr); - -/******************************************************* - * Mathematical functions - *******************************************************/ -#define KD_E_F 2.71828175F -#define KD_PI_F 3.14159274F -#define KD_PI_2_F 1.57079637F -#define KD_2PI_F 6.28318548F -#define KD_LOG2E_F 1.44269502F -#define KD_LOG10E_F 0.434294492F -#define KD_LN2_F 0.693147182F -#define KD_LN10_F 2.30258512F -#define KD_PI_4_F 0.785398185F -#define KD_1_PI_F 0.318309873F -#define KD_2_PI_F 0.636619747F -#define KD_2_SQRTPI_F 1.12837923F -#define KD_SQRT2_F 1.41421354F -#define KD_SQRT1_2_F 0.707106769F -#define KD_FLT_EPSILON 1.19209290E-07F -#define KD_FLT_MAX 3.40282346638528860e+38F -#define KD_FLT_MIN 1.17549435e-38F -/* KD_INFINITY is defined in kdplatform.h since no portable definition - * is possible. */ -#define kdIsNan(x) (((x) != (x)) ? 1 : 0) -#define KD_HUGE_VALF KD_INFINITY -#define KD_DEG_TO_RAD_F 0.0174532924F -#define KD_RAD_TO_DEG_F 57.2957802F - -/* kdAcosf: Arc cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdAcosf(KDfloat32 x); - -/* kdAsinf: Arc sine function. */ -KD_API KDfloat32 KD_APIENTRY kdAsinf(KDfloat32 x); - -/* kdAtanf: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtanf(KDfloat32 x); - -/* kdAtan2f: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtan2f(KDfloat32 y, KDfloat32 x); - -/* kdCosf: Cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdCosf(KDfloat32 x); - -/* kdSinf: Sine function. */ -KD_API KDfloat32 KD_APIENTRY kdSinf(KDfloat32 x); - -/* kdTanf: Tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdTanf(KDfloat32 x); - -/* kdExpf: Exponential function. */ -KD_API KDfloat32 KD_APIENTRY kdExpf(KDfloat32 x); - -/* kdLogf: Natural logarithm function. */ -KD_API KDfloat32 KD_APIENTRY kdLogf(KDfloat32 x); - -/* kdFabsf: Absolute value. */ -KD_API KDfloat32 KD_APIENTRY kdFabsf(KDfloat32 x); - -/* kdPowf: Power function. */ -KD_API KDfloat32 KD_APIENTRY kdPowf(KDfloat32 x, KDfloat32 y); - -/* kdSqrtf: Square root function. */ -KD_API KDfloat32 KD_APIENTRY kdSqrtf(KDfloat32 x); - -/* kdCeilf: Return ceiling value. */ -KD_API KDfloat32 KD_APIENTRY kdCeilf(KDfloat32 x); - -/* kdFloorf: Return floor value. */ -KD_API KDfloat32 KD_APIENTRY kdFloorf(KDfloat32 x); - -/* kdRoundf: Round value to nearest integer. */ -KD_API KDfloat32 KD_APIENTRY kdRoundf(KDfloat32 x); - -/* kdInvsqrtf: Inverse square root function. */ -KD_API KDfloat32 KD_APIENTRY kdInvsqrtf(KDfloat32 x); - -/* kdFmodf: Calculate floating point remainder. */ -KD_API KDfloat32 KD_APIENTRY kdFmodf(KDfloat32 x, KDfloat32 y); - -/******************************************************* - * String and memory functions - *******************************************************/ - -/* kdMemchr: Scan memory for a byte value. */ -KD_API void *KD_APIENTRY kdMemchr(const void *src, KDint byte, KDsize len); - -/* kdMemcmp: Compare two memory regions. */ -KD_API KDint KD_APIENTRY kdMemcmp(const void *src1, const void *src2, KDsize len); - -/* kdMemcpy: Copy a memory region, no overlapping. */ -KD_API void *KD_APIENTRY kdMemcpy(void *buf, const void *src, KDsize len); - -/* kdMemmove: Copy a memory region, overlapping allowed. */ -KD_API void *KD_APIENTRY kdMemmove(void *buf, const void *src, KDsize len); - -/* kdMemset: Set bytes in memory to a value. */ -KD_API void *KD_APIENTRY kdMemset(void *buf, KDint byte, KDsize len); - -/* kdStrchr: Scan string for a byte value. */ -KD_API KDchar *KD_APIENTRY kdStrchr(const KDchar *str, KDint ch); - -/* kdStrcmp: Compares two strings. */ -KD_API KDint KD_APIENTRY kdStrcmp(const KDchar *str1, const KDchar *str2); - -/* kdStrlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrlen(const KDchar *str); - -/* kdStrnlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrnlen(const KDchar *str, KDsize maxlen); - -/* kdStrncat_s: Concatenate two strings. */ -KD_API KDint KD_APIENTRY kdStrncat_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srcmaxlen); - -/* kdStrncmp: Compares two strings with length limit. */ -KD_API KDint KD_APIENTRY kdStrncmp(const KDchar *str1, const KDchar *str2, KDsize maxlen); - -/* kdStrcpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrcpy_s(KDchar *buf, KDsize buflen, const KDchar *src); - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrncpy_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srclen); - -/******************************************************* - * Time functions - *******************************************************/ - -/* kdGetTimeUST: Get the current unadjusted system time. */ -KD_API KDust KD_APIENTRY kdGetTimeUST(void); - -/* kdTime: Get the current wall clock time. */ -KD_API KDtime KD_APIENTRY kdTime(KDtime *timep); - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -typedef struct KDTm { - KDint32 tm_sec; - KDint32 tm_min; - KDint32 tm_hour; - KDint32 tm_mday; - KDint32 tm_mon; - KDint32 tm_year; - KDint32 tm_wday; - KDint32 tm_yday; -} KDTm; -KD_API KDTm *KD_APIENTRY kdGmtime_r(const KDtime *timep, KDTm *result); -KD_API KDTm *KD_APIENTRY kdLocaltime_r(const KDtime *timep, KDTm *result); - -/* kdUSTAtEpoch: Get the UST corresponding to KDtime 0. */ -KD_API KDust KD_APIENTRY kdUSTAtEpoch(void); - -/******************************************************* - * Timer functions - *******************************************************/ - -/* kdSetTimer: Set timer. */ -#define KD_TIMER_ONESHOT 61 -#define KD_TIMER_PERIODIC_AVERAGE 62 -#define KD_TIMER_PERIODIC_MINIMUM 63 -typedef struct KDTimer KDTimer; -KD_API KDTimer *KD_APIENTRY kdSetTimer(KDint64 interval, KDint periodic, void *eventuserptr); - -/* kdCancelTimer: Cancel and free a timer. */ -KD_API KDint KD_APIENTRY kdCancelTimer(KDTimer *timer); - -/* KD_EVENT_TIMER: Timer fire event. */ -#define KD_EVENT_TIMER 42 - -/******************************************************* - * File system - *******************************************************/ -#define KD_EOF (-1) - -/* kdFopen: Open a file from the file system. */ -typedef struct KDFile KDFile; -KD_API KDFile *KD_APIENTRY kdFopen(const KDchar *pathname, const KDchar *mode); - -/* kdFclose: Close an open file. */ -KD_API KDint KD_APIENTRY kdFclose(KDFile *file); - -/* kdFflush: Flush an open file. */ -KD_API KDint KD_APIENTRY kdFflush(KDFile *file); - -/* kdFread: Read from a file. */ -KD_API KDsize KD_APIENTRY kdFread(void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdFwrite: Write to a file. */ -KD_API KDsize KD_APIENTRY kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdGetc: Read next byte from an open file. */ -KD_API KDint KD_APIENTRY kdGetc(KDFile *file); - -/* kdPutc: Write a byte to an open file. */ -KD_API KDint KD_APIENTRY kdPutc(KDint c, KDFile *file); - -/* kdFgets: Read a line of text from an open file. */ -KD_API KDchar *KD_APIENTRY kdFgets(KDchar *buffer, KDsize buflen, KDFile *file); - -/* kdFEOF: Check for end of file. */ -KD_API KDint KD_APIENTRY kdFEOF(KDFile *file); - -/* kdFerror: Check for an error condition on an open file. */ -KD_API KDint KD_APIENTRY kdFerror(KDFile *file); - -/* kdClearerr: Clear a file’s error and end-of-file indicators. */ -KD_API void KD_APIENTRY kdClearerr(KDFile *file); - -/* kdFseek: Reposition the file position indicator in a file. */ -typedef enum { - KD_SEEK_SET = 0, - KD_SEEK_CUR = 1, - KD_SEEK_END = 2 -} KDfileSeekOrigin; -KD_API KDint KD_APIENTRY kdFseek(KDFile *file, KDoff offset, KDfileSeekOrigin origin); - -/* kdFtell: Get the file position of an open file. */ -KD_API KDoff KD_APIENTRY kdFtell(KDFile *file); - -/* kdMkdir: Create new directory. */ -KD_API KDint KD_APIENTRY kdMkdir(const KDchar *pathname); - -/* kdRmdir: Delete a directory. */ -KD_API KDint KD_APIENTRY kdRmdir(const KDchar *pathname); - -/* kdRename: Rename a file. */ -KD_API KDint KD_APIENTRY kdRename(const KDchar *src, const KDchar *dest); - -/* kdRemove: Delete a file. */ -KD_API KDint KD_APIENTRY kdRemove(const KDchar *pathname); - -/* kdTruncate: Truncate or extend a file. */ -KD_API KDint KD_APIENTRY kdTruncate(const KDchar *pathname, KDoff length); - -/* kdStat, kdFstat: Return information about a file. */ -typedef struct KDStat { - KDmode st_mode; - KDoff st_size; - KDtime st_mtime; -} KDStat; -KD_API KDint KD_APIENTRY kdStat(const KDchar *pathname, struct KDStat *buf); -KD_API KDint KD_APIENTRY kdFstat(KDFile *file, struct KDStat *buf); -#define KD_ISREG(m) ((m) & 0x8000) -#define KD_ISDIR(m) ((m) & 0x4000) - -/* kdAccess: Determine whether the application can access a file or directory. */ -KD_API KDint KD_APIENTRY kdAccess(const KDchar *pathname, KDint amode); -#define KD_R_OK 4 -#define KD_W_OK 2 -#define KD_X_OK 1 - -/* kdOpenDir: Open a directory ready for listing. */ -typedef struct KDDir KDDir; -KD_API KDDir *KD_APIENTRY kdOpenDir(const KDchar *pathname); - -/* kdReadDir: Return the next file in a directory. */ -typedef struct KDDirent { - const KDchar *d_name; -} KDDirent; -KD_API KDDirent *KD_APIENTRY kdReadDir(KDDir *dir); - -/* kdCloseDir: Close a directory. */ -KD_API KDint KD_APIENTRY kdCloseDir(KDDir *dir); - -/* kdGetFree: Get free space on a drive. */ -KD_API KDoff KD_APIENTRY kdGetFree(const KDchar *pathname); - -/******************************************************* - * Network sockets - *******************************************************/ - -/* KDSockaddr: Struct type for socket address. */ -typedef struct KDSockaddr { - KDuint16 family; - union { -#define KD_AF_INET 70 - struct { - KDuint16 port; - KDuint32 address; - } sin; - } data; -} KDSockaddr; - -/* kdNameLookup: Look up a hostname. */ -KD_API KDint KD_APIENTRY kdNameLookup(KDint af, const KDchar *hostname, void *eventuserptr); - -/* kdNameLookupCancel: Selectively cancels ongoing kdNameLookup operations. */ -KD_API void KD_APIENTRY kdNameLookupCancel(void *eventuserptr); - -/* kdSocketCreate: Creates a socket. */ -typedef struct KDSocket KDSocket; -KD_API KDSocket *KD_APIENTRY kdSocketCreate(KDint type, void *eventuserptr); -#define KD_SOCK_TCP 64 -#define KD_SOCK_UDP 65 - -/* kdSocketClose: Closes a socket. */ -KD_API KDint KD_APIENTRY kdSocketClose(KDSocket *socket); - -/* kdSocketBind: Bind a socket. */ -KD_API KDint KD_APIENTRY kdSocketBind(KDSocket *socket, const struct KDSockaddr *addr, KDboolean reuse); -#define KD_INADDR_ANY 0 - -/* kdSocketGetName: Get the local address of a socket. */ -KD_API KDint KD_APIENTRY kdSocketGetName(KDSocket *socket, struct KDSockaddr *addr); - -/* kdSocketConnect: Connects a socket. */ -KD_API KDint KD_APIENTRY kdSocketConnect(KDSocket *socket, const KDSockaddr *addr); - -/* kdSocketListen: Listen on a socket. */ -KD_API KDint KD_APIENTRY kdSocketListen(KDSocket *socket, KDint backlog); - -/* kdSocketAccept: Accept an incoming connection. */ -KD_API KDSocket *KD_APIENTRY kdSocketAccept(KDSocket *socket, KDSockaddr *addr, void *eventuserptr); - -/* kdSocketSend, kdSocketSendTo: Send data to a socket. */ -KD_API KDint KD_APIENTRY kdSocketSend(KDSocket *socket, const void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketSendTo(KDSocket *socket, const void *buf, KDint len, const KDSockaddr *addr); - -/* kdSocketRecv, kdSocketRecvFrom: Receive data from a socket. */ -KD_API KDint KD_APIENTRY kdSocketRecv(KDSocket *socket, void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketRecvFrom(KDSocket *socket, void *buf, KDint len, KDSockaddr *addr); - -/* kdHtonl: Convert a 32-bit integer from host to network byte order. */ -KD_API KDuint32 KD_APIENTRY kdHtonl(KDuint32 hostlong); - -/* kdHtons: Convert a 16-bit integer from host to network byte order. */ -KD_API KDuint16 KD_APIENTRY kdHtons(KDuint16 hostshort); - -/* kdNtohl: Convert a 32-bit integer from network to host byte order. */ -KD_API KDuint32 KD_APIENTRY kdNtohl(KDuint32 netlong); - -/* kdNtohs: Convert a 16-bit integer from network to host byte order. */ -KD_API KDuint16 KD_APIENTRY kdNtohs(KDuint16 netshort); - -/* kdInetAton: Convert a “dotted quad” format address to an integer. */ -KD_API KDint KD_APIENTRY kdInetAton(const KDchar *cp, KDuint32 *inp); - -/* kdInetNtop: Convert a network address to textual form. */ -#define KD_INET_ADDRSTRLEN 16 -typedef struct KDInAddr { - KDuint32 s_address; // Renamed this from s_addr as it causes a conflict with winsock2.h -} KDInAddr; -KD_API const KDchar *KD_APIENTRY kdInetNtop(KDuint af, const void *src, KDchar *dst, KDsize cnt); - -/* KD_EVENT_SOCKET_READABLE: Event to indicate that a socket is readable. */ -#define KD_EVENT_SOCKET_READABLE 49 -typedef struct KDEventSocketReadable { - KDSocket *socket; -} KDEventSocketReadable; - -/* KD_EVENT_SOCKET_WRITABLE: Event to indicate that a socket is writable. */ -#define KD_EVENT_SOCKET_WRITABLE 50 -typedef struct KDEventSocketWritable { - KDSocket *socket; -} KDEventSocketWritable; - -/* KD_EVENT_SOCKET_CONNECT_COMPLETE: Event generated when a socket connect is complete */ -#define KD_EVENT_SOCKET_CONNECT_COMPLETE 51 -typedef struct KDEventSocketConnect { - KDSocket *socket; - KDint32 error; -} KDEventSocketConnect; - -/* KD_EVENT_SOCKET_INCOMING: Event generated when a listening socket detects an incoming connection or an error. */ -#define KD_EVENT_SOCKET_INCOMING 52 -typedef struct KDEventSocketIncoming { - KDSocket *socket; -} KDEventSocketIncoming; - -/* KD_EVENT_NAME_LOOKUP_COMPLETE: kdNameLookup complete event. */ -#define KD_EVENT_NAME_LOOKUP_COMPLETE 53 -typedef struct KDEventNameLookup { - KDint32 error; - KDint32 resultlen; - const KDSockaddr *result; - KDboolean more; -} KDEventNameLookup; - -/******************************************************* - * Input/output - *******************************************************/ - -/* KD_EVENT_STATE: State changed event. */ -#define KD_EVENT_STATE 55 - -typedef struct KDEventState { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventState; - -/* KD_EVENT_INPUT: Input changed event. */ -#define KD_EVENT_INPUT 56 - -typedef struct KDEventInput { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventInput; - -/* KD_EVENT_INPUT_JOG: Jogdial jog event. */ -#define KD_EVENT_INPUT_JOG 71 -typedef struct KDEventInputJog { - KDint32 index; - KDint32 count; -} KDEventInputJog; - -/* KD_EVENT_INPUT_POINTER: Pointer input changed event. */ -#define KD_EVENT_INPUT_POINTER 57 -typedef struct KDEventInputPointer { - KDint32 index; - KDint32 select; - KDint32 x; - KDint32 y; -} KDEventInputPointer; - -/* KD_EVENT_INPUT_STICK: Joystick stick changed event. */ -#define KD_EVENT_INPUT_STICK 58 -typedef struct KDEventInputStick { - KDint32 index; - KDint32 x; - KDint32 y; - KDint32 z; -} KDEventInputStick; - -/* kdStateGeti, kdStateGetl, kdStateGetf: get state value(s) */ -KD_API KDint KD_APIENTRY kdStateGeti(KDint startidx, KDuint numidxs, KDint32 *buffer); -KD_API KDint KD_APIENTRY kdStateGetl(KDint startidx, KDuint numidxs, KDint64 *buffer); -KD_API KDint KD_APIENTRY kdStateGetf(KDint startidx, KDuint numidxs, KDfloat32 *buffer); - -/* kdOutputSeti, kdOutputSetf: set outputs */ -KD_API KDint KD_APIENTRY kdOutputSeti(KDint startidx, KDuint numidxs, const KDint32 *buffer); -KD_API KDint KD_APIENTRY kdOutputSetf(KDint startidx, KDuint numidxs, const KDfloat32 *buffer); -#define KD_IO_CONTROLLER_STRIDE 64 - -/* KD_IOGROUP_GAMEKEYS: I/O group for game keys. */ -#define KD_IOGROUP_GAMEKEYS 0x1000 -#define KD_STATE_GAMEKEYS_AVAILABILITY (KD_IOGROUP_GAMEKEYS + 0) -#define KD_INPUT_GAMEKEYS_UP (KD_IOGROUP_GAMEKEYS + 1) -#define KD_INPUT_GAMEKEYS_LEFT (KD_IOGROUP_GAMEKEYS + 2) -#define KD_INPUT_GAMEKEYS_RIGHT (KD_IOGROUP_GAMEKEYS + 3) -#define KD_INPUT_GAMEKEYS_DOWN (KD_IOGROUP_GAMEKEYS + 4) -#define KD_INPUT_GAMEKEYS_FIRE (KD_IOGROUP_GAMEKEYS + 5) -#define KD_INPUT_GAMEKEYS_A (KD_IOGROUP_GAMEKEYS + 6) -#define KD_INPUT_GAMEKEYS_B (KD_IOGROUP_GAMEKEYS + 7) -#define KD_INPUT_GAMEKEYS_C (KD_IOGROUP_GAMEKEYS + 8) -#define KD_INPUT_GAMEKEYS_D (KD_IOGROUP_GAMEKEYS + 9) - -/* KD_IOGROUP_GAMEKEYSNC: I/O group for game keys, no chording. */ -#define KD_IOGROUP_GAMEKEYSNC 0x1100 -#define KD_STATE_GAMEKEYSNC_AVAILABILITY (KD_IOGROUP_GAMEKEYSNC + 0) -#define KD_INPUT_GAMEKEYSNC_UP (KD_IOGROUP_GAMEKEYSNC + 1) -#define KD_INPUT_GAMEKEYSNC_LEFT (KD_IOGROUP_GAMEKEYSNC + 2) -#define KD_INPUT_GAMEKEYSNC_RIGHT (KD_IOGROUP_GAMEKEYSNC + 3) -#define KD_INPUT_GAMEKEYSNC_DOWN (KD_IOGROUP_GAMEKEYSNC + 4) -#define KD_INPUT_GAMEKEYSNC_FIRE (KD_IOGROUP_GAMEKEYSNC + 5) -#define KD_INPUT_GAMEKEYSNC_A (KD_IOGROUP_GAMEKEYSNC + 6) -#define KD_INPUT_GAMEKEYSNC_B (KD_IOGROUP_GAMEKEYSNC + 7) -#define KD_INPUT_GAMEKEYSNC_C (KD_IOGROUP_GAMEKEYSNC + 8) -#define KD_INPUT_GAMEKEYSNC_D (KD_IOGROUP_GAMEKEYSNC + 9) - -/* KD_IOGROUP_PHONEKEYPAD: I/O group for phone keypad. */ -#define KD_IOGROUP_PHONEKEYPAD 0x2000 -#define KD_STATE_PHONEKEYPAD_AVAILABILITY (KD_IOGROUP_PHONEKEYPAD + 0) -#define KD_INPUT_PHONEKEYPAD_0 (KD_IOGROUP_PHONEKEYPAD + 1) -#define KD_INPUT_PHONEKEYPAD_1 (KD_IOGROUP_PHONEKEYPAD + 2) -#define KD_INPUT_PHONEKEYPAD_2 (KD_IOGROUP_PHONEKEYPAD + 3) -#define KD_INPUT_PHONEKEYPAD_3 (KD_IOGROUP_PHONEKEYPAD + 4) -#define KD_INPUT_PHONEKEYPAD_4 (KD_IOGROUP_PHONEKEYPAD + 5) -#define KD_INPUT_PHONEKEYPAD_5 (KD_IOGROUP_PHONEKEYPAD + 6) -#define KD_INPUT_PHONEKEYPAD_6 (KD_IOGROUP_PHONEKEYPAD + 7) -#define KD_INPUT_PHONEKEYPAD_7 (KD_IOGROUP_PHONEKEYPAD + 8) -#define KD_INPUT_PHONEKEYPAD_8 (KD_IOGROUP_PHONEKEYPAD + 9) -#define KD_INPUT_PHONEKEYPAD_9 (KD_IOGROUP_PHONEKEYPAD + 10) -#define KD_INPUT_PHONEKEYPAD_STAR (KD_IOGROUP_PHONEKEYPAD + 11) -#define KD_INPUT_PHONEKEYPAD_HASH (KD_IOGROUP_PHONEKEYPAD + 12) -#define KD_INPUT_PHONEKEYPAD_LEFTSOFT (KD_IOGROUP_PHONEKEYPAD + 13) -#define KD_INPUT_PHONEKEYPAD_RIGHTSOFT (KD_IOGROUP_PHONEKEYPAD + 14) -#define KD_STATE_PHONEKEYPAD_ORIENTATION (KD_IOGROUP_PHONEKEYPAD + 15) - -/* KD_IOGROUP_VIBRATE: I/O group for vibrate. */ -#define KD_IOGROUP_VIBRATE 0x3000 -#define KD_STATE_VIBRATE_AVAILABILITY (KD_IOGROUP_VIBRATE + 0) -#define KD_STATE_VIBRATE_MINFREQUENCY (KD_IOGROUP_VIBRATE + 1) -#define KD_STATE_VIBRATE_MAXFREQUENCY (KD_IOGROUP_VIBRATE + 2) -#define KD_OUTPUT_VIBRATE_VOLUME (KD_IOGROUP_VIBRATE + 3) -#define KD_OUTPUT_VIBRATE_FREQUENCY (KD_IOGROUP_VIBRATE + 4) - -/* KD_IOGROUP_POINTER: I/O group for pointer. */ -#define KD_IOGROUP_POINTER 0x4000 -#define KD_STATE_POINTER_AVAILABILITY (KD_IOGROUP_POINTER + 0) -#define KD_INPUT_POINTER_X (KD_IOGROUP_POINTER + 1) -#define KD_INPUT_POINTER_Y (KD_IOGROUP_POINTER + 2) -#define KD_INPUT_POINTER_SELECT (KD_IOGROUP_POINTER + 3) - -/* KD_IOGROUP_BACKLIGHT: I/O group for backlight. */ -#define KD_IOGROUP_BACKLIGHT 0x5000 -#define KD_STATE_BACKLIGHT_AVAILABILITY (KD_IOGROUP_BACKLIGHT + 0) -#define KD_OUTPUT_BACKLIGHT_FORCE (KD_IOGROUP_BACKLIGHT + 1) - -/* KD_IOGROUP_JOGDIAL: I/O group for a jog dial. */ -#define KD_IOGROUP_JOGDIAL 0x6000 -#define KD_STATE_JOGDIAL_AVAILABILITY (KD_IOGROUP_JOGDIAL + 0) -#define KD_INPUT_JOGDIAL_UP (KD_IOGROUP_JOGDIAL + 1) -#define KD_INPUT_JOGDIAL_LEFT (KD_IOGROUP_JOGDIAL + 2) -#define KD_INPUT_JOGDIAL_RIGHT (KD_IOGROUP_JOGDIAL + 3) -#define KD_INPUT_JOGDIAL_DOWN (KD_IOGROUP_JOGDIAL + 4) -#define KD_INPUT_JOGDIAL_SELECT (KD_IOGROUP_JOGDIAL + 5) - -/* KD_IOGROUP_STICK: I/O group for joystick. */ -#define KD_IOGROUP_STICK 0x7000 -#define KD_STATE_STICK_AVAILABILITY (KD_IOGROUP_STICK + 0) -#define KD_INPUT_STICK_X (KD_IOGROUP_STICK + 1) -#define KD_INPUT_STICK_Y (KD_IOGROUP_STICK + 2) -#define KD_INPUT_STICK_Z (KD_IOGROUP_STICK + 3) -#define KD_INPUT_STICK_BUTTON (KD_IOGROUP_STICK + 4) -#define KD_IO_STICK_STRIDE 8 - -/* KD_IOGROUP_DPAD: I/O group for D-pad. */ -#define KD_IOGROUP_DPAD 0x8000 -#define KD_STATE_DPAD_AVAILABILITY (KD_IOGROUP_DPAD + 0) -#define KD_STATE_DPAD_COPY (KD_IOGROUP_DPAD + 1) -#define KD_INPUT_DPAD_UP (KD_IOGROUP_DPAD + 2) -#define KD_INPUT_DPAD_LEFT (KD_IOGROUP_DPAD + 3) -#define KD_INPUT_DPAD_RIGHT (KD_IOGROUP_DPAD + 4) -#define KD_INPUT_DPAD_DOWN (KD_IOGROUP_DPAD + 5) -#define KD_INPUT_DPAD_SELECT (KD_IOGROUP_DPAD + 6) -#define KD_IO_DPAD_STRIDE 8 - -/* KD_IOGROUP_BUTTONS: I/O group for buttons associated with joystick or D-pad. */ -#define KD_IOGROUP_BUTTONS 0x9000 -#define KD_STATE_BUTTONS_AVAILABILITY (KD_IOGROUP_BUTTONS + 0) -#define KD_INPUT_BUTTONS_0 (KD_IOGROUP_BUTTONS + 1) - -/* KD_IO_UNDEFINED: I/O items reserved for implementation-dependent use. */ -#define KD_IO_UNDEFINED 0x40000000 - -/******************************************************* - * Windowing - *******************************************************/ -#ifdef KD_WINDOW_SUPPORTED -#include <EGL/egl.h> -typedef struct KDWindow KDWindow; - -/* kdCreateWindow: Create a window. */ -KD_API KDWindow *KD_APIENTRY kdCreateWindow(EGLDisplay display, EGLConfig config, void *eventuserptr); - -/* kdDestroyWindow: Destroy a window. */ -KD_API KDint KD_APIENTRY kdDestroyWindow(KDWindow *window); - -/* kdSetWindowPropertybv, kdSetWindowPropertyiv, kdSetWindowPropertycv: Set a window property to request a change in the on-screen representation of the window. */ -KD_API KDint KD_APIENTRY kdSetWindowPropertybv(KDWindow *window, KDint pname, const KDboolean *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertyiv(KDWindow *window, KDint pname, const KDint32 *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertycv(KDWindow *window, KDint pname, const KDchar *param); - -/* kdGetWindowPropertybv, kdGetWindowPropertyiv, kdGetWindowPropertycv: Get the current value of a window property. */ -KD_API KDint KD_APIENTRY kdGetWindowPropertybv(KDWindow *window, KDint pname, KDboolean *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertyiv(KDWindow *window, KDint pname, KDint32 *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertycv(KDWindow *window, KDint pname, KDchar *param, KDsize *size); - -/* kdRealizeWindow: Realize the window as a displayable entity and get the native window handle for passing to EGL. */ -KD_API KDint KD_APIENTRY kdRealizeWindow(KDWindow *window, EGLNativeWindowType *nativewindow); - -/* KD_WINDOWPROPERTY_SIZE: Window client area width and height. */ -#define KD_WINDOWPROPERTY_SIZE 66 - -/* KD_WINDOWPROPERTY_VISIBILITY: Window visibility status. */ -#define KD_WINDOWPROPERTY_VISIBILITY 67 - -/* KD_WINDOWPROPERTY_FOCUS: Window input focus status. */ -#define KD_WINDOWPROPERTY_FOCUS 68 - -/* KD_WINDOWPROPERTY_CAPTION: Window caption. */ -#define KD_WINDOWPROPERTY_CAPTION 69 - -/* KD_EVENT_WINDOW_CLOSE: Event to request to close window. */ -#define KD_EVENT_WINDOW_CLOSE 44 - -/* KD_EVENT_WINDOWPROPERTY_CHANGE: Notification about realized window property change. */ -#define KD_EVENT_WINDOWPROPERTY_CHANGE 47 -typedef struct KDEventWindowProperty { - KDint32 pname; -} KDEventWindowProperty; - -/* KD_EVENT_WINDOW_FOCUS: Event for change of window’s focus state. */ -#define KD_EVENT_WINDOW_FOCUS 60 -typedef struct KDEventWindowFocus { - KDint32 focusstate; -} KDEventWindowFocus; - -/* KD_EVENT_WINDOW_REDRAW: Event to notify need to redraw the window. */ -#define KD_EVENT_WINDOW_REDRAW 59 -#endif /* KD_WINDOW_SUPPORTED */ - -/******************************************************* - * Assertions and logging - *******************************************************/ - -/* kdHandleAssertion: Handle assertion failure. */ -KD_API void KD_APIENTRY kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber); - -/* kdLogMessage: Output a log message. */ -#ifdef KD_NDEBUG -#define kdLogMessage(s) -#else -KD_API void KD_APIENTRY kdLogMessage(const KDchar *string); -#endif - -/* struct KDEvent delayed to the end as it uses event data structs from - * other parts of the .h file. */ -struct KDEvent { - KDust timestamp; - KDint32 type; - void *userptr; - union KDEventData { - KDEventState state; - KDEventInput input; - KDEventInputJog inputjog; - KDEventInputPointer inputpointer; - KDEventInputStick inputstick; - KDEventSocketReadable socketreadable; - KDEventSocketWritable socketwritable; - KDEventSocketConnect socketconnect; - KDEventSocketIncoming socketincoming; - KDEventNameLookup namelookup; -#ifdef KD_WINDOW_SUPPORTED - KDEventWindowProperty windowproperty; - KDEventWindowFocus windowfocus; -#endif /* KD_WINDOW_SUPPORTED */ - KDEventUser user; - } data; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/kdplatform.h b/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/kdplatform.h deleted file mode 100644 index 3cf09f52..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/PlatformLibs/KD/kdplatform.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* Sample KD/kdplatform.h for OpenKODE Core 1.0.3 */ -#ifndef __kdplatform_h_ -#define __kdplatform_h_ - -#define KD_API -#define KD_APIENTRY - -typedef int KDint32; -typedef unsigned int KDuint32; -typedef long long KDint64; -typedef unsigned long long KDuint64; -typedef short KDint16; -typedef unsigned short KDuint16; -typedef unsigned long KDuintptr; -typedef unsigned long KDsize; -typedef long KDssize; -#define KDINT_MIN (-0x7fffffff-1) -#define KDINT_MAX 0x7fffffff -#define KDUINT_MAX 0xffffffffU -#define KDINT64_MIN (-0x7fffffffffffffffLL-1) -#define KDINT64_MAX 0x7fffffffffffffffLL -#define KDUINT64_MAX 0xffffffffffffffffULL -#define KDSSIZE_MIN (-0x7fffffff-1) -#define KDSSIZE_MAX 0x7fffffff -#define KDSIZE_MAX 0xffffffffU -#define KDUINTPTR_MAX 0xffffffffU -#define KD_NORETURN -#define KD_WINDOW_SUPPORTED -#ifdef KD_NDEBUG -#define kdAssert(c) -#else -#define kdAssert(c) ((void)( (c) ? 0 : (kdHandleAssertion(#c, __FILE__, __LINE__), 0))) -#endif - -#define KD_INFINITY_BITS 0x7f800000u -#define KD_INFINITY (kdBitsToFloatNV(KD_INFINITY_BITS)) - -KD_API float KD_APIENTRY kdBitsToFloatNV(KDuint32 x); - - -/** KHR_formatted extension */ -#include <stdarg.h> -typedef va_list KDVaListKHR; - -// If there are problems with including stdarg.h here under any of the Windows -// operating systems, we might want to change it back to using char* instead of -// va_list -//typedef char *KDVaListKHR; - - -#define KD_VA_START_KHR(ap, parmN) \ - do {ap = (KDVaListKHR)&parmN + sizeof(parmN);} while(0) - -#define KD_VA_ARG_CHAR_KHR(ap) (KDchar)va_arg(ap, KDint) -#define KD_VA_ARG_CHARPTR_KHR(ap) (KDchar*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16_KHR(ap) (KDint16)va_arg(ap, KDint) -#define KD_VA_ARG_INT32_KHR(ap) va_arg(ap, KDint32) -#define KD_VA_ARG_INT_KHR(ap) va_arg(ap, KDint) -#define KD_VA_ARG_INT64_KHR(ap) va_arg(ap, KDint64) -#define KD_VA_ARG_INTPTR_KHR(ap) (KDint*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16PTR_KHR(ap) (KDint16*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_FLOAT32_KHR(ap) (KDfloat32)(va_arg(ap, double)) -#define KD_VA_ARG_PTR_KHR(ap) (void *)va_arg(ap, char *) - -#define KD_VA_END_KHR(ap) \ - do {ap = (KDVaListKHR)0;} while(0) - -#endif /* __kdplatform_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/MinKD.c b/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/MinKD.c deleted file mode 100644 index 2e1bba20..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/MinKD.c +++ /dev/null @@ -1,328 +0,0 @@ -#include "kd.h" -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <time.h> -#ifndef __INTEGRITY -#include <memory.h> -#endif -#include <pthread.h> -#include <dirent.h> - -#ifdef __INTEGRITY -#ifndef CLOCK_MONOTONIC -#define CLOCK_MONOTONIC 4 -#endif -#endif - -KDFile* kdFopen(const KDchar* pathname, const KDchar* mode) -{ - FILE* retval; - retval = fopen( pathname, mode ); - return (KDFile*)retval; -} - - -KDsize kdFread(void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fread( buffer, size, count, (FILE*)file ); -} - -/* kdFwrite: Write to a file. */ -KDsize kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fwrite( buffer, size, count, (FILE*)file ); -} - -KDint kdFclose(KDFile *file) -{ - return fclose( (FILE*)file ); -} - -/* kdCosf: Cosine function. */ -KDfloat32 kdCosf(KDfloat32 x) { return cosf( x ); } - -/* kdSinf: Sine function. */ -KDfloat32 kdSinf(KDfloat32 x) { return sinf( x ); } - -KDfloat32 kdSqrtf(KDfloat32 x ) { return sqrtf( x ); } - -KDfloat32 kdTanf( KDfloat32 x ) { return tanf( x ); } - -KDint kdAbs(KDint i) -{ - return i < 0 ? -i : i; -} - - -KDfloat32 kdFabsf(KDfloat32 i) { return fabs( i ); } - -/* kdStrcpy_s: Copy a string with an overrun check. */ - -KDint kdStrcpy_s(KDchar* buf, KDsize buflen, const KDchar* src) -{ - return kdStrncpy_s(buf, buflen, src, -1); -} - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KDint kdStrncpy_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srclen) -{ - const char* term; - if ( srclen == (KDsize)-1) - srclen = buflen; - term = memchr(src, 0, srclen); - if (term) - srclen = term - src; - if (srclen >= buflen) { - if (buflen) - *buf = 0; - return KD_EINVAL; - } - memcpy(buf, src, srclen); - buf[srclen] = 0; - return 0; -} - -/* kdStrncat_s: Concatenate two strings. */ -KDint kdStrncat_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srcmaxlen) -{ - size_t origlen = strlen(buf); - const char* p = memchr(src, 0, srcmaxlen); - if (p) - srcmaxlen = p - src; - if (origlen + srcmaxlen >= buflen) - { - /* spec says "buf[0] is set to 0". But that's bad if buflen == 0! - * kdStrncpy_s's spec is better here. */ - if (buflen) - buf[0] = 0; - return KD_ERANGE; - } - memcpy(buf + origlen, src, srcmaxlen); - buf[origlen + srcmaxlen] = 0; - return 0; -} -/* kdMemset: Set bytes in memory to a value. */ -void* kdMemset(void *buf, KDint byte, KDsize len) { return memset( buf, byte, len ); } - -/* kdStrcmp: Compares two strings. */ -KDint kdStrcmp(const KDchar *str1, const KDchar *str2) { return strcmp( str1, str2); } - -/* kdStrlen: Determine the length of a string. */ -KDsize kdStrlen(const KDchar *str) { return strlen( str ); } - -void* kdMalloc( KDsize size ) { return malloc(size); } - -void kdFree( void* ptr ) { free( ptr ); } - -void* kdMemcpy(void *buf, const void *src, KDsize len) { return memcpy( buf, src, len ); } - -struct KDThreadMutex -{ - pthread_mutex_t p_mutex; -}; - -/* kdThreadMutexCreate: Create a mutex. */ -KD_API KDThreadMutex* kdThreadMutexCreate(const void *mutexattr) -{ - KDThreadMutex* mutex = malloc(sizeof(KDThreadMutex)); - if (mutex) - { - if (pthread_mutex_init(&mutex->p_mutex, NULL) == 0) - { - return mutex; - } - free(mutex); - } - - return KD_NULL; -} - -/* kdThreadMutexFree: Free a mutex. */ -KDint kdThreadMutexFree(KDThreadMutex *mutex) -{ - int res; - res = pthread_mutex_destroy(&mutex->p_mutex); - // If the mutex destroy failed, don't free the memory. - // Per OpenKODE spec, this is undefined behaviour, and - // we can leak the memory. The reason for this is that - // later allocations may fail if they happen to go - // to the same memory - if (!res) - free(mutex); - return 0; -} - -/* kdThreadMutexLock: Lock a mutex. */ -KDint kdThreadMutexLock(KDThreadMutex *mutex) -{ - (void)pthread_mutex_lock(&mutex->p_mutex); - return 0; -} - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KDint kdThreadMutexUnlock(KDThreadMutex *mutex) -{ - pthread_mutex_unlock(&mutex->p_mutex); - return 0; -} - -struct KDThreadAttr -{ - pthread_attr_t p_attr; -}; - -struct KDThread -{ - pthread_t Handle; - uint8_t Detached; - uint8_t IsRunning; - uint8_t UserThread; - void* (*UserThreadProc)(void*); - void* UserArg; -}; -/* kdThreadCreate: Create a new thread. */ -KDThread * kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg) -{ - pthread_t thread; - int retval; - const pthread_attr_t* p_attr; - KDThread* newThread; - if ( attr ) - p_attr = &attr->p_attr; - else - p_attr = KD_NULL; - - retval = pthread_create( &thread, p_attr, start_routine, arg ); - if ( retval != 0 ) - { - return KD_NULL; - } - newThread = (KDThread*)malloc( sizeof( KDThread ) ); - if ( newThread == KD_NULL ) return KD_NULL; - newThread->Handle = thread; - newThread->Detached = 0; - newThread->IsRunning = 1; - newThread->UserThread = 1; - newThread->UserThreadProc = start_routine; - newThread->UserArg = arg; - return newThread; -} - -/* kdThreadExit: Terminate this thread. */ -void kdThreadExit(void *retval) -{ - pthread_exit( retval ); -} - -/* kdThreadJoin: Wait for termination of another thread. */ -KDint kdThreadJoin(KDThread *thread, void **retval) -{ - int join_retval; - join_retval = pthread_join( thread->Handle, retval ); - if ( join_retval == 0 ) free( thread ); - return join_retval; -} - -typedef struct KDDirInternal { - DIR *dir; - KDDirent ent; -} KDDirInternal; - -/* kdOpenDir: Open a directory ready for listing. */ -KDDir *kdOpenDir(const KDchar *pathname) -{ - KDDirInternal* retval; - DIR* dir = opendir( pathname ); - if ( dir == KD_NULL ) return KD_NULL; - retval = (KDDirInternal*)malloc( sizeof( KDDirInternal )); - if ( retval == KD_NULL ) return KD_NULL; - memset( retval, 0, sizeof( *retval ) ); - retval->dir = dir; - return (KDDir*)retval; -} - -/* kdReadDir: Return the next file in a directory. */ -KDDirent* kdReadDir(KDDir *dir) -{ - struct dirent *sysDirEnt; - KDDirent *dirent = NULL; - - sysDirEnt = readdir(((KDDirInternal *)dir)->dir); - - if (sysDirEnt) { - dirent = &((KDDirInternal *)dir)->ent; - dirent->d_name = sysDirEnt->d_name; - } - return dirent; -} - -/* kdCloseDir: Close a directory. */ -KDint kdCloseDir(KDDir *dir) -{ - closedir(((KDDirInternal *)dir)->dir); - free(dir); - return 0; -} - -KDint kdSetWindowPropertyiv(KDWindow * win, KDint prop, const KDint32 * val) -{ - return 0; -} - -void kdDefaultEvent(const KDEvent *event ) -{ - -} - -typedef long long NvS64; - -KDust kdGetTimeUST(void) -{ - struct timespec tp; - clock_gettime(CLOCK_MONOTONIC, &tp); - - return (NvS64)tp.tv_sec * (NvS64)1000000000 + - (NvS64)tp.tv_nsec; -} - -static KDTm* gmlocaltime( - const KDtime *timep, - KDTm *result, - struct tm* (* func)(const time_t* timep, struct tm* result)) -{ - struct tm tm; - time_t t = *timep; - (*func)(&t, &tm); - result->tm_sec = tm.tm_sec; - result->tm_min = tm.tm_min; - result->tm_hour = tm.tm_hour; - result->tm_mday = tm.tm_mday; - result->tm_mon = tm.tm_mon; - result->tm_year = tm.tm_year; - result->tm_wday = tm.tm_wday; - result->tm_yday = tm.tm_yday; - return result; -} - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -KDTm* kdGmtime_r(const KDtime* timep, KDTm* result) -{ - return gmlocaltime(timep, result, &gmtime_r); -} - -KDTm* kdLocaltime_r(const KDtime* timep, KDTm* result) -{ - return gmlocaltime(timep, result, &localtime_r); -} - -//=========================================================================== -// kdCreateEvent: Create an event for posting. -//=========================================================================== -KDEvent* kdCreateEvent(void) -{ - //Memory leak and there isn't much I am going to do about this now - KDEvent* newEvent = (KDEvent*)malloc( sizeof( KDEvent )); - memset( newEvent, 0, sizeof( KDEvent )); - return newEvent; -} diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/Qt3DS_extwindowprops.h b/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/Qt3DS_extwindowprops.h deleted file mode 100644 index 4428a568..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/Qt3DS_extwindowprops.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_extwindowprops_h_ -#define __kd_QT3DS_extwindowprops_h_ -#include <KD/kd.h> -#include <EGL/eglext.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_WINDOWPROPERTY_FULLSCREEN: Control over resizing a window to fill the complete screen */ - -// KDboolean - set the window to fullscreen mode -#define KD_WINDOWPROPERTY_FULLSCREEN_QT3DS 9999 - -// KDint - set which KD_DISPLAY_* display that the window should be opened on -#define KD_WINDOWPROPERTY_DISPLAY_QT3DS 9998 - -// KDboolean - sets whether overlay should be used to create window -#define KD_WINDOWPROPERTY_OVERLAY_QT3DS 9997 - -#define KD_DISPLAY_PRIMARY_QT3DS 0 -#define KD_DISPLAY_INTERNAL0_QT3DS 0 -#define KD_DISPLAY_INTERNAL1_QT3DS 1 -#define KD_DISPLAY_INTERNAL2_QT3DS 2 -#define KD_DISPLAY_INTERNAL3_QT3DS 3 -#define KD_DISPLAY_EXTERNAL0_QT3DS 1000 -#define KD_DISPLAY_EXTERNAL1_QT3DS 1001 -#define KD_DISPLAY_EXTERNAL2_QT3DS 1002 -#define KD_DISPLAY_EXTERNAL3_QT3DS 1003 - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_extwindowprops_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/Qt3DS_multitouch.h b/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/Qt3DS_multitouch.h deleted file mode 100644 index e230b029..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/Qt3DS_multitouch.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_multitouch_h_ -#define __kd_QT3DS_multitouch_h_ -#include <KD/kd.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_IOGROUP_MULTITOUCH: I/O group for Multitouch input devices. */ -#define KD_IOGROUP_MULTITOUCH_QT3DS 0x40004000 -#define KD_STATE_MULTITOUCH_AVAILABILITY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 0) -#define KD_INPUT_MULTITOUCH_FINGERS_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 1) -#define KD_INPUT_MULTITOUCH_WIDTH_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 2) -#define KD_INPUT_MULTITOUCH_X_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 3) -#define KD_INPUT_MULTITOUCH_Y_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 4) -#define KD_INPUT_MULTITOUCH_X2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 5) -#define KD_INPUT_MULTITOUCH_Y2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 6) -#define KD_INPUT_MULTITOUCH_PRESSURE_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 7) -#define KD_INPUT_MULTITOUCH_GESTURES_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 8) -#define KD_INPUT_MULTITOUCH_RELX_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 9) -#define KD_INPUT_MULTITOUCH_RELY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 10) - -/* KD_EVENT_INPUT_MULTITOUCH_QT3DS: Multitouch event. */ -#define KD_EVENT_INPUT_MULTITOUCH_QT3DS 1001 -typedef struct KDEventInputMultitouchDataNV -{ - KDint32 index; - KDint8 fingers; - KDint8 width; - KDint16 x; - KDint16 y; - KDint16 x2; - KDint16 y2; - KDint16 pressure; -} KDEventInputMultitouchDataNV; - -/* KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS: Multitouch gesture event. */ -#define KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS 1002 - -/* kdGetEventInputMultitouchDataNV: Get auxiliary event data for multitouch input. */ -KD_API KDint KD_APIENTRY kdGetEventInputMultitouchDataNV(const KDEvent *event, - KDEventInputMultitouchDataNV *data); - -/* kdSetEventInputMultitouchActiveNV: Activate Multitouch input events */ -KD_API KDint KD_APIENTRY kdSetEventInputMultitouchActiveNV(KDboolean activate); - -/* kdEnableEventInputMultitouchMergeNV: Activate merging of Multitouch input events */ -KD_API void KD_APIENTRY kdEnableEventInputMultitouchMergeNV(KDboolean enable); - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_multitouch_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/kd.h b/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/kd.h deleted file mode 100644 index f7ccea03..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/kd.h +++ /dev/null @@ -1,991 +0,0 @@ -/* Reference KD/kd.h for OpenKODE Core 1.0.3 */ -#ifndef __kd_h_ -#define __kd_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "kdplatform.h" - - - -/******************************************************* - * Introduction - *******************************************************/ - -/******************************************************* - * OpenKODE conformance - *******************************************************/ - -/******************************************************* - * Overview - *******************************************************/ - -/******************************************************* - * Programming environment - *******************************************************/ -#define KD_VERSION_1_0 1 -typedef char KDchar; -typedef signed char KDint8; -typedef unsigned char KDuint8; -typedef int KDint; -typedef unsigned int KDuint; -typedef float KDfloat32; -typedef KDint KDboolean; -typedef KDint64 KDtime; -typedef KDint64 KDust; -typedef KDint64 KDoff; -typedef KDuint32 KDmode; -#define KDINT32_MIN (-0x7fffffff-1) -#define KDINT32_MAX 0x7fffffff -#define KDUINT32_MAX 0xffffffffU -#define KD_TRUE 1 -#define KD_FALSE 0 -#ifdef __cplusplus - const int KD_NULL = 0; /* Yes, int. See Stroustrup 3rd edition. */ -#else - #define KD_NULL ((void *)0) -#endif - -/******************************************************* - * Errors - *******************************************************/ -#define KD_EACCES 1 -#define KD_EADDRINUSE 2 -#define KD_EADDRNOTAVAIL 3 -#define KD_EAFNOSUPPORT 4 -#define KD_EAGAIN (5) -#define KD_EALREADY 6 -#define KD_EBADF 7 -#define KD_EBUSY 8 -#define KD_ECONNREFUSED 9 -#define KD_ECONNRESET 10 -#define KD_EDEADLK 11 -#define KD_EDESTADDRREQ 12 -#define KD_EEXIST 13 -#define KD_EFBIG 14 -#define KD_EHOSTUNREACH 15 -#define KD_EHOST_NOT_FOUND 16 -#define KD_EINVAL 17 -#define KD_EIO 18 -#define KD_EILSEQ 19 -#define KD_EISCONN 20 -#define KD_EISDIR 21 -#define KD_EMFILE 22 -#define KD_ENAMETOOLONG 23 -#define KD_ENOENT 24 -#define KD_ENOMEM 25 -#define KD_ENOSPC 26 -#define KD_ENOSYS 27 -#define KD_ENOTCONN 28 -#define KD_ENO_DATA 29 -#define KD_ENO_RECOVERY 30 -#define KD_EOPNOTSUPP 31 -#define KD_EOVERFLOW 32 -#define KD_EPERM 33 -#define KD_ERANGE 35 -#define KD_ETIMEDOUT (36) -#define KD_ETRY_AGAIN 37 - -/* kdGetError: Get last error indication. */ -KD_API KDint KD_APIENTRY kdGetError(void); - -/* kdSetError: Set last error indication. */ -KD_API void KD_APIENTRY kdSetError(KDint error); - -/******************************************************* - * Versioning and attribute queries - *******************************************************/ - -/* kdQueryAttribi: Obtain the value of a numeric OpenKODE Core attribute. */ -KD_API KDint KD_APIENTRY kdQueryAttribi(KDint attribute, KDint *value); - -/* kdQueryAttribcv: Obtain the value of a string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryAttribcv(KDint attribute); -#define KD_ATTRIB_VENDOR 39 -#define KD_ATTRIB_VERSION 40 -#define KD_ATTRIB_PLATFORM 41 - -/* kdQueryIndexedAttribcv: Obtain the value of an indexed string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryIndexedAttribcv(KDint attribute, KDint index); - -/******************************************************* - * Threads and synchronization - *******************************************************/ - -/* kdThreadAttrCreate: Create a thread attribute object. */ -typedef struct KDThreadAttr KDThreadAttr; -KD_API KDThreadAttr *KD_APIENTRY kdThreadAttrCreate(void); - -/* kdThreadAttrFree: Free a thread attribute object. */ -KD_API KDint KD_APIENTRY kdThreadAttrFree(KDThreadAttr *attr); - -/* kdThreadAttrSetDetachState: Set detachstate attribute. */ -#define KD_THREAD_CREATE_JOINABLE 0 -#define KD_THREAD_CREATE_DETACHED 1 -KD_API KDint KD_APIENTRY kdThreadAttrSetDetachState(KDThreadAttr *attr, KDint detachstate); - -/* kdThreadAttrSetStackSize: Set stacksize attribute. */ -KD_API KDint KD_APIENTRY kdThreadAttrSetStackSize(KDThreadAttr *attr, KDsize stacksize); - -/* kdThreadCreate: Create a new thread. */ -typedef struct KDThread KDThread; -KD_API KDThread *KD_APIENTRY kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg); - -/* kdThreadExit: Terminate this thread. */ -KD_API KD_NORETURN void KD_APIENTRY kdThreadExit(void *retval); - -/* kdThreadJoin: Wait for termination of another thread. */ -KD_API KDint KD_APIENTRY kdThreadJoin(KDThread *thread, void **retval); - -/* kdThreadDetach: Allow resources to be freed as soon as a thread terminates. */ -KD_API KDint KD_APIENTRY kdThreadDetach(KDThread *thread); - -/* kdThreadSelf: Return calling thread’s ID. */ -KD_API KDThread *KD_APIENTRY kdThreadSelf(void); - -/* kdThreadOnce: Wrap initialization code so it is executed only once. */ -#ifndef KD_NO_STATIC_DATA -typedef struct KDThreadOnce { - void *impl; -} KDThreadOnce; -#define KD_THREAD_ONCE_INIT { 0 } -KD_API KDint KD_APIENTRY kdThreadOnce(KDThreadOnce *once_control, void (*init_routine)(void)); -#endif /* ndef KD_NO_STATIC_DATA */ - -/* kdThreadMutexCreate: Create a mutex. */ -typedef struct KDThreadMutex KDThreadMutex; -KD_API KDThreadMutex *KD_APIENTRY kdThreadMutexCreate(const void *mutexattr); - -/* kdThreadMutexFree: Free a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexFree(KDThreadMutex *mutex); - -/* kdThreadMutexLock: Lock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexLock(KDThreadMutex *mutex); - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexUnlock(KDThreadMutex *mutex); - -/* kdThreadCondCreate: Create a condition variable. */ -typedef struct KDThreadCond KDThreadCond; -KD_API KDThreadCond *KD_APIENTRY kdThreadCondCreate(const void *attr); - -/* kdThreadCondFree: Free a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondFree(KDThreadCond *cond); - -/* kdThreadCondSignal, kdThreadCondBroadcast: Signal a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondSignal(KDThreadCond *cond); -KD_API KDint KD_APIENTRY kdThreadCondBroadcast(KDThreadCond *cond); - -/* kdThreadCondWait: Wait for a condition variable to be signalled. */ -KD_API KDint KD_APIENTRY kdThreadCondWait(KDThreadCond *cond, KDThreadMutex *mutex); - -/* kdThreadSemCreate: Create a semaphore. */ -typedef struct KDThreadSem KDThreadSem; -KD_API KDThreadSem *KD_APIENTRY kdThreadSemCreate(KDuint value); - -/* kdThreadSemFree: Free a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemFree(KDThreadSem *sem); - -/* kdThreadSemWait: Lock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemWait(KDThreadSem *sem); - -/* kdThreadSemPost: Unlock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemPost(KDThreadSem *sem); - -/******************************************************* - * Events - *******************************************************/ - -/* KDEvent: Struct type containing an event. */ -typedef struct KDEvent KDEvent; -#define KD_EVENT_USER 0x40000000 - -/* kdWaitEvent: Get next event from thread’s event queue. */ -KD_API const KDEvent *KD_APIENTRY kdWaitEvent(KDust timeout); - -/* kdSetEventUserptr: Set the userptr for global events. */ -KD_API void KD_APIENTRY kdSetEventUserptr(void *userptr); - -/* kdDefaultEvent: Perform default processing on an unrecognized event. */ -KD_API void KD_APIENTRY kdDefaultEvent(const KDEvent *event); - -/* kdPumpEvents: Pump the thread’s event queue, performing callbacks. */ -KD_API KDint KD_APIENTRY kdPumpEvents(void); - -/* kdInstallCallback: Install or remove a callback function for event processing. */ -typedef void (KD_APIENTRY KDCallbackFunc)(const KDEvent *event); -KD_API KDint KD_APIENTRY kdInstallCallback(KDCallbackFunc *func, KDint eventtype, void *eventuserptr); - -/* kdCreateEvent: Create an event for posting. */ -KD_API KDEvent *KD_APIENTRY kdCreateEvent(void); - -/* kdPostEvent, kdPostThreadEvent: Post an event into a queue. */ -KD_API KDint KD_APIENTRY kdPostEvent(KDEvent *event); -KD_API KDint KD_APIENTRY kdPostThreadEvent(KDEvent *event, KDThread *thread); -typedef struct KDEventUser { - union { - KDint64 i64; - void *p; - struct { - KDint32 a; - KDint32 b; - } i32pair; - } value1; - union { - KDint64 i64; - struct { - union { - KDint32 i32; - void *p; - } value2; - union { - KDint32 i32; - void *p; - } value3; - } i32orp; - } value23; -} KDEventUser; - -/* kdFreeEvent: Abandon an event instead of posting it. */ -KD_API void KD_APIENTRY kdFreeEvent(KDEvent *event); - -/******************************************************* - * System events - *******************************************************/ - -/* KD_EVENT_QUIT: Event to request to quit application. */ -#define KD_EVENT_QUIT 43 - -/* KD_EVENT_PAUSE: Application pause event. */ -#define KD_EVENT_PAUSE 45 - -/* KD_EVENT_RESUME: Application resume event. */ -#define KD_EVENT_RESUME 46 - -/* KD_EVENT_ORIENTATION: Orientation change event. */ -#define KD_EVENT_ORIENTATION 48 - -/* KD_IOGROUP_EVENT: I/O group for OpenKODE Core system events implemented as state values. */ -#define KD_IOGROUP_EVENT 0x100 -#define KD_STATE_EVENT_USING_BATTERY (KD_IOGROUP_EVENT + 0) -#define KD_STATE_EVENT_LOW_BATTERY (KD_IOGROUP_EVENT + 1) - - -/* KD_IOGROUP_ORIENTATION: I/O group for OpenKODE Core orientation state. */ -#define KD_IOGROUP_ORIENTATION 0x200 -#define KD_STATE_ORIENTATION_OVERALL (KD_IOGROUP_ORIENTATION + 0) -#define KD_STATE_ORIENTATION_SCREEN (KD_IOGROUP_ORIENTATION + 1) -#define KD_STATE_ORIENTATION_RENDERING (KD_IOGROUP_ORIENTATION + 2) -#define KD_STATE_ORIENTATION_LOCKSURFACE (KD_IOGROUP_ORIENTATION + 3) - - -/******************************************************* - * Application startup and exit. - *******************************************************/ - -/* kdMain: The application-defined main function. */ -KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv); - -/* kdExit: Exit the application. */ -KD_API KD_NORETURN void KD_APIENTRY kdExit(KDint status); - -/******************************************************* - * Utility library functions - *******************************************************/ - -/* kdAbs: Compute the absolute value of an integer. */ -KD_API KDint KD_APIENTRY kdAbs(KDint i); - -/* kdStrtof: Convert a string to a floating point number. */ -KD_API KDfloat32 KD_APIENTRY kdStrtof(const KDchar *s, KDchar **endptr); - -/* kdStrtol, kdStrtoul: Convert a string to an integer. */ -KD_API KDint KD_APIENTRY kdStrtol(const KDchar *s, KDchar **endptr, KDint base); -KD_API KDuint KD_APIENTRY kdStrtoul(const KDchar *s, KDchar **endptr, KDint base); - -/* kdLtostr, kdUltostr: Convert an integer to a string. */ -#define KD_LTOSTR_MAXLEN ((sizeof(KDint)*8*3+6)/10+2) -#define KD_ULTOSTR_MAXLEN ((sizeof(KDint)*8+2)/3+1) -KD_API KDssize KD_APIENTRY kdLtostr(KDchar *buffer, KDsize buflen, KDint number); -KD_API KDssize KD_APIENTRY kdUltostr(KDchar *buffer, KDsize buflen, KDuint number, KDint base); - -/* kdFtostr: Convert a float to a string. */ -#define KD_FTOSTR_MAXLEN 16 -KD_API KDssize KD_APIENTRY kdFtostr(KDchar *buffer, KDsize buflen, KDfloat32 number); - -/* kdCryptoRandom: Return random data. */ -KD_API KDint KD_APIENTRY kdCryptoRandom(KDuint8 *buf, KDsize buflen); - -/******************************************************* - * Locale specific functions - *******************************************************/ - -/* kdGetLocale: Determine the current language and locale. */ -KD_API const KDchar *KD_APIENTRY kdGetLocale(void); - -/******************************************************* - * Memory allocation - *******************************************************/ - -/* kdMalloc: Allocate memory. */ -KD_API void *KD_APIENTRY kdMalloc(KDsize size); - -/* kdFree: Free allocated memory block. */ -KD_API void KD_APIENTRY kdFree(void *ptr); - -/* kdRealloc: Resize memory block. */ -KD_API void *KD_APIENTRY kdRealloc(void *ptr, KDsize size); - -/******************************************************* - * Thread-local storage. - *******************************************************/ - -/* kdGetTLS: Get the thread-local storage pointer. */ -KD_API void *KD_APIENTRY kdGetTLS(void); - -/* kdSetTLS: Set the thread-local storage pointer. */ -KD_API void KD_APIENTRY kdSetTLS(void *ptr); - -/******************************************************* - * Mathematical functions - *******************************************************/ -#define KD_E_F 2.71828175F -#define KD_PI_F 3.14159274F -#define KD_PI_2_F 1.57079637F -#define KD_2PI_F 6.28318548F -#define KD_LOG2E_F 1.44269502F -#define KD_LOG10E_F 0.434294492F -#define KD_LN2_F 0.693147182F -#define KD_LN10_F 2.30258512F -#define KD_PI_4_F 0.785398185F -#define KD_1_PI_F 0.318309873F -#define KD_2_PI_F 0.636619747F -#define KD_2_SQRTPI_F 1.12837923F -#define KD_SQRT2_F 1.41421354F -#define KD_SQRT1_2_F 0.707106769F -#define KD_FLT_EPSILON 1.19209290E-07F -#define KD_FLT_MAX 3.40282346638528860e+38F -#define KD_FLT_MIN 1.17549435e-38F -/* KD_INFINITY is defined in kdplatform.h since no portable definition - * is possible. */ -#define kdIsNan(x) (((x) != (x)) ? 1 : 0) -#define KD_HUGE_VALF KD_INFINITY -#define KD_DEG_TO_RAD_F 0.0174532924F -#define KD_RAD_TO_DEG_F 57.2957802F - -/* kdAcosf: Arc cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdAcosf(KDfloat32 x); - -/* kdAsinf: Arc sine function. */ -KD_API KDfloat32 KD_APIENTRY kdAsinf(KDfloat32 x); - -/* kdAtanf: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtanf(KDfloat32 x); - -/* kdAtan2f: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtan2f(KDfloat32 y, KDfloat32 x); - -/* kdCosf: Cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdCosf(KDfloat32 x); - -/* kdSinf: Sine function. */ -KD_API KDfloat32 KD_APIENTRY kdSinf(KDfloat32 x); - -/* kdTanf: Tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdTanf(KDfloat32 x); - -/* kdExpf: Exponential function. */ -KD_API KDfloat32 KD_APIENTRY kdExpf(KDfloat32 x); - -/* kdLogf: Natural logarithm function. */ -KD_API KDfloat32 KD_APIENTRY kdLogf(KDfloat32 x); - -/* kdFabsf: Absolute value. */ -KD_API KDfloat32 KD_APIENTRY kdFabsf(KDfloat32 x); - -/* kdPowf: Power function. */ -KD_API KDfloat32 KD_APIENTRY kdPowf(KDfloat32 x, KDfloat32 y); - -/* kdSqrtf: Square root function. */ -KD_API KDfloat32 KD_APIENTRY kdSqrtf(KDfloat32 x); - -/* kdCeilf: Return ceiling value. */ -KD_API KDfloat32 KD_APIENTRY kdCeilf(KDfloat32 x); - -/* kdFloorf: Return floor value. */ -KD_API KDfloat32 KD_APIENTRY kdFloorf(KDfloat32 x); - -/* kdRoundf: Round value to nearest integer. */ -KD_API KDfloat32 KD_APIENTRY kdRoundf(KDfloat32 x); - -/* kdInvsqrtf: Inverse square root function. */ -KD_API KDfloat32 KD_APIENTRY kdInvsqrtf(KDfloat32 x); - -/* kdFmodf: Calculate floating point remainder. */ -KD_API KDfloat32 KD_APIENTRY kdFmodf(KDfloat32 x, KDfloat32 y); - -/******************************************************* - * String and memory functions - *******************************************************/ - -/* kdMemchr: Scan memory for a byte value. */ -KD_API void *KD_APIENTRY kdMemchr(const void *src, KDint byte, KDsize len); - -/* kdMemcmp: Compare two memory regions. */ -KD_API KDint KD_APIENTRY kdMemcmp(const void *src1, const void *src2, KDsize len); - -/* kdMemcpy: Copy a memory region, no overlapping. */ -KD_API void *KD_APIENTRY kdMemcpy(void *buf, const void *src, KDsize len); - -/* kdMemmove: Copy a memory region, overlapping allowed. */ -KD_API void *KD_APIENTRY kdMemmove(void *buf, const void *src, KDsize len); - -/* kdMemset: Set bytes in memory to a value. */ -KD_API void *KD_APIENTRY kdMemset(void *buf, KDint byte, KDsize len); - -/* kdStrchr: Scan string for a byte value. */ -KD_API KDchar *KD_APIENTRY kdStrchr(const KDchar *str, KDint ch); - -/* kdStrcmp: Compares two strings. */ -KD_API KDint KD_APIENTRY kdStrcmp(const KDchar *str1, const KDchar *str2); - -/* kdStrlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrlen(const KDchar *str); - -/* kdStrnlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrnlen(const KDchar *str, KDsize maxlen); - -/* kdStrncat_s: Concatenate two strings. */ -KD_API KDint KD_APIENTRY kdStrncat_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srcmaxlen); - -/* kdStrncmp: Compares two strings with length limit. */ -KD_API KDint KD_APIENTRY kdStrncmp(const KDchar *str1, const KDchar *str2, KDsize maxlen); - -/* kdStrcpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrcpy_s(KDchar *buf, KDsize buflen, const KDchar *src); - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrncpy_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srclen); - -/******************************************************* - * Time functions - *******************************************************/ - -/* kdGetTimeUST: Get the current unadjusted system time. */ -KD_API KDust KD_APIENTRY kdGetTimeUST(void); - -/* kdTime: Get the current wall clock time. */ -KD_API KDtime KD_APIENTRY kdTime(KDtime *timep); - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -typedef struct KDTm { - KDint32 tm_sec; - KDint32 tm_min; - KDint32 tm_hour; - KDint32 tm_mday; - KDint32 tm_mon; - KDint32 tm_year; - KDint32 tm_wday; - KDint32 tm_yday; -} KDTm; -KD_API KDTm *KD_APIENTRY kdGmtime_r(const KDtime *timep, KDTm *result); -KD_API KDTm *KD_APIENTRY kdLocaltime_r(const KDtime *timep, KDTm *result); - -/* kdUSTAtEpoch: Get the UST corresponding to KDtime 0. */ -KD_API KDust KD_APIENTRY kdUSTAtEpoch(void); - -/******************************************************* - * Timer functions - *******************************************************/ - -/* kdSetTimer: Set timer. */ -#define KD_TIMER_ONESHOT 61 -#define KD_TIMER_PERIODIC_AVERAGE 62 -#define KD_TIMER_PERIODIC_MINIMUM 63 -typedef struct KDTimer KDTimer; -KD_API KDTimer *KD_APIENTRY kdSetTimer(KDint64 interval, KDint periodic, void *eventuserptr); - -/* kdCancelTimer: Cancel and free a timer. */ -KD_API KDint KD_APIENTRY kdCancelTimer(KDTimer *timer); - -/* KD_EVENT_TIMER: Timer fire event. */ -#define KD_EVENT_TIMER 42 - -/******************************************************* - * File system - *******************************************************/ -#define KD_EOF (-1) - -/* kdFopen: Open a file from the file system. */ -typedef struct KDFile KDFile; -KD_API KDFile *KD_APIENTRY kdFopen(const KDchar *pathname, const KDchar *mode); - -/* kdFclose: Close an open file. */ -KD_API KDint KD_APIENTRY kdFclose(KDFile *file); - -/* kdFflush: Flush an open file. */ -KD_API KDint KD_APIENTRY kdFflush(KDFile *file); - -/* kdFread: Read from a file. */ -KD_API KDsize KD_APIENTRY kdFread(void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdFwrite: Write to a file. */ -KD_API KDsize KD_APIENTRY kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdGetc: Read next byte from an open file. */ -KD_API KDint KD_APIENTRY kdGetc(KDFile *file); - -/* kdPutc: Write a byte to an open file. */ -KD_API KDint KD_APIENTRY kdPutc(KDint c, KDFile *file); - -/* kdFgets: Read a line of text from an open file. */ -KD_API KDchar *KD_APIENTRY kdFgets(KDchar *buffer, KDsize buflen, KDFile *file); - -/* kdFEOF: Check for end of file. */ -KD_API KDint KD_APIENTRY kdFEOF(KDFile *file); - -/* kdFerror: Check for an error condition on an open file. */ -KD_API KDint KD_APIENTRY kdFerror(KDFile *file); - -/* kdClearerr: Clear a file’s error and end-of-file indicators. */ -KD_API void KD_APIENTRY kdClearerr(KDFile *file); - -/* kdFseek: Reposition the file position indicator in a file. */ -typedef enum { - KD_SEEK_SET = 0, - KD_SEEK_CUR = 1, - KD_SEEK_END = 2 -} KDfileSeekOrigin; -KD_API KDint KD_APIENTRY kdFseek(KDFile *file, KDoff offset, KDfileSeekOrigin origin); - -/* kdFtell: Get the file position of an open file. */ -KD_API KDoff KD_APIENTRY kdFtell(KDFile *file); - -/* kdMkdir: Create new directory. */ -KD_API KDint KD_APIENTRY kdMkdir(const KDchar *pathname); - -/* kdRmdir: Delete a directory. */ -KD_API KDint KD_APIENTRY kdRmdir(const KDchar *pathname); - -/* kdRename: Rename a file. */ -KD_API KDint KD_APIENTRY kdRename(const KDchar *src, const KDchar *dest); - -/* kdRemove: Delete a file. */ -KD_API KDint KD_APIENTRY kdRemove(const KDchar *pathname); - -/* kdTruncate: Truncate or extend a file. */ -KD_API KDint KD_APIENTRY kdTruncate(const KDchar *pathname, KDoff length); - -/* kdStat, kdFstat: Return information about a file. */ -typedef struct KDStat { - KDmode st_mode; - KDoff st_size; - KDtime st_mtime; -} KDStat; -KD_API KDint KD_APIENTRY kdStat(const KDchar *pathname, struct KDStat *buf); -KD_API KDint KD_APIENTRY kdFstat(KDFile *file, struct KDStat *buf); -#define KD_ISREG(m) ((m) & 0x8000) -#define KD_ISDIR(m) ((m) & 0x4000) - -/* kdAccess: Determine whether the application can access a file or directory. */ -KD_API KDint KD_APIENTRY kdAccess(const KDchar *pathname, KDint amode); -#define KD_R_OK 4 -#define KD_W_OK 2 -#define KD_X_OK 1 - -/* kdOpenDir: Open a directory ready for listing. */ -typedef struct KDDir KDDir; -KD_API KDDir *KD_APIENTRY kdOpenDir(const KDchar *pathname); - -/* kdReadDir: Return the next file in a directory. */ -typedef struct KDDirent { - const KDchar *d_name; -} KDDirent; -KD_API KDDirent *KD_APIENTRY kdReadDir(KDDir *dir); - -/* kdCloseDir: Close a directory. */ -KD_API KDint KD_APIENTRY kdCloseDir(KDDir *dir); - -/* kdGetFree: Get free space on a drive. */ -KD_API KDoff KD_APIENTRY kdGetFree(const KDchar *pathname); - -/******************************************************* - * Network sockets - *******************************************************/ - -/* KDSockaddr: Struct type for socket address. */ -typedef struct KDSockaddr { - KDuint16 family; - union { -#define KD_AF_INET 70 - struct { - KDuint16 port; - KDuint32 address; - } sin; - } data; -} KDSockaddr; - -/* kdNameLookup: Look up a hostname. */ -KD_API KDint KD_APIENTRY kdNameLookup(KDint af, const KDchar *hostname, void *eventuserptr); - -/* kdNameLookupCancel: Selectively cancels ongoing kdNameLookup operations. */ -KD_API void KD_APIENTRY kdNameLookupCancel(void *eventuserptr); - -/* kdSocketCreate: Creates a socket. */ -typedef struct KDSocket KDSocket; -KD_API KDSocket *KD_APIENTRY kdSocketCreate(KDint type, void *eventuserptr); -#define KD_SOCK_TCP 64 -#define KD_SOCK_UDP 65 - -/* kdSocketClose: Closes a socket. */ -KD_API KDint KD_APIENTRY kdSocketClose(KDSocket *socket); - -/* kdSocketBind: Bind a socket. */ -KD_API KDint KD_APIENTRY kdSocketBind(KDSocket *socket, const struct KDSockaddr *addr, KDboolean reuse); -#define KD_INADDR_ANY 0 - -/* kdSocketGetName: Get the local address of a socket. */ -KD_API KDint KD_APIENTRY kdSocketGetName(KDSocket *socket, struct KDSockaddr *addr); - -/* kdSocketConnect: Connects a socket. */ -KD_API KDint KD_APIENTRY kdSocketConnect(KDSocket *socket, const KDSockaddr *addr); - -/* kdSocketListen: Listen on a socket. */ -KD_API KDint KD_APIENTRY kdSocketListen(KDSocket *socket, KDint backlog); - -/* kdSocketAccept: Accept an incoming connection. */ -KD_API KDSocket *KD_APIENTRY kdSocketAccept(KDSocket *socket, KDSockaddr *addr, void *eventuserptr); - -/* kdSocketSend, kdSocketSendTo: Send data to a socket. */ -KD_API KDint KD_APIENTRY kdSocketSend(KDSocket *socket, const void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketSendTo(KDSocket *socket, const void *buf, KDint len, const KDSockaddr *addr); - -/* kdSocketRecv, kdSocketRecvFrom: Receive data from a socket. */ -KD_API KDint KD_APIENTRY kdSocketRecv(KDSocket *socket, void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketRecvFrom(KDSocket *socket, void *buf, KDint len, KDSockaddr *addr); - -/* kdHtonl: Convert a 32-bit integer from host to network byte order. */ -KD_API KDuint32 KD_APIENTRY kdHtonl(KDuint32 hostlong); - -/* kdHtons: Convert a 16-bit integer from host to network byte order. */ -KD_API KDuint16 KD_APIENTRY kdHtons(KDuint16 hostshort); - -/* kdNtohl: Convert a 32-bit integer from network to host byte order. */ -KD_API KDuint32 KD_APIENTRY kdNtohl(KDuint32 netlong); - -/* kdNtohs: Convert a 16-bit integer from network to host byte order. */ -KD_API KDuint16 KD_APIENTRY kdNtohs(KDuint16 netshort); - -/* kdInetAton: Convert a “dotted quad” format address to an integer. */ -KD_API KDint KD_APIENTRY kdInetAton(const KDchar *cp, KDuint32 *inp); - -/* kdInetNtop: Convert a network address to textual form. */ -#define KD_INET_ADDRSTRLEN 16 -typedef struct KDInAddr { - KDuint32 s_address; // Renamed this from s_addr as it causes a conflict with winsock2.h -} KDInAddr; -KD_API const KDchar *KD_APIENTRY kdInetNtop(KDuint af, const void *src, KDchar *dst, KDsize cnt); - -/* KD_EVENT_SOCKET_READABLE: Event to indicate that a socket is readable. */ -#define KD_EVENT_SOCKET_READABLE 49 -typedef struct KDEventSocketReadable { - KDSocket *socket; -} KDEventSocketReadable; - -/* KD_EVENT_SOCKET_WRITABLE: Event to indicate that a socket is writable. */ -#define KD_EVENT_SOCKET_WRITABLE 50 -typedef struct KDEventSocketWritable { - KDSocket *socket; -} KDEventSocketWritable; - -/* KD_EVENT_SOCKET_CONNECT_COMPLETE: Event generated when a socket connect is complete */ -#define KD_EVENT_SOCKET_CONNECT_COMPLETE 51 -typedef struct KDEventSocketConnect { - KDSocket *socket; - KDint32 error; -} KDEventSocketConnect; - -/* KD_EVENT_SOCKET_INCOMING: Event generated when a listening socket detects an incoming connection or an error. */ -#define KD_EVENT_SOCKET_INCOMING 52 -typedef struct KDEventSocketIncoming { - KDSocket *socket; -} KDEventSocketIncoming; - -/* KD_EVENT_NAME_LOOKUP_COMPLETE: kdNameLookup complete event. */ -#define KD_EVENT_NAME_LOOKUP_COMPLETE 53 -typedef struct KDEventNameLookup { - KDint32 error; - KDint32 resultlen; - const KDSockaddr *result; - KDboolean more; -} KDEventNameLookup; - -/******************************************************* - * Input/output - *******************************************************/ - -/* KD_EVENT_STATE: State changed event. */ -#define KD_EVENT_STATE 55 - -typedef struct KDEventState { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventState; - -/* KD_EVENT_INPUT: Input changed event. */ -#define KD_EVENT_INPUT 56 - -typedef struct KDEventInput { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventInput; - -/* KD_EVENT_INPUT_JOG: Jogdial jog event. */ -#define KD_EVENT_INPUT_JOG 71 -typedef struct KDEventInputJog { - KDint32 index; - KDint32 count; -} KDEventInputJog; - -/* KD_EVENT_INPUT_POINTER: Pointer input changed event. */ -#define KD_EVENT_INPUT_POINTER 57 -typedef struct KDEventInputPointer { - KDint32 index; - KDint32 select; - KDint32 x; - KDint32 y; -} KDEventInputPointer; - -/* KD_EVENT_INPUT_STICK: Joystick stick changed event. */ -#define KD_EVENT_INPUT_STICK 58 -typedef struct KDEventInputStick { - KDint32 index; - KDint32 x; - KDint32 y; - KDint32 z; -} KDEventInputStick; - -/* kdStateGeti, kdStateGetl, kdStateGetf: get state value(s) */ -KD_API KDint KD_APIENTRY kdStateGeti(KDint startidx, KDuint numidxs, KDint32 *buffer); -KD_API KDint KD_APIENTRY kdStateGetl(KDint startidx, KDuint numidxs, KDint64 *buffer); -KD_API KDint KD_APIENTRY kdStateGetf(KDint startidx, KDuint numidxs, KDfloat32 *buffer); - -/* kdOutputSeti, kdOutputSetf: set outputs */ -KD_API KDint KD_APIENTRY kdOutputSeti(KDint startidx, KDuint numidxs, const KDint32 *buffer); -KD_API KDint KD_APIENTRY kdOutputSetf(KDint startidx, KDuint numidxs, const KDfloat32 *buffer); -#define KD_IO_CONTROLLER_STRIDE 64 - -/* KD_IOGROUP_GAMEKEYS: I/O group for game keys. */ -#define KD_IOGROUP_GAMEKEYS 0x1000 -#define KD_STATE_GAMEKEYS_AVAILABILITY (KD_IOGROUP_GAMEKEYS + 0) -#define KD_INPUT_GAMEKEYS_UP (KD_IOGROUP_GAMEKEYS + 1) -#define KD_INPUT_GAMEKEYS_LEFT (KD_IOGROUP_GAMEKEYS + 2) -#define KD_INPUT_GAMEKEYS_RIGHT (KD_IOGROUP_GAMEKEYS + 3) -#define KD_INPUT_GAMEKEYS_DOWN (KD_IOGROUP_GAMEKEYS + 4) -#define KD_INPUT_GAMEKEYS_FIRE (KD_IOGROUP_GAMEKEYS + 5) -#define KD_INPUT_GAMEKEYS_A (KD_IOGROUP_GAMEKEYS + 6) -#define KD_INPUT_GAMEKEYS_B (KD_IOGROUP_GAMEKEYS + 7) -#define KD_INPUT_GAMEKEYS_C (KD_IOGROUP_GAMEKEYS + 8) -#define KD_INPUT_GAMEKEYS_D (KD_IOGROUP_GAMEKEYS + 9) - -/* KD_IOGROUP_GAMEKEYSNC: I/O group for game keys, no chording. */ -#define KD_IOGROUP_GAMEKEYSNC 0x1100 -#define KD_STATE_GAMEKEYSNC_AVAILABILITY (KD_IOGROUP_GAMEKEYSNC + 0) -#define KD_INPUT_GAMEKEYSNC_UP (KD_IOGROUP_GAMEKEYSNC + 1) -#define KD_INPUT_GAMEKEYSNC_LEFT (KD_IOGROUP_GAMEKEYSNC + 2) -#define KD_INPUT_GAMEKEYSNC_RIGHT (KD_IOGROUP_GAMEKEYSNC + 3) -#define KD_INPUT_GAMEKEYSNC_DOWN (KD_IOGROUP_GAMEKEYSNC + 4) -#define KD_INPUT_GAMEKEYSNC_FIRE (KD_IOGROUP_GAMEKEYSNC + 5) -#define KD_INPUT_GAMEKEYSNC_A (KD_IOGROUP_GAMEKEYSNC + 6) -#define KD_INPUT_GAMEKEYSNC_B (KD_IOGROUP_GAMEKEYSNC + 7) -#define KD_INPUT_GAMEKEYSNC_C (KD_IOGROUP_GAMEKEYSNC + 8) -#define KD_INPUT_GAMEKEYSNC_D (KD_IOGROUP_GAMEKEYSNC + 9) - -/* KD_IOGROUP_PHONEKEYPAD: I/O group for phone keypad. */ -#define KD_IOGROUP_PHONEKEYPAD 0x2000 -#define KD_STATE_PHONEKEYPAD_AVAILABILITY (KD_IOGROUP_PHONEKEYPAD + 0) -#define KD_INPUT_PHONEKEYPAD_0 (KD_IOGROUP_PHONEKEYPAD + 1) -#define KD_INPUT_PHONEKEYPAD_1 (KD_IOGROUP_PHONEKEYPAD + 2) -#define KD_INPUT_PHONEKEYPAD_2 (KD_IOGROUP_PHONEKEYPAD + 3) -#define KD_INPUT_PHONEKEYPAD_3 (KD_IOGROUP_PHONEKEYPAD + 4) -#define KD_INPUT_PHONEKEYPAD_4 (KD_IOGROUP_PHONEKEYPAD + 5) -#define KD_INPUT_PHONEKEYPAD_5 (KD_IOGROUP_PHONEKEYPAD + 6) -#define KD_INPUT_PHONEKEYPAD_6 (KD_IOGROUP_PHONEKEYPAD + 7) -#define KD_INPUT_PHONEKEYPAD_7 (KD_IOGROUP_PHONEKEYPAD + 8) -#define KD_INPUT_PHONEKEYPAD_8 (KD_IOGROUP_PHONEKEYPAD + 9) -#define KD_INPUT_PHONEKEYPAD_9 (KD_IOGROUP_PHONEKEYPAD + 10) -#define KD_INPUT_PHONEKEYPAD_STAR (KD_IOGROUP_PHONEKEYPAD + 11) -#define KD_INPUT_PHONEKEYPAD_HASH (KD_IOGROUP_PHONEKEYPAD + 12) -#define KD_INPUT_PHONEKEYPAD_LEFTSOFT (KD_IOGROUP_PHONEKEYPAD + 13) -#define KD_INPUT_PHONEKEYPAD_RIGHTSOFT (KD_IOGROUP_PHONEKEYPAD + 14) -#define KD_STATE_PHONEKEYPAD_ORIENTATION (KD_IOGROUP_PHONEKEYPAD + 15) - -/* KD_IOGROUP_VIBRATE: I/O group for vibrate. */ -#define KD_IOGROUP_VIBRATE 0x3000 -#define KD_STATE_VIBRATE_AVAILABILITY (KD_IOGROUP_VIBRATE + 0) -#define KD_STATE_VIBRATE_MINFREQUENCY (KD_IOGROUP_VIBRATE + 1) -#define KD_STATE_VIBRATE_MAXFREQUENCY (KD_IOGROUP_VIBRATE + 2) -#define KD_OUTPUT_VIBRATE_VOLUME (KD_IOGROUP_VIBRATE + 3) -#define KD_OUTPUT_VIBRATE_FREQUENCY (KD_IOGROUP_VIBRATE + 4) - -/* KD_IOGROUP_POINTER: I/O group for pointer. */ -#define KD_IOGROUP_POINTER 0x4000 -#define KD_STATE_POINTER_AVAILABILITY (KD_IOGROUP_POINTER + 0) -#define KD_INPUT_POINTER_X (KD_IOGROUP_POINTER + 1) -#define KD_INPUT_POINTER_Y (KD_IOGROUP_POINTER + 2) -#define KD_INPUT_POINTER_SELECT (KD_IOGROUP_POINTER + 3) - -/* KD_IOGROUP_BACKLIGHT: I/O group for backlight. */ -#define KD_IOGROUP_BACKLIGHT 0x5000 -#define KD_STATE_BACKLIGHT_AVAILABILITY (KD_IOGROUP_BACKLIGHT + 0) -#define KD_OUTPUT_BACKLIGHT_FORCE (KD_IOGROUP_BACKLIGHT + 1) - -/* KD_IOGROUP_JOGDIAL: I/O group for a jog dial. */ -#define KD_IOGROUP_JOGDIAL 0x6000 -#define KD_STATE_JOGDIAL_AVAILABILITY (KD_IOGROUP_JOGDIAL + 0) -#define KD_INPUT_JOGDIAL_UP (KD_IOGROUP_JOGDIAL + 1) -#define KD_INPUT_JOGDIAL_LEFT (KD_IOGROUP_JOGDIAL + 2) -#define KD_INPUT_JOGDIAL_RIGHT (KD_IOGROUP_JOGDIAL + 3) -#define KD_INPUT_JOGDIAL_DOWN (KD_IOGROUP_JOGDIAL + 4) -#define KD_INPUT_JOGDIAL_SELECT (KD_IOGROUP_JOGDIAL + 5) - -/* KD_IOGROUP_STICK: I/O group for joystick. */ -#define KD_IOGROUP_STICK 0x7000 -#define KD_STATE_STICK_AVAILABILITY (KD_IOGROUP_STICK + 0) -#define KD_INPUT_STICK_X (KD_IOGROUP_STICK + 1) -#define KD_INPUT_STICK_Y (KD_IOGROUP_STICK + 2) -#define KD_INPUT_STICK_Z (KD_IOGROUP_STICK + 3) -#define KD_INPUT_STICK_BUTTON (KD_IOGROUP_STICK + 4) -#define KD_IO_STICK_STRIDE 8 - -/* KD_IOGROUP_DPAD: I/O group for D-pad. */ -#define KD_IOGROUP_DPAD 0x8000 -#define KD_STATE_DPAD_AVAILABILITY (KD_IOGROUP_DPAD + 0) -#define KD_STATE_DPAD_COPY (KD_IOGROUP_DPAD + 1) -#define KD_INPUT_DPAD_UP (KD_IOGROUP_DPAD + 2) -#define KD_INPUT_DPAD_LEFT (KD_IOGROUP_DPAD + 3) -#define KD_INPUT_DPAD_RIGHT (KD_IOGROUP_DPAD + 4) -#define KD_INPUT_DPAD_DOWN (KD_IOGROUP_DPAD + 5) -#define KD_INPUT_DPAD_SELECT (KD_IOGROUP_DPAD + 6) -#define KD_IO_DPAD_STRIDE 8 - -/* KD_IOGROUP_BUTTONS: I/O group for buttons associated with joystick or D-pad. */ -#define KD_IOGROUP_BUTTONS 0x9000 -#define KD_STATE_BUTTONS_AVAILABILITY (KD_IOGROUP_BUTTONS + 0) -#define KD_INPUT_BUTTONS_0 (KD_IOGROUP_BUTTONS + 1) - -/* KD_IO_UNDEFINED: I/O items reserved for implementation-dependent use. */ -#define KD_IO_UNDEFINED 0x40000000 - -/******************************************************* - * Windowing - *******************************************************/ -#ifdef KD_WINDOW_SUPPORTED -#include <EGL/egl.h> -typedef struct KDWindow KDWindow; - -/* kdCreateWindow: Create a window. */ -KD_API KDWindow *KD_APIENTRY kdCreateWindow(EGLDisplay display, EGLConfig config, void *eventuserptr); - -/* kdDestroyWindow: Destroy a window. */ -KD_API KDint KD_APIENTRY kdDestroyWindow(KDWindow *window); - -/* kdSetWindowPropertybv, kdSetWindowPropertyiv, kdSetWindowPropertycv: Set a window property to request a change in the on-screen representation of the window. */ -KD_API KDint KD_APIENTRY kdSetWindowPropertybv(KDWindow *window, KDint pname, const KDboolean *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertyiv(KDWindow *window, KDint pname, const KDint32 *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertycv(KDWindow *window, KDint pname, const KDchar *param); - -/* kdGetWindowPropertybv, kdGetWindowPropertyiv, kdGetWindowPropertycv: Get the current value of a window property. */ -KD_API KDint KD_APIENTRY kdGetWindowPropertybv(KDWindow *window, KDint pname, KDboolean *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertyiv(KDWindow *window, KDint pname, KDint32 *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertycv(KDWindow *window, KDint pname, KDchar *param, KDsize *size); - -/* kdRealizeWindow: Realize the window as a displayable entity and get the native window handle for passing to EGL. */ -KD_API KDint KD_APIENTRY kdRealizeWindow(KDWindow *window, EGLNativeWindowType *nativewindow); - -/* KD_WINDOWPROPERTY_SIZE: Window client area width and height. */ -#define KD_WINDOWPROPERTY_SIZE 66 - -/* KD_WINDOWPROPERTY_VISIBILITY: Window visibility status. */ -#define KD_WINDOWPROPERTY_VISIBILITY 67 - -/* KD_WINDOWPROPERTY_FOCUS: Window input focus status. */ -#define KD_WINDOWPROPERTY_FOCUS 68 - -/* KD_WINDOWPROPERTY_CAPTION: Window caption. */ -#define KD_WINDOWPROPERTY_CAPTION 69 - -/* KD_EVENT_WINDOW_CLOSE: Event to request to close window. */ -#define KD_EVENT_WINDOW_CLOSE 44 - -/* KD_EVENT_WINDOWPROPERTY_CHANGE: Notification about realized window property change. */ -#define KD_EVENT_WINDOWPROPERTY_CHANGE 47 -typedef struct KDEventWindowProperty { - KDint32 pname; -} KDEventWindowProperty; - -/* KD_EVENT_WINDOW_FOCUS: Event for change of window’s focus state. */ -#define KD_EVENT_WINDOW_FOCUS 60 -typedef struct KDEventWindowFocus { - KDint32 focusstate; -} KDEventWindowFocus; - -/* KD_EVENT_WINDOW_REDRAW: Event to notify need to redraw the window. */ -#define KD_EVENT_WINDOW_REDRAW 59 -#endif /* KD_WINDOW_SUPPORTED */ - -/******************************************************* - * Assertions and logging - *******************************************************/ - -/* kdHandleAssertion: Handle assertion failure. */ -KD_API void KD_APIENTRY kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber); - -/* kdLogMessage: Output a log message. */ -#ifdef KD_NDEBUG -#define kdLogMessage(s) -#else -KD_API void KD_APIENTRY kdLogMessage(const KDchar *string); -#endif - -/* struct KDEvent delayed to the end as it uses event data structs from - * other parts of the .h file. */ -struct KDEvent { - KDust timestamp; - KDint32 type; - void *userptr; - union KDEventData { - KDEventState state; - KDEventInput input; - KDEventInputJog inputjog; - KDEventInputPointer inputpointer; - KDEventInputStick inputstick; - KDEventSocketReadable socketreadable; - KDEventSocketWritable socketwritable; - KDEventSocketConnect socketconnect; - KDEventSocketIncoming socketincoming; - KDEventNameLookup namelookup; -#ifdef KD_WINDOW_SUPPORTED - KDEventWindowProperty windowproperty; - KDEventWindowFocus windowfocus; -#endif /* KD_WINDOW_SUPPORTED */ - KDEventUser user; - } data; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/kdplatform.h b/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/kdplatform.h deleted file mode 100644 index 3cf09f52..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Linux/Qt3DSLibs/KD/kdplatform.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* Sample KD/kdplatform.h for OpenKODE Core 1.0.3 */ -#ifndef __kdplatform_h_ -#define __kdplatform_h_ - -#define KD_API -#define KD_APIENTRY - -typedef int KDint32; -typedef unsigned int KDuint32; -typedef long long KDint64; -typedef unsigned long long KDuint64; -typedef short KDint16; -typedef unsigned short KDuint16; -typedef unsigned long KDuintptr; -typedef unsigned long KDsize; -typedef long KDssize; -#define KDINT_MIN (-0x7fffffff-1) -#define KDINT_MAX 0x7fffffff -#define KDUINT_MAX 0xffffffffU -#define KDINT64_MIN (-0x7fffffffffffffffLL-1) -#define KDINT64_MAX 0x7fffffffffffffffLL -#define KDUINT64_MAX 0xffffffffffffffffULL -#define KDSSIZE_MIN (-0x7fffffff-1) -#define KDSSIZE_MAX 0x7fffffff -#define KDSIZE_MAX 0xffffffffU -#define KDUINTPTR_MAX 0xffffffffU -#define KD_NORETURN -#define KD_WINDOW_SUPPORTED -#ifdef KD_NDEBUG -#define kdAssert(c) -#else -#define kdAssert(c) ((void)( (c) ? 0 : (kdHandleAssertion(#c, __FILE__, __LINE__), 0))) -#endif - -#define KD_INFINITY_BITS 0x7f800000u -#define KD_INFINITY (kdBitsToFloatNV(KD_INFINITY_BITS)) - -KD_API float KD_APIENTRY kdBitsToFloatNV(KDuint32 x); - - -/** KHR_formatted extension */ -#include <stdarg.h> -typedef va_list KDVaListKHR; - -// If there are problems with including stdarg.h here under any of the Windows -// operating systems, we might want to change it back to using char* instead of -// va_list -//typedef char *KDVaListKHR; - - -#define KD_VA_START_KHR(ap, parmN) \ - do {ap = (KDVaListKHR)&parmN + sizeof(parmN);} while(0) - -#define KD_VA_ARG_CHAR_KHR(ap) (KDchar)va_arg(ap, KDint) -#define KD_VA_ARG_CHARPTR_KHR(ap) (KDchar*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16_KHR(ap) (KDint16)va_arg(ap, KDint) -#define KD_VA_ARG_INT32_KHR(ap) va_arg(ap, KDint32) -#define KD_VA_ARG_INT_KHR(ap) va_arg(ap, KDint) -#define KD_VA_ARG_INT64_KHR(ap) va_arg(ap, KDint64) -#define KD_VA_ARG_INTPTR_KHR(ap) (KDint*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16PTR_KHR(ap) (KDint16*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_FLOAT32_KHR(ap) (KDfloat32)(va_arg(ap, double)) -#define KD_VA_ARG_PTR_KHR(ap) (void *)va_arg(ap, char *) - -#define KD_VA_END_KHR(ap) \ - do {ap = (KDVaListKHR)0;} while(0) - -#endif /* __kdplatform_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/Qt3DS_extwindowprops.h b/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/Qt3DS_extwindowprops.h deleted file mode 100644 index 4428a568..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/Qt3DS_extwindowprops.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_extwindowprops_h_ -#define __kd_QT3DS_extwindowprops_h_ -#include <KD/kd.h> -#include <EGL/eglext.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_WINDOWPROPERTY_FULLSCREEN: Control over resizing a window to fill the complete screen */ - -// KDboolean - set the window to fullscreen mode -#define KD_WINDOWPROPERTY_FULLSCREEN_QT3DS 9999 - -// KDint - set which KD_DISPLAY_* display that the window should be opened on -#define KD_WINDOWPROPERTY_DISPLAY_QT3DS 9998 - -// KDboolean - sets whether overlay should be used to create window -#define KD_WINDOWPROPERTY_OVERLAY_QT3DS 9997 - -#define KD_DISPLAY_PRIMARY_QT3DS 0 -#define KD_DISPLAY_INTERNAL0_QT3DS 0 -#define KD_DISPLAY_INTERNAL1_QT3DS 1 -#define KD_DISPLAY_INTERNAL2_QT3DS 2 -#define KD_DISPLAY_INTERNAL3_QT3DS 3 -#define KD_DISPLAY_EXTERNAL0_QT3DS 1000 -#define KD_DISPLAY_EXTERNAL1_QT3DS 1001 -#define KD_DISPLAY_EXTERNAL2_QT3DS 1002 -#define KD_DISPLAY_EXTERNAL3_QT3DS 1003 - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_extwindowprops_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/Qt3DS_multitouch.h b/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/Qt3DS_multitouch.h deleted file mode 100644 index e230b029..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/Qt3DS_multitouch.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_multitouch_h_ -#define __kd_QT3DS_multitouch_h_ -#include <KD/kd.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_IOGROUP_MULTITOUCH: I/O group for Multitouch input devices. */ -#define KD_IOGROUP_MULTITOUCH_QT3DS 0x40004000 -#define KD_STATE_MULTITOUCH_AVAILABILITY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 0) -#define KD_INPUT_MULTITOUCH_FINGERS_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 1) -#define KD_INPUT_MULTITOUCH_WIDTH_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 2) -#define KD_INPUT_MULTITOUCH_X_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 3) -#define KD_INPUT_MULTITOUCH_Y_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 4) -#define KD_INPUT_MULTITOUCH_X2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 5) -#define KD_INPUT_MULTITOUCH_Y2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 6) -#define KD_INPUT_MULTITOUCH_PRESSURE_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 7) -#define KD_INPUT_MULTITOUCH_GESTURES_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 8) -#define KD_INPUT_MULTITOUCH_RELX_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 9) -#define KD_INPUT_MULTITOUCH_RELY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 10) - -/* KD_EVENT_INPUT_MULTITOUCH_QT3DS: Multitouch event. */ -#define KD_EVENT_INPUT_MULTITOUCH_QT3DS 1001 -typedef struct KDEventInputMultitouchDataNV -{ - KDint32 index; - KDint8 fingers; - KDint8 width; - KDint16 x; - KDint16 y; - KDint16 x2; - KDint16 y2; - KDint16 pressure; -} KDEventInputMultitouchDataNV; - -/* KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS: Multitouch gesture event. */ -#define KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS 1002 - -/* kdGetEventInputMultitouchDataNV: Get auxiliary event data for multitouch input. */ -KD_API KDint KD_APIENTRY kdGetEventInputMultitouchDataNV(const KDEvent *event, - KDEventInputMultitouchDataNV *data); - -/* kdSetEventInputMultitouchActiveNV: Activate Multitouch input events */ -KD_API KDint KD_APIENTRY kdSetEventInputMultitouchActiveNV(KDboolean activate); - -/* kdEnableEventInputMultitouchMergeNV: Activate merging of Multitouch input events */ -KD_API void KD_APIENTRY kdEnableEventInputMultitouchMergeNV(KDboolean enable); - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_multitouch_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/kd.h b/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/kd.h deleted file mode 100644 index f7ccea03..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/kd.h +++ /dev/null @@ -1,991 +0,0 @@ -/* Reference KD/kd.h for OpenKODE Core 1.0.3 */ -#ifndef __kd_h_ -#define __kd_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "kdplatform.h" - - - -/******************************************************* - * Introduction - *******************************************************/ - -/******************************************************* - * OpenKODE conformance - *******************************************************/ - -/******************************************************* - * Overview - *******************************************************/ - -/******************************************************* - * Programming environment - *******************************************************/ -#define KD_VERSION_1_0 1 -typedef char KDchar; -typedef signed char KDint8; -typedef unsigned char KDuint8; -typedef int KDint; -typedef unsigned int KDuint; -typedef float KDfloat32; -typedef KDint KDboolean; -typedef KDint64 KDtime; -typedef KDint64 KDust; -typedef KDint64 KDoff; -typedef KDuint32 KDmode; -#define KDINT32_MIN (-0x7fffffff-1) -#define KDINT32_MAX 0x7fffffff -#define KDUINT32_MAX 0xffffffffU -#define KD_TRUE 1 -#define KD_FALSE 0 -#ifdef __cplusplus - const int KD_NULL = 0; /* Yes, int. See Stroustrup 3rd edition. */ -#else - #define KD_NULL ((void *)0) -#endif - -/******************************************************* - * Errors - *******************************************************/ -#define KD_EACCES 1 -#define KD_EADDRINUSE 2 -#define KD_EADDRNOTAVAIL 3 -#define KD_EAFNOSUPPORT 4 -#define KD_EAGAIN (5) -#define KD_EALREADY 6 -#define KD_EBADF 7 -#define KD_EBUSY 8 -#define KD_ECONNREFUSED 9 -#define KD_ECONNRESET 10 -#define KD_EDEADLK 11 -#define KD_EDESTADDRREQ 12 -#define KD_EEXIST 13 -#define KD_EFBIG 14 -#define KD_EHOSTUNREACH 15 -#define KD_EHOST_NOT_FOUND 16 -#define KD_EINVAL 17 -#define KD_EIO 18 -#define KD_EILSEQ 19 -#define KD_EISCONN 20 -#define KD_EISDIR 21 -#define KD_EMFILE 22 -#define KD_ENAMETOOLONG 23 -#define KD_ENOENT 24 -#define KD_ENOMEM 25 -#define KD_ENOSPC 26 -#define KD_ENOSYS 27 -#define KD_ENOTCONN 28 -#define KD_ENO_DATA 29 -#define KD_ENO_RECOVERY 30 -#define KD_EOPNOTSUPP 31 -#define KD_EOVERFLOW 32 -#define KD_EPERM 33 -#define KD_ERANGE 35 -#define KD_ETIMEDOUT (36) -#define KD_ETRY_AGAIN 37 - -/* kdGetError: Get last error indication. */ -KD_API KDint KD_APIENTRY kdGetError(void); - -/* kdSetError: Set last error indication. */ -KD_API void KD_APIENTRY kdSetError(KDint error); - -/******************************************************* - * Versioning and attribute queries - *******************************************************/ - -/* kdQueryAttribi: Obtain the value of a numeric OpenKODE Core attribute. */ -KD_API KDint KD_APIENTRY kdQueryAttribi(KDint attribute, KDint *value); - -/* kdQueryAttribcv: Obtain the value of a string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryAttribcv(KDint attribute); -#define KD_ATTRIB_VENDOR 39 -#define KD_ATTRIB_VERSION 40 -#define KD_ATTRIB_PLATFORM 41 - -/* kdQueryIndexedAttribcv: Obtain the value of an indexed string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryIndexedAttribcv(KDint attribute, KDint index); - -/******************************************************* - * Threads and synchronization - *******************************************************/ - -/* kdThreadAttrCreate: Create a thread attribute object. */ -typedef struct KDThreadAttr KDThreadAttr; -KD_API KDThreadAttr *KD_APIENTRY kdThreadAttrCreate(void); - -/* kdThreadAttrFree: Free a thread attribute object. */ -KD_API KDint KD_APIENTRY kdThreadAttrFree(KDThreadAttr *attr); - -/* kdThreadAttrSetDetachState: Set detachstate attribute. */ -#define KD_THREAD_CREATE_JOINABLE 0 -#define KD_THREAD_CREATE_DETACHED 1 -KD_API KDint KD_APIENTRY kdThreadAttrSetDetachState(KDThreadAttr *attr, KDint detachstate); - -/* kdThreadAttrSetStackSize: Set stacksize attribute. */ -KD_API KDint KD_APIENTRY kdThreadAttrSetStackSize(KDThreadAttr *attr, KDsize stacksize); - -/* kdThreadCreate: Create a new thread. */ -typedef struct KDThread KDThread; -KD_API KDThread *KD_APIENTRY kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg); - -/* kdThreadExit: Terminate this thread. */ -KD_API KD_NORETURN void KD_APIENTRY kdThreadExit(void *retval); - -/* kdThreadJoin: Wait for termination of another thread. */ -KD_API KDint KD_APIENTRY kdThreadJoin(KDThread *thread, void **retval); - -/* kdThreadDetach: Allow resources to be freed as soon as a thread terminates. */ -KD_API KDint KD_APIENTRY kdThreadDetach(KDThread *thread); - -/* kdThreadSelf: Return calling thread’s ID. */ -KD_API KDThread *KD_APIENTRY kdThreadSelf(void); - -/* kdThreadOnce: Wrap initialization code so it is executed only once. */ -#ifndef KD_NO_STATIC_DATA -typedef struct KDThreadOnce { - void *impl; -} KDThreadOnce; -#define KD_THREAD_ONCE_INIT { 0 } -KD_API KDint KD_APIENTRY kdThreadOnce(KDThreadOnce *once_control, void (*init_routine)(void)); -#endif /* ndef KD_NO_STATIC_DATA */ - -/* kdThreadMutexCreate: Create a mutex. */ -typedef struct KDThreadMutex KDThreadMutex; -KD_API KDThreadMutex *KD_APIENTRY kdThreadMutexCreate(const void *mutexattr); - -/* kdThreadMutexFree: Free a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexFree(KDThreadMutex *mutex); - -/* kdThreadMutexLock: Lock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexLock(KDThreadMutex *mutex); - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexUnlock(KDThreadMutex *mutex); - -/* kdThreadCondCreate: Create a condition variable. */ -typedef struct KDThreadCond KDThreadCond; -KD_API KDThreadCond *KD_APIENTRY kdThreadCondCreate(const void *attr); - -/* kdThreadCondFree: Free a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondFree(KDThreadCond *cond); - -/* kdThreadCondSignal, kdThreadCondBroadcast: Signal a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondSignal(KDThreadCond *cond); -KD_API KDint KD_APIENTRY kdThreadCondBroadcast(KDThreadCond *cond); - -/* kdThreadCondWait: Wait for a condition variable to be signalled. */ -KD_API KDint KD_APIENTRY kdThreadCondWait(KDThreadCond *cond, KDThreadMutex *mutex); - -/* kdThreadSemCreate: Create a semaphore. */ -typedef struct KDThreadSem KDThreadSem; -KD_API KDThreadSem *KD_APIENTRY kdThreadSemCreate(KDuint value); - -/* kdThreadSemFree: Free a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemFree(KDThreadSem *sem); - -/* kdThreadSemWait: Lock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemWait(KDThreadSem *sem); - -/* kdThreadSemPost: Unlock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemPost(KDThreadSem *sem); - -/******************************************************* - * Events - *******************************************************/ - -/* KDEvent: Struct type containing an event. */ -typedef struct KDEvent KDEvent; -#define KD_EVENT_USER 0x40000000 - -/* kdWaitEvent: Get next event from thread’s event queue. */ -KD_API const KDEvent *KD_APIENTRY kdWaitEvent(KDust timeout); - -/* kdSetEventUserptr: Set the userptr for global events. */ -KD_API void KD_APIENTRY kdSetEventUserptr(void *userptr); - -/* kdDefaultEvent: Perform default processing on an unrecognized event. */ -KD_API void KD_APIENTRY kdDefaultEvent(const KDEvent *event); - -/* kdPumpEvents: Pump the thread’s event queue, performing callbacks. */ -KD_API KDint KD_APIENTRY kdPumpEvents(void); - -/* kdInstallCallback: Install or remove a callback function for event processing. */ -typedef void (KD_APIENTRY KDCallbackFunc)(const KDEvent *event); -KD_API KDint KD_APIENTRY kdInstallCallback(KDCallbackFunc *func, KDint eventtype, void *eventuserptr); - -/* kdCreateEvent: Create an event for posting. */ -KD_API KDEvent *KD_APIENTRY kdCreateEvent(void); - -/* kdPostEvent, kdPostThreadEvent: Post an event into a queue. */ -KD_API KDint KD_APIENTRY kdPostEvent(KDEvent *event); -KD_API KDint KD_APIENTRY kdPostThreadEvent(KDEvent *event, KDThread *thread); -typedef struct KDEventUser { - union { - KDint64 i64; - void *p; - struct { - KDint32 a; - KDint32 b; - } i32pair; - } value1; - union { - KDint64 i64; - struct { - union { - KDint32 i32; - void *p; - } value2; - union { - KDint32 i32; - void *p; - } value3; - } i32orp; - } value23; -} KDEventUser; - -/* kdFreeEvent: Abandon an event instead of posting it. */ -KD_API void KD_APIENTRY kdFreeEvent(KDEvent *event); - -/******************************************************* - * System events - *******************************************************/ - -/* KD_EVENT_QUIT: Event to request to quit application. */ -#define KD_EVENT_QUIT 43 - -/* KD_EVENT_PAUSE: Application pause event. */ -#define KD_EVENT_PAUSE 45 - -/* KD_EVENT_RESUME: Application resume event. */ -#define KD_EVENT_RESUME 46 - -/* KD_EVENT_ORIENTATION: Orientation change event. */ -#define KD_EVENT_ORIENTATION 48 - -/* KD_IOGROUP_EVENT: I/O group for OpenKODE Core system events implemented as state values. */ -#define KD_IOGROUP_EVENT 0x100 -#define KD_STATE_EVENT_USING_BATTERY (KD_IOGROUP_EVENT + 0) -#define KD_STATE_EVENT_LOW_BATTERY (KD_IOGROUP_EVENT + 1) - - -/* KD_IOGROUP_ORIENTATION: I/O group for OpenKODE Core orientation state. */ -#define KD_IOGROUP_ORIENTATION 0x200 -#define KD_STATE_ORIENTATION_OVERALL (KD_IOGROUP_ORIENTATION + 0) -#define KD_STATE_ORIENTATION_SCREEN (KD_IOGROUP_ORIENTATION + 1) -#define KD_STATE_ORIENTATION_RENDERING (KD_IOGROUP_ORIENTATION + 2) -#define KD_STATE_ORIENTATION_LOCKSURFACE (KD_IOGROUP_ORIENTATION + 3) - - -/******************************************************* - * Application startup and exit. - *******************************************************/ - -/* kdMain: The application-defined main function. */ -KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv); - -/* kdExit: Exit the application. */ -KD_API KD_NORETURN void KD_APIENTRY kdExit(KDint status); - -/******************************************************* - * Utility library functions - *******************************************************/ - -/* kdAbs: Compute the absolute value of an integer. */ -KD_API KDint KD_APIENTRY kdAbs(KDint i); - -/* kdStrtof: Convert a string to a floating point number. */ -KD_API KDfloat32 KD_APIENTRY kdStrtof(const KDchar *s, KDchar **endptr); - -/* kdStrtol, kdStrtoul: Convert a string to an integer. */ -KD_API KDint KD_APIENTRY kdStrtol(const KDchar *s, KDchar **endptr, KDint base); -KD_API KDuint KD_APIENTRY kdStrtoul(const KDchar *s, KDchar **endptr, KDint base); - -/* kdLtostr, kdUltostr: Convert an integer to a string. */ -#define KD_LTOSTR_MAXLEN ((sizeof(KDint)*8*3+6)/10+2) -#define KD_ULTOSTR_MAXLEN ((sizeof(KDint)*8+2)/3+1) -KD_API KDssize KD_APIENTRY kdLtostr(KDchar *buffer, KDsize buflen, KDint number); -KD_API KDssize KD_APIENTRY kdUltostr(KDchar *buffer, KDsize buflen, KDuint number, KDint base); - -/* kdFtostr: Convert a float to a string. */ -#define KD_FTOSTR_MAXLEN 16 -KD_API KDssize KD_APIENTRY kdFtostr(KDchar *buffer, KDsize buflen, KDfloat32 number); - -/* kdCryptoRandom: Return random data. */ -KD_API KDint KD_APIENTRY kdCryptoRandom(KDuint8 *buf, KDsize buflen); - -/******************************************************* - * Locale specific functions - *******************************************************/ - -/* kdGetLocale: Determine the current language and locale. */ -KD_API const KDchar *KD_APIENTRY kdGetLocale(void); - -/******************************************************* - * Memory allocation - *******************************************************/ - -/* kdMalloc: Allocate memory. */ -KD_API void *KD_APIENTRY kdMalloc(KDsize size); - -/* kdFree: Free allocated memory block. */ -KD_API void KD_APIENTRY kdFree(void *ptr); - -/* kdRealloc: Resize memory block. */ -KD_API void *KD_APIENTRY kdRealloc(void *ptr, KDsize size); - -/******************************************************* - * Thread-local storage. - *******************************************************/ - -/* kdGetTLS: Get the thread-local storage pointer. */ -KD_API void *KD_APIENTRY kdGetTLS(void); - -/* kdSetTLS: Set the thread-local storage pointer. */ -KD_API void KD_APIENTRY kdSetTLS(void *ptr); - -/******************************************************* - * Mathematical functions - *******************************************************/ -#define KD_E_F 2.71828175F -#define KD_PI_F 3.14159274F -#define KD_PI_2_F 1.57079637F -#define KD_2PI_F 6.28318548F -#define KD_LOG2E_F 1.44269502F -#define KD_LOG10E_F 0.434294492F -#define KD_LN2_F 0.693147182F -#define KD_LN10_F 2.30258512F -#define KD_PI_4_F 0.785398185F -#define KD_1_PI_F 0.318309873F -#define KD_2_PI_F 0.636619747F -#define KD_2_SQRTPI_F 1.12837923F -#define KD_SQRT2_F 1.41421354F -#define KD_SQRT1_2_F 0.707106769F -#define KD_FLT_EPSILON 1.19209290E-07F -#define KD_FLT_MAX 3.40282346638528860e+38F -#define KD_FLT_MIN 1.17549435e-38F -/* KD_INFINITY is defined in kdplatform.h since no portable definition - * is possible. */ -#define kdIsNan(x) (((x) != (x)) ? 1 : 0) -#define KD_HUGE_VALF KD_INFINITY -#define KD_DEG_TO_RAD_F 0.0174532924F -#define KD_RAD_TO_DEG_F 57.2957802F - -/* kdAcosf: Arc cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdAcosf(KDfloat32 x); - -/* kdAsinf: Arc sine function. */ -KD_API KDfloat32 KD_APIENTRY kdAsinf(KDfloat32 x); - -/* kdAtanf: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtanf(KDfloat32 x); - -/* kdAtan2f: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtan2f(KDfloat32 y, KDfloat32 x); - -/* kdCosf: Cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdCosf(KDfloat32 x); - -/* kdSinf: Sine function. */ -KD_API KDfloat32 KD_APIENTRY kdSinf(KDfloat32 x); - -/* kdTanf: Tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdTanf(KDfloat32 x); - -/* kdExpf: Exponential function. */ -KD_API KDfloat32 KD_APIENTRY kdExpf(KDfloat32 x); - -/* kdLogf: Natural logarithm function. */ -KD_API KDfloat32 KD_APIENTRY kdLogf(KDfloat32 x); - -/* kdFabsf: Absolute value. */ -KD_API KDfloat32 KD_APIENTRY kdFabsf(KDfloat32 x); - -/* kdPowf: Power function. */ -KD_API KDfloat32 KD_APIENTRY kdPowf(KDfloat32 x, KDfloat32 y); - -/* kdSqrtf: Square root function. */ -KD_API KDfloat32 KD_APIENTRY kdSqrtf(KDfloat32 x); - -/* kdCeilf: Return ceiling value. */ -KD_API KDfloat32 KD_APIENTRY kdCeilf(KDfloat32 x); - -/* kdFloorf: Return floor value. */ -KD_API KDfloat32 KD_APIENTRY kdFloorf(KDfloat32 x); - -/* kdRoundf: Round value to nearest integer. */ -KD_API KDfloat32 KD_APIENTRY kdRoundf(KDfloat32 x); - -/* kdInvsqrtf: Inverse square root function. */ -KD_API KDfloat32 KD_APIENTRY kdInvsqrtf(KDfloat32 x); - -/* kdFmodf: Calculate floating point remainder. */ -KD_API KDfloat32 KD_APIENTRY kdFmodf(KDfloat32 x, KDfloat32 y); - -/******************************************************* - * String and memory functions - *******************************************************/ - -/* kdMemchr: Scan memory for a byte value. */ -KD_API void *KD_APIENTRY kdMemchr(const void *src, KDint byte, KDsize len); - -/* kdMemcmp: Compare two memory regions. */ -KD_API KDint KD_APIENTRY kdMemcmp(const void *src1, const void *src2, KDsize len); - -/* kdMemcpy: Copy a memory region, no overlapping. */ -KD_API void *KD_APIENTRY kdMemcpy(void *buf, const void *src, KDsize len); - -/* kdMemmove: Copy a memory region, overlapping allowed. */ -KD_API void *KD_APIENTRY kdMemmove(void *buf, const void *src, KDsize len); - -/* kdMemset: Set bytes in memory to a value. */ -KD_API void *KD_APIENTRY kdMemset(void *buf, KDint byte, KDsize len); - -/* kdStrchr: Scan string for a byte value. */ -KD_API KDchar *KD_APIENTRY kdStrchr(const KDchar *str, KDint ch); - -/* kdStrcmp: Compares two strings. */ -KD_API KDint KD_APIENTRY kdStrcmp(const KDchar *str1, const KDchar *str2); - -/* kdStrlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrlen(const KDchar *str); - -/* kdStrnlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrnlen(const KDchar *str, KDsize maxlen); - -/* kdStrncat_s: Concatenate two strings. */ -KD_API KDint KD_APIENTRY kdStrncat_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srcmaxlen); - -/* kdStrncmp: Compares two strings with length limit. */ -KD_API KDint KD_APIENTRY kdStrncmp(const KDchar *str1, const KDchar *str2, KDsize maxlen); - -/* kdStrcpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrcpy_s(KDchar *buf, KDsize buflen, const KDchar *src); - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrncpy_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srclen); - -/******************************************************* - * Time functions - *******************************************************/ - -/* kdGetTimeUST: Get the current unadjusted system time. */ -KD_API KDust KD_APIENTRY kdGetTimeUST(void); - -/* kdTime: Get the current wall clock time. */ -KD_API KDtime KD_APIENTRY kdTime(KDtime *timep); - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -typedef struct KDTm { - KDint32 tm_sec; - KDint32 tm_min; - KDint32 tm_hour; - KDint32 tm_mday; - KDint32 tm_mon; - KDint32 tm_year; - KDint32 tm_wday; - KDint32 tm_yday; -} KDTm; -KD_API KDTm *KD_APIENTRY kdGmtime_r(const KDtime *timep, KDTm *result); -KD_API KDTm *KD_APIENTRY kdLocaltime_r(const KDtime *timep, KDTm *result); - -/* kdUSTAtEpoch: Get the UST corresponding to KDtime 0. */ -KD_API KDust KD_APIENTRY kdUSTAtEpoch(void); - -/******************************************************* - * Timer functions - *******************************************************/ - -/* kdSetTimer: Set timer. */ -#define KD_TIMER_ONESHOT 61 -#define KD_TIMER_PERIODIC_AVERAGE 62 -#define KD_TIMER_PERIODIC_MINIMUM 63 -typedef struct KDTimer KDTimer; -KD_API KDTimer *KD_APIENTRY kdSetTimer(KDint64 interval, KDint periodic, void *eventuserptr); - -/* kdCancelTimer: Cancel and free a timer. */ -KD_API KDint KD_APIENTRY kdCancelTimer(KDTimer *timer); - -/* KD_EVENT_TIMER: Timer fire event. */ -#define KD_EVENT_TIMER 42 - -/******************************************************* - * File system - *******************************************************/ -#define KD_EOF (-1) - -/* kdFopen: Open a file from the file system. */ -typedef struct KDFile KDFile; -KD_API KDFile *KD_APIENTRY kdFopen(const KDchar *pathname, const KDchar *mode); - -/* kdFclose: Close an open file. */ -KD_API KDint KD_APIENTRY kdFclose(KDFile *file); - -/* kdFflush: Flush an open file. */ -KD_API KDint KD_APIENTRY kdFflush(KDFile *file); - -/* kdFread: Read from a file. */ -KD_API KDsize KD_APIENTRY kdFread(void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdFwrite: Write to a file. */ -KD_API KDsize KD_APIENTRY kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdGetc: Read next byte from an open file. */ -KD_API KDint KD_APIENTRY kdGetc(KDFile *file); - -/* kdPutc: Write a byte to an open file. */ -KD_API KDint KD_APIENTRY kdPutc(KDint c, KDFile *file); - -/* kdFgets: Read a line of text from an open file. */ -KD_API KDchar *KD_APIENTRY kdFgets(KDchar *buffer, KDsize buflen, KDFile *file); - -/* kdFEOF: Check for end of file. */ -KD_API KDint KD_APIENTRY kdFEOF(KDFile *file); - -/* kdFerror: Check for an error condition on an open file. */ -KD_API KDint KD_APIENTRY kdFerror(KDFile *file); - -/* kdClearerr: Clear a file’s error and end-of-file indicators. */ -KD_API void KD_APIENTRY kdClearerr(KDFile *file); - -/* kdFseek: Reposition the file position indicator in a file. */ -typedef enum { - KD_SEEK_SET = 0, - KD_SEEK_CUR = 1, - KD_SEEK_END = 2 -} KDfileSeekOrigin; -KD_API KDint KD_APIENTRY kdFseek(KDFile *file, KDoff offset, KDfileSeekOrigin origin); - -/* kdFtell: Get the file position of an open file. */ -KD_API KDoff KD_APIENTRY kdFtell(KDFile *file); - -/* kdMkdir: Create new directory. */ -KD_API KDint KD_APIENTRY kdMkdir(const KDchar *pathname); - -/* kdRmdir: Delete a directory. */ -KD_API KDint KD_APIENTRY kdRmdir(const KDchar *pathname); - -/* kdRename: Rename a file. */ -KD_API KDint KD_APIENTRY kdRename(const KDchar *src, const KDchar *dest); - -/* kdRemove: Delete a file. */ -KD_API KDint KD_APIENTRY kdRemove(const KDchar *pathname); - -/* kdTruncate: Truncate or extend a file. */ -KD_API KDint KD_APIENTRY kdTruncate(const KDchar *pathname, KDoff length); - -/* kdStat, kdFstat: Return information about a file. */ -typedef struct KDStat { - KDmode st_mode; - KDoff st_size; - KDtime st_mtime; -} KDStat; -KD_API KDint KD_APIENTRY kdStat(const KDchar *pathname, struct KDStat *buf); -KD_API KDint KD_APIENTRY kdFstat(KDFile *file, struct KDStat *buf); -#define KD_ISREG(m) ((m) & 0x8000) -#define KD_ISDIR(m) ((m) & 0x4000) - -/* kdAccess: Determine whether the application can access a file or directory. */ -KD_API KDint KD_APIENTRY kdAccess(const KDchar *pathname, KDint amode); -#define KD_R_OK 4 -#define KD_W_OK 2 -#define KD_X_OK 1 - -/* kdOpenDir: Open a directory ready for listing. */ -typedef struct KDDir KDDir; -KD_API KDDir *KD_APIENTRY kdOpenDir(const KDchar *pathname); - -/* kdReadDir: Return the next file in a directory. */ -typedef struct KDDirent { - const KDchar *d_name; -} KDDirent; -KD_API KDDirent *KD_APIENTRY kdReadDir(KDDir *dir); - -/* kdCloseDir: Close a directory. */ -KD_API KDint KD_APIENTRY kdCloseDir(KDDir *dir); - -/* kdGetFree: Get free space on a drive. */ -KD_API KDoff KD_APIENTRY kdGetFree(const KDchar *pathname); - -/******************************************************* - * Network sockets - *******************************************************/ - -/* KDSockaddr: Struct type for socket address. */ -typedef struct KDSockaddr { - KDuint16 family; - union { -#define KD_AF_INET 70 - struct { - KDuint16 port; - KDuint32 address; - } sin; - } data; -} KDSockaddr; - -/* kdNameLookup: Look up a hostname. */ -KD_API KDint KD_APIENTRY kdNameLookup(KDint af, const KDchar *hostname, void *eventuserptr); - -/* kdNameLookupCancel: Selectively cancels ongoing kdNameLookup operations. */ -KD_API void KD_APIENTRY kdNameLookupCancel(void *eventuserptr); - -/* kdSocketCreate: Creates a socket. */ -typedef struct KDSocket KDSocket; -KD_API KDSocket *KD_APIENTRY kdSocketCreate(KDint type, void *eventuserptr); -#define KD_SOCK_TCP 64 -#define KD_SOCK_UDP 65 - -/* kdSocketClose: Closes a socket. */ -KD_API KDint KD_APIENTRY kdSocketClose(KDSocket *socket); - -/* kdSocketBind: Bind a socket. */ -KD_API KDint KD_APIENTRY kdSocketBind(KDSocket *socket, const struct KDSockaddr *addr, KDboolean reuse); -#define KD_INADDR_ANY 0 - -/* kdSocketGetName: Get the local address of a socket. */ -KD_API KDint KD_APIENTRY kdSocketGetName(KDSocket *socket, struct KDSockaddr *addr); - -/* kdSocketConnect: Connects a socket. */ -KD_API KDint KD_APIENTRY kdSocketConnect(KDSocket *socket, const KDSockaddr *addr); - -/* kdSocketListen: Listen on a socket. */ -KD_API KDint KD_APIENTRY kdSocketListen(KDSocket *socket, KDint backlog); - -/* kdSocketAccept: Accept an incoming connection. */ -KD_API KDSocket *KD_APIENTRY kdSocketAccept(KDSocket *socket, KDSockaddr *addr, void *eventuserptr); - -/* kdSocketSend, kdSocketSendTo: Send data to a socket. */ -KD_API KDint KD_APIENTRY kdSocketSend(KDSocket *socket, const void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketSendTo(KDSocket *socket, const void *buf, KDint len, const KDSockaddr *addr); - -/* kdSocketRecv, kdSocketRecvFrom: Receive data from a socket. */ -KD_API KDint KD_APIENTRY kdSocketRecv(KDSocket *socket, void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketRecvFrom(KDSocket *socket, void *buf, KDint len, KDSockaddr *addr); - -/* kdHtonl: Convert a 32-bit integer from host to network byte order. */ -KD_API KDuint32 KD_APIENTRY kdHtonl(KDuint32 hostlong); - -/* kdHtons: Convert a 16-bit integer from host to network byte order. */ -KD_API KDuint16 KD_APIENTRY kdHtons(KDuint16 hostshort); - -/* kdNtohl: Convert a 32-bit integer from network to host byte order. */ -KD_API KDuint32 KD_APIENTRY kdNtohl(KDuint32 netlong); - -/* kdNtohs: Convert a 16-bit integer from network to host byte order. */ -KD_API KDuint16 KD_APIENTRY kdNtohs(KDuint16 netshort); - -/* kdInetAton: Convert a “dotted quad” format address to an integer. */ -KD_API KDint KD_APIENTRY kdInetAton(const KDchar *cp, KDuint32 *inp); - -/* kdInetNtop: Convert a network address to textual form. */ -#define KD_INET_ADDRSTRLEN 16 -typedef struct KDInAddr { - KDuint32 s_address; // Renamed this from s_addr as it causes a conflict with winsock2.h -} KDInAddr; -KD_API const KDchar *KD_APIENTRY kdInetNtop(KDuint af, const void *src, KDchar *dst, KDsize cnt); - -/* KD_EVENT_SOCKET_READABLE: Event to indicate that a socket is readable. */ -#define KD_EVENT_SOCKET_READABLE 49 -typedef struct KDEventSocketReadable { - KDSocket *socket; -} KDEventSocketReadable; - -/* KD_EVENT_SOCKET_WRITABLE: Event to indicate that a socket is writable. */ -#define KD_EVENT_SOCKET_WRITABLE 50 -typedef struct KDEventSocketWritable { - KDSocket *socket; -} KDEventSocketWritable; - -/* KD_EVENT_SOCKET_CONNECT_COMPLETE: Event generated when a socket connect is complete */ -#define KD_EVENT_SOCKET_CONNECT_COMPLETE 51 -typedef struct KDEventSocketConnect { - KDSocket *socket; - KDint32 error; -} KDEventSocketConnect; - -/* KD_EVENT_SOCKET_INCOMING: Event generated when a listening socket detects an incoming connection or an error. */ -#define KD_EVENT_SOCKET_INCOMING 52 -typedef struct KDEventSocketIncoming { - KDSocket *socket; -} KDEventSocketIncoming; - -/* KD_EVENT_NAME_LOOKUP_COMPLETE: kdNameLookup complete event. */ -#define KD_EVENT_NAME_LOOKUP_COMPLETE 53 -typedef struct KDEventNameLookup { - KDint32 error; - KDint32 resultlen; - const KDSockaddr *result; - KDboolean more; -} KDEventNameLookup; - -/******************************************************* - * Input/output - *******************************************************/ - -/* KD_EVENT_STATE: State changed event. */ -#define KD_EVENT_STATE 55 - -typedef struct KDEventState { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventState; - -/* KD_EVENT_INPUT: Input changed event. */ -#define KD_EVENT_INPUT 56 - -typedef struct KDEventInput { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventInput; - -/* KD_EVENT_INPUT_JOG: Jogdial jog event. */ -#define KD_EVENT_INPUT_JOG 71 -typedef struct KDEventInputJog { - KDint32 index; - KDint32 count; -} KDEventInputJog; - -/* KD_EVENT_INPUT_POINTER: Pointer input changed event. */ -#define KD_EVENT_INPUT_POINTER 57 -typedef struct KDEventInputPointer { - KDint32 index; - KDint32 select; - KDint32 x; - KDint32 y; -} KDEventInputPointer; - -/* KD_EVENT_INPUT_STICK: Joystick stick changed event. */ -#define KD_EVENT_INPUT_STICK 58 -typedef struct KDEventInputStick { - KDint32 index; - KDint32 x; - KDint32 y; - KDint32 z; -} KDEventInputStick; - -/* kdStateGeti, kdStateGetl, kdStateGetf: get state value(s) */ -KD_API KDint KD_APIENTRY kdStateGeti(KDint startidx, KDuint numidxs, KDint32 *buffer); -KD_API KDint KD_APIENTRY kdStateGetl(KDint startidx, KDuint numidxs, KDint64 *buffer); -KD_API KDint KD_APIENTRY kdStateGetf(KDint startidx, KDuint numidxs, KDfloat32 *buffer); - -/* kdOutputSeti, kdOutputSetf: set outputs */ -KD_API KDint KD_APIENTRY kdOutputSeti(KDint startidx, KDuint numidxs, const KDint32 *buffer); -KD_API KDint KD_APIENTRY kdOutputSetf(KDint startidx, KDuint numidxs, const KDfloat32 *buffer); -#define KD_IO_CONTROLLER_STRIDE 64 - -/* KD_IOGROUP_GAMEKEYS: I/O group for game keys. */ -#define KD_IOGROUP_GAMEKEYS 0x1000 -#define KD_STATE_GAMEKEYS_AVAILABILITY (KD_IOGROUP_GAMEKEYS + 0) -#define KD_INPUT_GAMEKEYS_UP (KD_IOGROUP_GAMEKEYS + 1) -#define KD_INPUT_GAMEKEYS_LEFT (KD_IOGROUP_GAMEKEYS + 2) -#define KD_INPUT_GAMEKEYS_RIGHT (KD_IOGROUP_GAMEKEYS + 3) -#define KD_INPUT_GAMEKEYS_DOWN (KD_IOGROUP_GAMEKEYS + 4) -#define KD_INPUT_GAMEKEYS_FIRE (KD_IOGROUP_GAMEKEYS + 5) -#define KD_INPUT_GAMEKEYS_A (KD_IOGROUP_GAMEKEYS + 6) -#define KD_INPUT_GAMEKEYS_B (KD_IOGROUP_GAMEKEYS + 7) -#define KD_INPUT_GAMEKEYS_C (KD_IOGROUP_GAMEKEYS + 8) -#define KD_INPUT_GAMEKEYS_D (KD_IOGROUP_GAMEKEYS + 9) - -/* KD_IOGROUP_GAMEKEYSNC: I/O group for game keys, no chording. */ -#define KD_IOGROUP_GAMEKEYSNC 0x1100 -#define KD_STATE_GAMEKEYSNC_AVAILABILITY (KD_IOGROUP_GAMEKEYSNC + 0) -#define KD_INPUT_GAMEKEYSNC_UP (KD_IOGROUP_GAMEKEYSNC + 1) -#define KD_INPUT_GAMEKEYSNC_LEFT (KD_IOGROUP_GAMEKEYSNC + 2) -#define KD_INPUT_GAMEKEYSNC_RIGHT (KD_IOGROUP_GAMEKEYSNC + 3) -#define KD_INPUT_GAMEKEYSNC_DOWN (KD_IOGROUP_GAMEKEYSNC + 4) -#define KD_INPUT_GAMEKEYSNC_FIRE (KD_IOGROUP_GAMEKEYSNC + 5) -#define KD_INPUT_GAMEKEYSNC_A (KD_IOGROUP_GAMEKEYSNC + 6) -#define KD_INPUT_GAMEKEYSNC_B (KD_IOGROUP_GAMEKEYSNC + 7) -#define KD_INPUT_GAMEKEYSNC_C (KD_IOGROUP_GAMEKEYSNC + 8) -#define KD_INPUT_GAMEKEYSNC_D (KD_IOGROUP_GAMEKEYSNC + 9) - -/* KD_IOGROUP_PHONEKEYPAD: I/O group for phone keypad. */ -#define KD_IOGROUP_PHONEKEYPAD 0x2000 -#define KD_STATE_PHONEKEYPAD_AVAILABILITY (KD_IOGROUP_PHONEKEYPAD + 0) -#define KD_INPUT_PHONEKEYPAD_0 (KD_IOGROUP_PHONEKEYPAD + 1) -#define KD_INPUT_PHONEKEYPAD_1 (KD_IOGROUP_PHONEKEYPAD + 2) -#define KD_INPUT_PHONEKEYPAD_2 (KD_IOGROUP_PHONEKEYPAD + 3) -#define KD_INPUT_PHONEKEYPAD_3 (KD_IOGROUP_PHONEKEYPAD + 4) -#define KD_INPUT_PHONEKEYPAD_4 (KD_IOGROUP_PHONEKEYPAD + 5) -#define KD_INPUT_PHONEKEYPAD_5 (KD_IOGROUP_PHONEKEYPAD + 6) -#define KD_INPUT_PHONEKEYPAD_6 (KD_IOGROUP_PHONEKEYPAD + 7) -#define KD_INPUT_PHONEKEYPAD_7 (KD_IOGROUP_PHONEKEYPAD + 8) -#define KD_INPUT_PHONEKEYPAD_8 (KD_IOGROUP_PHONEKEYPAD + 9) -#define KD_INPUT_PHONEKEYPAD_9 (KD_IOGROUP_PHONEKEYPAD + 10) -#define KD_INPUT_PHONEKEYPAD_STAR (KD_IOGROUP_PHONEKEYPAD + 11) -#define KD_INPUT_PHONEKEYPAD_HASH (KD_IOGROUP_PHONEKEYPAD + 12) -#define KD_INPUT_PHONEKEYPAD_LEFTSOFT (KD_IOGROUP_PHONEKEYPAD + 13) -#define KD_INPUT_PHONEKEYPAD_RIGHTSOFT (KD_IOGROUP_PHONEKEYPAD + 14) -#define KD_STATE_PHONEKEYPAD_ORIENTATION (KD_IOGROUP_PHONEKEYPAD + 15) - -/* KD_IOGROUP_VIBRATE: I/O group for vibrate. */ -#define KD_IOGROUP_VIBRATE 0x3000 -#define KD_STATE_VIBRATE_AVAILABILITY (KD_IOGROUP_VIBRATE + 0) -#define KD_STATE_VIBRATE_MINFREQUENCY (KD_IOGROUP_VIBRATE + 1) -#define KD_STATE_VIBRATE_MAXFREQUENCY (KD_IOGROUP_VIBRATE + 2) -#define KD_OUTPUT_VIBRATE_VOLUME (KD_IOGROUP_VIBRATE + 3) -#define KD_OUTPUT_VIBRATE_FREQUENCY (KD_IOGROUP_VIBRATE + 4) - -/* KD_IOGROUP_POINTER: I/O group for pointer. */ -#define KD_IOGROUP_POINTER 0x4000 -#define KD_STATE_POINTER_AVAILABILITY (KD_IOGROUP_POINTER + 0) -#define KD_INPUT_POINTER_X (KD_IOGROUP_POINTER + 1) -#define KD_INPUT_POINTER_Y (KD_IOGROUP_POINTER + 2) -#define KD_INPUT_POINTER_SELECT (KD_IOGROUP_POINTER + 3) - -/* KD_IOGROUP_BACKLIGHT: I/O group for backlight. */ -#define KD_IOGROUP_BACKLIGHT 0x5000 -#define KD_STATE_BACKLIGHT_AVAILABILITY (KD_IOGROUP_BACKLIGHT + 0) -#define KD_OUTPUT_BACKLIGHT_FORCE (KD_IOGROUP_BACKLIGHT + 1) - -/* KD_IOGROUP_JOGDIAL: I/O group for a jog dial. */ -#define KD_IOGROUP_JOGDIAL 0x6000 -#define KD_STATE_JOGDIAL_AVAILABILITY (KD_IOGROUP_JOGDIAL + 0) -#define KD_INPUT_JOGDIAL_UP (KD_IOGROUP_JOGDIAL + 1) -#define KD_INPUT_JOGDIAL_LEFT (KD_IOGROUP_JOGDIAL + 2) -#define KD_INPUT_JOGDIAL_RIGHT (KD_IOGROUP_JOGDIAL + 3) -#define KD_INPUT_JOGDIAL_DOWN (KD_IOGROUP_JOGDIAL + 4) -#define KD_INPUT_JOGDIAL_SELECT (KD_IOGROUP_JOGDIAL + 5) - -/* KD_IOGROUP_STICK: I/O group for joystick. */ -#define KD_IOGROUP_STICK 0x7000 -#define KD_STATE_STICK_AVAILABILITY (KD_IOGROUP_STICK + 0) -#define KD_INPUT_STICK_X (KD_IOGROUP_STICK + 1) -#define KD_INPUT_STICK_Y (KD_IOGROUP_STICK + 2) -#define KD_INPUT_STICK_Z (KD_IOGROUP_STICK + 3) -#define KD_INPUT_STICK_BUTTON (KD_IOGROUP_STICK + 4) -#define KD_IO_STICK_STRIDE 8 - -/* KD_IOGROUP_DPAD: I/O group for D-pad. */ -#define KD_IOGROUP_DPAD 0x8000 -#define KD_STATE_DPAD_AVAILABILITY (KD_IOGROUP_DPAD + 0) -#define KD_STATE_DPAD_COPY (KD_IOGROUP_DPAD + 1) -#define KD_INPUT_DPAD_UP (KD_IOGROUP_DPAD + 2) -#define KD_INPUT_DPAD_LEFT (KD_IOGROUP_DPAD + 3) -#define KD_INPUT_DPAD_RIGHT (KD_IOGROUP_DPAD + 4) -#define KD_INPUT_DPAD_DOWN (KD_IOGROUP_DPAD + 5) -#define KD_INPUT_DPAD_SELECT (KD_IOGROUP_DPAD + 6) -#define KD_IO_DPAD_STRIDE 8 - -/* KD_IOGROUP_BUTTONS: I/O group for buttons associated with joystick or D-pad. */ -#define KD_IOGROUP_BUTTONS 0x9000 -#define KD_STATE_BUTTONS_AVAILABILITY (KD_IOGROUP_BUTTONS + 0) -#define KD_INPUT_BUTTONS_0 (KD_IOGROUP_BUTTONS + 1) - -/* KD_IO_UNDEFINED: I/O items reserved for implementation-dependent use. */ -#define KD_IO_UNDEFINED 0x40000000 - -/******************************************************* - * Windowing - *******************************************************/ -#ifdef KD_WINDOW_SUPPORTED -#include <EGL/egl.h> -typedef struct KDWindow KDWindow; - -/* kdCreateWindow: Create a window. */ -KD_API KDWindow *KD_APIENTRY kdCreateWindow(EGLDisplay display, EGLConfig config, void *eventuserptr); - -/* kdDestroyWindow: Destroy a window. */ -KD_API KDint KD_APIENTRY kdDestroyWindow(KDWindow *window); - -/* kdSetWindowPropertybv, kdSetWindowPropertyiv, kdSetWindowPropertycv: Set a window property to request a change in the on-screen representation of the window. */ -KD_API KDint KD_APIENTRY kdSetWindowPropertybv(KDWindow *window, KDint pname, const KDboolean *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertyiv(KDWindow *window, KDint pname, const KDint32 *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertycv(KDWindow *window, KDint pname, const KDchar *param); - -/* kdGetWindowPropertybv, kdGetWindowPropertyiv, kdGetWindowPropertycv: Get the current value of a window property. */ -KD_API KDint KD_APIENTRY kdGetWindowPropertybv(KDWindow *window, KDint pname, KDboolean *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertyiv(KDWindow *window, KDint pname, KDint32 *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertycv(KDWindow *window, KDint pname, KDchar *param, KDsize *size); - -/* kdRealizeWindow: Realize the window as a displayable entity and get the native window handle for passing to EGL. */ -KD_API KDint KD_APIENTRY kdRealizeWindow(KDWindow *window, EGLNativeWindowType *nativewindow); - -/* KD_WINDOWPROPERTY_SIZE: Window client area width and height. */ -#define KD_WINDOWPROPERTY_SIZE 66 - -/* KD_WINDOWPROPERTY_VISIBILITY: Window visibility status. */ -#define KD_WINDOWPROPERTY_VISIBILITY 67 - -/* KD_WINDOWPROPERTY_FOCUS: Window input focus status. */ -#define KD_WINDOWPROPERTY_FOCUS 68 - -/* KD_WINDOWPROPERTY_CAPTION: Window caption. */ -#define KD_WINDOWPROPERTY_CAPTION 69 - -/* KD_EVENT_WINDOW_CLOSE: Event to request to close window. */ -#define KD_EVENT_WINDOW_CLOSE 44 - -/* KD_EVENT_WINDOWPROPERTY_CHANGE: Notification about realized window property change. */ -#define KD_EVENT_WINDOWPROPERTY_CHANGE 47 -typedef struct KDEventWindowProperty { - KDint32 pname; -} KDEventWindowProperty; - -/* KD_EVENT_WINDOW_FOCUS: Event for change of window’s focus state. */ -#define KD_EVENT_WINDOW_FOCUS 60 -typedef struct KDEventWindowFocus { - KDint32 focusstate; -} KDEventWindowFocus; - -/* KD_EVENT_WINDOW_REDRAW: Event to notify need to redraw the window. */ -#define KD_EVENT_WINDOW_REDRAW 59 -#endif /* KD_WINDOW_SUPPORTED */ - -/******************************************************* - * Assertions and logging - *******************************************************/ - -/* kdHandleAssertion: Handle assertion failure. */ -KD_API void KD_APIENTRY kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber); - -/* kdLogMessage: Output a log message. */ -#ifdef KD_NDEBUG -#define kdLogMessage(s) -#else -KD_API void KD_APIENTRY kdLogMessage(const KDchar *string); -#endif - -/* struct KDEvent delayed to the end as it uses event data structs from - * other parts of the .h file. */ -struct KDEvent { - KDust timestamp; - KDint32 type; - void *userptr; - union KDEventData { - KDEventState state; - KDEventInput input; - KDEventInputJog inputjog; - KDEventInputPointer inputpointer; - KDEventInputStick inputstick; - KDEventSocketReadable socketreadable; - KDEventSocketWritable socketwritable; - KDEventSocketConnect socketconnect; - KDEventSocketIncoming socketincoming; - KDEventNameLookup namelookup; -#ifdef KD_WINDOW_SUPPORTED - KDEventWindowProperty windowproperty; - KDEventWindowFocus windowfocus; -#endif /* KD_WINDOW_SUPPORTED */ - KDEventUser user; - } data; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/kdplatform.h b/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/kdplatform.h deleted file mode 100644 index aba94c28..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/PlatformLibs/KD/kdplatform.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* Sample KD/kdplatform.h for OpenKODE Core 1.0.3 */ -#ifndef __kdplatform_h_ -#define __kdplatform_h_ - -#define KD_API -#define KD_APIENTRY - -typedef int KDint32; -typedef unsigned int KDuint32; -typedef long long KDint64; -typedef unsigned long long KDuint64; -typedef short KDint16; -typedef unsigned short KDuint16; -typedef unsigned long KDuintptr; -typedef unsigned long KDsize; -typedef long KDssize; -#define KDINT_MIN (-0x7fffffff-1) -#define KDINT_MAX 0x7fffffff -#define KDUINT_MAX 0xffffffffU -#define KDINT64_MIN (-0x7fffffffffffffffLL-1) -#define KDINT64_MAX 0x7fffffffffffffffLL -#define KDUINT64_MAX 0xffffffffffffffffULL -#define KDSSIZE_MIN (-0x7fffffff-1) -#define KDSSIZE_MAX 0x7fffffff -#define KDSIZE_MAX 0xffffffffU -#define KDUINTPTR_MAX 0xffffffffU -#define KD_NORETURN - -// no EGL on macOS -//#define KD_WINDOW_SUPPORTED - -#ifdef KD_NDEBUG -#define kdAssert(c) -#else -#define kdAssert(c) ((void)( (c) ? 0 : (kdHandleAssertion(#c, __FILE__, __LINE__), 0))) -#endif - -#define KD_INFINITY_BITS 0x7f800000u -#define KD_INFINITY (kdBitsToFloatNV(KD_INFINITY_BITS)) - -KD_API float KD_APIENTRY kdBitsToFloatNV(KDuint32 x); - - -/** KHR_formatted extension */ -#include <stdarg.h> -typedef va_list KDVaListKHR; - -// If there are problems with including stdarg.h here under any of the Windows -// operating systems, we might want to change it back to using char* instead of -// va_list -//typedef char *KDVaListKHR; - - -#define KD_VA_START_KHR(ap, parmN) \ - do {ap = (KDVaListKHR)&parmN + sizeof(parmN);} while(0) - -#define KD_VA_ARG_CHAR_KHR(ap) (KDchar)va_arg(ap, KDint) -#define KD_VA_ARG_CHARPTR_KHR(ap) (KDchar*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16_KHR(ap) (KDint16)va_arg(ap, KDint) -#define KD_VA_ARG_INT32_KHR(ap) va_arg(ap, KDint32) -#define KD_VA_ARG_INT_KHR(ap) va_arg(ap, KDint) -#define KD_VA_ARG_INT64_KHR(ap) va_arg(ap, KDint64) -#define KD_VA_ARG_INTPTR_KHR(ap) (KDint*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16PTR_KHR(ap) (KDint16*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_FLOAT32_KHR(ap) (KDfloat32)(va_arg(ap, double)) -#define KD_VA_ARG_PTR_KHR(ap) (void *)va_arg(ap, char *) - -#define KD_VA_END_KHR(ap) \ - do {ap = (KDVaListKHR)0;} while(0) - -#endif /* __kdplatform_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/MinKD.c b/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/MinKD.c deleted file mode 100644 index 29c4f476..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/MinKD.c +++ /dev/null @@ -1,326 +0,0 @@ -#include "kd.h" -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <memory.h> -#include <pthread.h> -#include <dirent.h> - -#include <mach/mach_time.h> - - -KDFile* kdFopen(const KDchar* pathname, const KDchar* mode) -{ - FILE* retval; - retval = fopen( pathname, mode ); - return (KDFile*)retval; -} - - -KDsize kdFread(void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fread( buffer, size, count, (FILE*)file ); -} - -/* kdFwrite: Write to a file. */ -KDsize kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fwrite( buffer, size, count, (FILE*)file ); -} - -KDint kdFclose(KDFile *file) -{ - return fclose( (FILE*)file ); -} - -/* kdCosf: Cosine function. */ -KDfloat32 kdCosf(KDfloat32 x) { return cosf( x ); } - -/* kdSinf: Sine function. */ -KDfloat32 kdSinf(KDfloat32 x) { return sinf( x ); } - -KDfloat32 kdSqrtf(KDfloat32 x ) { return sqrtf( x ); } - -KDfloat32 kdTanf( KDfloat32 x ) { return tanf( x ); } - -KDint kdAbs(KDint i) -{ - return i < 0 ? -i : i; -} - - -KDfloat32 kdFabsf(KDfloat32 i) { return fabs( i ); } - -/* kdStrcpy_s: Copy a string with an overrun check. */ - -KDint kdStrcpy_s(KDchar* buf, KDsize buflen, const KDchar* src) -{ - return kdStrncpy_s(buf, buflen, src, -1); -} - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KDint kdStrncpy_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srclen) -{ - if ( srclen == (KDsize)-1) - srclen = buflen; - const char* term = memchr(src, 0, srclen); - if (term) - srclen = term - src; - if (srclen >= buflen) { - if (buflen) - *buf = 0; - return KD_EINVAL; - } - memcpy(buf, src, srclen); - buf[srclen] = 0; - return 0; -} - -/* kdStrncat_s: Concatenate two strings. */ -KDint kdStrncat_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srcmaxlen) -{ - size_t origlen = strlen(buf); - const char* p = memchr(src, 0, srcmaxlen); - if (p) - srcmaxlen = p - src; - if (origlen + srcmaxlen >= buflen) - { - /* spec says "buf[0] is set to 0". But that's bad if buflen == 0! - * kdStrncpy_s's spec is better here. */ - if (buflen) - buf[0] = 0; - return KD_ERANGE; - } - memcpy(buf + origlen, src, srcmaxlen); - buf[origlen + srcmaxlen] = 0; - return 0; -} -/* kdMemset: Set bytes in memory to a value. */ -void* kdMemset(void *buf, KDint byte, KDsize len) { return memset( buf, byte, len ); } - -/* kdStrcmp: Compares two strings. */ -KDint kdStrcmp(const KDchar *str1, const KDchar *str2) { return strcmp( str1, str2); } - -/* kdStrlen: Determine the length of a string. */ -KDsize kdStrlen(const KDchar *str) { return strlen( str ); } - -void* kdMalloc( KDsize size ) { return malloc(size); } - -void kdFree( void* ptr ) { free( ptr ); } - -void* kdMemcpy(void *buf, const void *src, KDsize len) { return memcpy( buf, src, len ); } - -struct KDThreadMutex -{ - pthread_mutex_t p_mutex; -}; - -/* kdThreadMutexCreate: Create a mutex. */ -KD_API KDThreadMutex* kdThreadMutexCreate(const void *mutexattr) -{ - KDThreadMutex* mutex = malloc(sizeof(KDThreadMutex)); - if (mutex) - { - if (pthread_mutex_init(&mutex->p_mutex, NULL) == 0) - { - return mutex; - } - free(mutex); - } - - return KD_NULL; -} - -/* kdThreadMutexFree: Free a mutex. */ -KDint kdThreadMutexFree(KDThreadMutex *mutex) -{ - int res; - res = pthread_mutex_destroy(&mutex->p_mutex); - // If the mutex destroy failed, don't free the memory. - // Per OpenKODE spec, this is undefined behaviour, and - // we can leak the memory. The reason for this is that - // later allocations may fail if they happen to go - // to the same memory - if (!res) - free(mutex); - return 0; -} - -/* kdThreadMutexLock: Lock a mutex. */ -KDint kdThreadMutexLock(KDThreadMutex *mutex) -{ - (void)pthread_mutex_lock(&mutex->p_mutex); - return 0; -} - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KDint kdThreadMutexUnlock(KDThreadMutex *mutex) -{ - pthread_mutex_unlock(&mutex->p_mutex); - return 0; -} - -struct KDThreadAttr -{ - pthread_attr_t p_attr; -}; - -struct KDThread -{ - pthread_t Handle; - uint8_t Detached; - uint8_t IsRunning; - uint8_t UserThread; - void* (*UserThreadProc)(void*); - void* UserArg; -}; -/* kdThreadCreate: Create a new thread. */ -KDThread * kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg) -{ - pthread_t thread; - int retval; - const pthread_attr_t* p_attr; - if ( attr ) - p_attr = &attr->p_attr; - else - p_attr = KD_NULL; - - retval = pthread_create( &thread, p_attr, start_routine, arg ); - if ( retval != 0 ) - { - return KD_NULL; - } - KDThread* newThread = (KDThread*)malloc( sizeof( KDThread ) ); - if ( newThread == KD_NULL ) return KD_NULL; - newThread->Handle = thread; - newThread->Detached = 0; - newThread->IsRunning = 1; - newThread->UserThread = 1; - newThread->UserThreadProc = start_routine; - newThread->UserArg = arg; - return newThread; -} - -/* kdThreadExit: Terminate this thread. */ -void kdThreadExit(void *retval) -{ - pthread_exit( retval ); -} - -/* kdThreadJoin: Wait for termination of another thread. */ -KDint kdThreadJoin(KDThread *thread, void **retval) -{ - int join_retval; - join_retval = pthread_join( thread->Handle, retval ); - if ( join_retval == 0 ) free( thread ); - return join_retval; -} - -typedef struct KDDirInternal { - DIR *dir; - KDDirent ent; -} KDDirInternal; - -/* kdOpenDir: Open a directory ready for listing. */ -KDDir *kdOpenDir(const KDchar *pathname) -{ - DIR* dir = opendir( pathname ); - if ( dir == KD_NULL ) return KD_NULL; - KDDirInternal* retval = (KDDirInternal*)malloc( sizeof( KDDirInternal )); - if ( retval == KD_NULL ) return KD_NULL; - memset( retval, 0, sizeof( *retval ) ); - retval->dir = dir; - return (KDDir*)retval; -} - -/* kdReadDir: Return the next file in a directory. */ -KDDirent* kdReadDir(KDDir *dir) -{ - struct dirent *sysDirEnt; - KDDirent *dirent = NULL; - - sysDirEnt = readdir(((KDDirInternal *)dir)->dir); - - if (sysDirEnt) { - dirent = &((KDDirInternal *)dir)->ent; - dirent->d_name = sysDirEnt->d_name; - } - return dirent; -} - -/* kdCloseDir: Close a directory. */ -KDint kdCloseDir(KDDir *dir) -{ - closedir(((KDDirInternal *)dir)->dir); - free(dir); - return 0; -} - -#if 0 -KDint kdSetWindowPropertyiv(KDWindow * win, KDint prop, const KDint32 * val) -{ - return 0; -} -#endif - -void kdDefaultEvent(const KDEvent *event ) -{ - -} - -typedef long long NvS64; - -KDust kdGetTimeUST(void) -{ - mach_timebase_info_data_t info; - mach_timebase_info(&info); - - uint64_t time = mach_absolute_time(); - - // convert to nanoseconds - time *= info.numer; - time /= info.denom; - - return (NvS64)time; -} - -static KDTm* gmlocaltime( - const KDtime *timep, - KDTm *result, - struct tm* (* func)(const time_t* timep, struct tm* result)) -{ - struct tm tm; - time_t t = *timep; - (*func)(&t, &tm); - result->tm_sec = tm.tm_sec; - result->tm_min = tm.tm_min; - result->tm_hour = tm.tm_hour; - result->tm_mday = tm.tm_mday; - result->tm_mon = tm.tm_mon; - result->tm_year = tm.tm_year; - result->tm_wday = tm.tm_wday; - result->tm_yday = tm.tm_yday; - return result; -} - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -KDTm* kdGmtime_r(const KDtime* timep, KDTm* result) -{ - return gmlocaltime(timep, result, &gmtime_r); -} - -KDTm* kdLocaltime_r(const KDtime* timep, KDTm* result) -{ - return gmlocaltime(timep, result, &localtime_r); -} - -//=========================================================================== -// kdCreateEvent: Create an event for posting. -//=========================================================================== -KDEvent* kdCreateEvent(void) -{ - //Memory leak and there isn't much I am going to do about this now - KDEvent* newEvent = (KDEvent*)malloc( sizeof( KDEvent )); - memset( newEvent, 0, sizeof( KDEvent )); - return newEvent; -} diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/Qt3DS_extwindowprops.h b/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/Qt3DS_extwindowprops.h deleted file mode 100644 index 4428a568..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/Qt3DS_extwindowprops.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_extwindowprops_h_ -#define __kd_QT3DS_extwindowprops_h_ -#include <KD/kd.h> -#include <EGL/eglext.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_WINDOWPROPERTY_FULLSCREEN: Control over resizing a window to fill the complete screen */ - -// KDboolean - set the window to fullscreen mode -#define KD_WINDOWPROPERTY_FULLSCREEN_QT3DS 9999 - -// KDint - set which KD_DISPLAY_* display that the window should be opened on -#define KD_WINDOWPROPERTY_DISPLAY_QT3DS 9998 - -// KDboolean - sets whether overlay should be used to create window -#define KD_WINDOWPROPERTY_OVERLAY_QT3DS 9997 - -#define KD_DISPLAY_PRIMARY_QT3DS 0 -#define KD_DISPLAY_INTERNAL0_QT3DS 0 -#define KD_DISPLAY_INTERNAL1_QT3DS 1 -#define KD_DISPLAY_INTERNAL2_QT3DS 2 -#define KD_DISPLAY_INTERNAL3_QT3DS 3 -#define KD_DISPLAY_EXTERNAL0_QT3DS 1000 -#define KD_DISPLAY_EXTERNAL1_QT3DS 1001 -#define KD_DISPLAY_EXTERNAL2_QT3DS 1002 -#define KD_DISPLAY_EXTERNAL3_QT3DS 1003 - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_extwindowprops_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/Qt3DS_multitouch.h b/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/Qt3DS_multitouch.h deleted file mode 100644 index e230b029..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/Qt3DS_multitouch.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_multitouch_h_ -#define __kd_QT3DS_multitouch_h_ -#include <KD/kd.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_IOGROUP_MULTITOUCH: I/O group for Multitouch input devices. */ -#define KD_IOGROUP_MULTITOUCH_QT3DS 0x40004000 -#define KD_STATE_MULTITOUCH_AVAILABILITY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 0) -#define KD_INPUT_MULTITOUCH_FINGERS_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 1) -#define KD_INPUT_MULTITOUCH_WIDTH_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 2) -#define KD_INPUT_MULTITOUCH_X_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 3) -#define KD_INPUT_MULTITOUCH_Y_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 4) -#define KD_INPUT_MULTITOUCH_X2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 5) -#define KD_INPUT_MULTITOUCH_Y2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 6) -#define KD_INPUT_MULTITOUCH_PRESSURE_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 7) -#define KD_INPUT_MULTITOUCH_GESTURES_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 8) -#define KD_INPUT_MULTITOUCH_RELX_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 9) -#define KD_INPUT_MULTITOUCH_RELY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 10) - -/* KD_EVENT_INPUT_MULTITOUCH_QT3DS: Multitouch event. */ -#define KD_EVENT_INPUT_MULTITOUCH_QT3DS 1001 -typedef struct KDEventInputMultitouchDataNV -{ - KDint32 index; - KDint8 fingers; - KDint8 width; - KDint16 x; - KDint16 y; - KDint16 x2; - KDint16 y2; - KDint16 pressure; -} KDEventInputMultitouchDataNV; - -/* KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS: Multitouch gesture event. */ -#define KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS 1002 - -/* kdGetEventInputMultitouchDataNV: Get auxiliary event data for multitouch input. */ -KD_API KDint KD_APIENTRY kdGetEventInputMultitouchDataNV(const KDEvent *event, - KDEventInputMultitouchDataNV *data); - -/* kdSetEventInputMultitouchActiveNV: Activate Multitouch input events */ -KD_API KDint KD_APIENTRY kdSetEventInputMultitouchActiveNV(KDboolean activate); - -/* kdEnableEventInputMultitouchMergeNV: Activate merging of Multitouch input events */ -KD_API void KD_APIENTRY kdEnableEventInputMultitouchMergeNV(KDboolean enable); - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_multitouch_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/kd.h b/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/kd.h deleted file mode 100644 index f7ccea03..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/kd.h +++ /dev/null @@ -1,991 +0,0 @@ -/* Reference KD/kd.h for OpenKODE Core 1.0.3 */ -#ifndef __kd_h_ -#define __kd_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "kdplatform.h" - - - -/******************************************************* - * Introduction - *******************************************************/ - -/******************************************************* - * OpenKODE conformance - *******************************************************/ - -/******************************************************* - * Overview - *******************************************************/ - -/******************************************************* - * Programming environment - *******************************************************/ -#define KD_VERSION_1_0 1 -typedef char KDchar; -typedef signed char KDint8; -typedef unsigned char KDuint8; -typedef int KDint; -typedef unsigned int KDuint; -typedef float KDfloat32; -typedef KDint KDboolean; -typedef KDint64 KDtime; -typedef KDint64 KDust; -typedef KDint64 KDoff; -typedef KDuint32 KDmode; -#define KDINT32_MIN (-0x7fffffff-1) -#define KDINT32_MAX 0x7fffffff -#define KDUINT32_MAX 0xffffffffU -#define KD_TRUE 1 -#define KD_FALSE 0 -#ifdef __cplusplus - const int KD_NULL = 0; /* Yes, int. See Stroustrup 3rd edition. */ -#else - #define KD_NULL ((void *)0) -#endif - -/******************************************************* - * Errors - *******************************************************/ -#define KD_EACCES 1 -#define KD_EADDRINUSE 2 -#define KD_EADDRNOTAVAIL 3 -#define KD_EAFNOSUPPORT 4 -#define KD_EAGAIN (5) -#define KD_EALREADY 6 -#define KD_EBADF 7 -#define KD_EBUSY 8 -#define KD_ECONNREFUSED 9 -#define KD_ECONNRESET 10 -#define KD_EDEADLK 11 -#define KD_EDESTADDRREQ 12 -#define KD_EEXIST 13 -#define KD_EFBIG 14 -#define KD_EHOSTUNREACH 15 -#define KD_EHOST_NOT_FOUND 16 -#define KD_EINVAL 17 -#define KD_EIO 18 -#define KD_EILSEQ 19 -#define KD_EISCONN 20 -#define KD_EISDIR 21 -#define KD_EMFILE 22 -#define KD_ENAMETOOLONG 23 -#define KD_ENOENT 24 -#define KD_ENOMEM 25 -#define KD_ENOSPC 26 -#define KD_ENOSYS 27 -#define KD_ENOTCONN 28 -#define KD_ENO_DATA 29 -#define KD_ENO_RECOVERY 30 -#define KD_EOPNOTSUPP 31 -#define KD_EOVERFLOW 32 -#define KD_EPERM 33 -#define KD_ERANGE 35 -#define KD_ETIMEDOUT (36) -#define KD_ETRY_AGAIN 37 - -/* kdGetError: Get last error indication. */ -KD_API KDint KD_APIENTRY kdGetError(void); - -/* kdSetError: Set last error indication. */ -KD_API void KD_APIENTRY kdSetError(KDint error); - -/******************************************************* - * Versioning and attribute queries - *******************************************************/ - -/* kdQueryAttribi: Obtain the value of a numeric OpenKODE Core attribute. */ -KD_API KDint KD_APIENTRY kdQueryAttribi(KDint attribute, KDint *value); - -/* kdQueryAttribcv: Obtain the value of a string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryAttribcv(KDint attribute); -#define KD_ATTRIB_VENDOR 39 -#define KD_ATTRIB_VERSION 40 -#define KD_ATTRIB_PLATFORM 41 - -/* kdQueryIndexedAttribcv: Obtain the value of an indexed string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryIndexedAttribcv(KDint attribute, KDint index); - -/******************************************************* - * Threads and synchronization - *******************************************************/ - -/* kdThreadAttrCreate: Create a thread attribute object. */ -typedef struct KDThreadAttr KDThreadAttr; -KD_API KDThreadAttr *KD_APIENTRY kdThreadAttrCreate(void); - -/* kdThreadAttrFree: Free a thread attribute object. */ -KD_API KDint KD_APIENTRY kdThreadAttrFree(KDThreadAttr *attr); - -/* kdThreadAttrSetDetachState: Set detachstate attribute. */ -#define KD_THREAD_CREATE_JOINABLE 0 -#define KD_THREAD_CREATE_DETACHED 1 -KD_API KDint KD_APIENTRY kdThreadAttrSetDetachState(KDThreadAttr *attr, KDint detachstate); - -/* kdThreadAttrSetStackSize: Set stacksize attribute. */ -KD_API KDint KD_APIENTRY kdThreadAttrSetStackSize(KDThreadAttr *attr, KDsize stacksize); - -/* kdThreadCreate: Create a new thread. */ -typedef struct KDThread KDThread; -KD_API KDThread *KD_APIENTRY kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg); - -/* kdThreadExit: Terminate this thread. */ -KD_API KD_NORETURN void KD_APIENTRY kdThreadExit(void *retval); - -/* kdThreadJoin: Wait for termination of another thread. */ -KD_API KDint KD_APIENTRY kdThreadJoin(KDThread *thread, void **retval); - -/* kdThreadDetach: Allow resources to be freed as soon as a thread terminates. */ -KD_API KDint KD_APIENTRY kdThreadDetach(KDThread *thread); - -/* kdThreadSelf: Return calling thread’s ID. */ -KD_API KDThread *KD_APIENTRY kdThreadSelf(void); - -/* kdThreadOnce: Wrap initialization code so it is executed only once. */ -#ifndef KD_NO_STATIC_DATA -typedef struct KDThreadOnce { - void *impl; -} KDThreadOnce; -#define KD_THREAD_ONCE_INIT { 0 } -KD_API KDint KD_APIENTRY kdThreadOnce(KDThreadOnce *once_control, void (*init_routine)(void)); -#endif /* ndef KD_NO_STATIC_DATA */ - -/* kdThreadMutexCreate: Create a mutex. */ -typedef struct KDThreadMutex KDThreadMutex; -KD_API KDThreadMutex *KD_APIENTRY kdThreadMutexCreate(const void *mutexattr); - -/* kdThreadMutexFree: Free a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexFree(KDThreadMutex *mutex); - -/* kdThreadMutexLock: Lock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexLock(KDThreadMutex *mutex); - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexUnlock(KDThreadMutex *mutex); - -/* kdThreadCondCreate: Create a condition variable. */ -typedef struct KDThreadCond KDThreadCond; -KD_API KDThreadCond *KD_APIENTRY kdThreadCondCreate(const void *attr); - -/* kdThreadCondFree: Free a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondFree(KDThreadCond *cond); - -/* kdThreadCondSignal, kdThreadCondBroadcast: Signal a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondSignal(KDThreadCond *cond); -KD_API KDint KD_APIENTRY kdThreadCondBroadcast(KDThreadCond *cond); - -/* kdThreadCondWait: Wait for a condition variable to be signalled. */ -KD_API KDint KD_APIENTRY kdThreadCondWait(KDThreadCond *cond, KDThreadMutex *mutex); - -/* kdThreadSemCreate: Create a semaphore. */ -typedef struct KDThreadSem KDThreadSem; -KD_API KDThreadSem *KD_APIENTRY kdThreadSemCreate(KDuint value); - -/* kdThreadSemFree: Free a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemFree(KDThreadSem *sem); - -/* kdThreadSemWait: Lock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemWait(KDThreadSem *sem); - -/* kdThreadSemPost: Unlock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemPost(KDThreadSem *sem); - -/******************************************************* - * Events - *******************************************************/ - -/* KDEvent: Struct type containing an event. */ -typedef struct KDEvent KDEvent; -#define KD_EVENT_USER 0x40000000 - -/* kdWaitEvent: Get next event from thread’s event queue. */ -KD_API const KDEvent *KD_APIENTRY kdWaitEvent(KDust timeout); - -/* kdSetEventUserptr: Set the userptr for global events. */ -KD_API void KD_APIENTRY kdSetEventUserptr(void *userptr); - -/* kdDefaultEvent: Perform default processing on an unrecognized event. */ -KD_API void KD_APIENTRY kdDefaultEvent(const KDEvent *event); - -/* kdPumpEvents: Pump the thread’s event queue, performing callbacks. */ -KD_API KDint KD_APIENTRY kdPumpEvents(void); - -/* kdInstallCallback: Install or remove a callback function for event processing. */ -typedef void (KD_APIENTRY KDCallbackFunc)(const KDEvent *event); -KD_API KDint KD_APIENTRY kdInstallCallback(KDCallbackFunc *func, KDint eventtype, void *eventuserptr); - -/* kdCreateEvent: Create an event for posting. */ -KD_API KDEvent *KD_APIENTRY kdCreateEvent(void); - -/* kdPostEvent, kdPostThreadEvent: Post an event into a queue. */ -KD_API KDint KD_APIENTRY kdPostEvent(KDEvent *event); -KD_API KDint KD_APIENTRY kdPostThreadEvent(KDEvent *event, KDThread *thread); -typedef struct KDEventUser { - union { - KDint64 i64; - void *p; - struct { - KDint32 a; - KDint32 b; - } i32pair; - } value1; - union { - KDint64 i64; - struct { - union { - KDint32 i32; - void *p; - } value2; - union { - KDint32 i32; - void *p; - } value3; - } i32orp; - } value23; -} KDEventUser; - -/* kdFreeEvent: Abandon an event instead of posting it. */ -KD_API void KD_APIENTRY kdFreeEvent(KDEvent *event); - -/******************************************************* - * System events - *******************************************************/ - -/* KD_EVENT_QUIT: Event to request to quit application. */ -#define KD_EVENT_QUIT 43 - -/* KD_EVENT_PAUSE: Application pause event. */ -#define KD_EVENT_PAUSE 45 - -/* KD_EVENT_RESUME: Application resume event. */ -#define KD_EVENT_RESUME 46 - -/* KD_EVENT_ORIENTATION: Orientation change event. */ -#define KD_EVENT_ORIENTATION 48 - -/* KD_IOGROUP_EVENT: I/O group for OpenKODE Core system events implemented as state values. */ -#define KD_IOGROUP_EVENT 0x100 -#define KD_STATE_EVENT_USING_BATTERY (KD_IOGROUP_EVENT + 0) -#define KD_STATE_EVENT_LOW_BATTERY (KD_IOGROUP_EVENT + 1) - - -/* KD_IOGROUP_ORIENTATION: I/O group for OpenKODE Core orientation state. */ -#define KD_IOGROUP_ORIENTATION 0x200 -#define KD_STATE_ORIENTATION_OVERALL (KD_IOGROUP_ORIENTATION + 0) -#define KD_STATE_ORIENTATION_SCREEN (KD_IOGROUP_ORIENTATION + 1) -#define KD_STATE_ORIENTATION_RENDERING (KD_IOGROUP_ORIENTATION + 2) -#define KD_STATE_ORIENTATION_LOCKSURFACE (KD_IOGROUP_ORIENTATION + 3) - - -/******************************************************* - * Application startup and exit. - *******************************************************/ - -/* kdMain: The application-defined main function. */ -KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv); - -/* kdExit: Exit the application. */ -KD_API KD_NORETURN void KD_APIENTRY kdExit(KDint status); - -/******************************************************* - * Utility library functions - *******************************************************/ - -/* kdAbs: Compute the absolute value of an integer. */ -KD_API KDint KD_APIENTRY kdAbs(KDint i); - -/* kdStrtof: Convert a string to a floating point number. */ -KD_API KDfloat32 KD_APIENTRY kdStrtof(const KDchar *s, KDchar **endptr); - -/* kdStrtol, kdStrtoul: Convert a string to an integer. */ -KD_API KDint KD_APIENTRY kdStrtol(const KDchar *s, KDchar **endptr, KDint base); -KD_API KDuint KD_APIENTRY kdStrtoul(const KDchar *s, KDchar **endptr, KDint base); - -/* kdLtostr, kdUltostr: Convert an integer to a string. */ -#define KD_LTOSTR_MAXLEN ((sizeof(KDint)*8*3+6)/10+2) -#define KD_ULTOSTR_MAXLEN ((sizeof(KDint)*8+2)/3+1) -KD_API KDssize KD_APIENTRY kdLtostr(KDchar *buffer, KDsize buflen, KDint number); -KD_API KDssize KD_APIENTRY kdUltostr(KDchar *buffer, KDsize buflen, KDuint number, KDint base); - -/* kdFtostr: Convert a float to a string. */ -#define KD_FTOSTR_MAXLEN 16 -KD_API KDssize KD_APIENTRY kdFtostr(KDchar *buffer, KDsize buflen, KDfloat32 number); - -/* kdCryptoRandom: Return random data. */ -KD_API KDint KD_APIENTRY kdCryptoRandom(KDuint8 *buf, KDsize buflen); - -/******************************************************* - * Locale specific functions - *******************************************************/ - -/* kdGetLocale: Determine the current language and locale. */ -KD_API const KDchar *KD_APIENTRY kdGetLocale(void); - -/******************************************************* - * Memory allocation - *******************************************************/ - -/* kdMalloc: Allocate memory. */ -KD_API void *KD_APIENTRY kdMalloc(KDsize size); - -/* kdFree: Free allocated memory block. */ -KD_API void KD_APIENTRY kdFree(void *ptr); - -/* kdRealloc: Resize memory block. */ -KD_API void *KD_APIENTRY kdRealloc(void *ptr, KDsize size); - -/******************************************************* - * Thread-local storage. - *******************************************************/ - -/* kdGetTLS: Get the thread-local storage pointer. */ -KD_API void *KD_APIENTRY kdGetTLS(void); - -/* kdSetTLS: Set the thread-local storage pointer. */ -KD_API void KD_APIENTRY kdSetTLS(void *ptr); - -/******************************************************* - * Mathematical functions - *******************************************************/ -#define KD_E_F 2.71828175F -#define KD_PI_F 3.14159274F -#define KD_PI_2_F 1.57079637F -#define KD_2PI_F 6.28318548F -#define KD_LOG2E_F 1.44269502F -#define KD_LOG10E_F 0.434294492F -#define KD_LN2_F 0.693147182F -#define KD_LN10_F 2.30258512F -#define KD_PI_4_F 0.785398185F -#define KD_1_PI_F 0.318309873F -#define KD_2_PI_F 0.636619747F -#define KD_2_SQRTPI_F 1.12837923F -#define KD_SQRT2_F 1.41421354F -#define KD_SQRT1_2_F 0.707106769F -#define KD_FLT_EPSILON 1.19209290E-07F -#define KD_FLT_MAX 3.40282346638528860e+38F -#define KD_FLT_MIN 1.17549435e-38F -/* KD_INFINITY is defined in kdplatform.h since no portable definition - * is possible. */ -#define kdIsNan(x) (((x) != (x)) ? 1 : 0) -#define KD_HUGE_VALF KD_INFINITY -#define KD_DEG_TO_RAD_F 0.0174532924F -#define KD_RAD_TO_DEG_F 57.2957802F - -/* kdAcosf: Arc cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdAcosf(KDfloat32 x); - -/* kdAsinf: Arc sine function. */ -KD_API KDfloat32 KD_APIENTRY kdAsinf(KDfloat32 x); - -/* kdAtanf: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtanf(KDfloat32 x); - -/* kdAtan2f: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtan2f(KDfloat32 y, KDfloat32 x); - -/* kdCosf: Cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdCosf(KDfloat32 x); - -/* kdSinf: Sine function. */ -KD_API KDfloat32 KD_APIENTRY kdSinf(KDfloat32 x); - -/* kdTanf: Tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdTanf(KDfloat32 x); - -/* kdExpf: Exponential function. */ -KD_API KDfloat32 KD_APIENTRY kdExpf(KDfloat32 x); - -/* kdLogf: Natural logarithm function. */ -KD_API KDfloat32 KD_APIENTRY kdLogf(KDfloat32 x); - -/* kdFabsf: Absolute value. */ -KD_API KDfloat32 KD_APIENTRY kdFabsf(KDfloat32 x); - -/* kdPowf: Power function. */ -KD_API KDfloat32 KD_APIENTRY kdPowf(KDfloat32 x, KDfloat32 y); - -/* kdSqrtf: Square root function. */ -KD_API KDfloat32 KD_APIENTRY kdSqrtf(KDfloat32 x); - -/* kdCeilf: Return ceiling value. */ -KD_API KDfloat32 KD_APIENTRY kdCeilf(KDfloat32 x); - -/* kdFloorf: Return floor value. */ -KD_API KDfloat32 KD_APIENTRY kdFloorf(KDfloat32 x); - -/* kdRoundf: Round value to nearest integer. */ -KD_API KDfloat32 KD_APIENTRY kdRoundf(KDfloat32 x); - -/* kdInvsqrtf: Inverse square root function. */ -KD_API KDfloat32 KD_APIENTRY kdInvsqrtf(KDfloat32 x); - -/* kdFmodf: Calculate floating point remainder. */ -KD_API KDfloat32 KD_APIENTRY kdFmodf(KDfloat32 x, KDfloat32 y); - -/******************************************************* - * String and memory functions - *******************************************************/ - -/* kdMemchr: Scan memory for a byte value. */ -KD_API void *KD_APIENTRY kdMemchr(const void *src, KDint byte, KDsize len); - -/* kdMemcmp: Compare two memory regions. */ -KD_API KDint KD_APIENTRY kdMemcmp(const void *src1, const void *src2, KDsize len); - -/* kdMemcpy: Copy a memory region, no overlapping. */ -KD_API void *KD_APIENTRY kdMemcpy(void *buf, const void *src, KDsize len); - -/* kdMemmove: Copy a memory region, overlapping allowed. */ -KD_API void *KD_APIENTRY kdMemmove(void *buf, const void *src, KDsize len); - -/* kdMemset: Set bytes in memory to a value. */ -KD_API void *KD_APIENTRY kdMemset(void *buf, KDint byte, KDsize len); - -/* kdStrchr: Scan string for a byte value. */ -KD_API KDchar *KD_APIENTRY kdStrchr(const KDchar *str, KDint ch); - -/* kdStrcmp: Compares two strings. */ -KD_API KDint KD_APIENTRY kdStrcmp(const KDchar *str1, const KDchar *str2); - -/* kdStrlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrlen(const KDchar *str); - -/* kdStrnlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrnlen(const KDchar *str, KDsize maxlen); - -/* kdStrncat_s: Concatenate two strings. */ -KD_API KDint KD_APIENTRY kdStrncat_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srcmaxlen); - -/* kdStrncmp: Compares two strings with length limit. */ -KD_API KDint KD_APIENTRY kdStrncmp(const KDchar *str1, const KDchar *str2, KDsize maxlen); - -/* kdStrcpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrcpy_s(KDchar *buf, KDsize buflen, const KDchar *src); - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrncpy_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srclen); - -/******************************************************* - * Time functions - *******************************************************/ - -/* kdGetTimeUST: Get the current unadjusted system time. */ -KD_API KDust KD_APIENTRY kdGetTimeUST(void); - -/* kdTime: Get the current wall clock time. */ -KD_API KDtime KD_APIENTRY kdTime(KDtime *timep); - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -typedef struct KDTm { - KDint32 tm_sec; - KDint32 tm_min; - KDint32 tm_hour; - KDint32 tm_mday; - KDint32 tm_mon; - KDint32 tm_year; - KDint32 tm_wday; - KDint32 tm_yday; -} KDTm; -KD_API KDTm *KD_APIENTRY kdGmtime_r(const KDtime *timep, KDTm *result); -KD_API KDTm *KD_APIENTRY kdLocaltime_r(const KDtime *timep, KDTm *result); - -/* kdUSTAtEpoch: Get the UST corresponding to KDtime 0. */ -KD_API KDust KD_APIENTRY kdUSTAtEpoch(void); - -/******************************************************* - * Timer functions - *******************************************************/ - -/* kdSetTimer: Set timer. */ -#define KD_TIMER_ONESHOT 61 -#define KD_TIMER_PERIODIC_AVERAGE 62 -#define KD_TIMER_PERIODIC_MINIMUM 63 -typedef struct KDTimer KDTimer; -KD_API KDTimer *KD_APIENTRY kdSetTimer(KDint64 interval, KDint periodic, void *eventuserptr); - -/* kdCancelTimer: Cancel and free a timer. */ -KD_API KDint KD_APIENTRY kdCancelTimer(KDTimer *timer); - -/* KD_EVENT_TIMER: Timer fire event. */ -#define KD_EVENT_TIMER 42 - -/******************************************************* - * File system - *******************************************************/ -#define KD_EOF (-1) - -/* kdFopen: Open a file from the file system. */ -typedef struct KDFile KDFile; -KD_API KDFile *KD_APIENTRY kdFopen(const KDchar *pathname, const KDchar *mode); - -/* kdFclose: Close an open file. */ -KD_API KDint KD_APIENTRY kdFclose(KDFile *file); - -/* kdFflush: Flush an open file. */ -KD_API KDint KD_APIENTRY kdFflush(KDFile *file); - -/* kdFread: Read from a file. */ -KD_API KDsize KD_APIENTRY kdFread(void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdFwrite: Write to a file. */ -KD_API KDsize KD_APIENTRY kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdGetc: Read next byte from an open file. */ -KD_API KDint KD_APIENTRY kdGetc(KDFile *file); - -/* kdPutc: Write a byte to an open file. */ -KD_API KDint KD_APIENTRY kdPutc(KDint c, KDFile *file); - -/* kdFgets: Read a line of text from an open file. */ -KD_API KDchar *KD_APIENTRY kdFgets(KDchar *buffer, KDsize buflen, KDFile *file); - -/* kdFEOF: Check for end of file. */ -KD_API KDint KD_APIENTRY kdFEOF(KDFile *file); - -/* kdFerror: Check for an error condition on an open file. */ -KD_API KDint KD_APIENTRY kdFerror(KDFile *file); - -/* kdClearerr: Clear a file’s error and end-of-file indicators. */ -KD_API void KD_APIENTRY kdClearerr(KDFile *file); - -/* kdFseek: Reposition the file position indicator in a file. */ -typedef enum { - KD_SEEK_SET = 0, - KD_SEEK_CUR = 1, - KD_SEEK_END = 2 -} KDfileSeekOrigin; -KD_API KDint KD_APIENTRY kdFseek(KDFile *file, KDoff offset, KDfileSeekOrigin origin); - -/* kdFtell: Get the file position of an open file. */ -KD_API KDoff KD_APIENTRY kdFtell(KDFile *file); - -/* kdMkdir: Create new directory. */ -KD_API KDint KD_APIENTRY kdMkdir(const KDchar *pathname); - -/* kdRmdir: Delete a directory. */ -KD_API KDint KD_APIENTRY kdRmdir(const KDchar *pathname); - -/* kdRename: Rename a file. */ -KD_API KDint KD_APIENTRY kdRename(const KDchar *src, const KDchar *dest); - -/* kdRemove: Delete a file. */ -KD_API KDint KD_APIENTRY kdRemove(const KDchar *pathname); - -/* kdTruncate: Truncate or extend a file. */ -KD_API KDint KD_APIENTRY kdTruncate(const KDchar *pathname, KDoff length); - -/* kdStat, kdFstat: Return information about a file. */ -typedef struct KDStat { - KDmode st_mode; - KDoff st_size; - KDtime st_mtime; -} KDStat; -KD_API KDint KD_APIENTRY kdStat(const KDchar *pathname, struct KDStat *buf); -KD_API KDint KD_APIENTRY kdFstat(KDFile *file, struct KDStat *buf); -#define KD_ISREG(m) ((m) & 0x8000) -#define KD_ISDIR(m) ((m) & 0x4000) - -/* kdAccess: Determine whether the application can access a file or directory. */ -KD_API KDint KD_APIENTRY kdAccess(const KDchar *pathname, KDint amode); -#define KD_R_OK 4 -#define KD_W_OK 2 -#define KD_X_OK 1 - -/* kdOpenDir: Open a directory ready for listing. */ -typedef struct KDDir KDDir; -KD_API KDDir *KD_APIENTRY kdOpenDir(const KDchar *pathname); - -/* kdReadDir: Return the next file in a directory. */ -typedef struct KDDirent { - const KDchar *d_name; -} KDDirent; -KD_API KDDirent *KD_APIENTRY kdReadDir(KDDir *dir); - -/* kdCloseDir: Close a directory. */ -KD_API KDint KD_APIENTRY kdCloseDir(KDDir *dir); - -/* kdGetFree: Get free space on a drive. */ -KD_API KDoff KD_APIENTRY kdGetFree(const KDchar *pathname); - -/******************************************************* - * Network sockets - *******************************************************/ - -/* KDSockaddr: Struct type for socket address. */ -typedef struct KDSockaddr { - KDuint16 family; - union { -#define KD_AF_INET 70 - struct { - KDuint16 port; - KDuint32 address; - } sin; - } data; -} KDSockaddr; - -/* kdNameLookup: Look up a hostname. */ -KD_API KDint KD_APIENTRY kdNameLookup(KDint af, const KDchar *hostname, void *eventuserptr); - -/* kdNameLookupCancel: Selectively cancels ongoing kdNameLookup operations. */ -KD_API void KD_APIENTRY kdNameLookupCancel(void *eventuserptr); - -/* kdSocketCreate: Creates a socket. */ -typedef struct KDSocket KDSocket; -KD_API KDSocket *KD_APIENTRY kdSocketCreate(KDint type, void *eventuserptr); -#define KD_SOCK_TCP 64 -#define KD_SOCK_UDP 65 - -/* kdSocketClose: Closes a socket. */ -KD_API KDint KD_APIENTRY kdSocketClose(KDSocket *socket); - -/* kdSocketBind: Bind a socket. */ -KD_API KDint KD_APIENTRY kdSocketBind(KDSocket *socket, const struct KDSockaddr *addr, KDboolean reuse); -#define KD_INADDR_ANY 0 - -/* kdSocketGetName: Get the local address of a socket. */ -KD_API KDint KD_APIENTRY kdSocketGetName(KDSocket *socket, struct KDSockaddr *addr); - -/* kdSocketConnect: Connects a socket. */ -KD_API KDint KD_APIENTRY kdSocketConnect(KDSocket *socket, const KDSockaddr *addr); - -/* kdSocketListen: Listen on a socket. */ -KD_API KDint KD_APIENTRY kdSocketListen(KDSocket *socket, KDint backlog); - -/* kdSocketAccept: Accept an incoming connection. */ -KD_API KDSocket *KD_APIENTRY kdSocketAccept(KDSocket *socket, KDSockaddr *addr, void *eventuserptr); - -/* kdSocketSend, kdSocketSendTo: Send data to a socket. */ -KD_API KDint KD_APIENTRY kdSocketSend(KDSocket *socket, const void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketSendTo(KDSocket *socket, const void *buf, KDint len, const KDSockaddr *addr); - -/* kdSocketRecv, kdSocketRecvFrom: Receive data from a socket. */ -KD_API KDint KD_APIENTRY kdSocketRecv(KDSocket *socket, void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketRecvFrom(KDSocket *socket, void *buf, KDint len, KDSockaddr *addr); - -/* kdHtonl: Convert a 32-bit integer from host to network byte order. */ -KD_API KDuint32 KD_APIENTRY kdHtonl(KDuint32 hostlong); - -/* kdHtons: Convert a 16-bit integer from host to network byte order. */ -KD_API KDuint16 KD_APIENTRY kdHtons(KDuint16 hostshort); - -/* kdNtohl: Convert a 32-bit integer from network to host byte order. */ -KD_API KDuint32 KD_APIENTRY kdNtohl(KDuint32 netlong); - -/* kdNtohs: Convert a 16-bit integer from network to host byte order. */ -KD_API KDuint16 KD_APIENTRY kdNtohs(KDuint16 netshort); - -/* kdInetAton: Convert a “dotted quad” format address to an integer. */ -KD_API KDint KD_APIENTRY kdInetAton(const KDchar *cp, KDuint32 *inp); - -/* kdInetNtop: Convert a network address to textual form. */ -#define KD_INET_ADDRSTRLEN 16 -typedef struct KDInAddr { - KDuint32 s_address; // Renamed this from s_addr as it causes a conflict with winsock2.h -} KDInAddr; -KD_API const KDchar *KD_APIENTRY kdInetNtop(KDuint af, const void *src, KDchar *dst, KDsize cnt); - -/* KD_EVENT_SOCKET_READABLE: Event to indicate that a socket is readable. */ -#define KD_EVENT_SOCKET_READABLE 49 -typedef struct KDEventSocketReadable { - KDSocket *socket; -} KDEventSocketReadable; - -/* KD_EVENT_SOCKET_WRITABLE: Event to indicate that a socket is writable. */ -#define KD_EVENT_SOCKET_WRITABLE 50 -typedef struct KDEventSocketWritable { - KDSocket *socket; -} KDEventSocketWritable; - -/* KD_EVENT_SOCKET_CONNECT_COMPLETE: Event generated when a socket connect is complete */ -#define KD_EVENT_SOCKET_CONNECT_COMPLETE 51 -typedef struct KDEventSocketConnect { - KDSocket *socket; - KDint32 error; -} KDEventSocketConnect; - -/* KD_EVENT_SOCKET_INCOMING: Event generated when a listening socket detects an incoming connection or an error. */ -#define KD_EVENT_SOCKET_INCOMING 52 -typedef struct KDEventSocketIncoming { - KDSocket *socket; -} KDEventSocketIncoming; - -/* KD_EVENT_NAME_LOOKUP_COMPLETE: kdNameLookup complete event. */ -#define KD_EVENT_NAME_LOOKUP_COMPLETE 53 -typedef struct KDEventNameLookup { - KDint32 error; - KDint32 resultlen; - const KDSockaddr *result; - KDboolean more; -} KDEventNameLookup; - -/******************************************************* - * Input/output - *******************************************************/ - -/* KD_EVENT_STATE: State changed event. */ -#define KD_EVENT_STATE 55 - -typedef struct KDEventState { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventState; - -/* KD_EVENT_INPUT: Input changed event. */ -#define KD_EVENT_INPUT 56 - -typedef struct KDEventInput { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventInput; - -/* KD_EVENT_INPUT_JOG: Jogdial jog event. */ -#define KD_EVENT_INPUT_JOG 71 -typedef struct KDEventInputJog { - KDint32 index; - KDint32 count; -} KDEventInputJog; - -/* KD_EVENT_INPUT_POINTER: Pointer input changed event. */ -#define KD_EVENT_INPUT_POINTER 57 -typedef struct KDEventInputPointer { - KDint32 index; - KDint32 select; - KDint32 x; - KDint32 y; -} KDEventInputPointer; - -/* KD_EVENT_INPUT_STICK: Joystick stick changed event. */ -#define KD_EVENT_INPUT_STICK 58 -typedef struct KDEventInputStick { - KDint32 index; - KDint32 x; - KDint32 y; - KDint32 z; -} KDEventInputStick; - -/* kdStateGeti, kdStateGetl, kdStateGetf: get state value(s) */ -KD_API KDint KD_APIENTRY kdStateGeti(KDint startidx, KDuint numidxs, KDint32 *buffer); -KD_API KDint KD_APIENTRY kdStateGetl(KDint startidx, KDuint numidxs, KDint64 *buffer); -KD_API KDint KD_APIENTRY kdStateGetf(KDint startidx, KDuint numidxs, KDfloat32 *buffer); - -/* kdOutputSeti, kdOutputSetf: set outputs */ -KD_API KDint KD_APIENTRY kdOutputSeti(KDint startidx, KDuint numidxs, const KDint32 *buffer); -KD_API KDint KD_APIENTRY kdOutputSetf(KDint startidx, KDuint numidxs, const KDfloat32 *buffer); -#define KD_IO_CONTROLLER_STRIDE 64 - -/* KD_IOGROUP_GAMEKEYS: I/O group for game keys. */ -#define KD_IOGROUP_GAMEKEYS 0x1000 -#define KD_STATE_GAMEKEYS_AVAILABILITY (KD_IOGROUP_GAMEKEYS + 0) -#define KD_INPUT_GAMEKEYS_UP (KD_IOGROUP_GAMEKEYS + 1) -#define KD_INPUT_GAMEKEYS_LEFT (KD_IOGROUP_GAMEKEYS + 2) -#define KD_INPUT_GAMEKEYS_RIGHT (KD_IOGROUP_GAMEKEYS + 3) -#define KD_INPUT_GAMEKEYS_DOWN (KD_IOGROUP_GAMEKEYS + 4) -#define KD_INPUT_GAMEKEYS_FIRE (KD_IOGROUP_GAMEKEYS + 5) -#define KD_INPUT_GAMEKEYS_A (KD_IOGROUP_GAMEKEYS + 6) -#define KD_INPUT_GAMEKEYS_B (KD_IOGROUP_GAMEKEYS + 7) -#define KD_INPUT_GAMEKEYS_C (KD_IOGROUP_GAMEKEYS + 8) -#define KD_INPUT_GAMEKEYS_D (KD_IOGROUP_GAMEKEYS + 9) - -/* KD_IOGROUP_GAMEKEYSNC: I/O group for game keys, no chording. */ -#define KD_IOGROUP_GAMEKEYSNC 0x1100 -#define KD_STATE_GAMEKEYSNC_AVAILABILITY (KD_IOGROUP_GAMEKEYSNC + 0) -#define KD_INPUT_GAMEKEYSNC_UP (KD_IOGROUP_GAMEKEYSNC + 1) -#define KD_INPUT_GAMEKEYSNC_LEFT (KD_IOGROUP_GAMEKEYSNC + 2) -#define KD_INPUT_GAMEKEYSNC_RIGHT (KD_IOGROUP_GAMEKEYSNC + 3) -#define KD_INPUT_GAMEKEYSNC_DOWN (KD_IOGROUP_GAMEKEYSNC + 4) -#define KD_INPUT_GAMEKEYSNC_FIRE (KD_IOGROUP_GAMEKEYSNC + 5) -#define KD_INPUT_GAMEKEYSNC_A (KD_IOGROUP_GAMEKEYSNC + 6) -#define KD_INPUT_GAMEKEYSNC_B (KD_IOGROUP_GAMEKEYSNC + 7) -#define KD_INPUT_GAMEKEYSNC_C (KD_IOGROUP_GAMEKEYSNC + 8) -#define KD_INPUT_GAMEKEYSNC_D (KD_IOGROUP_GAMEKEYSNC + 9) - -/* KD_IOGROUP_PHONEKEYPAD: I/O group for phone keypad. */ -#define KD_IOGROUP_PHONEKEYPAD 0x2000 -#define KD_STATE_PHONEKEYPAD_AVAILABILITY (KD_IOGROUP_PHONEKEYPAD + 0) -#define KD_INPUT_PHONEKEYPAD_0 (KD_IOGROUP_PHONEKEYPAD + 1) -#define KD_INPUT_PHONEKEYPAD_1 (KD_IOGROUP_PHONEKEYPAD + 2) -#define KD_INPUT_PHONEKEYPAD_2 (KD_IOGROUP_PHONEKEYPAD + 3) -#define KD_INPUT_PHONEKEYPAD_3 (KD_IOGROUP_PHONEKEYPAD + 4) -#define KD_INPUT_PHONEKEYPAD_4 (KD_IOGROUP_PHONEKEYPAD + 5) -#define KD_INPUT_PHONEKEYPAD_5 (KD_IOGROUP_PHONEKEYPAD + 6) -#define KD_INPUT_PHONEKEYPAD_6 (KD_IOGROUP_PHONEKEYPAD + 7) -#define KD_INPUT_PHONEKEYPAD_7 (KD_IOGROUP_PHONEKEYPAD + 8) -#define KD_INPUT_PHONEKEYPAD_8 (KD_IOGROUP_PHONEKEYPAD + 9) -#define KD_INPUT_PHONEKEYPAD_9 (KD_IOGROUP_PHONEKEYPAD + 10) -#define KD_INPUT_PHONEKEYPAD_STAR (KD_IOGROUP_PHONEKEYPAD + 11) -#define KD_INPUT_PHONEKEYPAD_HASH (KD_IOGROUP_PHONEKEYPAD + 12) -#define KD_INPUT_PHONEKEYPAD_LEFTSOFT (KD_IOGROUP_PHONEKEYPAD + 13) -#define KD_INPUT_PHONEKEYPAD_RIGHTSOFT (KD_IOGROUP_PHONEKEYPAD + 14) -#define KD_STATE_PHONEKEYPAD_ORIENTATION (KD_IOGROUP_PHONEKEYPAD + 15) - -/* KD_IOGROUP_VIBRATE: I/O group for vibrate. */ -#define KD_IOGROUP_VIBRATE 0x3000 -#define KD_STATE_VIBRATE_AVAILABILITY (KD_IOGROUP_VIBRATE + 0) -#define KD_STATE_VIBRATE_MINFREQUENCY (KD_IOGROUP_VIBRATE + 1) -#define KD_STATE_VIBRATE_MAXFREQUENCY (KD_IOGROUP_VIBRATE + 2) -#define KD_OUTPUT_VIBRATE_VOLUME (KD_IOGROUP_VIBRATE + 3) -#define KD_OUTPUT_VIBRATE_FREQUENCY (KD_IOGROUP_VIBRATE + 4) - -/* KD_IOGROUP_POINTER: I/O group for pointer. */ -#define KD_IOGROUP_POINTER 0x4000 -#define KD_STATE_POINTER_AVAILABILITY (KD_IOGROUP_POINTER + 0) -#define KD_INPUT_POINTER_X (KD_IOGROUP_POINTER + 1) -#define KD_INPUT_POINTER_Y (KD_IOGROUP_POINTER + 2) -#define KD_INPUT_POINTER_SELECT (KD_IOGROUP_POINTER + 3) - -/* KD_IOGROUP_BACKLIGHT: I/O group for backlight. */ -#define KD_IOGROUP_BACKLIGHT 0x5000 -#define KD_STATE_BACKLIGHT_AVAILABILITY (KD_IOGROUP_BACKLIGHT + 0) -#define KD_OUTPUT_BACKLIGHT_FORCE (KD_IOGROUP_BACKLIGHT + 1) - -/* KD_IOGROUP_JOGDIAL: I/O group for a jog dial. */ -#define KD_IOGROUP_JOGDIAL 0x6000 -#define KD_STATE_JOGDIAL_AVAILABILITY (KD_IOGROUP_JOGDIAL + 0) -#define KD_INPUT_JOGDIAL_UP (KD_IOGROUP_JOGDIAL + 1) -#define KD_INPUT_JOGDIAL_LEFT (KD_IOGROUP_JOGDIAL + 2) -#define KD_INPUT_JOGDIAL_RIGHT (KD_IOGROUP_JOGDIAL + 3) -#define KD_INPUT_JOGDIAL_DOWN (KD_IOGROUP_JOGDIAL + 4) -#define KD_INPUT_JOGDIAL_SELECT (KD_IOGROUP_JOGDIAL + 5) - -/* KD_IOGROUP_STICK: I/O group for joystick. */ -#define KD_IOGROUP_STICK 0x7000 -#define KD_STATE_STICK_AVAILABILITY (KD_IOGROUP_STICK + 0) -#define KD_INPUT_STICK_X (KD_IOGROUP_STICK + 1) -#define KD_INPUT_STICK_Y (KD_IOGROUP_STICK + 2) -#define KD_INPUT_STICK_Z (KD_IOGROUP_STICK + 3) -#define KD_INPUT_STICK_BUTTON (KD_IOGROUP_STICK + 4) -#define KD_IO_STICK_STRIDE 8 - -/* KD_IOGROUP_DPAD: I/O group for D-pad. */ -#define KD_IOGROUP_DPAD 0x8000 -#define KD_STATE_DPAD_AVAILABILITY (KD_IOGROUP_DPAD + 0) -#define KD_STATE_DPAD_COPY (KD_IOGROUP_DPAD + 1) -#define KD_INPUT_DPAD_UP (KD_IOGROUP_DPAD + 2) -#define KD_INPUT_DPAD_LEFT (KD_IOGROUP_DPAD + 3) -#define KD_INPUT_DPAD_RIGHT (KD_IOGROUP_DPAD + 4) -#define KD_INPUT_DPAD_DOWN (KD_IOGROUP_DPAD + 5) -#define KD_INPUT_DPAD_SELECT (KD_IOGROUP_DPAD + 6) -#define KD_IO_DPAD_STRIDE 8 - -/* KD_IOGROUP_BUTTONS: I/O group for buttons associated with joystick or D-pad. */ -#define KD_IOGROUP_BUTTONS 0x9000 -#define KD_STATE_BUTTONS_AVAILABILITY (KD_IOGROUP_BUTTONS + 0) -#define KD_INPUT_BUTTONS_0 (KD_IOGROUP_BUTTONS + 1) - -/* KD_IO_UNDEFINED: I/O items reserved for implementation-dependent use. */ -#define KD_IO_UNDEFINED 0x40000000 - -/******************************************************* - * Windowing - *******************************************************/ -#ifdef KD_WINDOW_SUPPORTED -#include <EGL/egl.h> -typedef struct KDWindow KDWindow; - -/* kdCreateWindow: Create a window. */ -KD_API KDWindow *KD_APIENTRY kdCreateWindow(EGLDisplay display, EGLConfig config, void *eventuserptr); - -/* kdDestroyWindow: Destroy a window. */ -KD_API KDint KD_APIENTRY kdDestroyWindow(KDWindow *window); - -/* kdSetWindowPropertybv, kdSetWindowPropertyiv, kdSetWindowPropertycv: Set a window property to request a change in the on-screen representation of the window. */ -KD_API KDint KD_APIENTRY kdSetWindowPropertybv(KDWindow *window, KDint pname, const KDboolean *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertyiv(KDWindow *window, KDint pname, const KDint32 *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertycv(KDWindow *window, KDint pname, const KDchar *param); - -/* kdGetWindowPropertybv, kdGetWindowPropertyiv, kdGetWindowPropertycv: Get the current value of a window property. */ -KD_API KDint KD_APIENTRY kdGetWindowPropertybv(KDWindow *window, KDint pname, KDboolean *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertyiv(KDWindow *window, KDint pname, KDint32 *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertycv(KDWindow *window, KDint pname, KDchar *param, KDsize *size); - -/* kdRealizeWindow: Realize the window as a displayable entity and get the native window handle for passing to EGL. */ -KD_API KDint KD_APIENTRY kdRealizeWindow(KDWindow *window, EGLNativeWindowType *nativewindow); - -/* KD_WINDOWPROPERTY_SIZE: Window client area width and height. */ -#define KD_WINDOWPROPERTY_SIZE 66 - -/* KD_WINDOWPROPERTY_VISIBILITY: Window visibility status. */ -#define KD_WINDOWPROPERTY_VISIBILITY 67 - -/* KD_WINDOWPROPERTY_FOCUS: Window input focus status. */ -#define KD_WINDOWPROPERTY_FOCUS 68 - -/* KD_WINDOWPROPERTY_CAPTION: Window caption. */ -#define KD_WINDOWPROPERTY_CAPTION 69 - -/* KD_EVENT_WINDOW_CLOSE: Event to request to close window. */ -#define KD_EVENT_WINDOW_CLOSE 44 - -/* KD_EVENT_WINDOWPROPERTY_CHANGE: Notification about realized window property change. */ -#define KD_EVENT_WINDOWPROPERTY_CHANGE 47 -typedef struct KDEventWindowProperty { - KDint32 pname; -} KDEventWindowProperty; - -/* KD_EVENT_WINDOW_FOCUS: Event for change of window’s focus state. */ -#define KD_EVENT_WINDOW_FOCUS 60 -typedef struct KDEventWindowFocus { - KDint32 focusstate; -} KDEventWindowFocus; - -/* KD_EVENT_WINDOW_REDRAW: Event to notify need to redraw the window. */ -#define KD_EVENT_WINDOW_REDRAW 59 -#endif /* KD_WINDOW_SUPPORTED */ - -/******************************************************* - * Assertions and logging - *******************************************************/ - -/* kdHandleAssertion: Handle assertion failure. */ -KD_API void KD_APIENTRY kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber); - -/* kdLogMessage: Output a log message. */ -#ifdef KD_NDEBUG -#define kdLogMessage(s) -#else -KD_API void KD_APIENTRY kdLogMessage(const KDchar *string); -#endif - -/* struct KDEvent delayed to the end as it uses event data structs from - * other parts of the .h file. */ -struct KDEvent { - KDust timestamp; - KDint32 type; - void *userptr; - union KDEventData { - KDEventState state; - KDEventInput input; - KDEventInputJog inputjog; - KDEventInputPointer inputpointer; - KDEventInputStick inputstick; - KDEventSocketReadable socketreadable; - KDEventSocketWritable socketwritable; - KDEventSocketConnect socketconnect; - KDEventSocketIncoming socketincoming; - KDEventNameLookup namelookup; -#ifdef KD_WINDOW_SUPPORTED - KDEventWindowProperty windowproperty; - KDEventWindowFocus windowfocus; -#endif /* KD_WINDOW_SUPPORTED */ - KDEventUser user; - } data; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/kdplatform.h b/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/kdplatform.h deleted file mode 100644 index ed85ed02..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Macos/Qt3DSLibs/KD/kdplatform.h +++ /dev/null @@ -1,100 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* Sample KD/kdplatform.h for OpenKODE Core 1.0.3 */ -#ifndef __kdplatform_h_ -#define __kdplatform_h_ - -#define KD_API -#define KD_APIENTRY - -typedef int KDint32; -typedef unsigned int KDuint32; -typedef long long KDint64; -typedef unsigned long long KDuint64; -typedef short KDint16; -typedef unsigned short KDuint16; -typedef unsigned long KDuintptr; -typedef unsigned long KDsize; -typedef long KDssize; -#define KDINT_MIN (-0x7fffffff-1) -#define KDINT_MAX 0x7fffffff -#define KDUINT_MAX 0xffffffffU -#define KDINT64_MIN (-0x7fffffffffffffffLL-1) -#define KDINT64_MAX 0x7fffffffffffffffLL -#define KDUINT64_MAX 0xffffffffffffffffULL -#define KDSSIZE_MIN (-0x7fffffff-1) -#define KDSSIZE_MAX 0x7fffffff -#define KDSIZE_MAX 0xffffffffU -#define KDUINTPTR_MAX 0xffffffffU -#define KD_NORETURN -// removed, no EGL on macOS -//#define KD_WINDOW_SUPPORTED -#ifdef KD_NDEBUG -#define kdAssert(c) -#else -#define kdAssert(c) ((void)( (c) ? 0 : (kdHandleAssertion(#c, __FILE__, __LINE__), 0))) -#endif - -#define KD_INFINITY_BITS 0x7f800000u -#define KD_INFINITY (kdBitsToFloatNV(KD_INFINITY_BITS)) - -KD_API float KD_APIENTRY kdBitsToFloatNV(KDuint32 x); - - -/** KHR_formatted extension */ -#include <stdarg.h> -typedef va_list KDVaListKHR; - -// If there are problems with including stdarg.h here under any of the Windows -// operating systems, we might want to change it back to using char* instead of -// va_list -//typedef char *KDVaListKHR; - - -#define KD_VA_START_KHR(ap, parmN) \ - do {ap = (KDVaListKHR)&parmN + sizeof(parmN);} while(0) - -#define KD_VA_ARG_CHAR_KHR(ap) (KDchar)va_arg(ap, KDint) -#define KD_VA_ARG_CHARPTR_KHR(ap) (KDchar*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16_KHR(ap) (KDint16)va_arg(ap, KDint) -#define KD_VA_ARG_INT32_KHR(ap) va_arg(ap, KDint32) -#define KD_VA_ARG_INT_KHR(ap) va_arg(ap, KDint) -#define KD_VA_ARG_INT64_KHR(ap) va_arg(ap, KDint64) -#define KD_VA_ARG_INTPTR_KHR(ap) (KDint*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16PTR_KHR(ap) (KDint16*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_FLOAT32_KHR(ap) (KDfloat32)(va_arg(ap, double)) -#define KD_VA_ARG_PTR_KHR(ap) (void *)va_arg(ap, char *) - -#define KD_VA_END_KHR(ap) \ - do {ap = (KDVaListKHR)0;} while(0) - -#endif /* __kdplatform_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/Qt3DS_extwindowprops.h b/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/Qt3DS_extwindowprops.h deleted file mode 100644 index 4428a568..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/Qt3DS_extwindowprops.h +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_extwindowprops_h_ -#define __kd_QT3DS_extwindowprops_h_ -#include <KD/kd.h> -#include <EGL/eglext.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_WINDOWPROPERTY_FULLSCREEN: Control over resizing a window to fill the complete screen */ - -// KDboolean - set the window to fullscreen mode -#define KD_WINDOWPROPERTY_FULLSCREEN_QT3DS 9999 - -// KDint - set which KD_DISPLAY_* display that the window should be opened on -#define KD_WINDOWPROPERTY_DISPLAY_QT3DS 9998 - -// KDboolean - sets whether overlay should be used to create window -#define KD_WINDOWPROPERTY_OVERLAY_QT3DS 9997 - -#define KD_DISPLAY_PRIMARY_QT3DS 0 -#define KD_DISPLAY_INTERNAL0_QT3DS 0 -#define KD_DISPLAY_INTERNAL1_QT3DS 1 -#define KD_DISPLAY_INTERNAL2_QT3DS 2 -#define KD_DISPLAY_INTERNAL3_QT3DS 3 -#define KD_DISPLAY_EXTERNAL0_QT3DS 1000 -#define KD_DISPLAY_EXTERNAL1_QT3DS 1001 -#define KD_DISPLAY_EXTERNAL2_QT3DS 1002 -#define KD_DISPLAY_EXTERNAL3_QT3DS 1003 - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_extwindowprops_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/Qt3DS_multitouch.h b/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/Qt3DS_multitouch.h deleted file mode 100644 index e230b029..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/Qt3DS_multitouch.h +++ /dev/null @@ -1,84 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef __kd_QT3DS_multitouch_h_ -#define __kd_QT3DS_multitouch_h_ -#include <KD/kd.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* KD_IOGROUP_MULTITOUCH: I/O group for Multitouch input devices. */ -#define KD_IOGROUP_MULTITOUCH_QT3DS 0x40004000 -#define KD_STATE_MULTITOUCH_AVAILABILITY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 0) -#define KD_INPUT_MULTITOUCH_FINGERS_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 1) -#define KD_INPUT_MULTITOUCH_WIDTH_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 2) -#define KD_INPUT_MULTITOUCH_X_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 3) -#define KD_INPUT_MULTITOUCH_Y_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 4) -#define KD_INPUT_MULTITOUCH_X2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 5) -#define KD_INPUT_MULTITOUCH_Y2_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 6) -#define KD_INPUT_MULTITOUCH_PRESSURE_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 7) -#define KD_INPUT_MULTITOUCH_GESTURES_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 8) -#define KD_INPUT_MULTITOUCH_RELX_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 9) -#define KD_INPUT_MULTITOUCH_RELY_QT3DS (KD_IOGROUP_MULTITOUCH_QT3DS + 10) - -/* KD_EVENT_INPUT_MULTITOUCH_QT3DS: Multitouch event. */ -#define KD_EVENT_INPUT_MULTITOUCH_QT3DS 1001 -typedef struct KDEventInputMultitouchDataNV -{ - KDint32 index; - KDint8 fingers; - KDint8 width; - KDint16 x; - KDint16 y; - KDint16 x2; - KDint16 y2; - KDint16 pressure; -} KDEventInputMultitouchDataNV; - -/* KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS: Multitouch gesture event. */ -#define KD_EVENT_INPUT_MULTITOUCH_GESTURE_QT3DS 1002 - -/* kdGetEventInputMultitouchDataNV: Get auxiliary event data for multitouch input. */ -KD_API KDint KD_APIENTRY kdGetEventInputMultitouchDataNV(const KDEvent *event, - KDEventInputMultitouchDataNV *data); - -/* kdSetEventInputMultitouchActiveNV: Activate Multitouch input events */ -KD_API KDint KD_APIENTRY kdSetEventInputMultitouchActiveNV(KDboolean activate); - -/* kdEnableEventInputMultitouchMergeNV: Activate merging of Multitouch input events */ -KD_API void KD_APIENTRY kdEnableEventInputMultitouchMergeNV(KDboolean enable); - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_QT3DS_multitouch_h_ */ diff --git a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/kd.h b/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/kd.h deleted file mode 100644 index f7ccea03..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/kd.h +++ /dev/null @@ -1,991 +0,0 @@ -/* Reference KD/kd.h for OpenKODE Core 1.0.3 */ -#ifndef __kd_h_ -#define __kd_h_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include "kdplatform.h" - - - -/******************************************************* - * Introduction - *******************************************************/ - -/******************************************************* - * OpenKODE conformance - *******************************************************/ - -/******************************************************* - * Overview - *******************************************************/ - -/******************************************************* - * Programming environment - *******************************************************/ -#define KD_VERSION_1_0 1 -typedef char KDchar; -typedef signed char KDint8; -typedef unsigned char KDuint8; -typedef int KDint; -typedef unsigned int KDuint; -typedef float KDfloat32; -typedef KDint KDboolean; -typedef KDint64 KDtime; -typedef KDint64 KDust; -typedef KDint64 KDoff; -typedef KDuint32 KDmode; -#define KDINT32_MIN (-0x7fffffff-1) -#define KDINT32_MAX 0x7fffffff -#define KDUINT32_MAX 0xffffffffU -#define KD_TRUE 1 -#define KD_FALSE 0 -#ifdef __cplusplus - const int KD_NULL = 0; /* Yes, int. See Stroustrup 3rd edition. */ -#else - #define KD_NULL ((void *)0) -#endif - -/******************************************************* - * Errors - *******************************************************/ -#define KD_EACCES 1 -#define KD_EADDRINUSE 2 -#define KD_EADDRNOTAVAIL 3 -#define KD_EAFNOSUPPORT 4 -#define KD_EAGAIN (5) -#define KD_EALREADY 6 -#define KD_EBADF 7 -#define KD_EBUSY 8 -#define KD_ECONNREFUSED 9 -#define KD_ECONNRESET 10 -#define KD_EDEADLK 11 -#define KD_EDESTADDRREQ 12 -#define KD_EEXIST 13 -#define KD_EFBIG 14 -#define KD_EHOSTUNREACH 15 -#define KD_EHOST_NOT_FOUND 16 -#define KD_EINVAL 17 -#define KD_EIO 18 -#define KD_EILSEQ 19 -#define KD_EISCONN 20 -#define KD_EISDIR 21 -#define KD_EMFILE 22 -#define KD_ENAMETOOLONG 23 -#define KD_ENOENT 24 -#define KD_ENOMEM 25 -#define KD_ENOSPC 26 -#define KD_ENOSYS 27 -#define KD_ENOTCONN 28 -#define KD_ENO_DATA 29 -#define KD_ENO_RECOVERY 30 -#define KD_EOPNOTSUPP 31 -#define KD_EOVERFLOW 32 -#define KD_EPERM 33 -#define KD_ERANGE 35 -#define KD_ETIMEDOUT (36) -#define KD_ETRY_AGAIN 37 - -/* kdGetError: Get last error indication. */ -KD_API KDint KD_APIENTRY kdGetError(void); - -/* kdSetError: Set last error indication. */ -KD_API void KD_APIENTRY kdSetError(KDint error); - -/******************************************************* - * Versioning and attribute queries - *******************************************************/ - -/* kdQueryAttribi: Obtain the value of a numeric OpenKODE Core attribute. */ -KD_API KDint KD_APIENTRY kdQueryAttribi(KDint attribute, KDint *value); - -/* kdQueryAttribcv: Obtain the value of a string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryAttribcv(KDint attribute); -#define KD_ATTRIB_VENDOR 39 -#define KD_ATTRIB_VERSION 40 -#define KD_ATTRIB_PLATFORM 41 - -/* kdQueryIndexedAttribcv: Obtain the value of an indexed string OpenKODE Core attribute. */ -KD_API const KDchar *KD_APIENTRY kdQueryIndexedAttribcv(KDint attribute, KDint index); - -/******************************************************* - * Threads and synchronization - *******************************************************/ - -/* kdThreadAttrCreate: Create a thread attribute object. */ -typedef struct KDThreadAttr KDThreadAttr; -KD_API KDThreadAttr *KD_APIENTRY kdThreadAttrCreate(void); - -/* kdThreadAttrFree: Free a thread attribute object. */ -KD_API KDint KD_APIENTRY kdThreadAttrFree(KDThreadAttr *attr); - -/* kdThreadAttrSetDetachState: Set detachstate attribute. */ -#define KD_THREAD_CREATE_JOINABLE 0 -#define KD_THREAD_CREATE_DETACHED 1 -KD_API KDint KD_APIENTRY kdThreadAttrSetDetachState(KDThreadAttr *attr, KDint detachstate); - -/* kdThreadAttrSetStackSize: Set stacksize attribute. */ -KD_API KDint KD_APIENTRY kdThreadAttrSetStackSize(KDThreadAttr *attr, KDsize stacksize); - -/* kdThreadCreate: Create a new thread. */ -typedef struct KDThread KDThread; -KD_API KDThread *KD_APIENTRY kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg); - -/* kdThreadExit: Terminate this thread. */ -KD_API KD_NORETURN void KD_APIENTRY kdThreadExit(void *retval); - -/* kdThreadJoin: Wait for termination of another thread. */ -KD_API KDint KD_APIENTRY kdThreadJoin(KDThread *thread, void **retval); - -/* kdThreadDetach: Allow resources to be freed as soon as a thread terminates. */ -KD_API KDint KD_APIENTRY kdThreadDetach(KDThread *thread); - -/* kdThreadSelf: Return calling thread’s ID. */ -KD_API KDThread *KD_APIENTRY kdThreadSelf(void); - -/* kdThreadOnce: Wrap initialization code so it is executed only once. */ -#ifndef KD_NO_STATIC_DATA -typedef struct KDThreadOnce { - void *impl; -} KDThreadOnce; -#define KD_THREAD_ONCE_INIT { 0 } -KD_API KDint KD_APIENTRY kdThreadOnce(KDThreadOnce *once_control, void (*init_routine)(void)); -#endif /* ndef KD_NO_STATIC_DATA */ - -/* kdThreadMutexCreate: Create a mutex. */ -typedef struct KDThreadMutex KDThreadMutex; -KD_API KDThreadMutex *KD_APIENTRY kdThreadMutexCreate(const void *mutexattr); - -/* kdThreadMutexFree: Free a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexFree(KDThreadMutex *mutex); - -/* kdThreadMutexLock: Lock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexLock(KDThreadMutex *mutex); - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KD_API KDint KD_APIENTRY kdThreadMutexUnlock(KDThreadMutex *mutex); - -/* kdThreadCondCreate: Create a condition variable. */ -typedef struct KDThreadCond KDThreadCond; -KD_API KDThreadCond *KD_APIENTRY kdThreadCondCreate(const void *attr); - -/* kdThreadCondFree: Free a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondFree(KDThreadCond *cond); - -/* kdThreadCondSignal, kdThreadCondBroadcast: Signal a condition variable. */ -KD_API KDint KD_APIENTRY kdThreadCondSignal(KDThreadCond *cond); -KD_API KDint KD_APIENTRY kdThreadCondBroadcast(KDThreadCond *cond); - -/* kdThreadCondWait: Wait for a condition variable to be signalled. */ -KD_API KDint KD_APIENTRY kdThreadCondWait(KDThreadCond *cond, KDThreadMutex *mutex); - -/* kdThreadSemCreate: Create a semaphore. */ -typedef struct KDThreadSem KDThreadSem; -KD_API KDThreadSem *KD_APIENTRY kdThreadSemCreate(KDuint value); - -/* kdThreadSemFree: Free a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemFree(KDThreadSem *sem); - -/* kdThreadSemWait: Lock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemWait(KDThreadSem *sem); - -/* kdThreadSemPost: Unlock a semaphore. */ -KD_API KDint KD_APIENTRY kdThreadSemPost(KDThreadSem *sem); - -/******************************************************* - * Events - *******************************************************/ - -/* KDEvent: Struct type containing an event. */ -typedef struct KDEvent KDEvent; -#define KD_EVENT_USER 0x40000000 - -/* kdWaitEvent: Get next event from thread’s event queue. */ -KD_API const KDEvent *KD_APIENTRY kdWaitEvent(KDust timeout); - -/* kdSetEventUserptr: Set the userptr for global events. */ -KD_API void KD_APIENTRY kdSetEventUserptr(void *userptr); - -/* kdDefaultEvent: Perform default processing on an unrecognized event. */ -KD_API void KD_APIENTRY kdDefaultEvent(const KDEvent *event); - -/* kdPumpEvents: Pump the thread’s event queue, performing callbacks. */ -KD_API KDint KD_APIENTRY kdPumpEvents(void); - -/* kdInstallCallback: Install or remove a callback function for event processing. */ -typedef void (KD_APIENTRY KDCallbackFunc)(const KDEvent *event); -KD_API KDint KD_APIENTRY kdInstallCallback(KDCallbackFunc *func, KDint eventtype, void *eventuserptr); - -/* kdCreateEvent: Create an event for posting. */ -KD_API KDEvent *KD_APIENTRY kdCreateEvent(void); - -/* kdPostEvent, kdPostThreadEvent: Post an event into a queue. */ -KD_API KDint KD_APIENTRY kdPostEvent(KDEvent *event); -KD_API KDint KD_APIENTRY kdPostThreadEvent(KDEvent *event, KDThread *thread); -typedef struct KDEventUser { - union { - KDint64 i64; - void *p; - struct { - KDint32 a; - KDint32 b; - } i32pair; - } value1; - union { - KDint64 i64; - struct { - union { - KDint32 i32; - void *p; - } value2; - union { - KDint32 i32; - void *p; - } value3; - } i32orp; - } value23; -} KDEventUser; - -/* kdFreeEvent: Abandon an event instead of posting it. */ -KD_API void KD_APIENTRY kdFreeEvent(KDEvent *event); - -/******************************************************* - * System events - *******************************************************/ - -/* KD_EVENT_QUIT: Event to request to quit application. */ -#define KD_EVENT_QUIT 43 - -/* KD_EVENT_PAUSE: Application pause event. */ -#define KD_EVENT_PAUSE 45 - -/* KD_EVENT_RESUME: Application resume event. */ -#define KD_EVENT_RESUME 46 - -/* KD_EVENT_ORIENTATION: Orientation change event. */ -#define KD_EVENT_ORIENTATION 48 - -/* KD_IOGROUP_EVENT: I/O group for OpenKODE Core system events implemented as state values. */ -#define KD_IOGROUP_EVENT 0x100 -#define KD_STATE_EVENT_USING_BATTERY (KD_IOGROUP_EVENT + 0) -#define KD_STATE_EVENT_LOW_BATTERY (KD_IOGROUP_EVENT + 1) - - -/* KD_IOGROUP_ORIENTATION: I/O group for OpenKODE Core orientation state. */ -#define KD_IOGROUP_ORIENTATION 0x200 -#define KD_STATE_ORIENTATION_OVERALL (KD_IOGROUP_ORIENTATION + 0) -#define KD_STATE_ORIENTATION_SCREEN (KD_IOGROUP_ORIENTATION + 1) -#define KD_STATE_ORIENTATION_RENDERING (KD_IOGROUP_ORIENTATION + 2) -#define KD_STATE_ORIENTATION_LOCKSURFACE (KD_IOGROUP_ORIENTATION + 3) - - -/******************************************************* - * Application startup and exit. - *******************************************************/ - -/* kdMain: The application-defined main function. */ -KDint KD_APIENTRY kdMain(KDint argc, const KDchar *const *argv); - -/* kdExit: Exit the application. */ -KD_API KD_NORETURN void KD_APIENTRY kdExit(KDint status); - -/******************************************************* - * Utility library functions - *******************************************************/ - -/* kdAbs: Compute the absolute value of an integer. */ -KD_API KDint KD_APIENTRY kdAbs(KDint i); - -/* kdStrtof: Convert a string to a floating point number. */ -KD_API KDfloat32 KD_APIENTRY kdStrtof(const KDchar *s, KDchar **endptr); - -/* kdStrtol, kdStrtoul: Convert a string to an integer. */ -KD_API KDint KD_APIENTRY kdStrtol(const KDchar *s, KDchar **endptr, KDint base); -KD_API KDuint KD_APIENTRY kdStrtoul(const KDchar *s, KDchar **endptr, KDint base); - -/* kdLtostr, kdUltostr: Convert an integer to a string. */ -#define KD_LTOSTR_MAXLEN ((sizeof(KDint)*8*3+6)/10+2) -#define KD_ULTOSTR_MAXLEN ((sizeof(KDint)*8+2)/3+1) -KD_API KDssize KD_APIENTRY kdLtostr(KDchar *buffer, KDsize buflen, KDint number); -KD_API KDssize KD_APIENTRY kdUltostr(KDchar *buffer, KDsize buflen, KDuint number, KDint base); - -/* kdFtostr: Convert a float to a string. */ -#define KD_FTOSTR_MAXLEN 16 -KD_API KDssize KD_APIENTRY kdFtostr(KDchar *buffer, KDsize buflen, KDfloat32 number); - -/* kdCryptoRandom: Return random data. */ -KD_API KDint KD_APIENTRY kdCryptoRandom(KDuint8 *buf, KDsize buflen); - -/******************************************************* - * Locale specific functions - *******************************************************/ - -/* kdGetLocale: Determine the current language and locale. */ -KD_API const KDchar *KD_APIENTRY kdGetLocale(void); - -/******************************************************* - * Memory allocation - *******************************************************/ - -/* kdMalloc: Allocate memory. */ -KD_API void *KD_APIENTRY kdMalloc(KDsize size); - -/* kdFree: Free allocated memory block. */ -KD_API void KD_APIENTRY kdFree(void *ptr); - -/* kdRealloc: Resize memory block. */ -KD_API void *KD_APIENTRY kdRealloc(void *ptr, KDsize size); - -/******************************************************* - * Thread-local storage. - *******************************************************/ - -/* kdGetTLS: Get the thread-local storage pointer. */ -KD_API void *KD_APIENTRY kdGetTLS(void); - -/* kdSetTLS: Set the thread-local storage pointer. */ -KD_API void KD_APIENTRY kdSetTLS(void *ptr); - -/******************************************************* - * Mathematical functions - *******************************************************/ -#define KD_E_F 2.71828175F -#define KD_PI_F 3.14159274F -#define KD_PI_2_F 1.57079637F -#define KD_2PI_F 6.28318548F -#define KD_LOG2E_F 1.44269502F -#define KD_LOG10E_F 0.434294492F -#define KD_LN2_F 0.693147182F -#define KD_LN10_F 2.30258512F -#define KD_PI_4_F 0.785398185F -#define KD_1_PI_F 0.318309873F -#define KD_2_PI_F 0.636619747F -#define KD_2_SQRTPI_F 1.12837923F -#define KD_SQRT2_F 1.41421354F -#define KD_SQRT1_2_F 0.707106769F -#define KD_FLT_EPSILON 1.19209290E-07F -#define KD_FLT_MAX 3.40282346638528860e+38F -#define KD_FLT_MIN 1.17549435e-38F -/* KD_INFINITY is defined in kdplatform.h since no portable definition - * is possible. */ -#define kdIsNan(x) (((x) != (x)) ? 1 : 0) -#define KD_HUGE_VALF KD_INFINITY -#define KD_DEG_TO_RAD_F 0.0174532924F -#define KD_RAD_TO_DEG_F 57.2957802F - -/* kdAcosf: Arc cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdAcosf(KDfloat32 x); - -/* kdAsinf: Arc sine function. */ -KD_API KDfloat32 KD_APIENTRY kdAsinf(KDfloat32 x); - -/* kdAtanf: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtanf(KDfloat32 x); - -/* kdAtan2f: Arc tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdAtan2f(KDfloat32 y, KDfloat32 x); - -/* kdCosf: Cosine function. */ -KD_API KDfloat32 KD_APIENTRY kdCosf(KDfloat32 x); - -/* kdSinf: Sine function. */ -KD_API KDfloat32 KD_APIENTRY kdSinf(KDfloat32 x); - -/* kdTanf: Tangent function. */ -KD_API KDfloat32 KD_APIENTRY kdTanf(KDfloat32 x); - -/* kdExpf: Exponential function. */ -KD_API KDfloat32 KD_APIENTRY kdExpf(KDfloat32 x); - -/* kdLogf: Natural logarithm function. */ -KD_API KDfloat32 KD_APIENTRY kdLogf(KDfloat32 x); - -/* kdFabsf: Absolute value. */ -KD_API KDfloat32 KD_APIENTRY kdFabsf(KDfloat32 x); - -/* kdPowf: Power function. */ -KD_API KDfloat32 KD_APIENTRY kdPowf(KDfloat32 x, KDfloat32 y); - -/* kdSqrtf: Square root function. */ -KD_API KDfloat32 KD_APIENTRY kdSqrtf(KDfloat32 x); - -/* kdCeilf: Return ceiling value. */ -KD_API KDfloat32 KD_APIENTRY kdCeilf(KDfloat32 x); - -/* kdFloorf: Return floor value. */ -KD_API KDfloat32 KD_APIENTRY kdFloorf(KDfloat32 x); - -/* kdRoundf: Round value to nearest integer. */ -KD_API KDfloat32 KD_APIENTRY kdRoundf(KDfloat32 x); - -/* kdInvsqrtf: Inverse square root function. */ -KD_API KDfloat32 KD_APIENTRY kdInvsqrtf(KDfloat32 x); - -/* kdFmodf: Calculate floating point remainder. */ -KD_API KDfloat32 KD_APIENTRY kdFmodf(KDfloat32 x, KDfloat32 y); - -/******************************************************* - * String and memory functions - *******************************************************/ - -/* kdMemchr: Scan memory for a byte value. */ -KD_API void *KD_APIENTRY kdMemchr(const void *src, KDint byte, KDsize len); - -/* kdMemcmp: Compare two memory regions. */ -KD_API KDint KD_APIENTRY kdMemcmp(const void *src1, const void *src2, KDsize len); - -/* kdMemcpy: Copy a memory region, no overlapping. */ -KD_API void *KD_APIENTRY kdMemcpy(void *buf, const void *src, KDsize len); - -/* kdMemmove: Copy a memory region, overlapping allowed. */ -KD_API void *KD_APIENTRY kdMemmove(void *buf, const void *src, KDsize len); - -/* kdMemset: Set bytes in memory to a value. */ -KD_API void *KD_APIENTRY kdMemset(void *buf, KDint byte, KDsize len); - -/* kdStrchr: Scan string for a byte value. */ -KD_API KDchar *KD_APIENTRY kdStrchr(const KDchar *str, KDint ch); - -/* kdStrcmp: Compares two strings. */ -KD_API KDint KD_APIENTRY kdStrcmp(const KDchar *str1, const KDchar *str2); - -/* kdStrlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrlen(const KDchar *str); - -/* kdStrnlen: Determine the length of a string. */ -KD_API KDsize KD_APIENTRY kdStrnlen(const KDchar *str, KDsize maxlen); - -/* kdStrncat_s: Concatenate two strings. */ -KD_API KDint KD_APIENTRY kdStrncat_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srcmaxlen); - -/* kdStrncmp: Compares two strings with length limit. */ -KD_API KDint KD_APIENTRY kdStrncmp(const KDchar *str1, const KDchar *str2, KDsize maxlen); - -/* kdStrcpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrcpy_s(KDchar *buf, KDsize buflen, const KDchar *src); - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KD_API KDint KD_APIENTRY kdStrncpy_s(KDchar *buf, KDsize buflen, const KDchar *src, KDsize srclen); - -/******************************************************* - * Time functions - *******************************************************/ - -/* kdGetTimeUST: Get the current unadjusted system time. */ -KD_API KDust KD_APIENTRY kdGetTimeUST(void); - -/* kdTime: Get the current wall clock time. */ -KD_API KDtime KD_APIENTRY kdTime(KDtime *timep); - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -typedef struct KDTm { - KDint32 tm_sec; - KDint32 tm_min; - KDint32 tm_hour; - KDint32 tm_mday; - KDint32 tm_mon; - KDint32 tm_year; - KDint32 tm_wday; - KDint32 tm_yday; -} KDTm; -KD_API KDTm *KD_APIENTRY kdGmtime_r(const KDtime *timep, KDTm *result); -KD_API KDTm *KD_APIENTRY kdLocaltime_r(const KDtime *timep, KDTm *result); - -/* kdUSTAtEpoch: Get the UST corresponding to KDtime 0. */ -KD_API KDust KD_APIENTRY kdUSTAtEpoch(void); - -/******************************************************* - * Timer functions - *******************************************************/ - -/* kdSetTimer: Set timer. */ -#define KD_TIMER_ONESHOT 61 -#define KD_TIMER_PERIODIC_AVERAGE 62 -#define KD_TIMER_PERIODIC_MINIMUM 63 -typedef struct KDTimer KDTimer; -KD_API KDTimer *KD_APIENTRY kdSetTimer(KDint64 interval, KDint periodic, void *eventuserptr); - -/* kdCancelTimer: Cancel and free a timer. */ -KD_API KDint KD_APIENTRY kdCancelTimer(KDTimer *timer); - -/* KD_EVENT_TIMER: Timer fire event. */ -#define KD_EVENT_TIMER 42 - -/******************************************************* - * File system - *******************************************************/ -#define KD_EOF (-1) - -/* kdFopen: Open a file from the file system. */ -typedef struct KDFile KDFile; -KD_API KDFile *KD_APIENTRY kdFopen(const KDchar *pathname, const KDchar *mode); - -/* kdFclose: Close an open file. */ -KD_API KDint KD_APIENTRY kdFclose(KDFile *file); - -/* kdFflush: Flush an open file. */ -KD_API KDint KD_APIENTRY kdFflush(KDFile *file); - -/* kdFread: Read from a file. */ -KD_API KDsize KD_APIENTRY kdFread(void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdFwrite: Write to a file. */ -KD_API KDsize KD_APIENTRY kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file); - -/* kdGetc: Read next byte from an open file. */ -KD_API KDint KD_APIENTRY kdGetc(KDFile *file); - -/* kdPutc: Write a byte to an open file. */ -KD_API KDint KD_APIENTRY kdPutc(KDint c, KDFile *file); - -/* kdFgets: Read a line of text from an open file. */ -KD_API KDchar *KD_APIENTRY kdFgets(KDchar *buffer, KDsize buflen, KDFile *file); - -/* kdFEOF: Check for end of file. */ -KD_API KDint KD_APIENTRY kdFEOF(KDFile *file); - -/* kdFerror: Check for an error condition on an open file. */ -KD_API KDint KD_APIENTRY kdFerror(KDFile *file); - -/* kdClearerr: Clear a file’s error and end-of-file indicators. */ -KD_API void KD_APIENTRY kdClearerr(KDFile *file); - -/* kdFseek: Reposition the file position indicator in a file. */ -typedef enum { - KD_SEEK_SET = 0, - KD_SEEK_CUR = 1, - KD_SEEK_END = 2 -} KDfileSeekOrigin; -KD_API KDint KD_APIENTRY kdFseek(KDFile *file, KDoff offset, KDfileSeekOrigin origin); - -/* kdFtell: Get the file position of an open file. */ -KD_API KDoff KD_APIENTRY kdFtell(KDFile *file); - -/* kdMkdir: Create new directory. */ -KD_API KDint KD_APIENTRY kdMkdir(const KDchar *pathname); - -/* kdRmdir: Delete a directory. */ -KD_API KDint KD_APIENTRY kdRmdir(const KDchar *pathname); - -/* kdRename: Rename a file. */ -KD_API KDint KD_APIENTRY kdRename(const KDchar *src, const KDchar *dest); - -/* kdRemove: Delete a file. */ -KD_API KDint KD_APIENTRY kdRemove(const KDchar *pathname); - -/* kdTruncate: Truncate or extend a file. */ -KD_API KDint KD_APIENTRY kdTruncate(const KDchar *pathname, KDoff length); - -/* kdStat, kdFstat: Return information about a file. */ -typedef struct KDStat { - KDmode st_mode; - KDoff st_size; - KDtime st_mtime; -} KDStat; -KD_API KDint KD_APIENTRY kdStat(const KDchar *pathname, struct KDStat *buf); -KD_API KDint KD_APIENTRY kdFstat(KDFile *file, struct KDStat *buf); -#define KD_ISREG(m) ((m) & 0x8000) -#define KD_ISDIR(m) ((m) & 0x4000) - -/* kdAccess: Determine whether the application can access a file or directory. */ -KD_API KDint KD_APIENTRY kdAccess(const KDchar *pathname, KDint amode); -#define KD_R_OK 4 -#define KD_W_OK 2 -#define KD_X_OK 1 - -/* kdOpenDir: Open a directory ready for listing. */ -typedef struct KDDir KDDir; -KD_API KDDir *KD_APIENTRY kdOpenDir(const KDchar *pathname); - -/* kdReadDir: Return the next file in a directory. */ -typedef struct KDDirent { - const KDchar *d_name; -} KDDirent; -KD_API KDDirent *KD_APIENTRY kdReadDir(KDDir *dir); - -/* kdCloseDir: Close a directory. */ -KD_API KDint KD_APIENTRY kdCloseDir(KDDir *dir); - -/* kdGetFree: Get free space on a drive. */ -KD_API KDoff KD_APIENTRY kdGetFree(const KDchar *pathname); - -/******************************************************* - * Network sockets - *******************************************************/ - -/* KDSockaddr: Struct type for socket address. */ -typedef struct KDSockaddr { - KDuint16 family; - union { -#define KD_AF_INET 70 - struct { - KDuint16 port; - KDuint32 address; - } sin; - } data; -} KDSockaddr; - -/* kdNameLookup: Look up a hostname. */ -KD_API KDint KD_APIENTRY kdNameLookup(KDint af, const KDchar *hostname, void *eventuserptr); - -/* kdNameLookupCancel: Selectively cancels ongoing kdNameLookup operations. */ -KD_API void KD_APIENTRY kdNameLookupCancel(void *eventuserptr); - -/* kdSocketCreate: Creates a socket. */ -typedef struct KDSocket KDSocket; -KD_API KDSocket *KD_APIENTRY kdSocketCreate(KDint type, void *eventuserptr); -#define KD_SOCK_TCP 64 -#define KD_SOCK_UDP 65 - -/* kdSocketClose: Closes a socket. */ -KD_API KDint KD_APIENTRY kdSocketClose(KDSocket *socket); - -/* kdSocketBind: Bind a socket. */ -KD_API KDint KD_APIENTRY kdSocketBind(KDSocket *socket, const struct KDSockaddr *addr, KDboolean reuse); -#define KD_INADDR_ANY 0 - -/* kdSocketGetName: Get the local address of a socket. */ -KD_API KDint KD_APIENTRY kdSocketGetName(KDSocket *socket, struct KDSockaddr *addr); - -/* kdSocketConnect: Connects a socket. */ -KD_API KDint KD_APIENTRY kdSocketConnect(KDSocket *socket, const KDSockaddr *addr); - -/* kdSocketListen: Listen on a socket. */ -KD_API KDint KD_APIENTRY kdSocketListen(KDSocket *socket, KDint backlog); - -/* kdSocketAccept: Accept an incoming connection. */ -KD_API KDSocket *KD_APIENTRY kdSocketAccept(KDSocket *socket, KDSockaddr *addr, void *eventuserptr); - -/* kdSocketSend, kdSocketSendTo: Send data to a socket. */ -KD_API KDint KD_APIENTRY kdSocketSend(KDSocket *socket, const void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketSendTo(KDSocket *socket, const void *buf, KDint len, const KDSockaddr *addr); - -/* kdSocketRecv, kdSocketRecvFrom: Receive data from a socket. */ -KD_API KDint KD_APIENTRY kdSocketRecv(KDSocket *socket, void *buf, KDint len); -KD_API KDint KD_APIENTRY kdSocketRecvFrom(KDSocket *socket, void *buf, KDint len, KDSockaddr *addr); - -/* kdHtonl: Convert a 32-bit integer from host to network byte order. */ -KD_API KDuint32 KD_APIENTRY kdHtonl(KDuint32 hostlong); - -/* kdHtons: Convert a 16-bit integer from host to network byte order. */ -KD_API KDuint16 KD_APIENTRY kdHtons(KDuint16 hostshort); - -/* kdNtohl: Convert a 32-bit integer from network to host byte order. */ -KD_API KDuint32 KD_APIENTRY kdNtohl(KDuint32 netlong); - -/* kdNtohs: Convert a 16-bit integer from network to host byte order. */ -KD_API KDuint16 KD_APIENTRY kdNtohs(KDuint16 netshort); - -/* kdInetAton: Convert a “dotted quad” format address to an integer. */ -KD_API KDint KD_APIENTRY kdInetAton(const KDchar *cp, KDuint32 *inp); - -/* kdInetNtop: Convert a network address to textual form. */ -#define KD_INET_ADDRSTRLEN 16 -typedef struct KDInAddr { - KDuint32 s_address; // Renamed this from s_addr as it causes a conflict with winsock2.h -} KDInAddr; -KD_API const KDchar *KD_APIENTRY kdInetNtop(KDuint af, const void *src, KDchar *dst, KDsize cnt); - -/* KD_EVENT_SOCKET_READABLE: Event to indicate that a socket is readable. */ -#define KD_EVENT_SOCKET_READABLE 49 -typedef struct KDEventSocketReadable { - KDSocket *socket; -} KDEventSocketReadable; - -/* KD_EVENT_SOCKET_WRITABLE: Event to indicate that a socket is writable. */ -#define KD_EVENT_SOCKET_WRITABLE 50 -typedef struct KDEventSocketWritable { - KDSocket *socket; -} KDEventSocketWritable; - -/* KD_EVENT_SOCKET_CONNECT_COMPLETE: Event generated when a socket connect is complete */ -#define KD_EVENT_SOCKET_CONNECT_COMPLETE 51 -typedef struct KDEventSocketConnect { - KDSocket *socket; - KDint32 error; -} KDEventSocketConnect; - -/* KD_EVENT_SOCKET_INCOMING: Event generated when a listening socket detects an incoming connection or an error. */ -#define KD_EVENT_SOCKET_INCOMING 52 -typedef struct KDEventSocketIncoming { - KDSocket *socket; -} KDEventSocketIncoming; - -/* KD_EVENT_NAME_LOOKUP_COMPLETE: kdNameLookup complete event. */ -#define KD_EVENT_NAME_LOOKUP_COMPLETE 53 -typedef struct KDEventNameLookup { - KDint32 error; - KDint32 resultlen; - const KDSockaddr *result; - KDboolean more; -} KDEventNameLookup; - -/******************************************************* - * Input/output - *******************************************************/ - -/* KD_EVENT_STATE: State changed event. */ -#define KD_EVENT_STATE 55 - -typedef struct KDEventState { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventState; - -/* KD_EVENT_INPUT: Input changed event. */ -#define KD_EVENT_INPUT 56 - -typedef struct KDEventInput { - KDint32 index; - union { - KDint32 i; - KDint64 l; - KDfloat32 f; - } value; -} KDEventInput; - -/* KD_EVENT_INPUT_JOG: Jogdial jog event. */ -#define KD_EVENT_INPUT_JOG 71 -typedef struct KDEventInputJog { - KDint32 index; - KDint32 count; -} KDEventInputJog; - -/* KD_EVENT_INPUT_POINTER: Pointer input changed event. */ -#define KD_EVENT_INPUT_POINTER 57 -typedef struct KDEventInputPointer { - KDint32 index; - KDint32 select; - KDint32 x; - KDint32 y; -} KDEventInputPointer; - -/* KD_EVENT_INPUT_STICK: Joystick stick changed event. */ -#define KD_EVENT_INPUT_STICK 58 -typedef struct KDEventInputStick { - KDint32 index; - KDint32 x; - KDint32 y; - KDint32 z; -} KDEventInputStick; - -/* kdStateGeti, kdStateGetl, kdStateGetf: get state value(s) */ -KD_API KDint KD_APIENTRY kdStateGeti(KDint startidx, KDuint numidxs, KDint32 *buffer); -KD_API KDint KD_APIENTRY kdStateGetl(KDint startidx, KDuint numidxs, KDint64 *buffer); -KD_API KDint KD_APIENTRY kdStateGetf(KDint startidx, KDuint numidxs, KDfloat32 *buffer); - -/* kdOutputSeti, kdOutputSetf: set outputs */ -KD_API KDint KD_APIENTRY kdOutputSeti(KDint startidx, KDuint numidxs, const KDint32 *buffer); -KD_API KDint KD_APIENTRY kdOutputSetf(KDint startidx, KDuint numidxs, const KDfloat32 *buffer); -#define KD_IO_CONTROLLER_STRIDE 64 - -/* KD_IOGROUP_GAMEKEYS: I/O group for game keys. */ -#define KD_IOGROUP_GAMEKEYS 0x1000 -#define KD_STATE_GAMEKEYS_AVAILABILITY (KD_IOGROUP_GAMEKEYS + 0) -#define KD_INPUT_GAMEKEYS_UP (KD_IOGROUP_GAMEKEYS + 1) -#define KD_INPUT_GAMEKEYS_LEFT (KD_IOGROUP_GAMEKEYS + 2) -#define KD_INPUT_GAMEKEYS_RIGHT (KD_IOGROUP_GAMEKEYS + 3) -#define KD_INPUT_GAMEKEYS_DOWN (KD_IOGROUP_GAMEKEYS + 4) -#define KD_INPUT_GAMEKEYS_FIRE (KD_IOGROUP_GAMEKEYS + 5) -#define KD_INPUT_GAMEKEYS_A (KD_IOGROUP_GAMEKEYS + 6) -#define KD_INPUT_GAMEKEYS_B (KD_IOGROUP_GAMEKEYS + 7) -#define KD_INPUT_GAMEKEYS_C (KD_IOGROUP_GAMEKEYS + 8) -#define KD_INPUT_GAMEKEYS_D (KD_IOGROUP_GAMEKEYS + 9) - -/* KD_IOGROUP_GAMEKEYSNC: I/O group for game keys, no chording. */ -#define KD_IOGROUP_GAMEKEYSNC 0x1100 -#define KD_STATE_GAMEKEYSNC_AVAILABILITY (KD_IOGROUP_GAMEKEYSNC + 0) -#define KD_INPUT_GAMEKEYSNC_UP (KD_IOGROUP_GAMEKEYSNC + 1) -#define KD_INPUT_GAMEKEYSNC_LEFT (KD_IOGROUP_GAMEKEYSNC + 2) -#define KD_INPUT_GAMEKEYSNC_RIGHT (KD_IOGROUP_GAMEKEYSNC + 3) -#define KD_INPUT_GAMEKEYSNC_DOWN (KD_IOGROUP_GAMEKEYSNC + 4) -#define KD_INPUT_GAMEKEYSNC_FIRE (KD_IOGROUP_GAMEKEYSNC + 5) -#define KD_INPUT_GAMEKEYSNC_A (KD_IOGROUP_GAMEKEYSNC + 6) -#define KD_INPUT_GAMEKEYSNC_B (KD_IOGROUP_GAMEKEYSNC + 7) -#define KD_INPUT_GAMEKEYSNC_C (KD_IOGROUP_GAMEKEYSNC + 8) -#define KD_INPUT_GAMEKEYSNC_D (KD_IOGROUP_GAMEKEYSNC + 9) - -/* KD_IOGROUP_PHONEKEYPAD: I/O group for phone keypad. */ -#define KD_IOGROUP_PHONEKEYPAD 0x2000 -#define KD_STATE_PHONEKEYPAD_AVAILABILITY (KD_IOGROUP_PHONEKEYPAD + 0) -#define KD_INPUT_PHONEKEYPAD_0 (KD_IOGROUP_PHONEKEYPAD + 1) -#define KD_INPUT_PHONEKEYPAD_1 (KD_IOGROUP_PHONEKEYPAD + 2) -#define KD_INPUT_PHONEKEYPAD_2 (KD_IOGROUP_PHONEKEYPAD + 3) -#define KD_INPUT_PHONEKEYPAD_3 (KD_IOGROUP_PHONEKEYPAD + 4) -#define KD_INPUT_PHONEKEYPAD_4 (KD_IOGROUP_PHONEKEYPAD + 5) -#define KD_INPUT_PHONEKEYPAD_5 (KD_IOGROUP_PHONEKEYPAD + 6) -#define KD_INPUT_PHONEKEYPAD_6 (KD_IOGROUP_PHONEKEYPAD + 7) -#define KD_INPUT_PHONEKEYPAD_7 (KD_IOGROUP_PHONEKEYPAD + 8) -#define KD_INPUT_PHONEKEYPAD_8 (KD_IOGROUP_PHONEKEYPAD + 9) -#define KD_INPUT_PHONEKEYPAD_9 (KD_IOGROUP_PHONEKEYPAD + 10) -#define KD_INPUT_PHONEKEYPAD_STAR (KD_IOGROUP_PHONEKEYPAD + 11) -#define KD_INPUT_PHONEKEYPAD_HASH (KD_IOGROUP_PHONEKEYPAD + 12) -#define KD_INPUT_PHONEKEYPAD_LEFTSOFT (KD_IOGROUP_PHONEKEYPAD + 13) -#define KD_INPUT_PHONEKEYPAD_RIGHTSOFT (KD_IOGROUP_PHONEKEYPAD + 14) -#define KD_STATE_PHONEKEYPAD_ORIENTATION (KD_IOGROUP_PHONEKEYPAD + 15) - -/* KD_IOGROUP_VIBRATE: I/O group for vibrate. */ -#define KD_IOGROUP_VIBRATE 0x3000 -#define KD_STATE_VIBRATE_AVAILABILITY (KD_IOGROUP_VIBRATE + 0) -#define KD_STATE_VIBRATE_MINFREQUENCY (KD_IOGROUP_VIBRATE + 1) -#define KD_STATE_VIBRATE_MAXFREQUENCY (KD_IOGROUP_VIBRATE + 2) -#define KD_OUTPUT_VIBRATE_VOLUME (KD_IOGROUP_VIBRATE + 3) -#define KD_OUTPUT_VIBRATE_FREQUENCY (KD_IOGROUP_VIBRATE + 4) - -/* KD_IOGROUP_POINTER: I/O group for pointer. */ -#define KD_IOGROUP_POINTER 0x4000 -#define KD_STATE_POINTER_AVAILABILITY (KD_IOGROUP_POINTER + 0) -#define KD_INPUT_POINTER_X (KD_IOGROUP_POINTER + 1) -#define KD_INPUT_POINTER_Y (KD_IOGROUP_POINTER + 2) -#define KD_INPUT_POINTER_SELECT (KD_IOGROUP_POINTER + 3) - -/* KD_IOGROUP_BACKLIGHT: I/O group for backlight. */ -#define KD_IOGROUP_BACKLIGHT 0x5000 -#define KD_STATE_BACKLIGHT_AVAILABILITY (KD_IOGROUP_BACKLIGHT + 0) -#define KD_OUTPUT_BACKLIGHT_FORCE (KD_IOGROUP_BACKLIGHT + 1) - -/* KD_IOGROUP_JOGDIAL: I/O group for a jog dial. */ -#define KD_IOGROUP_JOGDIAL 0x6000 -#define KD_STATE_JOGDIAL_AVAILABILITY (KD_IOGROUP_JOGDIAL + 0) -#define KD_INPUT_JOGDIAL_UP (KD_IOGROUP_JOGDIAL + 1) -#define KD_INPUT_JOGDIAL_LEFT (KD_IOGROUP_JOGDIAL + 2) -#define KD_INPUT_JOGDIAL_RIGHT (KD_IOGROUP_JOGDIAL + 3) -#define KD_INPUT_JOGDIAL_DOWN (KD_IOGROUP_JOGDIAL + 4) -#define KD_INPUT_JOGDIAL_SELECT (KD_IOGROUP_JOGDIAL + 5) - -/* KD_IOGROUP_STICK: I/O group for joystick. */ -#define KD_IOGROUP_STICK 0x7000 -#define KD_STATE_STICK_AVAILABILITY (KD_IOGROUP_STICK + 0) -#define KD_INPUT_STICK_X (KD_IOGROUP_STICK + 1) -#define KD_INPUT_STICK_Y (KD_IOGROUP_STICK + 2) -#define KD_INPUT_STICK_Z (KD_IOGROUP_STICK + 3) -#define KD_INPUT_STICK_BUTTON (KD_IOGROUP_STICK + 4) -#define KD_IO_STICK_STRIDE 8 - -/* KD_IOGROUP_DPAD: I/O group for D-pad. */ -#define KD_IOGROUP_DPAD 0x8000 -#define KD_STATE_DPAD_AVAILABILITY (KD_IOGROUP_DPAD + 0) -#define KD_STATE_DPAD_COPY (KD_IOGROUP_DPAD + 1) -#define KD_INPUT_DPAD_UP (KD_IOGROUP_DPAD + 2) -#define KD_INPUT_DPAD_LEFT (KD_IOGROUP_DPAD + 3) -#define KD_INPUT_DPAD_RIGHT (KD_IOGROUP_DPAD + 4) -#define KD_INPUT_DPAD_DOWN (KD_IOGROUP_DPAD + 5) -#define KD_INPUT_DPAD_SELECT (KD_IOGROUP_DPAD + 6) -#define KD_IO_DPAD_STRIDE 8 - -/* KD_IOGROUP_BUTTONS: I/O group for buttons associated with joystick or D-pad. */ -#define KD_IOGROUP_BUTTONS 0x9000 -#define KD_STATE_BUTTONS_AVAILABILITY (KD_IOGROUP_BUTTONS + 0) -#define KD_INPUT_BUTTONS_0 (KD_IOGROUP_BUTTONS + 1) - -/* KD_IO_UNDEFINED: I/O items reserved for implementation-dependent use. */ -#define KD_IO_UNDEFINED 0x40000000 - -/******************************************************* - * Windowing - *******************************************************/ -#ifdef KD_WINDOW_SUPPORTED -#include <EGL/egl.h> -typedef struct KDWindow KDWindow; - -/* kdCreateWindow: Create a window. */ -KD_API KDWindow *KD_APIENTRY kdCreateWindow(EGLDisplay display, EGLConfig config, void *eventuserptr); - -/* kdDestroyWindow: Destroy a window. */ -KD_API KDint KD_APIENTRY kdDestroyWindow(KDWindow *window); - -/* kdSetWindowPropertybv, kdSetWindowPropertyiv, kdSetWindowPropertycv: Set a window property to request a change in the on-screen representation of the window. */ -KD_API KDint KD_APIENTRY kdSetWindowPropertybv(KDWindow *window, KDint pname, const KDboolean *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertyiv(KDWindow *window, KDint pname, const KDint32 *param); -KD_API KDint KD_APIENTRY kdSetWindowPropertycv(KDWindow *window, KDint pname, const KDchar *param); - -/* kdGetWindowPropertybv, kdGetWindowPropertyiv, kdGetWindowPropertycv: Get the current value of a window property. */ -KD_API KDint KD_APIENTRY kdGetWindowPropertybv(KDWindow *window, KDint pname, KDboolean *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertyiv(KDWindow *window, KDint pname, KDint32 *param); -KD_API KDint KD_APIENTRY kdGetWindowPropertycv(KDWindow *window, KDint pname, KDchar *param, KDsize *size); - -/* kdRealizeWindow: Realize the window as a displayable entity and get the native window handle for passing to EGL. */ -KD_API KDint KD_APIENTRY kdRealizeWindow(KDWindow *window, EGLNativeWindowType *nativewindow); - -/* KD_WINDOWPROPERTY_SIZE: Window client area width and height. */ -#define KD_WINDOWPROPERTY_SIZE 66 - -/* KD_WINDOWPROPERTY_VISIBILITY: Window visibility status. */ -#define KD_WINDOWPROPERTY_VISIBILITY 67 - -/* KD_WINDOWPROPERTY_FOCUS: Window input focus status. */ -#define KD_WINDOWPROPERTY_FOCUS 68 - -/* KD_WINDOWPROPERTY_CAPTION: Window caption. */ -#define KD_WINDOWPROPERTY_CAPTION 69 - -/* KD_EVENT_WINDOW_CLOSE: Event to request to close window. */ -#define KD_EVENT_WINDOW_CLOSE 44 - -/* KD_EVENT_WINDOWPROPERTY_CHANGE: Notification about realized window property change. */ -#define KD_EVENT_WINDOWPROPERTY_CHANGE 47 -typedef struct KDEventWindowProperty { - KDint32 pname; -} KDEventWindowProperty; - -/* KD_EVENT_WINDOW_FOCUS: Event for change of window’s focus state. */ -#define KD_EVENT_WINDOW_FOCUS 60 -typedef struct KDEventWindowFocus { - KDint32 focusstate; -} KDEventWindowFocus; - -/* KD_EVENT_WINDOW_REDRAW: Event to notify need to redraw the window. */ -#define KD_EVENT_WINDOW_REDRAW 59 -#endif /* KD_WINDOW_SUPPORTED */ - -/******************************************************* - * Assertions and logging - *******************************************************/ - -/* kdHandleAssertion: Handle assertion failure. */ -KD_API void KD_APIENTRY kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber); - -/* kdLogMessage: Output a log message. */ -#ifdef KD_NDEBUG -#define kdLogMessage(s) -#else -KD_API void KD_APIENTRY kdLogMessage(const KDchar *string); -#endif - -/* struct KDEvent delayed to the end as it uses event data structs from - * other parts of the .h file. */ -struct KDEvent { - KDust timestamp; - KDint32 type; - void *userptr; - union KDEventData { - KDEventState state; - KDEventInput input; - KDEventInputJog inputjog; - KDEventInputPointer inputpointer; - KDEventInputStick inputstick; - KDEventSocketReadable socketreadable; - KDEventSocketWritable socketwritable; - KDEventSocketConnect socketconnect; - KDEventSocketIncoming socketincoming; - KDEventNameLookup namelookup; -#ifdef KD_WINDOW_SUPPORTED - KDEventWindowProperty windowproperty; - KDEventWindowFocus windowfocus; -#endif /* KD_WINDOW_SUPPORTED */ - KDEventUser user; - } data; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* __kd_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/kdplatform.h b/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/kdplatform.h deleted file mode 100644 index 3cf09f52..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Windows/PlatformLibs/KD/kdplatform.h +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2007 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/* Sample KD/kdplatform.h for OpenKODE Core 1.0.3 */ -#ifndef __kdplatform_h_ -#define __kdplatform_h_ - -#define KD_API -#define KD_APIENTRY - -typedef int KDint32; -typedef unsigned int KDuint32; -typedef long long KDint64; -typedef unsigned long long KDuint64; -typedef short KDint16; -typedef unsigned short KDuint16; -typedef unsigned long KDuintptr; -typedef unsigned long KDsize; -typedef long KDssize; -#define KDINT_MIN (-0x7fffffff-1) -#define KDINT_MAX 0x7fffffff -#define KDUINT_MAX 0xffffffffU -#define KDINT64_MIN (-0x7fffffffffffffffLL-1) -#define KDINT64_MAX 0x7fffffffffffffffLL -#define KDUINT64_MAX 0xffffffffffffffffULL -#define KDSSIZE_MIN (-0x7fffffff-1) -#define KDSSIZE_MAX 0x7fffffff -#define KDSIZE_MAX 0xffffffffU -#define KDUINTPTR_MAX 0xffffffffU -#define KD_NORETURN -#define KD_WINDOW_SUPPORTED -#ifdef KD_NDEBUG -#define kdAssert(c) -#else -#define kdAssert(c) ((void)( (c) ? 0 : (kdHandleAssertion(#c, __FILE__, __LINE__), 0))) -#endif - -#define KD_INFINITY_BITS 0x7f800000u -#define KD_INFINITY (kdBitsToFloatNV(KD_INFINITY_BITS)) - -KD_API float KD_APIENTRY kdBitsToFloatNV(KDuint32 x); - - -/** KHR_formatted extension */ -#include <stdarg.h> -typedef va_list KDVaListKHR; - -// If there are problems with including stdarg.h here under any of the Windows -// operating systems, we might want to change it back to using char* instead of -// va_list -//typedef char *KDVaListKHR; - - -#define KD_VA_START_KHR(ap, parmN) \ - do {ap = (KDVaListKHR)&parmN + sizeof(parmN);} while(0) - -#define KD_VA_ARG_CHAR_KHR(ap) (KDchar)va_arg(ap, KDint) -#define KD_VA_ARG_CHARPTR_KHR(ap) (KDchar*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16_KHR(ap) (KDint16)va_arg(ap, KDint) -#define KD_VA_ARG_INT32_KHR(ap) va_arg(ap, KDint32) -#define KD_VA_ARG_INT_KHR(ap) va_arg(ap, KDint) -#define KD_VA_ARG_INT64_KHR(ap) va_arg(ap, KDint64) -#define KD_VA_ARG_INTPTR_KHR(ap) (KDint*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_INT16PTR_KHR(ap) (KDint16*)(KD_VA_ARG_PTR_KHR(ap)) -#define KD_VA_ARG_FLOAT32_KHR(ap) (KDfloat32)(va_arg(ap, double)) -#define KD_VA_ARG_PTR_KHR(ap) (void *)va_arg(ap, char *) - -#define KD_VA_END_KHR(ap) \ - do {ap = (KDVaListKHR)0;} while(0) - -#endif /* __kdplatform_h_ */ - diff --git a/src/3rdparty/RuntimePlatformSpecific/Windows/Qt3DSLibs/KD/MinKD.c b/src/3rdparty/RuntimePlatformSpecific/Windows/Qt3DSLibs/KD/MinKD.c deleted file mode 100644 index 5124ec05..00000000 --- a/src/3rdparty/RuntimePlatformSpecific/Windows/Qt3DSLibs/KD/MinKD.c +++ /dev/null @@ -1,330 +0,0 @@ -#include "KD/kd.h" -#include <stdio.h> -#include <math.h> -#include <string.h> -#include <memory.h> -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <malloc.h> - - -KDFile* kdFopen(const KDchar* pathname, const KDchar* mode) -{ - FILE* retval; - retval = fopen( pathname, mode ); - return (KDFile*)retval; -} - - -KDsize kdFread(void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fread( buffer, size, count, (FILE*)file ); -} - -/* kdFwrite: Write to a file. */ -KDsize kdFwrite(const void *buffer, KDsize size, KDsize count, KDFile *file) -{ - return fwrite( buffer, size, count, (FILE*)file ); -} - -KDint kdFclose(KDFile *file) -{ - return fclose( (FILE*)file ); -} - -/* kdCosf: Cosine function. */ -KDfloat32 kdCosf(KDfloat32 x) { return cosf( x ); } - -/* kdSinf: Sine function. */ -KDfloat32 kdSinf(KDfloat32 x) { return sinf( x ); } - -KDfloat32 kdSqrtf(KDfloat32 x ) { return sqrtf( x ); } - -KDfloat32 kdTanf( KDfloat32 x ) { return tanf( x ); } - -KDint kdAbs(KDint i) -{ - return i < 0 ? -i : i; -} - - -KDfloat32 kdFabsf(KDfloat32 i) { return fabs( i ); } - -/* kdStrcpy_s: Copy a string with an overrun check. */ - -KDint kdStrcpy_s(KDchar* buf, KDsize buflen, const KDchar* src) -{ - return kdStrncpy_s(buf, buflen, src, -1); -} - -/* kdStrncpy_s: Copy a string with an overrun check. */ -KDint kdStrncpy_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srclen) -{ - const char* term; - if ( srclen == (KDsize)-1) - srclen = buflen; - - term = (const char*)memchr(src, 0, srclen); - if (term) - srclen = term - src; - if (srclen >= buflen) { - if (buflen) - *buf = 0; - return KD_EINVAL; - } - memcpy(buf, src, srclen); - buf[srclen] = 0; - return 0; -} - -/* kdStrncat_s: Concatenate two strings. */ -KDint kdStrncat_s(KDchar* buf, KDsize buflen, const KDchar* src, KDsize srcmaxlen) -{ - size_t origlen = strlen(buf); - const char* p = (const char*)memchr(src, 0, srcmaxlen); - if (p) - srcmaxlen = p - src; - if (origlen + srcmaxlen >= buflen) - { - /* spec says "buf[0] is set to 0". But that's bad if buflen == 0! - * kdStrncpy_s's spec is better here. */ - if (buflen) - buf[0] = 0; - return KD_ERANGE; - } - memcpy(buf + origlen, src, srcmaxlen); - buf[origlen + srcmaxlen] = 0; - return 0; -} -/* kdMemset: Set bytes in memory to a value. */ -void* kdMemset(void *buf, KDint byte, KDsize len) { return memset( buf, byte, len ); } - -/* kdStrcmp: Compares two strings. */ -KDint kdStrcmp(const KDchar *str1, const KDchar *str2) { return strcmp( str1, str2); } - -/* kdStrlen: Determine the length of a string. */ -KDsize kdStrlen(const KDchar *str) { return strlen( str ); } - -void* kdMalloc( KDsize size ) { return malloc(size); } - -void kdFree( void* ptr ) { free( ptr ); } - -void* kdMemcpy(void *buf, const void *src, KDsize len) { return memcpy( buf, src, len ); } - -struct KDThreadMutex -{ - CRITICAL_SECTION p_mutex; -}; - -/* kdThreadMutexCreate: Create a mutex. */ -KD_API KDThreadMutex* kdThreadMutexCreate(const void *mutexattr) -{ - KDThreadMutex* mutex = (KDThreadMutex*)malloc(sizeof(KDThreadMutex)); - if (mutex) - { - InitializeCriticalSection(&mutex->p_mutex); - return mutex; - } - - return KD_NULL; -} - -/* kdThreadMutexFree: Free a mutex. */ -KDint kdThreadMutexFree(KDThreadMutex *mutex) -{ - DeleteCriticalSection(&mutex->p_mutex); - free(mutex); - return 0; -} - -/* kdThreadMutexLock: Lock a mutex. */ -KDint kdThreadMutexLock(KDThreadMutex *mutex) -{ - (void)EnterCriticalSection(&mutex->p_mutex); - return 0; -} - -/* kdThreadMutexUnlock: Unlock a mutex. */ -KDint kdThreadMutexUnlock(KDThreadMutex *mutex) -{ - LeaveCriticalSection(&mutex->p_mutex); - return 0; -} - -struct KDThreadAttr -{ - SECURITY_ATTRIBUTES p_attr; -}; - -typedef unsigned char uint8_t; -typedef HANDLE pthread_t; - -struct KDThread -{ - HANDLE Handle; - uint8_t Detached; - uint8_t IsRunning; - INT UserThread; - void* (*UserThreadProc)(void*); - void* UserArg; -}; - - -static DWORD WINAPI ThreadProc( __in LPVOID lpParameter ) -{ - struct KDThread* threadPtr = (struct KDThread*)lpParameter; - return (DWORD)threadPtr->UserThreadProc( threadPtr->UserArg ); -} -/* kdThreadCreate: Create a new thread. */ -KDThread * kdThreadCreate(const KDThreadAttr *attr, void *(*start_routine)(void *), void *arg) -{ - pthread_t thread; - int retval; - SECURITY_ATTRIBUTES* p_attr; - struct KDThread* newThread; - if ( attr ) - p_attr = (const SECURITY_ATTRIBUTES*)( &attr->p_attr ); - else - p_attr = KD_NULL; - newThread = (struct KDThread*) malloc( sizeof(struct KDThread ) ); - if ( newThread == KD_NULL ) return KD_NULL; - newThread->Handle; - newThread->Detached = 0; - newThread->IsRunning = 1; - newThread->UserThreadProc = start_routine; - newThread->UserArg = arg; - - newThread->Handle = CreateThread( p_attr, 0, ThreadProc, newThread, 0, &newThread->UserThread ); - if ( newThread->Handle == 0 ) - { - free( newThread ); - return KD_NULL; - } - return newThread; -} - -/* kdThreadExit: Terminate this thread. */ -void kdThreadExit(void *retval) -{ - ExitThread( (DWORD)retval ); -} - -/* kdThreadJoin: Wait for termination of another thread. */ -KDint kdThreadJoin(KDThread *thread, void **retval) -{ - WaitForSingleObject( thread->Handle, INFINITE ); - CloseHandle( thread->Handle ); - free( thread ); - return 0; -} - -typedef struct KDDirInternal { - WIN32_FIND_DATAA ffd; - HANDLE hFind; - KDDirent dirEnt; - char pathBuffer[MAX_PATH]; -} KDDirInternal; - -/* kdOpenDir: Open a directory ready for listing. */ -KDDir *kdOpenDir(const KDchar *pathname) -{ - KDDirInternal* retval = (KDDirInternal*)malloc( sizeof( KDDirInternal )); - if ( retval == NULL ) { return NULL; } - - memset( retval, 0, sizeof( KDDirInternal ) ); - - - retval->hFind = FindFirstFileA( pathname, &retval->ffd ); - - if ( retval->hFind ) { free(retval ); return KD_NULL; }; - if ( retval == KD_NULL ) return KD_NULL; - memset( retval, 0, sizeof( *retval ) ); - return (KDDir*)retval; -} - -/* kdReadDir: Return the next file in a directory. */ -KDDirent* kdReadDir(KDDir *dir) -{ - KDDirInternal* theDir = (KDDirInternal *)dir; - INT success; - if ( *theDir->ffd.cFileName == 0 - || theDir->hFind == INVALID_HANDLE_VALUE ) - return NULL; - - strcpy_s( theDir->pathBuffer, MAX_PATH, theDir->ffd.cFileName ); - theDir->dirEnt.d_name = theDir->pathBuffer; - - success = FindNextFile(theDir->hFind, &theDir->ffd); - if ( success == 0 ) - theDir->ffd.cFileName[0] = 0; - - return &theDir->dirEnt; -} - -/* kdCloseDir: Close a directory. */ -KDint kdCloseDir(KDDir *dir) -{ - KDDirInternal* theDir = (KDDirInternal *)dir; - FindClose( theDir->hFind ); - free(theDir); - return 0; -} - -KDint kdSetWindowPropertyiv(KDWindow * win, KDint prop, const KDint32 * val) -{ - return 0; -} - -void kdDefaultEvent(const KDEvent *event ) -{ - -} - -typedef long long NvS64; - -//Stubbed and not implemented. - -KDust kdGetTimeUST(void) -{ - KDust retval; - memset( &retval, 0, sizeof( retval ) ); - return retval; -} - -/* kdGmtime_r, kdLocaltime_r: Convert a seconds-since-epoch time into broken-down time. */ -KDTm* kdGmtime_r(const KDtime* timep, KDTm* result) -{ - return NULL; -} - -KDTm* kdLocaltime_r(const KDtime* timep, KDTm* result) -{ - return NULL; -} - -//=========================================================================== -// kdCreateEvent: Create an event for posting. -//=========================================================================== -KDEvent* kdCreateEvent(void) -{ - //Memory leak and there isn't much I am going to do about this now - KDEvent* newEvent = (KDEvent*)malloc( sizeof( KDEvent )); - memset( newEvent, 0, sizeof( KDEvent )); - return newEvent; -} - -KDfloat32 kdInvsqrtf(KDfloat32 x) -{ - long i; - float x2, y; - const float threehalfs = 1.5F; - - x2 = x * 0.5F; - y = x; - i = * ( long * ) &y; // evil floating point bit level hacking - i = 0x5f3759df - ( i >> 1 ); - y = * ( float * ) &i; - y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration - - return y; -} diff --git a/src/Runtime/Qt3DSRuntimeStatic.pro b/src/Runtime/Qt3DSRuntimeStatic.pro index f560939e..e0b6abdb 100644 --- a/src/Runtime/Qt3DSRuntimeStatic.pro +++ b/src/Runtime/Qt3DSRuntimeStatic.pro @@ -28,7 +28,6 @@ SOURCES += \ Source/Qt3DSFoundation/Source/foundation/StringTable.cpp \ Source/Qt3DSFoundation/Source/foundation/XML.cpp \ Source/Qt3DSRuntimeRender/Source/q3dsqmlrender.cpp \ - Source/Engine/Source/Qt3DSOSSpecificFunctions.cpp \ Source/Engine/Source/Qt3DSRenderRuntimeBinding.cpp \ Source/Engine/Source/Qt3DSRenderRuntimeBindingImplRenderer.cpp \ Source/Engine/Source/Qt3DSRenderRuntimeBindingImplTranslation.cpp \ @@ -151,8 +150,6 @@ SOURCES += \ Source/System/Source/Qt3DSMemoryProbe.cpp \ Source/System/Source/Qt3DSMemoryStatistics.cpp \ Source/System/Source/Qt3DSMemoryTracker.cpp \ - Source/System/Source/Qt3DSSyncPrimitive.cpp \ - Source/System/Source/Qt3DSThreadManager.cpp \ Source/System/Source/Qt3DSTimer.cpp \ Source/System/Source/Qt3DSTypes.cpp \ Source/System/Source/Qt3DSVector3.cpp \ @@ -427,18 +424,12 @@ HEADERS += \ Source/System/Include/Qt3DSMemoryStatistics.h \ Source/System/Include/Qt3DSMemoryTracker.h \ Source/System/Include/Qt3DSPlatformSpecific.h \ - Source/System/Include/Qt3DSSyncPrimitive.h \ - Source/System/Include/Qt3DSThreadManager.h \ - Source/System/Include/Qt3DSThreadSafeQueue.h \ - Source/System/Include/Qt3DSThreadSafeScratchpad.h \ Source/System/Include/Qt3DSTimer.h \ Source/System/Include/Qt3DSTypes.h \ Source/System/Include/Qt3DSVector3.h \ Source/System/Include/Qt3DSArray.inl \ Source/System/Include/Qt3DSCircularArray.inl \ Source/System/Include/Qt3DSFixedArray.inl \ - Source/System/Include/Qt3DSThreadSafeQueue.inl \ - Source/System/Include/Qt3DSThreadSafeScratchpad.inl \ Source/Qt3DSStateApplication/Application/Qt3DSStateApplication.h \ Source/Qt3DSStateApplication/Debugger/Qt3DSLuaDebugger.h \ Source/Qt3DSStateApplication/Debugger/Qt3DSLuaDebuggerImpl.h \ @@ -537,7 +528,6 @@ HEADERS += \ # Libs SOURCES += \ - ../3rdparty/RuntimePlatformSpecific/$$PlatformSpecificDir/Qt3DSLibs/KD/MinKD.c \ Source/PlatformSpecific/$$PlatformSpecificDir/Qt3DSLibs/nv_math/nv_math.cpp \ Source/PlatformSpecific/$$PlatformSpecificDir/Qt3DSLibs/nv_math/nv_matrix.cpp \ Source/PlatformSpecific/$$PlatformSpecificDir/Qt3DSLibs/nv_math/nv_quat.cpp diff --git a/src/Runtime/Source/Engine/Include/Qt3DSTegraApplication.h b/src/Runtime/Source/Engine/Include/Qt3DSTegraApplication.h index 38bdb4b7..bb1e3ace 100644 --- a/src/Runtime/Source/Engine/Include/Qt3DSTegraApplication.h +++ b/src/Runtime/Source/Engine/Include/Qt3DSTegraApplication.h @@ -44,7 +44,7 @@ #include "Qt3DSRenderRuntimeBinding.h" #include <QtCore/qobject.h> #include <QtGui/qsurfaceformat.h> -#include <KD/kd.h> + //============================================================================== // Namespace //============================================================================== @@ -123,7 +123,7 @@ public: virtual void CheckResize(bool inForce, IPresentation &inActivePresentation) = 0; virtual BOOL LoadShaderCache(const CHAR *inFilePath) = 0; virtual void AbandonLoadingImages(IScene &inScene) = 0; - virtual BOOL IsPickValid(KDfloat32 &outX, KDfloat32 &outY, + virtual BOOL IsPickValid(FLOAT &outX, FLOAT &outY, const IPresentation &inPresentation) const = 0; virtual void SetScaleMode(TegraRenderScaleModes::Enum inScale) = 0; virtual void SetShadeMode(TegraRenderShadeModes::Enum inShade) = 0; @@ -172,7 +172,7 @@ public: // loading virtual bool WasLastFrameDirty() = 0; - virtual KDint HandleMessage(const KDEvent *inEvent) = 0; + virtual bool HandleMessage(const QEvent *inEvent) = 0; virtual void Pause() = 0; virtual void UnPause() = 0; @@ -229,7 +229,7 @@ public: IAudioPlayer *inAudioPlayer = 0); virtual ~CTegraApplication(); // loading - KDint BeginLoad(const QString &sourcePath); + bool BeginLoad(const QString &sourcePath); // asynchronous BeginLoad completed? That only valid for binary presentation, for text // presentation, always true bool HasOfflineLoadingCompleted() { return m_NDDView->HasOfflineLoadingCompleted(); } @@ -242,7 +242,7 @@ public: void Render(); bool WasLastFrameDirty() { return m_NDDView->WasLastFrameDirty(); } - KDint HandleMessage(const KDEvent *inEvent); + bool HandleMessage(const QEvent *inEvent); void Pause() { m_NDDView->Pause(); } void UnPause() { m_NDDView->UnPause(); } bool IsPaused() { return m_NDDView->IsPaused(); } diff --git a/src/Runtime/Source/Engine/Include/Qt3DSTegraInputEngine.h b/src/Runtime/Source/Engine/Include/Qt3DSTegraInputEngine.h index 57b4de12..14047f16 100644 --- a/src/Runtime/Source/Engine/Include/Qt3DSTegraInputEngine.h +++ b/src/Runtime/Source/Engine/Include/Qt3DSTegraInputEngine.h @@ -38,7 +38,6 @@ #include "Qt3DSTegraApplication.h" #include "Qt3DSInputEventTypes.h" #include "Qt3DSPresentation.h" -#include "KD/kd.h" //============================================================================== // Namespace @@ -73,7 +72,7 @@ public: // Construction public: // Access SInputFrame &GetInputFrame() override; - void HandleMessage(const KDEvent *inEvent, ITegraApplicationRenderEngine &inRenderEngine, + void HandleMessage(const QEvent *inEvent, ITegraApplicationRenderEngine &inRenderEngine, CPresentation *inPresentation); }; diff --git a/src/Runtime/Source/Engine/Source/Qt3DSOSSpecificFunctions.cpp b/src/Runtime/Source/Engine/Source/Qt3DSOSSpecificFunctions.cpp deleted file mode 100644 index f85edd47..00000000 --- a/src/Runtime/Source/Engine/Source/Qt3DSOSSpecificFunctions.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 1993-2009 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "EnginePrefix.h" - -#include "Qt3DSSyncPrimitive.h" -#include "Qt3DSThreadManager.h" -#include "NVImageScaler.h" - -//============================================================================== -// OpenKode -//============================================================================== -#ifdef _WIN32 -#pragma warning(push, 3) -#endif -#include "OpenKodeInclude.h" // TODO AH is this enough, or is it required around nv_main/nv_main.h also???? -#ifdef _WIN32 -#pragma warning(pop) -#endif - -static const Q3DStudio::INT32 CONST_THREAD_SLEEP = 10; - -//============================================================================== -// OS specific functions that are declared and used in our code, that need to be -// defined somewhere else that has OS specific knowledge. -//============================================================================== - -//============================================================================== -/** - * Create a lock primitive - */ -void AppCreateLockPrimitive(Q3DStudio::TLockPrimitive *inPrimitive) -{ - Q3DStudio_ASSERT(inPrimitive); - *inPrimitive = reinterpret_cast<Q3DStudio::TLockPrimitive *>(kdThreadMutexCreate(NULL)); -} - -//============================================================================== -/** -* Destroy a lock primitive -*/ -void AppDestroyLockPrimitive(Q3DStudio::TLockPrimitive *inPrimitive) -{ - Q3DStudio_ASSERT(inPrimitive); - kdThreadMutexFree(reinterpret_cast<KDThreadMutex *>(*inPrimitive)); - *inPrimitive = NULL; -} - -//============================================================================== -/** -* Enter the thread sync point -*/ -void AppBeginSync(Q3DStudio::TLockPrimitive inPrimitive) -{ - Q3DStudio_ASSERT(inPrimitive); - kdThreadMutexLock(reinterpret_cast<KDThreadMutex *>(inPrimitive)); -} - -//============================================================================== -/** -* Leave the thread sync point -*/ -void AppEndSync(Q3DStudio::TLockPrimitive inPrimitive) -{ - Q3DStudio_ASSERT(inPrimitive); - kdThreadMutexUnlock(reinterpret_cast<KDThreadMutex *>(inPrimitive)); -} - -//============================================================================== -/** -* Create a thread and return an abstract ID (void*) -*/ -Q3DStudio::TThreadID AppCreateThread(Q3DStudio::TThreadSpinFunction inFunc, void *inUserData) -{ - KDThread *theThread = kdThreadCreate(NULL, inFunc, inUserData); - return static_cast<Q3DStudio::TThreadID>(theThread); -} - -//============================================================================== -/** -* Destroy the thread -*/ -void AppDestroyThread(Q3DStudio::TThreadID inThreadID) -{ - void *ignored = NULL; - kdThreadJoin(static_cast<KDThread *>(inThreadID), &ignored); -} - -//============================================================================== -/** -* Call a OS specific sleep function, to yield the cpu to other threads -*/ -void AppSleepThread() -{ - Q3DStudio_sleepmillisec(CONST_THREAD_SLEEP); -} - -static const Q3DStudio::INT32 CMAX_THUMBNAIL_SIZE = 148; -//============================================================================== -/** - * Find the correct thumbnail scaling - */ -inline static Q3DStudio::FLOAT FindThumbnailScale(const Q3DStudio::INT32 inMaxThumbnailSize, - Q3DStudio::INT32 inSourceWidth, - Q3DStudio::INT32 inSourceHeight) -{ - Q3DStudio::FLOAT theXScale = inMaxThumbnailSize / (Q3DStudio::FLOAT)inSourceWidth; - Q3DStudio::FLOAT theYScale = inMaxThumbnailSize / (Q3DStudio::FLOAT)inSourceHeight; - return theXScale < theYScale ? theXScale : theYScale; -} - -inline static Q3DStudio::INT32 FourByteAlign(Q3DStudio::INT32 inSrc) -{ - return (inSrc + 3) & ~3; -} - -namespace Q3DStudio { - -inline static BOOL FileExists(const char *inPath) -{ - KDFile *theFile = kdFopen(inPath, "rb"); - if (theFile != NULL) { - kdFclose(theFile); - return true; - } - return false; -} - -} // namespace Q3DStudio diff --git a/src/Runtime/Source/Engine/Source/Qt3DSRenderRuntimeBindingImplRenderer.cpp b/src/Runtime/Source/Engine/Source/Qt3DSRenderRuntimeBindingImplRenderer.cpp index 3963de9a..ab5b92a1 100644 --- a/src/Runtime/Source/Engine/Source/Qt3DSRenderRuntimeBindingImplRenderer.cpp +++ b/src/Runtime/Source/Engine/Source/Qt3DSRenderRuntimeBindingImplRenderer.cpp @@ -98,13 +98,13 @@ struct SRenderer : public Q3DStudio::ITegraApplicationRenderEngine void AbandonLoadingImages(Q3DStudio::IScene & /*inScene*/) override {} - Q3DStudio::BOOL IsPickValid(KDfloat32 &outX, KDfloat32 &outY, + Q3DStudio::BOOL IsPickValid(FLOAT &outX, FLOAT &outY, const Q3DStudio::IPresentation & /*inPresentation*/) const override { - KDfloat32 theX = outX; - KDfloat32 theY = outY; - theX = theX / static_cast<KDfloat32>(m_BindingCore->m_WindowDimensions.m_Width); - theY = theY / static_cast<KDfloat32>(m_BindingCore->m_WindowDimensions.m_Height); + FLOAT theX = outX; + FLOAT theY = outY; + theX = theX / static_cast<FLOAT>(m_BindingCore->m_WindowDimensions.m_Width); + theY = theY / static_cast<FLOAT>(m_BindingCore->m_WindowDimensions.m_Height); Q3DStudio::BOOL theValid = false; if ((theX >= 0.0f) && (theY >= 0.0f) && (theX <= 1.0f) && (theY <= 1.0f)) diff --git a/src/Runtime/Source/Engine/Source/Qt3DSTegraApplication.cpp b/src/Runtime/Source/Engine/Source/Qt3DSTegraApplication.cpp index cba72e71..09031c9d 100644 --- a/src/Runtime/Source/Engine/Source/Qt3DSTegraApplication.cpp +++ b/src/Runtime/Source/Engine/Source/Qt3DSTegraApplication.cpp @@ -35,7 +35,6 @@ #include "Qt3DSTegraInputEngine.h" #include "Qt3DSDataLogger.h" #include "Qt3DSFileStream.h" -#include "Qt3DSThreadManager.h" #include "Qt3DSArray.h" #include "Qt3DSApplication.h" #include "foundation/FileTools.h" @@ -181,7 +180,7 @@ public: void Render() override; bool WasLastFrameDirty() override; - KDint HandleMessage(const KDEvent *inEvent) override; + bool HandleMessage(const QEvent *inEvent) override; void Pause() override; void UnPause() override; @@ -378,43 +377,32 @@ bool CNDDView::WasLastFrameDirty() * nv_main APP-SPECIFIC message call * HandleMessage */ -KDint CNDDView::HandleMessage(const KDEvent *inEvent) +bool CNDDView::HandleMessage(const QEvent *inEvent) { if (m_Application.mPtr == NULL || m_RenderEngine == NULL) return 0; - KDint theReturn = KD_FALSE; - switch (inEvent->type) { - case KD_EVENT_INPUT: - theReturn = KD_TRUE; - break; - case KD_EVENT_INPUT_POINTER: - m_InputEngine->SetPickInput(static_cast<FLOAT>(inEvent->data.inputpointer.x), - static_cast<FLOAT>(inEvent->data.inputpointer.y), true); - m_InputEngine->SetPickFlags(inEvent->data.inputpointer.select ? LMOUSE_DOWN : LMOUSE_UP); - theReturn = KD_TRUE; - break; -#if !defined(Q_OS_MACOS) - case KD_EVENT_WINDOW_CLOSE: - theReturn = KD_FALSE; - break; - case KD_EVENT_WINDOW_REDRAW: - case KD_EVENT_WINDOW_FOCUS: - theReturn = KD_TRUE; - break; - case KD_EVENT_WINDOWPROPERTY_CHANGE: - if (inEvent->data.windowproperty.pname == KD_WINDOWPROPERTY_SIZE - && m_Application->GetPrimaryPresentation()) - m_RenderEngine->CheckResize(KD_TRUE, *m_Application->GetPrimaryPresentation()); - theReturn = KD_TRUE; - break; -#endif - default: - kdDefaultEvent(inEvent); - theReturn = KD_TRUE; - break; + bool ret = false; + switch (inEvent->type()) { + + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + { + const QMouseEvent *event = static_cast<const QMouseEvent *>(inEvent); + m_InputEngine->SetPickInput(static_cast<FLOAT>(event->x()), + static_cast<FLOAT>(event->y()), true); + m_InputEngine->SetPickFlags(inEvent->type() == QEvent::MouseButtonPress + ? LMOUSE_DOWN : LMOUSE_UP); + ret = true; + } break; + case QEvent::Resize: + { + if (m_Application->GetPrimaryPresentation()) + m_RenderEngine->CheckResize(true, *m_Application->GetPrimaryPresentation()); + ret = true; + } break; } m_InputEngine->HandleMessage(inEvent, *m_RenderEngine, m_Application->GetPrimaryPresentation()); - return theReturn; + return ret ? 1 : 0; } void CNDDView::Pause() @@ -706,7 +694,7 @@ CTegraApplication::~CTegraApplication() { } -KDint CTegraApplication::BeginLoad(const QString &sourcePath) +bool CTegraApplication::BeginLoad(const QString &sourcePath) { #ifndef QT3DS_NO_SEARCH_PATH // We need these later on in case we try to load any files @@ -716,7 +704,7 @@ KDint CTegraApplication::BeginLoad(const QString &sourcePath) NvFSAppendSearchPath("/data"); #endif - KDint theResult = KD_FALSE; + bool theResult = false; qCInfo(TRACE_INFO) << "CTegraApplication::BeginLoad: Attempting presentation beginload"; @@ -726,16 +714,16 @@ KDint CTegraApplication::BeginLoad(const QString &sourcePath) qCInfo(TRACE_INFO) << "CTegraApplication::BeginLoad: Successfully begin loading presentation: " << sourcePath; - theResult = KD_TRUE; + theResult = true; } else { qCInfo(TRACE_INFO) << "CTegraApplication::BeginLoad: Failed to load presentation: " << sourcePath; - theResult = KD_FALSE; + theResult = false; } } else { // If there wasn't, then we are still in an OK state. qCInfo(TRACE_INFO) << "CTegraApplication::BeginLoad: Presentation file not provided"; - theResult = KD_TRUE; + theResult = true; } qCInfo(TRACE_INFO) << "CTegraApplication::BeginLoad: End beginload"; @@ -752,7 +740,7 @@ void CTegraApplication::Render() m_NDDView->Render(); } -KDint CTegraApplication::HandleMessage(const KDEvent *inEvent) +bool CTegraApplication::HandleMessage(const QEvent *inEvent) { return m_NDDView->HandleMessage(inEvent); } diff --git a/src/Runtime/Source/Engine/Source/Qt3DSTegraInputEngine.cpp b/src/Runtime/Source/Engine/Source/Qt3DSTegraInputEngine.cpp index 798c2699..caf4d5b4 100644 --- a/src/Runtime/Source/Engine/Source/Qt3DSTegraInputEngine.cpp +++ b/src/Runtime/Source/Engine/Source/Qt3DSTegraInputEngine.cpp @@ -65,63 +65,56 @@ SInputFrame &CTegraInputEngine::GetInputFrame() /** * Handles the input message. */ -void CTegraInputEngine::HandleMessage(const KDEvent *inEvent, +void CTegraInputEngine::HandleMessage(const QEvent *inEvent, ITegraApplicationRenderEngine &inRenderEngine, CPresentation *inPresentation) { - static KDboolean s_PointerWasDown = KD_FALSE; + static bool s_PointerWasDown = false; if (NULL == inPresentation) return; - switch (inEvent->type) { - // we still want to preserve the mouse events support, hence process this event as usual. - case KD_EVENT_INPUT_POINTER: { - const KDEventInputPointer *ptr = &(inEvent->data.inputpointer); + switch (inEvent->type()) { - KDfloat32 x = static_cast<KDfloat32>(ptr->x); - KDfloat32 y = static_cast<KDfloat32>(ptr->y); + case QEvent::MouseButtonPress: + case QEvent::MouseButtonRelease: + { + const QMouseEvent *event = static_cast<const QMouseEvent *>(inEvent); - if (inRenderEngine.IsPickValid(x, y, *inPresentation)) { - // printf( "INPUT x %ld y %ld\n", (int)x, (int)y ); - SetPickInput(x, y, (ptr->select || s_PointerWasDown) ? true : false); + QPointF pos = event->localPos(); + FLOAT x = pos.x(); + FLOAT y = pos.y(); - if (ptr->select) { - if (s_PointerWasDown) - SetPickFlags(LMOUSE_DOWN); - else - SetPickFlags(LMOUSE_PRESSED); + const bool pressed = inEvent->type() == QEvent::MouseButtonPress; + + if (inRenderEngine.IsPickValid(x, y, *inPresentation)) { + // printf( "INPUT x %ld y %ld\n", (int)x, (int)y ); + SetPickInput(x, y, (pressed || s_PointerWasDown) ? true : false); + + if (pressed) { + if (s_PointerWasDown) + SetPickFlags(LMOUSE_DOWN); + else + SetPickFlags(LMOUSE_PRESSED); + + s_PointerWasDown = true; + } else { + if (s_PointerWasDown) + SetPickFlags(LMOUSE_RELEASED); + else + SetPickFlags(LMOUSE_UP); - s_PointerWasDown = KD_TRUE; + s_PointerWasDown = false; + } } else { if (s_PointerWasDown) SetPickFlags(LMOUSE_RELEASED); else SetPickFlags(LMOUSE_UP); - s_PointerWasDown = KD_FALSE; + s_PointerWasDown = false; } - } else { - if (s_PointerWasDown) - SetPickFlags(LMOUSE_RELEASED); - else - SetPickFlags(LMOUSE_UP); - - s_PointerWasDown = KD_FALSE; - } - } break; -#if !defined(Q_OS_MACOS) - case KD_EVENT_WINDOW_FOCUS: - /* On loss of focus, we simulate a pointer-up event */ - if (!inEvent->data.windowfocus.focusstate) { - /*if ( s_PointerWasDown ) - SetPickFlags( LMOUSE_RELEASED ); - else - SetPickFlags( LMOUSE_UP );*/ - s_PointerWasDown = KD_FALSE; - } - break; -#endif + } break; } } diff --git a/src/Runtime/Source/PlatformSpecific/Android/jni/Qt3DSLibs/Android.mk b/src/Runtime/Source/PlatformSpecific/Android/jni/Qt3DSLibs/Android.mk index 74713ed3..05f240f4 100644 --- a/src/Runtime/Source/PlatformSpecific/Android/jni/Qt3DSLibs/Android.mk +++ b/src/Runtime/Source/PlatformSpecific/Android/jni/Qt3DSLibs/Android.mk @@ -131,17 +131,6 @@ LOCAL_C_INCLUDES := $(MY_LOCAL_PATH) include $(BUILD_STATIC_LIBRARY) - -include $(CLEAR_VARS) - -LOCAL_PATH := $(MY_LOCAL_PATH)/KD -LOCAL_MODULE := MinKD -LOCAL_SRC_FILES := MinKD.c -LOCAL_ARM_MODE := arm -LOCAL_C_INCLUDES := $(MY_LOCAL_PATH) - -include $(BUILD_STATIC_LIBRARY) - include $(CLEAR_VARS) LOCAL_PATH := $(MY_LOCAL_PATH)/nv_gesture diff --git a/src/Runtime/Source/Runtime/Include/RuntimePrefix.h b/src/Runtime/Source/Runtime/Include/RuntimePrefix.h index 9d80fb35..bf729ebf 100644 --- a/src/Runtime/Source/Runtime/Include/RuntimePrefix.h +++ b/src/Runtime/Source/Runtime/Include/RuntimePrefix.h @@ -99,7 +99,6 @@ //============================================================================== #include "Qt3DSTimer.h" #include "Qt3DSIScene.h" -#include "Qt3DSSyncPrimitive.h" #include "foundation/Qt3DSRefCounted.h" //scoped releasable auto ptr. #include "EASTL/hash_map.h" #include "EASTL/string.h" diff --git a/src/Runtime/Source/System/Include/Qt3DSSyncPrimitive.h b/src/Runtime/Source/System/Include/Qt3DSSyncPrimitive.h deleted file mode 100644 index 72ec0456..00000000 --- a/src/Runtime/Source/System/Include/Qt3DSSyncPrimitive.h +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 1993-2009 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#pragma once - -//============================================================================== -// Includes -//============================================================================== -#ifdef _MSC_VER -#pragma warning(push, 2) -#endif //_MSC_VER - -#ifdef _PCPLATFORM -#include <windows.h> -#elif _XENONPLATFORM -#include <process.h> // which one we need?? -#include <xtl.h> -#endif - -#ifdef _MSC_VER -#pragma warning(pop) -#endif //_MSC_VER - -//============================================================================== -// Namespace -//============================================================================== -namespace Q3DStudio { - -typedef void *TLockPrimitive; - -//============================================================================== -/** - * The CSyncPrimitive is a wrapper class to handle syncronization of data - * between threads. - */ -class CSyncPrimitive -{ - - //============================================================================== - // Fields - //============================================================================== -private: - TLockPrimitive m_LockHandle; - - //============================================================================== - // Methods - //============================================================================== -public: - CSyncPrimitive(); - ~CSyncPrimitive(); - -public: - int BeginSync(); - int EndSync(); -}; - -//============================================================================== -/** - * Wrap the lock and unlocking of a sync primitive in an easy to use stack - * based class. - */ -class CSyncGuard -{ - //============================================================================== - // Fields - //============================================================================== -private: - CSyncPrimitive &m_Mutex; - - //============================================================================== - // Methods - //============================================================================== -private: - CSyncGuard(const CSyncGuard &other); - CSyncGuard &operator=(const CSyncGuard &other); - -public: - CSyncGuard(CSyncPrimitive &inMutex) - : m_Mutex(inMutex) - { - m_Mutex.BeginSync(); - } - ~CSyncGuard() { m_Mutex.EndSync(); } -}; - -} // namespace Q3DStudio - -//=================================================================== -// The application needs to provide these thread primitive functions -//=================================================================== - -void AppCreateLockPrimitive(Q3DStudio::TLockPrimitive *inPrimitive); -void AppDestroyLockPrimitive(Q3DStudio::TLockPrimitive *inPrimitive); -void AppBeginSync(Q3DStudio::TLockPrimitive inPrimitive); -void AppEndSync(Q3DStudio::TLockPrimitive inPrimitive);
\ No newline at end of file diff --git a/src/Runtime/Source/System/Include/Qt3DSThreadManager.h b/src/Runtime/Source/System/Include/Qt3DSThreadManager.h deleted file mode 100644 index 5dec67df..00000000 --- a/src/Runtime/Source/System/Include/Qt3DSThreadManager.h +++ /dev/null @@ -1,129 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 1993-2009 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#pragma once - -#include "Qt3DSThreadSafeScratchpad.h" -#include "Qt3DSThreadSafeQueue.h" -#include "Qt3DSArray.h" - -namespace Q3DStudio { -//============================================================================== -// Fields specific to the thread manager -//============================================================================== - -// NOTE: The order that these are defined matters (specifically, the relationship -// between the struct forward declare, struct definition, and function pointer. - -// TODO - ah -// The interaction between these is not that clear... comment stuff!! - -struct SThreadResultItem; -struct SThreadWorkItem; - -typedef CThreadSafeQueue<SThreadWorkItem> TThreadWorkQueue; -typedef CThreadSafeQueue<SThreadResultItem> TThreadResultQueue; - -// The function to call when a work item is 'finished' -typedef void (*TThreadFinishFunction)(void *inUserData, CThreadSafeScratchPad &inScratchPad); - -// This encapsulates a 'result'. -struct SThreadResultItem -{ - void *m_UserData; - TThreadFinishFunction m_Function; -}; -typedef SThreadResultItem (*TThreadWorkFunction)(void *inUserData, - CThreadSafeScratchPad &inScratchPad); - -struct SThreadWorkItem -{ - UINT32 m_WorkItemNameHash; ///< Used to identify a class of work items we can remove them from - ///time to time. - void *m_UserData; - TThreadWorkFunction m_Function; -}; - -typedef void *TThreadID; -typedef void *(*TThreadSpinFunction)(void *inUserData); - -//============================================================================== -/** -* The thread manager is the interface to create work on other threads and -* process the completed results. This is done abstractly through work and -* result items. -*/ -class CThreadManager -{ - - //============================================================================== - // Fields - //============================================================================== -private: - CThreadSafeScratchPad m_ScratchPad; - TThreadWorkQueue m_WorkQueue; - TThreadResultQueue m_ResultsQueue; - CArray<TThreadID> m_Threads; - INT32 m_WorkItems; // running count - volatile BOOL m_Running; - BOOL m_Unused[3]; - - //============================================================================== - // Methods - //============================================================================== -public: - CThreadManager(INT32 inThreads); - ~CThreadManager(); - -public: // Interface - INT32 Update(); - void Push(const SThreadWorkItem &inItem); - // Remove all work items of a certain class. This returns - // an array containing the removed items. - void Remove(UINT32 inItemNameHash, CArray<SThreadWorkItem> &ioRemovedItems); - - CThreadSafeScratchPad &GetScratchPad(); - -private: - bool Pop(SThreadResultItem &outItem); - static void *ThreadSpinFunction(void *inUserData); - void DoWork(); - void CheckForCompletedWork(); -}; - -} // namespace Q3DStudio - -//=================================================================== -// The application needs to provide these thread primitive functions -//=================================================================== - -Q3DStudio::TThreadID AppCreateThread(Q3DStudio::TThreadSpinFunction inFunc, void *inUserData); -void AppDestroyThread(Q3DStudio::TThreadID inThreadID); -void AppSleepThread(); diff --git a/src/Runtime/Source/System/Include/Qt3DSThreadSafeQueue.h b/src/Runtime/Source/System/Include/Qt3DSThreadSafeQueue.h deleted file mode 100644 index 4d6345f8..00000000 --- a/src/Runtime/Source/System/Include/Qt3DSThreadSafeQueue.h +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 1993-2009 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#pragma once - -//============================================================================== -// Includes -//============================================================================== -#include "Qt3DSSyncPrimitive.h" -#include "Qt3DSArray.h" - -//============================================================================== -// Namespace -//============================================================================== -namespace Q3DStudio { - -//============================================================================== -/** - * Thread safe queue that wraps using a sync primitive when it accesses - * it's internals. - */ -template <typename T> -class CThreadSafeQueue -{ - //============================================================================== - // Fields - //============================================================================== -private: - CSyncPrimitive m_Primitive; - CArray<T> m_QueueData; - - //============================================================================== - // Fields - //============================================================================== -private: - CThreadSafeQueue(const CThreadSafeQueue &other); - CThreadSafeQueue &operator=(const CThreadSafeQueue &other); - -public: - CThreadSafeQueue() {} - void Push(const T &inItem); - bool Pop(T &outItem); - INT32 GetCount(); - - //========================================================================= - // Remove items that correspond to a given predicate. - // The predicate is a functor that takes a const reference and returns either - // true or false. - template <typename TPredFunc> - void Remove(TPredFunc predicate, CArray<T> &ioOutRemovedItems); -}; - -} // namespace Q3DStudio - -//============================================================================== -// Template code -//============================================================================== -#include "Qt3DSThreadSafeQueue.inl" diff --git a/src/Runtime/Source/System/Include/Qt3DSThreadSafeQueue.inl b/src/Runtime/Source/System/Include/Qt3DSThreadSafeQueue.inl deleted file mode 100644 index 84501916..00000000 --- a/src/Runtime/Source/System/Include/Qt3DSThreadSafeQueue.inl +++ /dev/null @@ -1,89 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2008 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -#pragma once - -//============================================================================== -// Namespace -//============================================================================== -namespace Q3DStudio { - -//============================================================================== -/** - * Safely push an object onto the queue - */ -template <typename T> -inline void CThreadSafeQueue<T>::Push(const T &inItem) -{ - CSyncGuard theGuard(m_Primitive); - m_QueueData.Push(inItem); -} - -//============================================================================== -/** -* Safely pop an object off the queue -*/ -template <typename T> -inline bool CThreadSafeQueue<T>::Pop(T &outItem) -{ - CSyncGuard theGuard(m_Primitive); - if (m_QueueData.GetCount()) { - outItem = m_QueueData[0]; - m_QueueData.Remove(0); - return true; - } - return false; -} - -//============================================================================== -/** - * Get the count queue count - */ -template <typename T> -INT32 CThreadSafeQueue<T>::GetCount() -{ - CSyncGuard theGuard(m_Primitive); - return m_QueueData.GetCount(); -} - -template <typename T> -template <typename TPredFunc> -inline void CThreadSafeQueue<T>::Remove(TPredFunc predicate, CArray<T> &ioOutRemovedItems) -{ - CSyncGuard theGuard(m_Primitive); - for (INT32 index = m_QueueData.GetCount() - 1; index >= 0; --index) { - const T &item = m_QueueData[index]; - if (predicate(item)) { - ioOutRemovedItems.Push(item); - m_QueueData.Remove(index); - } - } -} - -} // namespace Q3DStudio diff --git a/src/Runtime/Source/System/Include/Qt3DSThreadSafeScratchpad.h b/src/Runtime/Source/System/Include/Qt3DSThreadSafeScratchpad.h deleted file mode 100644 index 64f414c8..00000000 --- a/src/Runtime/Source/System/Include/Qt3DSThreadSafeScratchpad.h +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 1993-2009 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#pragma once - -//============================================================================== -// Includes -//============================================================================== -#include "Qt3DSSyncPrimitive.h" -#include "Qt3DSArray.h" -#include "foundation/Qt3DSLogging.h" - -//============================================================================== -// Namespace -//============================================================================== -namespace Q3DStudio { - -//============================================================================== -/** - * Definition of a scratch pad buffer - */ -struct SThreadScratchPadBuffer -{ - INT32 m_Size; - INT32 m_RequestedSize; - CHAR *m_Data; -}; - -//============================================================================== -/** - * This class wraps up a simple thread safe buffer manager class. This - * has two functions that threaded - */ -class CThreadSafeScratchPad -{ - //============================================================================== - // Private Methods - //============================================================================== -private: - CThreadSafeScratchPad(const CThreadSafeScratchPad &other); - CThreadSafeScratchPad &operator=(const CThreadSafeScratchPad &other); - - //============================================================================== - // Fields - //============================================================================== -private: - struct SBufferItem - { - SThreadScratchPadBuffer m_Buffer; - BOOL m_InUse; - BOOL m_Unused[3]; - }; - - CArray<SBufferItem> m_Buffers; - CSyncPrimitive m_Primitive; - - //============================================================================== - // Methods - //============================================================================== -public: - CThreadSafeScratchPad() {} - ~CThreadSafeScratchPad(); - - // Not a threadsafe call; used for testing purposes. - INT32 GetBufferCount() const { return (INT32)m_Buffers.GetCount(); } - SThreadScratchPadBuffer GetBuffer(INT32 inMinSize); - void ReleaseBuffer(SThreadScratchPadBuffer inBuffer); -}; -} - -#include "Qt3DSThreadSafeScratchpad.inl" diff --git a/src/Runtime/Source/System/Include/Qt3DSThreadSafeScratchpad.inl b/src/Runtime/Source/System/Include/Qt3DSThreadSafeScratchpad.inl deleted file mode 100644 index 6b26764a..00000000 --- a/src/Runtime/Source/System/Include/Qt3DSThreadSafeScratchpad.inl +++ /dev/null @@ -1,161 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2008 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -namespace Q3DStudio -{ - -//============================================================================== -/** - * Destructor - */ -inline CThreadSafeScratchPad::~CThreadSafeScratchPad() -{ - FOR_ARRAY( SBufferItem, theObject, m_Buffers ) - { - free( theObject->m_Buffer.m_Data ); - } - m_Buffers.Clear(); -} - -//============================================================================== -/** -* Ask the scratch pad that for a to use -* -* Possible cases: -* 1. if there are unused buffers - 1.a use the buffer that fits, and wastes the least amount of memory - 1.b if no buffers fit, resize the biggest unused buffer - 2. if no unused buffers - 2.a allocate a new buffer -*/ -inline SThreadScratchPadBuffer CThreadSafeScratchPad::GetBuffer( INT32 inMinSize ) -{ - CSyncGuard theGuard( m_Primitive ); - INT32 theBestIndex = -1; - UINT32 theBestIndexWasteSize = static_cast<UINT32>( -1 ); // uint32 max - - INT32 theLargestUnusedBuffer = -1; - INT32 theLargestUnusedBufferSize = 0; - - SThreadScratchPadBuffer theReturnBuffer = {0,0}; - - if ( inMinSize < 0 ) - { - return theReturnBuffer; - } - - INT32 theEnd = m_Buffers.GetCount(); - for ( INT32 theIndex = 0; theIndex < theEnd; ++theIndex ) - { - SBufferItem& theBufferItem = m_Buffers[theIndex]; - - // Unused buffers... - if ( false == theBufferItem.m_InUse ) - { - // Best fit unused buffer that will fit the requested size - if ( theBufferItem.m_Buffer.m_Size >= inMinSize && static_cast<UINT32>( theBufferItem.m_Buffer.m_Size - inMinSize ) < theBestIndexWasteSize ) - { - theBestIndex = theIndex; - theBestIndexWasteSize = static_cast<UINT32>( theBufferItem.m_Buffer.m_Size - inMinSize); - } - // Biggest unused buffer to resize... - else if ( theBufferItem.m_Buffer.m_Size > theLargestUnusedBufferSize ) - { - theLargestUnusedBuffer = theIndex; - theLargestUnusedBufferSize = theBufferItem.m_Buffer.m_Size; - } - } - } - - - // 1.a - if ( -1 != theBestIndex ) - { - m_Buffers[theBestIndex].m_InUse = true; - theReturnBuffer = m_Buffers[theBestIndex].m_Buffer; - } - // 1.b - else if ( -1 != theLargestUnusedBuffer ) - { - m_Buffers[theLargestUnusedBuffer].m_InUse = true; - m_Buffers[theLargestUnusedBuffer].m_Buffer.m_Data = - static_cast<CHAR*>( realloc( m_Buffers[theLargestUnusedBuffer].m_Buffer.m_Data, - static_cast<size_t>( inMinSize ) ) - ); - - m_Buffers[theLargestUnusedBuffer].m_Buffer.m_Size = inMinSize; - theReturnBuffer = m_Buffers[theLargestUnusedBuffer].m_Buffer; - } - // 2.a - else - { - // Add a new buffer - SBufferItem theNewBuffer; - theNewBuffer.m_InUse = true; - theNewBuffer.m_Buffer.m_Data = static_cast<CHAR*>( malloc( static_cast<size_t>( inMinSize ) ) ); - theNewBuffer.m_Buffer.m_Size = inMinSize; - m_Buffers.Push( theNewBuffer ); - - theReturnBuffer = theNewBuffer.m_Buffer; - } - theReturnBuffer.m_RequestedSize = inMinSize; - return theReturnBuffer; -} - -//============================================================================== -/** - * Notify the scratch pad that the buffer is now safe to reuse - */ -inline void CThreadSafeScratchPad::ReleaseBuffer( SThreadScratchPadBuffer inBuffer ) -{ - CSyncGuard theGuard( m_Primitive ); - if ( inBuffer.m_Data == 0 ) - return; - INT32 theIndex; - INT32 theEnd = m_Buffers.GetCount(); - for ( theIndex = 0; theIndex < theEnd; ++theIndex ) - { - SBufferItem& theBufferItem = m_Buffers[theIndex]; - if ( theBufferItem.m_Buffer.m_Size == inBuffer.m_Size && theBufferItem.m_Buffer.m_Data == inBuffer.m_Data ) - { - theBufferItem.m_InUse = false; - inBuffer.m_RequestedSize = 0; - break; - } - } - - if ( theIndex == theEnd ) { - qCCritical(qt3ds::INVALID_OPERATION) - << "CThreadSafeScratchPad::ReleaseBuffer: attempting to remove " - << "invalid/corrupt buffer. Buffer size: " << inBuffer.m_Size; - } -} - -} // namespace Q3DStudio diff --git a/src/Runtime/Source/System/Source/Qt3DSFileStream.cpp b/src/Runtime/Source/System/Source/Qt3DSFileStream.cpp index 0a672c1e..202e4ae7 100644 --- a/src/Runtime/Source/System/Source/Qt3DSFileStream.cpp +++ b/src/Runtime/Source/System/Source/Qt3DSFileStream.cpp @@ -34,7 +34,9 @@ #include "SystemPrefix.h" #include "Qt3DSFile.h" #include "Qt3DSFileStream.h" -#include "Qt3DSThreadManager.h" +#include "foundation/Qt3DSLogging.h" + +#include <QtCore/qthread.h> //============================================================================== // Namespace @@ -77,7 +79,7 @@ void CFileStream::Open(const CHAR *inFilePath, const CHAR *inMode) Close(); m_FileStream = CFile::Open()(inFilePath, inMode); while (m_KeepTrying && !m_FileStream) { - Q3DStudio_sleepmillisec(10); + QThread::msleep(10); m_FileStream = CFile::Open()(inFilePath, inMode); } diff --git a/src/Runtime/Source/System/Source/Qt3DSSyncPrimitive.cpp b/src/Runtime/Source/System/Source/Qt3DSSyncPrimitive.cpp deleted file mode 100644 index bfc49856..00000000 --- a/src/Runtime/Source/System/Source/Qt3DSSyncPrimitive.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 1993-2009 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//#include "RuntimePrefix.h" - -//============================================================================== -// Includes -//============================================================================== -#include "SystemPrefix.h" -#include "Qt3DSSyncPrimitive.h" - -//============================================================================== -// Namespace -//============================================================================== -namespace Q3DStudio { - -//============================================================================== -/** - * Constructor - */ -CSyncPrimitive::CSyncPrimitive() - : m_LockHandle(0) -{ - AppCreateLockPrimitive(&m_LockHandle); -} - -//============================================================================== -/** - * Destructor - */ -CSyncPrimitive::~CSyncPrimitive() -{ - AppDestroyLockPrimitive(&m_LockHandle); -} - -//============================================================================== -/** - * - */ -int CSyncPrimitive::BeginSync() -{ - AppBeginSync(m_LockHandle); - return 1; -} - -//============================================================================== -/** - * - */ -int CSyncPrimitive::EndSync() -{ - AppEndSync(m_LockHandle); - return 1; -} - -} // namespace Q3DStudio diff --git a/src/Runtime/Source/System/Source/Qt3DSThreadManager.cpp b/src/Runtime/Source/System/Source/Qt3DSThreadManager.cpp deleted file mode 100644 index b7d30ea8..00000000 --- a/src/Runtime/Source/System/Source/Qt3DSThreadManager.cpp +++ /dev/null @@ -1,188 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 1993-2009 NVIDIA Corporation. -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt 3D Studio. -** -** $QT_BEGIN_LICENSE:GPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) any later version -** approved by the KDE Free Qt Foundation. The licenses are as published by -** the Free Software Foundation and appearing in the file LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "SystemPrefix.h" - -//============================================================================== -// Includes -//============================================================================== -#include "Qt3DSThreadManager.h" - -#ifdef _TEGRAPLATFORM -#include <Winbase.h.> - -// This is to try to throttle background threads to not hog all -// the cpu while doing work. -// http://msdn.microsoft.com/en-us/library/aa450618.aspx -static const INT32 s_ThreadPriority = 252; -#endif - -//============================================================================== -// Namespace -//============================================================================== -namespace Q3DStudio { - -//============================================================================== -/** - * Constructor - */ -CThreadManager::CThreadManager(INT32 inThreads) - : m_WorkItems(0) -{ - Q3DStudio_ASSERT(inThreads > 0); - m_Running = true; - for (INT32 theIter = 0; theIter < inThreads; theIter++) { - m_Threads.Push(AppCreateThread(ThreadSpinFunction, this)); - } -} - -//============================================================================== -/** - * Destructor - */ -CThreadManager::~CThreadManager() -{ - m_Running = false; - for (INT32 theIter = 0; theIter < m_Threads.GetCount(); theIter++) { - AppDestroyThread(m_Threads[theIter]); - } - m_Threads.Clear(); -} - -//============================================================================== -/** -* Check for completed work and return the number of work items left in the queue -*/ -INT32 CThreadManager::Update() -{ - CheckForCompletedWork(); - return m_WorkQueue.GetCount(); -} - -//============================================================================== -/** - * Push work onto the work queue - */ -void CThreadManager::Push(const SThreadWorkItem &inItem) -{ - Q3DStudio_ASSERT(inItem.m_UserData && inItem.m_Function); - m_WorkQueue.Push(inItem); -} - -struct SItemNameHashPredicate -{ - UINT32 m_ItemNameHash; - bool operator()(const SThreadWorkItem &inItem) - { - return inItem.m_WorkItemNameHash == m_ItemNameHash; - } -}; -//============================================================================== -/** - * Remove a list of items currently in the work queue. - */ -void CThreadManager::Remove(UINT32 inItemNameHash, CArray<SThreadWorkItem> &ioRemovedItems) -{ - SItemNameHashPredicate thePredicate = { inItemNameHash }; - m_WorkQueue.Remove(thePredicate, ioRemovedItems); -} - -//============================================================================== -/** - * Return a reference to the scratch pad - */ -CThreadSafeScratchPad &CThreadManager::GetScratchPad() -{ - return m_ScratchPad; -} - -//============================================================================== -/** -* Pop completed work off the result queue -*/ -bool CThreadManager::Pop(SThreadResultItem &outItem) -{ - return m_ResultsQueue.Pop(outItem); -} - -//============================================================================== -/** - * The function that created threads call (worker threads) - */ -void *CThreadManager::ThreadSpinFunction(void *inUserData) -{ -#ifdef _TEGRAPLATFORM -// CeSetThreadPriority( GetCurrentThread(), s_ThreadPriority ); -#endif - - CThreadManager *theThreadManager = reinterpret_cast<CThreadManager *>(inUserData); - theThreadManager->DoWork(); - - return NULL; -} - -//============================================================================== -/** -* The function that created threads spin on (worker threads) -*/ -void CThreadManager::DoWork() -{ - volatile BOOL theRunning = m_Running; - while (theRunning) { - SThreadWorkItem theWorkItem = { 0 }; - while (m_WorkQueue.Pop(theWorkItem)) { - SThreadResultItem theResultItem = - theWorkItem.m_Function(theWorkItem.m_UserData, m_ScratchPad); - - // For now, always ensure we have a valid result item - Q3DStudio_ASSERT(theResultItem.m_Function && theResultItem.m_UserData); - - if (theResultItem.m_Function && theResultItem.m_UserData) - m_ResultsQueue.Push(theResultItem); - } - // Sleep after every task..? - AppSleepThread(); - - theRunning = m_Running; - } -} - -//============================================================================== -/** -* The function that created threads spin on (main thread) -*/ -void CThreadManager::CheckForCompletedWork() -{ - SThreadResultItem theResultItem = { 0 }; - while (m_ResultsQueue.Pop(theResultItem)) { - theResultItem.m_Function(theResultItem.m_UserData, m_ScratchPad); - } -} -} diff --git a/src/Runtime/Source/Viewer/PerfLog/TCPPerfLogClientStub.h b/src/Runtime/Source/Viewer/PerfLog/TCPPerfLogClientStub.h index 66e13e73..2b6c0975 100644 --- a/src/Runtime/Source/Viewer/PerfLog/TCPPerfLogClientStub.h +++ b/src/Runtime/Source/Viewer/PerfLog/TCPPerfLogClientStub.h @@ -33,7 +33,6 @@ //============================================================================== // Includes //============================================================================== -#include <KD/kd.h> //============================================================================== // Extern interfaces diff --git a/src/Runtime/Source/Viewer/Qt3DSViewerApp.cpp b/src/Runtime/Source/Viewer/Qt3DSViewerApp.cpp index 4423674a..91647cdf 100644 --- a/src/Runtime/Source/Viewer/Qt3DSViewerApp.cpp +++ b/src/Runtime/Source/Viewer/Qt3DSViewerApp.cpp @@ -34,9 +34,6 @@ #include "Qt3DSTegraApplication.h" #include "Qt3DSViewerApp.h" #include "Qt3DSTegraInputEngine.h" -#if !defined(Q_OS_MACOS) -#include "TCPPerfLogClientStub.h" -#endif #include "Qt3DSInputFrame.h" // keyboard mapping #include "foundation/Qt3DSTime.h" #include "Qt3DSFNDTimer.h" @@ -198,30 +195,13 @@ void PerfLogSetStringData(const char *) { } // Dummy defination when TCP perf logging isnt used -//----------------------------------------------------------------------------- -// KD overwrite -//----------------------------------------------------------------------------- -void kdLogMessage(const KDchar *string) -{ - qCInfo(qt3ds::TRACE_INFO) << string; -} - -void kdHandleAssertion(const KDchar *condition, const KDchar *filename, KDint linenumber) -{ - qCCritical(qt3ds::TRACE_INFO) << "assertion failed: " << condition - << " " << filename << " " << linenumber; -} - Q3DStudio::Qt3DSFNDTimer g_GlobalTimeProvider; -KDust GetTimeUST() +__int64 GetTimeUST() { // this needs to be nano seconds - // KDust kdTime = static_cast<KDust>( g_gobalTimer.getNanoSeconds() ); Q3DStudio::ITimeProvider &theTimer = g_GlobalTimeProvider; - KDust kdTime = static_cast<KDust>(theTimer.GetCurrentTimeMicroSeconds() * 1000); - - return kdTime; + return theTimer.GetCurrentTimeMicroSeconds() * 1000; } void initResource() { @@ -277,22 +257,16 @@ public: Q3DStudio::IWindowSystem *m_WindowSystem; IAudioPlayer *m_AudioPlayer; - QList<KDEvent *> m_pendingEvents; + QVector<QMouseEvent *> m_pendingEvents; QString m_error; - void queueMouseEvent(int index, int select, int x, int y) + void queueMouseEvent(int button, int pressed, int x, int y) { - KDEvent *e = new KDEvent; - e->timestamp = GetTimeUST(); - e->type = KD_EVENT_INPUT_POINTER; - e->userptr = reinterpret_cast<void*>(KD_NULL); - KDEventInputPointer *dataPtr = reinterpret_cast<KDEventInputPointer *>(&(e->data)); - dataPtr->index = index; - dataPtr->select = select; - dataPtr->x = x; - dataPtr->y = y; - + QMouseEvent *e = new QMouseEvent(pressed ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease, + QPointF(x, y), (Qt::MouseButton)button, + (Qt::MouseButtons)button, 0); + e->setTimestamp(static_cast<ulong>(GetTimeUST())); m_pendingEvents.append(e); } }; @@ -461,7 +435,7 @@ void Q3DSViewerApp::Render() { if (m_Impl.m_tegraApp && m_Impl.m_tegraApp->GetTegraRenderEngine()) { if (m_Impl.m_appInitSuccessful) { - for (KDEvent *e : m_Impl.m_pendingEvents) { + for (QEvent *e : m_Impl.m_pendingEvents) { m_Impl.m_tegraApp->HandleMessage(e); delete e; } @@ -549,16 +523,14 @@ QString Q3DSViewerApp::error() void Q3DSViewerApp::Resize(int width, int height) { WindowRect &theWindowRect = static_cast<SWindowSystemImpl *>(m_Impl.m_WindowSystem)->m_Rect; + QSize oldSize = QSize(theWindowRect.width, theWindowRect.height); theWindowRect.width = width; theWindowRect.height = height; #if !defined(Q_OS_MACOS) if (m_Impl.m_appInitSuccessful && m_Impl.m_tegraApp && m_Impl.m_tegraApp->GetTegraRenderEngine()) { - KDEvent event; - memset(&event, 0, sizeof(KDEvent)); - event.type = KD_EVENT_WINDOWPROPERTY_CHANGE; - event.data.windowproperty.pname = KD_WINDOWPROPERTY_SIZE; + QResizeEvent event = QResizeEvent(QSize(width, height), oldSize); m_Impl.m_tegraApp->HandleMessage(&event); } #endif diff --git a/src/commonplatform.pri b/src/commonplatform.pri index 008125b1..ca11f38c 100644 --- a/src/commonplatform.pri +++ b/src/commonplatform.pri @@ -14,8 +14,6 @@ DEFINES += \ _TEGRA_NO_LOG_FILE \ EA_COMPILER_HAS_INTTYPES \ EASTL_ALLOCATOR_COPY_ENABLED \ - OPENKODE \ - KD \ UNICODE \ _UNICODE |