00001 #ifndef __IVARIA_AWS_H__
00002 #define __IVARIA_AWS_H__
00003
00004 #include "csutil/scf.h"
00005 #include "csgeom/csrect.h"
00006 #include "csgeom/cspoint.h"
00007 #include "iutil/string.h"
00008
00009 struct iAws;
00010 struct iAwsSlot;
00011 struct iAwsSink;
00012 struct iAwsSource;
00013 struct iAwsComponent;
00014 struct iAwsWindow;
00015 struct iAwsPrefManager;
00016 struct iAwsSinkManager;
00017
00018 class awsWindow;
00019 class awsComponent;
00020 class awsComponentNode;
00021 class awsComponentFactory;
00022
00023 struct iGraphics2D;
00024 struct iGraphics3D;
00025 struct iEngine;
00026 struct iTextureManager;
00027 struct iObjectRegistry;
00028 struct iTextureHandle;
00029 struct iFontServer;
00030 struct iFont;
00031 struct iEvent;
00032
00033 const bool aws_debug=false;
00034
00035
00036 SCF_VERSION (iAws, 0, 0, 1);
00037
00038 struct iAws : public iBase
00039 {
00040 public:
00042 virtual iAwsPrefManager *GetPrefMgr()=0;
00043
00045 virtual iAwsSinkManager *GetSinkMgr()=0;
00046
00048 virtual void SetPrefMgr(iAwsPrefManager *pmgr)=0;
00049
00051 virtual void RegisterComponentFactory(awsComponentFactory *factory, char *name)=0;
00052
00054 virtual iAwsWindow *GetTopWindow()=0;
00055
00057 virtual void SetTopWindow(iAwsWindow *win)=0;
00058
00060 virtual void Print(iGraphics3D *g3d)=0;
00061
00063 virtual void Redraw()=0;
00064
00066 virtual void Mark(csRect &rect)=0;
00067
00069 virtual void Unmark(csRect &rect)=0;
00070
00072 virtual void InvalidateUpdateStore()=0;
00073
00075 virtual void CaptureMouse()=0;
00076
00078 virtual void ReleaseMouse()=0;
00079
00081 virtual bool HandleEvent(iEvent&)=0;
00082
00084 virtual void SetContext(iGraphics2D *g2d, iGraphics3D *g3d)=0;
00085
00087 virtual void SetDefaultContext(iEngine* engine, iTextureManager* txtmgr)=0;
00088
00090 virtual iGraphics2D *G2D()=0;
00091
00093 virtual iGraphics3D *G3D()=0;
00094
00096 virtual iAwsWindow *CreateWindowFrom(char *defname)=0;
00097
00098 };
00099
00100
00101 SCF_VERSION (iAwsPrefManager, 0, 0, 1);
00102
00103 struct iAwsPrefManager : public iBase
00104 {
00105 public:
00106
00108 virtual void Setup(iObjectRegistry *object_reg)=0;
00109
00111 virtual void Load(const char *def_file)=0;
00112
00114 virtual unsigned long NameToId(char *name)=0;
00115
00117 virtual bool SelectDefaultSkin(char *skin_name)=0;
00118
00120 virtual bool LookupIntKey(char *name, int &val)=0;
00121
00123 virtual bool LookupIntKey(unsigned long id, int &val)=0;
00124
00126 virtual bool LookupStringKey(char *name, iString *&val)=0;
00127
00129 virtual bool LookupStringKey(unsigned long id, iString *&val)=0;
00130
00132 virtual bool LookupRectKey(char *name, csRect &rect)=0;
00133
00135 virtual bool LookupRectKey(unsigned long id, csRect &rect)=0;
00136
00138 virtual bool LookupRGBKey(char *name, unsigned char &red, unsigned char &green, unsigned char &blue)=0;
00139
00141 virtual bool LookupRGBKey(unsigned long id, unsigned char &red, unsigned char &green, unsigned char &blue)=0;
00142
00144 virtual bool LookupPointKey(char *name, csPoint &point)=0;
00145
00147 virtual bool LookupPointKey(unsigned long id, csPoint &point)=0;
00148
00150 virtual bool GetInt(awsComponentNode *node, char *name, int &val)=0;
00151
00153 virtual bool GetRect(awsComponentNode *node, char *name, csRect &rect)=0;
00154
00156 virtual bool GetString(awsComponentNode *node, char *name, iString *&val)=0;
00157
00159 virtual awsComponentNode *FindWindowDef(char *name)=0;
00160
00162 virtual void SetColor(int index, int color)=0;
00163
00165 virtual int GetColor(int index)=0;
00166
00168 virtual iFont *GetDefaultFont()=0;
00169
00171 virtual iFont *GetFont(char *filename)=0;
00172
00174 virtual iTextureHandle *GetTexture(char *name, char *filename=NULL)=0;
00175
00177 virtual void SetTextureManager(iTextureManager *txtmgr)=0;
00178
00180 virtual void SetFontServer(iFontServer *fntsvr)=0;
00181
00183 virtual void SetWindowMgr(iAws *wmgr)=0;
00184
00190 virtual void SetupPalette()=0;
00191
00193 virtual void RegisterConstant(char *name, int value)=0;
00194
00196 virtual bool ConstantExists(char *name)=0;
00197
00199 virtual int GetConstantValue(char *name)=0;
00200
00201 };
00202
00203 SCF_VERSION (iAwsSinkManager, 0, 0, 1);
00204
00205 struct iAwsSinkManager : public iBase
00206 {
00208 virtual void RegisterSink(char *name, iAwsSink *sink)=0;
00209
00211 virtual iAwsSink* FindSink(char *name)=0;
00212
00214 virtual iAwsSink *CreateSink(void *parm)=0;
00215 };
00216
00217 SCF_VERSION (iAwsSink, 0, 0, 1);
00218
00219 struct iAwsSink : public iBase
00220 {
00222 virtual unsigned long GetTriggerID(char *name)=0;
00223
00225 virtual void HandleTrigger(int trigger_id, iAwsSource *source)=0;
00226
00228 virtual void RegisterTrigger(char *name, void (*Trigger)(void *, iAwsSource *))=0;
00229 };
00230
00231
00232 SCF_VERSION (iAwsSource, 0, 0, 1);
00233
00234 struct iAwsSource : public iBase
00235 {
00237 virtual iAwsComponent *GetComponent()=0;
00238
00240 virtual bool RegisterSlot(iAwsSlot *slot, unsigned long signal)=0;
00241
00243 virtual bool UnregisterSlot(iAwsSlot *slot, unsigned long signal)=0;
00244
00246 virtual void Broadcast(unsigned long signal)=0;
00247 };
00248
00249
00250 SCF_VERSION (iAwsSlot, 0, 0, 1);
00251
00252 struct iAwsSlot : public iBase
00253 {
00254
00258 virtual void Connect(iAwsSource *source, unsigned long signal, iAwsSink *sink, unsigned long trigger)=0;
00259
00263 virtual void Disconnect(iAwsSource *source, unsigned long signal, iAwsSink *sink, unsigned long trigger)=0;
00264
00267 virtual void Emit(iAwsSource &source, unsigned long signal)=0;
00268 };
00269
00270
00271 SCF_VERSION (iAwsComponent, 0, 0, 1);
00272
00273 struct iAwsComponent : public iAwsSource
00274 {
00276 virtual bool Setup(iAws *wmgr, awsComponentNode *settings)=0;
00277
00279 virtual bool HandleEvent(iEvent& Event)=0;
00280
00282 virtual bool GetProperty(char *name, void **parm)=0;
00283
00285 virtual bool SetProperty(char *name, void *parm)=0;
00286
00288 virtual void Invalidate()=0;
00289
00291 virtual void Invalidate(csRect area)=0;
00292
00294 virtual csRect& Frame()=0;
00295
00297 virtual char *Type()=0;
00298
00300 virtual bool Overlaps(csRect &r)=0;
00301
00303 virtual bool isHidden()=0;
00304
00306 virtual void Hide()=0;
00307
00309 virtual void Show()=0;
00310
00312 virtual unsigned long GetID()=0;
00313
00315 virtual void SetID(unsigned long _id)=0;
00316
00318 virtual void MoveChildren(int delta_x, int delta_y)=0;
00319
00321 virtual void AddChild(iAwsComponent* child, bool owner=true)=0;
00322
00324 virtual void RemoveChild(iAwsComponent *child)=0;
00325
00327 virtual int GetChildCount()=0;
00328
00330 virtual iAwsComponent *GetChildAt(int i)=0;
00331
00333 virtual bool HasChildren()=0;
00334
00336 virtual void OnDraw(csRect clip)=0;
00337
00339 virtual bool OnMouseDown(int button, int x, int y)=0;
00340
00342 virtual bool OnMouseUp(int button, int x, int y)=0;
00343
00345 virtual bool OnMouseMove(int button, int x, int y)=0;
00346
00348 virtual bool OnMouseClick(int button, int x, int y)=0;
00349
00351 virtual bool OnMouseDoubleClick(int button, int x, int y)=0;
00352
00354 virtual bool OnMouseExit()=0;
00355
00357 virtual bool OnMouseEnter()=0;
00358
00360 virtual bool OnKeypress(int key, int modifiers)=0;
00361
00363 virtual bool OnLostFocus()=0;
00364
00366 virtual bool OnGainFocus()=0;
00367 };
00368
00369 SCF_VERSION (iAwsWindow, 0, 0, 1);
00370
00371 struct iAwsWindow : public iAwsComponent
00372 {
00374 virtual void SetRedrawTag(unsigned int tag)=0;
00375
00377 virtual unsigned int RedrawTag()=0;
00378
00380 virtual void Raise()=0;
00381
00383 virtual void Lower()=0;
00384
00386 virtual iAwsWindow *WindowAbove()=0;
00387
00389 virtual iAwsWindow *WindowBelow()=0;
00390
00392 virtual void SetWindowAbove(iAwsWindow *win)=0;
00393
00395 virtual void SetWindowBelow(iAwsWindow *win)=0;
00396
00398 virtual bool Setup(iAws *_wmgr, awsComponentNode *settings)=0;
00399
00401 virtual void OnRaise()=0;
00402
00404 virtual void OnLower()=0;
00405 };
00406
00407 SCF_VERSION (iAwsComponentFactory, 0, 0, 1);
00408
00409 struct iAwsComponentFactory : public iBase
00410 {
00412 virtual iAwsComponent *Create()=0;
00413
00415 virtual void Register(char *type)=0;
00416
00418 virtual void RegisterConstant(char *name, int value)=0;
00419 };
00420
00421
00422 #endif // __IVARIA_AWS_H__