Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals  

Glw.h

Go to the documentation of this file.
00001 /*
00002  *    gui - [gega user interface] the flexible solution for user interface problems
00003  *    Copyright (C) 2002  Gergely Gati
00004  *
00005  *    This program is free software; you can redistribute it and/or modify
00006  *    it under the terms of the GNU General Public License as published by
00007  *    the Free Software Foundation; version 2 of the License.
00008  *
00009  *    This program is distributed in the hope that it will be useful,
00010  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *    GNU General Public License for more details.
00013  *
00014  *    You should have received a copy of the GNU General Public License
00015  *    along with this program; if not, write to the Free Software
00016  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00017  *
00018  *    Gergely Gati
00019  *      email:           g.gati@freemail.hu
00020  *      AIM screenname:  GatiGergely
00021  *      ICQ number:      93131690
00022  *
00023  */
00024 #ifndef __GLW_H
00025 #define __GLW_H
00026 
00027 /* low-level library */
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 // window flags
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;   // unix epoch
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 // GLWEV_ACTIVATION
00127 #define GLWEVD_ACTIVATE     1
00128 #define GLWEVD_INACTIVATE   2
00129 
00130 // GLWEV_MOUSEBUTTONS
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 // GLWEV_MOUSEMOVE
00139 #define GLWEVD_ABSOLUTE     1
00140 #define GLWEVD_DELTA        2
00141 
00142 // GLWEV_KEY
00143 #define GLWEVD_DOWN         1
00144 #define GLWEVD_UP           2
00145 
00146 // GLWEV_WINDOW
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 // GLWEV_SYSTEM
00156 #define GLWEVD_QUIT         1
00157 
00158 // GLWEV_MOUSEHOVER
00159 #define GLWEVD_ENTER        1
00160 #define GLWEVD_LEAVE        2
00161 
00162 
00163 // ResizeWindow() type
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 // prefs supprt - path types
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 // pointer types
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 //newly defined tags BEGIN
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 //newly defined tags END
00226 
00227 //Enum for calling BEGIN
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 //Enum for calling END
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 //Prototypes BEGIN
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 //Prototypes END
00323 
00324 // window handling (system)
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 u32 glw_GetWindowState(u32 firsttag, ...);
00344 u32 glw_GetWindowStateTL(tag *taglist);
00345 
00346 
00347 // event handling
00348 int glw_MainLoop(u32 connection, u32 userdata, u32 mask);   // SYS
00349 void glw_CloseApp(u32 connection);                          // SYS
00350 
00351 // prefs support
00352 //int glw_GetPath(int pathtype, char *appname, char *buf, int buflen);
00353 //int glw_GetPathLen(int pathtype, char *appname);
00354 
00355 u32 glw_OpenModule(char *name);
00356 void glw_CloseModule(u32 handle);
00357 
00358 #endif
00359 
00360 int glw_MainLoopCli(u32 connection, u32 userdata);
00361 
00362 // net support
00363 int glw_GetTerminalByteOrder(u32 conn);       // 1-big, 0-little endian
00364 u32 glw_GetConnection(u32 window);
00365 u32 glw_GetFontConnection(u32 font);
00366 int glw_Recv(u32 connection, u8 *buff, int bufflen);
00367 int glw_Send(u32 connection, u8 *buff, int bufflen);
00368 int glw_SendMsg(u32 connection, u8 type, u32 id, u8 *buff, int bufflen);
00369 u32 glw_htonl(u32 value);
00370 u32 glw_ntohl(u32 value);
00371 
00372 //Terminal handlers
00373 int glw_GetTerminalByteOrder(u32 connection);
00374 int glw_ReadTerm(u32 connection, u8 *buff, int len);
00375 int glw_SendTerm(u32 connection, u8 *buff, int len);
00376 
00377 //dir handling
00378 glw_Dir_t *glw_DirOpen(char *path);
00379 void glw_DirClose(glw_Dir_t *dir);
00380 char *glw_DirNext(glw_Dir_t *dir);
00381 
00382 
00383 #endif

Generated on Tue Jan 7 12:11:21 2003 for THEGUI by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002