From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Wasabi/api/application/api_application.h | 416 +++++++++++++++++++++++++++ 1 file changed, 416 insertions(+) create mode 100644 Src/Wasabi/api/application/api_application.h (limited to 'Src/Wasabi/api/application/api_application.h') diff --git a/Src/Wasabi/api/application/api_application.h b/Src/Wasabi/api/application/api_application.h new file mode 100644 index 00000000..d04ec0b8 --- /dev/null +++ b/Src/Wasabi/api/application/api_application.h @@ -0,0 +1,416 @@ +// ---------------------------------------------------------------------------- +// Generated by InterfaceFactory [Wed May 07 00:55:56 2003] +// +// File : api_application.h +// Class : api_application +// class layer : Dispatchable Interface +// ---------------------------------------------------------------------------- + +#ifndef __API_APPLICATION_H +#define __API_APPLICATION_H + +#include +#include +#include +#ifdef _WIN32 +#include "ifc_messageprocessor.h" +#endif + +// ---------------------------------------------------------------------------- + +enum +{ + API_APPLICATION_SUCCESS = 0, + API_APPLICATION_FAILURE = 1, +}; + +enum +{ + TRANSLATE_MODE_NORMAL = 0, + TRANSLATE_MODE_GLOBAL = 1, + TRANSLATE_MODE_CHILD = 2, +}; + +class NOVTABLE api_application: public Dispatchable +{ +protected: + api_application() {} + ~api_application() {} + +public: + const wchar_t *main_getAppName(); // returns (e.g.) "Winamp" + const wchar_t *main_getVersionString(); // returns (e.g.) "Winamp 5.12" + const wchar_t *main_getVersionNumString(); // returns (e.g.) "5.12" + unsigned int main_getBuildNumber(); // returns (e.g.) 666 + GUID main_getGUID(); + +#ifdef _WIN32 + HANDLE main_getMainThreadHandle(); // This actually gives you a DuplicateHandle, so call CloseHandle() when you are done. + HINSTANCE main_gethInstance(); +#endif // !_WIN32 + + const wchar_t *main_getCommandLine(); + void main_shutdown( int deferred = TRUE ); + void main_cancelShutdown(); + int main_isShuttingDown(); + const wchar_t *path_getAppPath(); + const wchar_t *path_getUserSettingsPath(); + + // added for 5.58+ so gen_ff can fill @SKINSPATH@ in scripts correctly + const wchar_t *path_getSkinSettingsPath(); + int app_getInitCount(); + intptr_t app_messageLoopStep(); + +#ifdef _WIN32 + void app_addMessageProcessor( ifc_messageprocessor *processor ); + void app_removeMessageProcessor( ifc_messageprocessor *processor ); + + /* accelerators are 5.53+ */ + void app_addAccelerators( HWND hwnd, HACCEL *phAccel, INT cAccel, UINT translateMode ); + void app_removeAccelerators( HWND hwnd ); + bool app_translateAccelerators( MSG *msg ); + int app_getAccelerators( HWND hwnd, HACCEL *phAccel, INT cchAccelMax, BOOL bGlobal ); // phAccel == NULL && cchAccelMax == 0 -> returns accels count + + /* register window as part of winamp global group (5.54+) */ + void app_registerGlobalWindow( HWND hwnd ); + void app_unregisterGlobalWindow( HWND hwnd ); + + /* 5.58 + */ + bool DirectMouseWheel_RegisterSkipClass( ATOM klass ); + bool DirectMouseWheel_UnregisterSkipClass( ATOM klass ); + bool DirectMouseWheel_EnableConvertToMouseWheel( HWND hwnd, BOOL enable ); // !!! must be disabled before window destroyed !!! + + /* 5.64 + */ + BOOL DirectMouseWheel_ProcessDialogMessage( HWND hwnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam, const int controls[], int controlslen ); + + /* 5.61 + */ + void ActiveDialog_Register( HWND hwnd ); + void ActiveDialog_Unregister( HWND hwnd ); + HWND ActiveDialog_Get(); + + /* 5.64 + */ + const wchar_t *getATFString(); // returns the current ATF formatting string + + /* 5.66 + */ + // used for dpi scaling so we're consistent in usage throughout the UI, etc + int getScaleX( int x ); + int getScaleY( int y ); + +#endif // !_WIN32 + + /* + note: on windows, these two functions DON'T call Set/GetCurrentDirectory, Winamp maintains it's own path + because calling SetCurrentDirectory locks the folder + Added for 5.34 + */ + const wchar_t *path_getWorkingPath(); // useful to call for populating lpstrInitialDir in GetOpenFileName + void path_setWorkingPath(const wchar_t *newPath); // useful to call for populating lpstrInitialDir in GetOpenFileName + + /* + The following three function return you unique IDs you can use if you need + They are created anonymously, so information cannot be tracked back to a specific person + The main reason for their existence is that a few third party libraries require them + and some online media providers require this info for billing. + You can call this functions with a pointer to any 16 byte data structure cast to a GUID * + Added for 5.35 + */ + // returns an ID unique to this computer, but not unique to the logged in user (two windows accts would share this ID) + int GetMachineID( GUID *id ); + // returns an ID unique to this user. Another user logged in to the computer will have a different ID + // note that if Winamp was installed with "shared settings", the IDs of multiple users will probably be identical + // as we're just storing it in winamp.ini for now + int GetUserID( GUID *id ); + // returns a unique ID for this session. Generated on the fly the first time someone calls this function + int GetSessionID( GUID *id ); + + /* 5.54 + */ + size_t AllocateThreadStorage(); // returns an index, -1 for error + void *GetThreadStorage(size_t index); + void SetThreadStorage(size_t index, void *value); + +protected: + enum + { + API_APPLICATION_MAIN_GETAPPNAME = 10, + API_APPLICATION_MAIN_GETVERSIONSTRING = 20, + API_APPLICATION_MAIN_GETVERSIONSTRING2 = 21, + API_APPLICATION_MAIN_GETBUILDNUMBER = 30, + API_APPLICATION_MAIN_GETGUID = 40, + API_APPLICATION_MAIN_GETMAINTHREADHANDLE = 50, + API_APPLICATION_MAIN_GETHINSTANCE = 60, + API_APPLICATION_MAIN_GETCOMMANDLINE = 70, + API_APPLICATION_MAIN_SHUTDOWN = 80, + API_APPLICATION_MAIN_CANCELSHUTDOWN = 90, + API_APPLICATION_MAIN_ISSHUTTINGDOWN = 100, + API_APPLICATION_PATH_GETAPPPATH = 110, + API_APPLICATION_PATH_GETUSERSETTINGSPATH = 120, + API_APPLICATION_APP_GETINITCOUNT = 130, + API_APPLICATION_APP_MESSAGELOOPSTEP = 140, + API_APPLICATION_APP_ADDMESSAGEPROCESSOR = 150, + API_APPLICATION_APP_REMOVEMESSAGEPROCESSOR = 160, + API_APPLICATION_APP_ADDMODELESSDIALOG = 170, + API_APPLICATION_APP_REMOVEMODELESSDIALOG = 180, + API_APPLICATION_PATH_GETWORKINGPATH = 190, + API_APPLICATION_PATH_SETWORKINGPATH = 200, + API_APPLICATION_GETMACHINEID = 210, + API_APPLICATION_GETUSERID = 220, + API_APPLICATION_GETSESSIONID = 230, + API_APPLICATION_APP_ADDACCELERATORS = 240, + API_APPLICATION_APP_REMOVEACCELERATORS = 250, + API_APPLICATION_APP_TRANSLATEACCELERATORS = 260, + API_APPLICATION_APP_GETACCELERATORS = 270, + API_APPLICATION_APP_REGISTERGLOBALWINDOW = 280, + API_APPLICATION_APP_UNREGISTERGLOBALWINDOW = 290, + API_APPLICATION_ALLOCATETHREADSTORAGE = 300, + API_APPLICATION_GETTHREADSTORAGE = 310, + API_APPLICATION_SETTHREADSTORAGE = 320, + API_APPLICATION_PATH_GETSKINSETTINGSPATH = 330, + API_APPLICATION_DIRECTMOUSEWHEEL_REGISTERSKIPCLASS = 340, + API_APPLICATION_DIRECTMOUSEWHEEL_UNREGISTERSKIPCLASS = 350, + API_APPLICATION_DIRECTMOUSEWHEEL_ENABLECONVERTTOMOUSEWHEEL = 360, + API_APPLICATION_DIRECTMOUSEWHEEL_PROCESSDIALOGMESSAGE = 365, + API_APPLICATION_ACTIVEDIALOG_REGISTER = 370, + API_APPLICATION_ACTIVEDIALOG_UNREGISTER = 380, + API_APPLICATION_ACTIVEDIALOG_GET = 390, + API_APPLICATION_GETATFSTRING = 400, + API_APPLICATION_GETSCALEX = 500, + API_APPLICATION_GETSCALEY = 510, + }; +}; + +// ---------------------------------------------------------------------------- + +inline const wchar_t *api_application::main_getAppName() +{ + const wchar_t *__retval = _call(API_APPLICATION_MAIN_GETAPPNAME, (const wchar_t *)0); + return __retval; +} + +inline const wchar_t *api_application::main_getVersionString() +{ + const wchar_t *__retval = _call(API_APPLICATION_MAIN_GETVERSIONSTRING, (const wchar_t *)0); + return __retval; +} + +inline const wchar_t *api_application::main_getVersionNumString() +{ + return _call(API_APPLICATION_MAIN_GETVERSIONSTRING2, (const wchar_t *)0); +} + +inline unsigned int api_application::main_getBuildNumber() +{ + return _call(API_APPLICATION_MAIN_GETBUILDNUMBER, 0); +} + +inline GUID api_application::main_getGUID() +{ + GUID __retval = _call(API_APPLICATION_MAIN_GETGUID, INVALID_GUID); + return __retval; +} + +#ifdef _WIN32 +inline HANDLE api_application::main_getMainThreadHandle() +{ + HANDLE __retval = _call(API_APPLICATION_MAIN_GETMAINTHREADHANDLE, (HANDLE)NULL); + return __retval; +} + +inline HINSTANCE api_application::main_gethInstance() +{ + HINSTANCE __retval = _call(API_APPLICATION_MAIN_GETHINSTANCE, (HINSTANCE)NULL); + return __retval; +} +#endif + +inline const wchar_t *api_application::main_getCommandLine() +{ + const wchar_t *__retval = _call(API_APPLICATION_MAIN_GETCOMMANDLINE, (const wchar_t *)0); + return __retval; +} + +inline void api_application::main_shutdown(int deferred) +{ + _voidcall(API_APPLICATION_MAIN_SHUTDOWN, deferred); +} + +inline void api_application::main_cancelShutdown() +{ + _voidcall(API_APPLICATION_MAIN_CANCELSHUTDOWN); +} + +inline int api_application::main_isShuttingDown() +{ + int __retval = _call(API_APPLICATION_MAIN_ISSHUTTINGDOWN, (int)0); + return __retval; +} + +inline const wchar_t *api_application::path_getAppPath() +{ + const wchar_t *__retval = _call(API_APPLICATION_PATH_GETAPPPATH, (const wchar_t *)0); + return __retval; +} + +inline const wchar_t *api_application::path_getUserSettingsPath() +{ + return _call(API_APPLICATION_PATH_GETUSERSETTINGSPATH, (const wchar_t *)0); +} + +inline const wchar_t *api_application::path_getSkinSettingsPath() +{ + return _call(API_APPLICATION_PATH_GETSKINSETTINGSPATH, (const wchar_t *)0); +} + +inline int api_application::app_getInitCount() +{ + int __retval = _call(API_APPLICATION_APP_GETINITCOUNT, 0); + return __retval; +} + +inline intptr_t api_application::app_messageLoopStep() +{ + return _call(API_APPLICATION_APP_MESSAGELOOPSTEP, (intptr_t)1); +} + +#ifdef _WIN32 +inline void api_application::app_addMessageProcessor(ifc_messageprocessor *processor) +{ + _voidcall(API_APPLICATION_APP_ADDMESSAGEPROCESSOR, processor); +} + +inline void api_application::app_removeMessageProcessor(ifc_messageprocessor *processor) +{ + _voidcall(API_APPLICATION_APP_REMOVEMESSAGEPROCESSOR, processor); +} + +inline void api_application::app_addAccelerators(HWND hwnd, HACCEL *phAccel, INT cAccel, UINT translateMode) +{ + _voidcall(API_APPLICATION_APP_ADDACCELERATORS, hwnd, phAccel, cAccel, translateMode); +} + +inline void api_application::app_removeAccelerators(HWND hwnd) +{ + _voidcall(API_APPLICATION_APP_REMOVEACCELERATORS, hwnd); +} + +inline bool api_application::app_translateAccelerators(MSG *msg) +{ + return _call(API_APPLICATION_APP_TRANSLATEACCELERATORS, (bool)false, msg); +} + +inline int api_application::app_getAccelerators(HWND hwnd, HACCEL *phAccel, INT cchAccelMax, BOOL bGlobal) +{ + return _call(API_APPLICATION_APP_GETACCELERATORS, (int)0, hwnd, phAccel, cchAccelMax, bGlobal); +} + +inline void api_application::app_registerGlobalWindow(HWND hwnd) +{ + _voidcall(API_APPLICATION_APP_REGISTERGLOBALWINDOW, hwnd); +} + +inline void api_application::app_unregisterGlobalWindow(HWND hwnd) +{ + _voidcall(API_APPLICATION_APP_UNREGISTERGLOBALWINDOW, hwnd); +} + +inline bool api_application::DirectMouseWheel_RegisterSkipClass(ATOM klass) +{ + return _call(API_APPLICATION_DIRECTMOUSEWHEEL_REGISTERSKIPCLASS, (bool)false, klass); +} + +inline bool api_application::DirectMouseWheel_UnregisterSkipClass(ATOM klass) +{ + return _call(API_APPLICATION_DIRECTMOUSEWHEEL_UNREGISTERSKIPCLASS, (bool)false, klass); +} + +inline bool api_application::DirectMouseWheel_EnableConvertToMouseWheel(HWND hwnd, BOOL enable) +{ + return _call(API_APPLICATION_DIRECTMOUSEWHEEL_ENABLECONVERTTOMOUSEWHEEL, (bool)false, hwnd, enable); +} + +inline BOOL api_application::DirectMouseWheel_ProcessDialogMessage(HWND hwnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam, const int controls[], int controlslen) +{ + return _call(API_APPLICATION_DIRECTMOUSEWHEEL_PROCESSDIALOGMESSAGE, (BOOL)FALSE, hwnd, uMsg, wParam, lParam, controls, controlslen); +} + +inline void api_application::ActiveDialog_Register(HWND hwnd) +{ + _voidcall(API_APPLICATION_ACTIVEDIALOG_REGISTER, hwnd); +} + +inline void api_application::ActiveDialog_Unregister(HWND hwnd) +{ + _voidcall(API_APPLICATION_ACTIVEDIALOG_UNREGISTER, hwnd); +} + +inline HWND api_application::ActiveDialog_Get() +{ + return _call(API_APPLICATION_ACTIVEDIALOG_GET, (HWND)NULL); +} + +inline const wchar_t *api_application::getATFString() +{ + return _call(API_APPLICATION_GETATFSTRING, (wchar_t *)0); +} + +inline int api_application::getScaleX(int x) +{ + return _call(API_APPLICATION_GETSCALEX, (int)0, x); +} + +inline int api_application::getScaleY(int y) +{ + return _call(API_APPLICATION_GETSCALEY, (int)0, y); +} +#endif + +inline const wchar_t *api_application::path_getWorkingPath() +{ + return _call(API_APPLICATION_PATH_GETWORKINGPATH, (wchar_t *)0); +} + +inline void api_application::path_setWorkingPath(const wchar_t *newPath) +{ + _voidcall(API_APPLICATION_PATH_SETWORKINGPATH, newPath); +} + +inline int api_application::GetMachineID(GUID *id) +{ + return _call(API_APPLICATION_GETMACHINEID, (int)API_APPLICATION_FAILURE, id); +} + +inline int api_application::GetUserID(GUID *id) +{ + return _call(API_APPLICATION_GETUSERID, (int)API_APPLICATION_FAILURE, id); +} + +inline int api_application::GetSessionID(GUID *id) +{ + return _call(API_APPLICATION_GETSESSIONID, (int)API_APPLICATION_FAILURE, id); +} + +inline size_t api_application::AllocateThreadStorage() +{ + return _call(API_APPLICATION_ALLOCATETHREADSTORAGE, (size_t)-1); +} + +inline void *api_application::GetThreadStorage(size_t index) +{ + return _call(API_APPLICATION_GETTHREADSTORAGE, (void *)0, index); +} + +inline void api_application::SetThreadStorage(size_t index, void *value) +{ + _voidcall(API_APPLICATION_SETTHREADSTORAGE, index, value); +} + +// ---------------------------------------------------------------------------- + +// {23B96771-09D7-46d3-9AE2-20DCEA6C86EA} +static const GUID applicationApiServiceGuid = + { + 0x23b96771, 0x9d7, 0x46d3, { 0x9a, 0xe2, 0x20, 0xdc, 0xea, 0x6c, 0x86, 0xea } + }; + +extern api_application *applicationApi; + +#endif // __API_APPLICATION_H \ No newline at end of file -- cgit