00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __GLW_H
00025 #define __GLW_H
00026
00027
00028
00029 #include "Bases.h"
00030 #include "List.h"
00031 #include "machine.h"
00032
00033
00034 #ifdef MACHINE_ENDIAN_LITTLE
00035 #define GLW_ENDIAN 0
00036 #endif
00037 #ifdef MACHINE_ENDIAN_BIG
00038 #define GLW_ENDIAN 1
00039 #endif
00040
00041
00042 #define GLW_HEADER_LENGTH 10
00043
00044 #define GLWWS_OPENING 0
00045 #define GLWWS_OPENED 1
00046 #define GLWWS_SKINNING 2
00047
00048
00049 #define GLW_TRANSPARENT 0xffffffff
00050
00051 #define GLWFS_NORMAL (0L)
00052 #define GLWFS_BOLD (1L<<0)
00053 #define GLWFS_ITALIC (1L<<1)
00054 #define GLWFS_UNDERLINE (1L<<2)
00055
00056 #define GLWFA_ALIGN_LEFT (0)
00057 #define GLWFA_ALIGN_CENTER (1L<<0)
00058 #define GLWFA_ALIGN_RIGHT (1L<<1)
00059 #define GLWFA_VALIGN_TOP (0)
00060 #define GLWFA_VALIGN_CENTER (1L<<2)
00061 #define GLWFA_VALIGN_BOTTOM (1L<<3)
00062
00063
00064 #define GLWF_SMART_REFRESH (1L<<0)
00065 #define GLWF_MAYBE_SMALL (1L<<1)
00066 #define GLWF_ALWAYS_ON_TOP (1L<<2) //FIXME! missing feature
00067
00068
00069 struct glw_Time
00070 {
00071 u32 secs;
00072 u32 millis;
00073 };
00074
00075 struct glw_Event
00076 {
00077 u32 window;
00078 u16 mousex;
00079 u16 mousey;
00080 u32 second;
00081 u32 millis;
00082 u32 event;
00083 u32 data;
00084 u32 userdata;
00085 u32 mask;
00086 };
00087
00088 struct glw_SockMsg
00089 {
00090 u32 length;
00091 u8 type;
00092 u32 id;
00093 u8 *body;
00094 };
00095
00096 struct glw_ConnUser
00097 {
00098 char *appname;
00099 int waitfor;
00100 u32 userdata;
00101 u32 app;
00102 List_t *waitlist;
00103 List_t *file_cache;
00104 int quit;
00105 };
00106
00107
00108 struct glw_Dir;
00109 typedef struct glw_Dir glw_Dir_t;
00110
00111
00112 #define GLWEV_NOEVENT (1L<<0)
00113 #define GLWEV_MOUSEBUTTONS (1L<<1) // leftup,leftdown, rightup, rightdown, middleup, middledown
00114 #define GLWEV_SCROLL (1L<<2) // up, down
00115 #define GLWEV_KEYUP (1L<<3) // keycode
00116 #define GLWEV_KEYDOWN (1L<<4) // keycode
00117 #define GLWEV_MOUSEMOVE (1L<<5) // delta, absolute
00118 #define GLWEV_WINDOW (1L<<6) // movebegin, moveend, move, resizebegin, resizeend, resize, repaint, damage
00119 #define GLWEV_TIMER (1L<<7) // timer_id (userdata)
00120 #define GLWEV_ACTIVATION (1L<<8) // activate, inactivate
00121 #define GLWEV_SYSTEM (1L<<9) // quit
00122 #define GLWEV_MOUSEOVER (1L<<10) // enter, leave
00123 #define GLWEV_DAMAGE (1L<<11) // rect
00124 #define GLWEV_SOCKET (1L<<12) // -
00125
00126
00127 #define GLWEVD_ACTIVATE 1
00128 #define GLWEVD_INACTIVATE 2
00129
00130
00131 #define GLWEVD_LEFTDOWN 1
00132 #define GLWEVD_LEFTUP 2
00133 #define GLWEVD_RIGHTDOWN 3
00134 #define GLWEVD_RIGHTUP 4
00135 #define GLWEVD_MIDDLEDOWN 5
00136 #define GLWEVD_MIDDLEUP 6
00137
00138
00139 #define GLWEVD_ABSOLUTE 1
00140 #define GLWEVD_DELTA 2
00141
00142
00143 #define GLWEVD_DOWN 1
00144 #define GLWEVD_UP 2
00145
00146
00147 #define GLWEVD_SIZING 1
00148 #define GLWEVD_SIZEBEGIN 2
00149 #define GLWEVD_SIZEEND 3
00150 #define GLWEVD_MOVING 4
00151 #define GLWEVD_MOVEBEGIN 5
00152 #define GLWEVD_MOVEEND 6
00153 #define GLWEVD_REPAINT 7
00154
00155
00156 #define GLWEVD_QUIT 1
00157
00158
00159 #define GLWEVD_ENTER 1
00160 #define GLWEVD_LEAVE 2
00161
00162
00163
00164 #define GLWRT_LEFT 0x0001
00165 #define GLWRT_RIGHT 0x0002
00166 #define GLWRT_TOP 0x0003
00167 #define GLWRT_TOPLEFT 0x0004
00168 #define GLWRT_TOPRIGHT 0x0005
00169 #define GLWRT_BOTTOM 0x0006
00170 #define GLWRT_BOTTOMLEFT 0x0007
00171 #define GLWRT_BOTTOMRIGHT 0x0008
00172
00173
00174 #define GLWPT_GLOBAL_PREFS 0
00175 #define GLWPT_GLOBAL_APP_PREFS 1
00176 #define GLWPT_LOCAL_PREFS 2
00177 #define GLWPT_LOCAL_APP_PREFS 3
00178 #define GLWPT_GUI_DIR 4
00179
00180
00181 #define GLWP_ARROW 0 // ^ _
00182 #define GLWP_SIZERIGHT 1 // // _
00183 #define GLWP_SIZEVERTICAL 2 // || _
00184 #define GLWP_SIZELEFT 3 // \\ _
00185 #define GLWP_SIZEHORIZONTAL 4 // -- _
00186
00187
00188 #define TAG_GLW_WINDOW (TAG_USER+100)
00189 #define TAG_GLW_TYPE (TAG_USER+101)
00190 #define TAG_GLW_RGB (TAG_USER+102)
00191 #define TAG_GLW_X1 (TAG_USER+103)
00192 #define TAG_GLW_Y1 (TAG_USER+104)
00193 #define TAG_GLW_X2 (TAG_USER+105)
00194 #define TAG_GLW_Y2 (TAG_USER+106)
00195 #define TAG_GLW_LEFT (TAG_USER+107)
00196 #define TAG_GLW_TOP (TAG_USER+108)
00197 #define TAG_GLW_WIDTH (TAG_USER+109)
00198 #define TAG_GLW_HEIGHT (TAG_USER+110)
00199 #define TAG_GLW_X (TAG_USER+111)
00200 #define TAG_GLW_Y (TAG_USER+112)
00201 #define TAG_GLW_FACE ((TAG_USER+113)|TAGT_STRING)
00202 #define TAG_GLW_SIZE (TAG_USER+114)
00203 #define TAG_GLW_STYLE (TAG_USER+115)
00204 #define TAG_GLW_FONT (TAG_USER+116)
00205 #define TAG_GLW_CLIPRECT ((TAG_USER+117)|TAGT_RECT)
00206 #define TAG_GLW_TEXT ((TAG_USER+118)|TAGT_STRING)
00207 #define TAG_GLW_FLAGS (TAG_USER+119)
00208 #define TAG_GLW_PIXELS ((TAG_USER+120)|TAGT_PIXELS)
00209 #define TAG_GLW_RECT ((TAG_USER+121)|TAGT_RECT)
00210 #define TAG_GLW_MILLISEC (TAG_USER+122)
00211 #define TAG_GLW_USERDATA (TAG_USER+123)
00212 #define TAG_GLW_ID (TAG_USER+124)
00213 #define TAG_GLW_TM (TAG_USER+125)
00214 #define TAG_GLW_VALUE (TAG_USER+126)
00215 #define TAG_GLW_POINTER (TAG_USER+127)
00216 #define TAG_GLW_PERCENT (TAG_USER+128)
00217 #define TAG_GLW_CONN (TAG_USER+129)
00218 #define TAG_GLW_MINWIDTH (TAG_USER+130)
00219 #define TAG_GLW_MINHEIGHT (TAG_USER+131)
00220 #define TAG_GLW_MAXWIDTH (TAG_USER+132)
00221 #define TAG_GLW_MAXHEIGHT (TAG_USER+133)
00222 #define TAG_GLW_STATE (TAG_USER+134)
00223 #define TAG_GLW_VECTOR ((TAG_USER+135)|TAGT_VECTOR)
00224 #define TAG_GLW_BYTEWIDTH (TAG_USER+136)
00225
00226
00227
00228 enum glw_functions
00229 {
00230 GLW_STARTMOUSETRACKING=GLW_FUNCBASE,
00231 GLW_STOPMOUSETRACKING,
00232 GLW_DRAGWINDOW,
00233 GLW_RESIZEWINDOW,
00234 GLW_SETCOLOR,
00235 GLW_SETBACKGROUND,
00236 GLW_DRAWLINE,
00237 GLW_DRAWRECT,
00238 GLW_DRAWFILLEDRECT,
00239 GLW_DRAWPIXEL,
00240 GLW_OPENFONT,
00241 GLW_CLOSEFONT,
00242 GLW_DRAWTEXT,
00243 GLW_GETFONTSIZE,
00244 GLW_GETTEXTLENGTH,
00245 GLW_PUTIMAGE,
00246 GLW_GETSCREENDIMENSIONS,
00247 GLW_TIMERSTART,
00248 GLW_TIMERCANCEL,
00249 GLW_GETTIME,
00250 GLW_HTONL2,
00251 GLW_NTOHL2,
00252 GLW_SETWINDOWDIMENSIONS,
00253 GLW_GETWINDOWDIMENSIONS,
00254 GLW_SETPOINTER,
00255 GLW_SETWINDOWTRANSPARENCY,
00256 GLW_SLEEP,
00257 GLW_FUNC_DONE
00258 };
00259
00260
00261
00262 #ifdef GLW_SERVER
00263
00264 u32 glw_CallTL(int function, tag *taglist);
00265 u32 glw_Call(int function, u32 firsttag, ...);
00266
00267
00268 u32 glw_StartMouseTracking(u32 firsttag, ...);
00269 u32 glw_StartMouseTrackingTL(tag *taglist);
00270 u32 glw_StopMouseTracking(u32 firsttag, ...);
00271 u32 glw_StopMouseTrackingTL(tag *taglist);
00272 u32 glw_DragWindow(u32 firsttag, ...);
00273 u32 glw_DragWindowTL(tag *taglist);
00274 u32 glw_ResizeWindow(u32 firsttag, ...);
00275 u32 glw_ResizeWindowTL(tag *taglist);
00276 u32 glw_SetColor(u32 firsttag, ...);
00277 u32 glw_SetColorTL(tag *taglist);
00278 u32 glw_SetBackground(u32 firsttag, ...);
00279 u32 glw_SetBackgroundTL(tag *taglist);
00280 u32 glw_DrawLine(u32 firsttag, ...);
00281 u32 glw_DrawLineTL(tag *taglist);
00282 u32 glw_DrawRect(u32 firsttag, ...);
00283 u32 glw_DrawRectTL(tag *taglist);
00284 u32 glw_DrawFilledRect(u32 firsttag, ...);
00285 u32 glw_DrawFilledRectTL(tag *taglist);
00286 u32 glw_DrawPixel(u32 firsttag, ...);
00287 u32 glw_DrawPixelTL(tag *taglist);
00288 u32 glw_OpenFont(u32 firsttag, ...);
00289 u32 glw_OpenFontTL(tag *taglist);
00290 u32 glw_CloseFont(u32 firsttag, ...);
00291 u32 glw_CloseFontTL(tag *taglist);
00292 u32 glw_DrawText(u32 firsttag, ...);
00293 u32 glw_DrawTextTL(tag *taglist);
00294 u32 glw_GetFontSize(u32 firsttag, ...);
00295 u32 glw_GetFontSizeTL(tag *taglist);
00296 u32 glw_GetTextLength(u32 firsttag, ...);
00297 u32 glw_GetTextLengthTL(tag *taglist);
00298 u32 glw_PutImage(u32 firsttag, ...);
00299 u32 glw_PutImageTL(tag *taglist);
00300 u32 glw_GetScreenDimensions(u32 firsttag, ...);
00301 u32 glw_GetScreenDimensionsTL(tag *taglist);
00302 u32 glw_TimerStart(u32 firsttag, ...);
00303 u32 glw_TimerStartTL(tag *taglist);
00304 u32 glw_TimerCancel(u32 firsttag, ...);
00305 u32 glw_TimerCancelTL(tag *taglist);
00306 u32 glw_GetTime(u32 firsttag, ...);
00307 u32 glw_GetTimeTL(tag *taglist);
00308 u32 glw_htonl2(u32 firsttag, ...);
00309 u32 glw_htonl2TL(tag *taglist);
00310 u32 glw_ntohl2(u32 firsttag, ...);
00311 u32 glw_ntohl2TL(tag *taglist);
00312 u32 glw_SetWindowDimensions(u32 firsttag, ...);
00313 u32 glw_SetWindowDimensionsTL(tag *taglist);
00314 u32 glw_GetWindowDimensions(u32 firsttag, ...);
00315 u32 glw_GetWindowDimensionsTL(tag *taglist);
00316 u32 glw_SetPointer(u32 firsttag, ...);
00317 u32 glw_SetPointerTL(tag *taglist);
00318 u32 glw_SetWindowTransparency(u32 firsttag, ...);
00319 u32 glw_SetWindowTransparencyTL(tag *taglist);
00320 u32 glw_Sleep(u32 firsttag, ...);
00321 u32 glw_SleepTL(tag *taglist);
00322
00323
00324
00325 u32 glw_OpenWindow(u32 firsttag, ...);
00326 u32 glw_OpenWindowTL(tag *taglist);
00327 u32 glw_CloseWindow(u32 firsttag, ...);
00328 u32 glw_CloseWindowTL(tag *taglist);
00329 u32 glw_RefreshWindow(u32 firsttag, ...);
00330 u32 glw_RefreshWindowTL(tag *taglist);
00331 u32 glw_ClearWindow(u32 firsttag, ...);
00332 u32 glw_ClearWindowTL(tag *taglist);
00333 u32 glw_GetWindowUserdata(u32 firsttag, ...);
00334 u32 glw_GetWindowUserdataTL(tag *taglist);
00335 u32 glw_RefreshWindowPartial(u32 firsttag, ...);
00336 u32 glw_RefreshWindowPartialTL(tag *taglist);
00337 u32 glw_SetWindowLimits(u32 firsttag, ...);
00338 u32 glw_SetWindowLimitsTL(tag *taglist);
00339 u32 glw_SetWindowState(u32 firsttag, ...);
00340 u32 glw_SetWindowStateTL(tag *taglist);
00341 u32 glw_SetWindowShape(u32 firsttag, ...);
00342 u32 glw_SetWindowShapeTL(tag *taglist);
00343
00344
00345
00346 int glw_MainLoop(u32 connection, u32 userdata, u32 mask);
00347 void glw_CloseApp(u32 connection);
00348
00349
00350
00351
00352
00353 u32 glw_OpenModule(char *name);
00354 void glw_CloseModule(u32 handle);
00355
00356 #endif
00357
00358 int glw_MainLoopCli(u32 connection, u32 userdata);
00359
00360
00361 int glw_GetTerminalByteOrder(u32 conn);
00362 u32 glw_GetConnection(u32 window);
00363 int glw_Recv(u32 connection, u8 *buff, int bufflen);
00364 int glw_Send(u32 connection, u8 *buff, int bufflen);
00365 int glw_SendMsg(u32 connection, u8 type, u32 id, u8 *buff, int bufflen);
00366 u32 glw_htonl(u32 value);
00367 u32 glw_ntohl(u32 value);
00368
00369
00370 int glw_GetTerminalByteOrder(u32 connection);
00371 int glw_ReadTerm(u32 connection, u8 *buff, int len);
00372 int glw_SendTerm(u32 connection, u8 *buff, int len);
00373
00374
00375 glw_Dir_t *glw_DirOpen(char *path);
00376 void glw_DirClose(glw_Dir_t *dir);
00377 char *glw_DirNext(glw_Dir_t *dir);
00378
00379
00380 #endif