2023-12-09 10:22:26 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#if defined(WIN32) || defined(_WIN64)
|
|
|
|
#define OS_WIN 1
|
|
|
|
#else
|
|
|
|
#define OS_WIN 0
|
|
|
|
#endif
|
|
|
|
|
2024-01-31 04:03:56 +00:00
|
|
|
#include <math.h> // for fabs
|
|
|
|
|
2023-12-09 10:22:26 +00:00
|
|
|
#define SIZE_KB(n) ((n) * 1024)
|
2024-01-29 07:45:09 +00:00
|
|
|
#define SIZE_MB(n) SIZE_KB((n) * 1024)
|
|
|
|
#define SIZE_GB(n) SIZE_MB((n) * 1024)
|
2023-12-09 10:22:26 +00:00
|
|
|
|
2024-02-27 04:05:25 +00:00
|
|
|
#define USEC_2_NS(us) ((long)(us) * 1000)
|
|
|
|
#define MSEC_2_US(ms) ((long)(ms) * 1000)
|
|
|
|
#define SEC_2_MS(s) ((long)(s) * 1000)
|
|
|
|
#define MSEC_2_NS(ms) USEC_2_NS(MSEC_2_US(ms))
|
2023-12-09 10:22:26 +00:00
|
|
|
#define SEC_2_US(s) MSEC_2_US(SEC_2_MS(s))
|
2024-02-27 04:05:25 +00:00
|
|
|
#define SEC_2_NS(s) USEC_2_NS(SEC_2_US(s))
|
2023-12-09 10:22:26 +00:00
|
|
|
|
2024-01-17 08:55:08 +00:00
|
|
|
#define MM_PER_INCH 25.4f
|
2024-01-31 04:03:56 +00:00
|
|
|
#define IS_DOUBLE_EQUAL(a, b) fabs((a) - (b)) < .000001
|
2024-01-17 08:55:08 +00:00
|
|
|
|
2023-12-09 10:22:26 +00:00
|
|
|
#define ALIGN_TO(v, align) (((v) + (align) - 1) / (align) * (align))
|
|
|
|
#define ALIGN_INT(v) ALIGN_TO(v, sizeof(int))
|
2023-12-25 08:19:54 +00:00
|
|
|
#define CLEAN_ARRAY(a) memset(a, 0, sizeof(a))
|
2024-01-05 09:39:16 +00:00
|
|
|
#define BMP_LINE_BYTES(bits) (((bits) + 31) / 32 * 4)
|
2023-12-09 10:22:26 +00:00
|
|
|
|
|
|
|
#define RETURN_ENUM_STR(v, e) \
|
|
|
|
if(v == e) \
|
|
|
|
return #e;
|
|
|
|
|
|
|
|
|
2024-01-31 04:03:56 +00:00
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
// console definitions
|
|
|
|
enum console_color
|
|
|
|
{
|
|
|
|
COLOR_CHAR_BLACK = 0x30,
|
|
|
|
COLOR_CHAR_RED,
|
|
|
|
COLOR_CHAR_GREEN,
|
|
|
|
COLOR_CHAR_YELLOW,
|
|
|
|
COLOR_CHAR_BLUE,
|
|
|
|
COLOR_CHAR_MAGENTA,
|
|
|
|
COLOR_CHAR_CYAN,
|
|
|
|
COLOR_CHAR_WHITE,
|
|
|
|
|
|
|
|
COLOR_BKG_NONE = 0x3f,
|
|
|
|
COLOR_BKG_BLACK = 0x40,
|
|
|
|
COLOR_BKG_RED,
|
|
|
|
COLOR_BKG_GREEN,
|
|
|
|
COLOR_BKG_YELLOW,
|
|
|
|
COLOR_BKG_BLUE,
|
|
|
|
COLOR_BKG_MAGENTA,
|
|
|
|
COLOR_BKG_CYAN,
|
|
|
|
COLOR_BKG_WHITE,
|
|
|
|
};
|
|
|
|
enum console_display_mode
|
|
|
|
{
|
|
|
|
MODE_DEFAULT = 0,
|
|
|
|
MODE_HILIGHT,
|
|
|
|
MODE_DIM,
|
|
|
|
MODE_UNDER_LINE = 4,
|
|
|
|
MODE_BLINK,
|
|
|
|
MODE_REVERSE = 7,
|
|
|
|
MODE_HIDDEN,
|
|
|
|
MODE_NON_BOLD = 22,
|
|
|
|
MODE_NON_BLINK = 25,
|
|
|
|
MODE_NON_REVERSE = 27,
|
|
|
|
};
|
|
|
|
|
2023-12-09 10:22:26 +00:00
|
|
|
#if !OS_WIN // migrate codes from windows to linux ...
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <dlfcn.h>
|
|
|
|
#include <semaphore.h>
|
|
|
|
|
|
|
|
#pragma pack(push)
|
|
|
|
#pragma pack(1)
|
|
|
|
typedef struct BITMAPFILEHEADER
|
|
|
|
{
|
|
|
|
u_int16_t bfType;
|
|
|
|
u_int32_t bfSize;
|
|
|
|
u_int16_t bfReserved1;
|
|
|
|
u_int16_t bfReserved2;
|
|
|
|
u_int32_t bfOffBits;
|
2024-01-27 09:56:48 +00:00
|
|
|
}BITMAPFILEHEADER, *LPBITMAPFILEHEADER;
|
2023-12-09 10:22:26 +00:00
|
|
|
|
|
|
|
typedef struct BITMAPINFOHEADER
|
|
|
|
{
|
|
|
|
u_int32_t biSize;
|
|
|
|
u_int32_t biWidth;
|
|
|
|
u_int32_t biHeight;
|
|
|
|
u_int16_t biPlanes;
|
|
|
|
u_int16_t biBitCount;
|
|
|
|
u_int32_t biCompression;
|
|
|
|
u_int32_t biSizeImage;
|
|
|
|
u_int32_t biXPelsPerMeter;
|
|
|
|
u_int32_t biYPelsPerMeter;
|
|
|
|
u_int32_t biClrUsed;
|
|
|
|
u_int32_t biClrImportant;
|
2024-01-27 09:56:48 +00:00
|
|
|
}BITMAPINFOHEADER, *LPBITMAPINFOHEADER;
|
2024-01-17 08:55:08 +00:00
|
|
|
|
|
|
|
typedef struct _size
|
|
|
|
{
|
|
|
|
u_int32_t cx;
|
|
|
|
u_int32_t cy;
|
|
|
|
}SIZE, *LPSIZE;
|
2024-02-27 04:05:25 +00:00
|
|
|
typedef struct _point
|
|
|
|
{
|
|
|
|
u_int32_t x;
|
|
|
|
u_int32_t y;
|
|
|
|
}POINT, *LPPOINT;
|
2024-01-17 08:55:08 +00:00
|
|
|
|
2023-12-09 10:22:26 +00:00
|
|
|
#pragma pack(pop)
|
2024-01-17 08:55:08 +00:00
|
|
|
|
2023-12-09 10:22:26 +00:00
|
|
|
#define BI_RGB 0
|
|
|
|
#define MAKEWORD(a, b) (((a) & 0x0ff) | (((b) & 0x0ff) << 8))
|
|
|
|
#define MAKELONG(a, b) (((a) & 0x0ffff) | (((b) & 0x0ffff) << 16))
|
|
|
|
#define _countof(a) (sizeof(a) / sizeof((a)[0]))
|
|
|
|
|
|
|
|
typedef long LONG;
|
|
|
|
typedef void* HANDLE;
|
|
|
|
typedef void* HWND;
|
|
|
|
typedef void* HMODULE;
|
|
|
|
typedef void* LPVOID;
|
|
|
|
typedef void* FARPROC;
|
|
|
|
typedef unsigned int DWORD;
|
|
|
|
typedef unsigned short WORD;
|
|
|
|
typedef unsigned short UINT16;
|
|
|
|
typedef unsigned char BYTE;
|
|
|
|
typedef int BOOL;
|
|
|
|
|
|
|
|
#define TRUE 1
|
|
|
|
#define FALSE 0
|
|
|
|
#define MAX_PATH 256
|
|
|
|
#define huge
|
|
|
|
#define FAR
|
|
|
|
#define NEAR
|
|
|
|
#define LOWORD(v) ((v) & 0x0ffff)
|
|
|
|
#define HIWORD(v) (((v) >> 16) & 0x0ffff)
|
|
|
|
#define PASCAL __attribute__((stdcall))
|
|
|
|
#define _countof(a) (sizeof(a) / sizeof(a[0]))
|
|
|
|
#define LOAD_WITH_ALTERED_SEARCH_PATH RTLD_NOW
|
|
|
|
#define FreeLibrary dlclose
|
|
|
|
#define GetProcAddress dlsym
|
|
|
|
#define GetPrivateProfileIntW GetPrivateProfileIntA
|
|
|
|
#define lstrlenA strlen
|
|
|
|
#define lstrlenW strlen
|
|
|
|
|
|
|
|
#define DLL_EXTESION "so"
|
|
|
|
#define PATH_SEPARATOR "/"
|
|
|
|
#define STRICMP strcasecmp
|
|
|
|
#define MKDIR(a, b) mkdir(a, b)
|
|
|
|
#define STDCALL
|
|
|
|
#define ERROR_CANCELLED 1223
|
|
|
|
#define USB_TIMEOUT_INFINITE 0
|
|
|
|
#define FSEEK fseek
|
|
|
|
#define FTELL ftell
|
|
|
|
#define INVALID_HANDLE_VALUE ((HANDLE)(-1))
|
|
|
|
|
|
|
|
|
|
|
|
extern DWORD GetLastError(void);
|
|
|
|
extern DWORD GetPrivateProfileIntA(const char* app, const char* key, DWORD def, const char* file);
|
|
|
|
extern DWORD GetPrivateProfileStringA(const char* app, const char* key, const char* init, char* buf, size_t len, const char* file);
|
|
|
|
extern void Sleep(DWORD milliseconds);
|
|
|
|
extern int GetModuleFileNameA(HMODULE module, char* buf, size_t len); // NOTE: parameter 'module' is consinder as a part of the module file name
|
|
|
|
extern uint64_t GetCurrentProcessId(void);
|
|
|
|
extern uint64_t GetCurrentThreadId(void);
|
|
|
|
|
|
|
|
#else
|
|
|
|
#include <Windows.h>
|
|
|
|
|
|
|
|
#define bzero(a, l) memset(a, 0, l)
|
|
|
|
#define DLL_EXTESION "dll"
|
|
|
|
#define PATH_SEPARATOR "\\"
|
|
|
|
#define STRICMP stricmp
|
|
|
|
#define MKDIR(a, b) mkdir(a)
|
|
|
|
#define STDCALL __stdcall
|
|
|
|
#define sem_t HANDLE
|
|
|
|
#define USB_TIMEOUT_INFINITE -1
|
|
|
|
#define FSEEK _fseeki64
|
|
|
|
#define FTELL _ftelli64
|
|
|
|
#define pid_t int
|
2024-02-27 04:05:25 +00:00
|
|
|
#define pthread_t HANDLE
|
|
|
|
|
|
|
|
#define _GLIBCXX_TXN_SAFE_DYN
|
|
|
|
#define _GLIBCXX_USE_NOEXCEPT
|
2023-12-09 10:22:26 +00:00
|
|
|
|
|
|
|
#endif
|
2024-01-27 09:56:48 +00:00
|
|
|
|
|
|
|
|
|
|
|
#include "words.h"
|