summaryrefslogtreecommitdiff
path: root/ldmicro/lib/linuxUI/linuxLD.h
blob: c9379c266342c8b556c3e336979f5f8bebcf7b59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
#ifndef __LINUX_LD__
#define __LINUX_LD__

#include "linuxUI.h"
#include <ctype.h>
#include <vector>
#include <math.h>
#include <algorithm>
#include <sys/mman.h>

/// common windows referances for linux

/// definitions
#define MAX_PATH PATH_MAX
/// CALLBACK or __stdcall os defined empty
#define CALLBACK
#define CONST const

/// Meamory flags
#define HEAP_ZERO_MEMORY 0x00000008

/// Image loading flags
#define IMAGE_ICON 1
#define LDMICRO_ICON "../ldmicro.ico"

/// Macro functions
#define max(_A, _B) std::max(_A, _B)

/// Typedefs
//typedef int64_t __int64;
typedef bool BOOL;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned int DWORD;
typedef unsigned int UINT;
typedef size_t SIZE_T;
typedef long LONG;
typedef wchar_t WCHAR;
typedef char CHAR;

typedef CONST WCHAR *LPCWSTR;
typedef CONST CHAR *LPCSTR; /// should be __nullterminated
typedef WORD ATOM;

#ifdef UNICODE
 typedef LPCWSTR LPCTSTR; 
#else
 typedef LPCSTR LPCTSTR;
#endif

typedef WCHAR *LPWSTR;
typedef CHAR *LPSTR;

#ifdef UNICODE
 typedef LPWSTR LPTSTR;
#else
 typedef LPSTR LPTSTR;
#endif

typedef void *PVOID;
typedef void *LPVOID;
typedef PVOID HMODULE;
typedef PVOID HHOOK;

typedef PVOID HANDLE;
typedef HANDLE HINSTANCE;
typedef HANDLE HGDIOBJ;

typedef cairo_t *HCRDC;
typedef GtkWidget *HWID;
typedef GtkWindow *HWND;
typedef GtkTreeModel *HLIST;
typedef GtkTreeIter ITLIST;
typedef GtkApplication *HAPP;
typedef GtkTreeViewColumn *HTVC;
typedef GdkPixbuf *HICON;
typedef GdkRectangle GDRECT;
typedef GDRECT *PGDRECT;
typedef HWID HMENU;
typedef ITLIST *HITLIST;

/// Check if system is x64 or x86
#if defined(__UNIX64)
typedef uint64_t UINT_PTR;
#else 
typedef unsigned int UINT_PTR;
#endif
 
typedef UINT_PTR WPARAM;

#if defined(__UNIX64)
 typedef __int64_t LONG_PTR; 
#else
 typedef long LONG_PTR;
#endif

typedef LONG_PTR LPARAM;
typedef LONG_PTR LRESULT;

/// Classes
typedef class tagColorReferance: public GdkRGBA{
    public:
    tagColorReferance()
    {
        this->red = 0.0;
        this->green = 0.0;
        this->blue = 0.0;
        this->alpha = 1.0;
    }

    tagColorReferance(int r, int g, int b)
    {
        this->red = r/255.0;
        this->green = g/255.0;
        this->blue = b/255.0;
        this->alpha = 1.0;
    }

    bool operator== (tagColorReferance& arg1)
    {
        if( ((int)arg1.red == (int)this->red) && ((int)arg1.green == (int)this->green) && ((int)arg1.blue == (int)this->blue) )
            return true;
        else
            return false;
    }

} COLORREF, *HBRUSH;

/// Structures
typedef struct HeapRecordChunckTag{
    PVOID Chunck;
    SIZE_T dwSize;
} HEAPCHUNCK;

typedef struct HeapRecordTag{
    PVOID hHeap;
    DWORD HeapID;
    std::vector<HEAPCHUNCK> Element;
    SIZE_T dwMaximumSize;
    SIZE_T dwSize;
    SIZE_T dwAllocatedSizeOffset;
} HEAPRECORD;

typedef struct tagSCROLLINFO {
    UINT cbSize;
    UINT fMask;
    int  nMin;
    int  nMax;
    UINT nPage;
    int  nPos;
    int  nTrackPos;
} SCROLLINFO, *LPCSCROLLINFO;

typedef struct {
  UINT   mask;
  int    iItem;
  int    iSubItem;
//   UINT   state;
//   UINT   stateMask;
  LPTSTR pszText;
//   int    cchTextMax;
//   int    iImage;
//   LPARAM lParam;
//   int    iIndent;
//   int    iGroupId;
//   UINT   cColumns;
//   PUINT  puColumns;
//   int    *piColFmt;
//   int    iGroup;
} LVITEM, *LPLVITEM;

typedef struct tagNMHDR {
    HLIST    hlistFrom;
    HITLIST  hlistIter;   
    UINT     code;
    LVITEM item;
} NMHDR;

typedef struct FontTag {
    int     nHeight;
    int     nWidth;
    int     nOrientation;
    int     fnWeight;
    DWORD   fdwItalic;
    LPTSTR lpszFace;
} *HFONT, FONT;

typedef struct tagLOGBRUSH {
  UINT      lbStyle;
  COLORREF  lbColor;
//   ULONG_PTR lbHatch;
} LOGBRUSH, *PLOGBRUSH;

typedef struct _RECT {
  LONG left;
  LONG top;
  LONG right;
  LONG bottom;
} RECT, *PRECT;

typedef struct SimpleDialogDataTag {
    UINT uflag;
    int boxes;
    char **dests;
    char *str1;
    char *str2;
    char *str3;
    int *num1;
    int *num2;
} SimpleDialogData;

/// Variables
extern std::vector<HEAPRECORD> HeapRecord;

/// Functions
HANDLE HeapCreate(
    DWORD  flOptions,
    SIZE_T dwInitialSize,
    SIZE_T dwMaximumSize);

LPVOID HeapAlloc(
    HANDLE hHeap,
    DWORD  dwFlags,
    SIZE_T dwBytes);

BOOL HeapFree(
    HANDLE hHeap,
    DWORD  dwFlags,
    LPVOID lpMem);

HICON LoadImage(
    HINSTANCE hinst,
    LPCTSTR   lpszName,
    UINT      uType,
    int       cxDesired,
    int       cyDesired,
    UINT      fuLoad
);

void RECT_to_GDRECT(
    const RECT *rc,
    GDRECT     *gdrc);

/// functions to be ported
void OutputDebugString(char*);
double GetTickCount(void);

#endif