00001 #ifndef __IAWS_AWS_H__
00002 #define __IAWS_AWS_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "csutil/scf.h"
00022 #include "csgeom/csrect.h"
00023 #include "csgeom/cspoint.h"
00024 #include "iutil/string.h"
00025
00026 struct iAws;
00027 struct iAwsSlot;
00028 struct iAwsSink;
00029 struct iAwsSource;
00030 struct iAwsWindow;
00031 struct iAwsParmList;
00032 struct iAwsComponent;
00033 struct iAwsPrefManager;
00034 struct iAwsSinkManager;
00035 struct iAwsCanvas;
00036 struct iAwsKeyFactory;
00037 struct iAwsComponentFactory;
00038
00039 class awsWindow;
00040 class awsComponent;
00041 class awsComponentNode;
00042 class awsComponentFactory;
00043 class awsLayoutManager;
00044
00045 struct iGraphics2D;
00046 struct iGraphics3D;
00047 struct iEngine;
00048 struct iView;
00049 struct iTextureManager;
00050 struct iObjectRegistry;
00051 struct iTextureHandle;
00052 struct iFontServer;
00053 struct iFont;
00054 struct iEvent;
00055
00056 const bool aws_debug=false;
00057
00058
00063 const int AWSF_AlwaysEraseWindows=1;
00064
00071 const int AWSF_AlwaysRedrawWindows=2;
00072
00073
00074 SCF_VERSION (iAws, 0, 1, 0);
00075
00077 struct iAws : public iBase
00078 {
00079 public:
00081 virtual iAwsPrefManager *GetPrefMgr()=0;
00082
00084 virtual iAwsSinkManager *GetSinkMgr()=0;
00085
00087 virtual void SetPrefMgr(iAwsPrefManager *pmgr)=0;
00088
00090 virtual void RegisterComponentFactory(iAwsComponentFactory *factory, char *name)=0;
00091
00093 virtual iAwsComponentFactory *FindComponentFactory (char *name)=0;
00094
00096 virtual iAwsWindow *GetTopWindow()=0;
00097
00099 virtual void SetTopWindow(iAwsWindow *win)=0;
00100
00102 virtual void Print(iGraphics3D *g3d, uint8 Alpha=0)=0;
00103
00105 virtual void Redraw()=0;
00106
00108 virtual void Mark(csRect &rect)=0;
00109
00111 virtual void Unmark(csRect &rect)=0;
00112
00114 virtual void Erase(csRect &rect)=0;
00115
00117 virtual void MaskEraser(csRect &rect)=0;
00118
00120 virtual void InvalidateUpdateStore()=0;
00121
00123 virtual void CaptureMouse(iAwsComponent *comp)=0;
00124
00126 virtual void ReleaseMouse()=0;
00127
00129 virtual bool HandleEvent(iEvent&)=0;
00130
00132 virtual void SetCanvas(iAwsCanvas *newCanvas)=0;
00133
00135 virtual iAwsCanvas* GetCanvas()=0;
00136
00138 virtual iAwsCanvas *CreateDefaultCanvas(iEngine* engine, iTextureManager* txtmgr)=0;
00139
00141 virtual iAwsCanvas *CreateDefaultCanvas(iEngine* engine, iTextureManager* txtmgr,
00142 int width, int height, const char *name)=0;
00143
00145 virtual iAwsCanvas *CreateCustomCanvas(iGraphics2D *g2d, iGraphics3D *g3d)=0;
00146
00148 virtual iGraphics2D *G2D()=0;
00149
00151 virtual iGraphics3D *G3D()=0;
00152
00154 virtual iAwsWindow *CreateWindowFrom(char *defname)=0;
00155
00157 virtual iAwsComponent *CreateEmbeddableComponent()=0;
00158
00160 virtual iAwsParmList *CreateParmList()=0;
00161
00163 virtual void CreateTransition(iAwsWindow *win, unsigned transition_type, float step_size=0.1)=0;
00164
00166 virtual void CreateTransitionEx(iAwsWindow *win, unsigned transition_type, float step_size, csRect &user)=0;
00167
00169 virtual void SetFlag(unsigned int flags)=0;
00170
00172 virtual void ClearFlag(unsigned int flags)=0;
00173
00175 virtual unsigned int GetFlags()=0;
00176
00178 virtual iObjectRegistry *GetObjectRegistry ()=0;
00179
00181 virtual bool AllWindowsHidden()=0;
00182
00183 };
00184
00185
00186 SCF_VERSION (iAwsPrefManager, 0, 0, 1);
00187
00189 struct iAwsPrefManager : public iBase
00190 {
00191 public:
00193 virtual bool Setup(iObjectRegistry *object_reg)=0;
00194
00196 virtual bool Load(const char *def_file)=0;
00197
00199 virtual unsigned long NameToId(char *name)=0;
00200
00202 virtual bool SelectDefaultSkin(char *skin_name)=0;
00203
00205 virtual bool LookupIntKey(char *name, int &val)=0;
00206
00208 virtual bool LookupIntKey(unsigned long id, int &val)=0;
00209
00211 virtual bool LookupStringKey(char *name, iString *&val)=0;
00212
00214 virtual bool LookupStringKey(unsigned long id, iString *&val)=0;
00215
00217 virtual bool LookupRectKey(char *name, csRect &rect)=0;
00218
00220 virtual bool LookupRectKey(unsigned long id, csRect &rect)=0;
00221
00223 virtual bool LookupRGBKey(char *name, unsigned char &red, unsigned char &green, unsigned char &blue)=0;
00224
00226 virtual bool LookupRGBKey(unsigned long id, unsigned char &red, unsigned char &green, unsigned char &blue)=0;
00227
00229 virtual bool LookupPointKey(char *name, csPoint &point)=0;
00230
00232 virtual bool LookupPointKey(unsigned long id, csPoint &point)=0;
00233
00235 virtual bool GetInt(awsComponentNode *node, char *name, int &val)=0;
00236
00238 virtual bool GetRect(awsComponentNode *node, char *name, csRect &rect)=0;
00239
00241 virtual bool GetString(awsComponentNode *node, char *name, iString *&val)=0;
00242
00244 virtual awsComponentNode *FindWindowDef(char *name)=0;
00245
00247 virtual void SetColor(int index, int color)=0;
00248
00250 virtual int GetColor(int index)=0;
00251
00253 virtual int FindColor(unsigned char r, unsigned char g, unsigned char b)=0;
00254
00256 virtual iFont *GetDefaultFont()=0;
00257
00259 virtual iFont *GetFont(char *filename)=0;
00260
00262 virtual iTextureHandle *GetTexture(char *name, char *filename=NULL)=0;
00263
00265 virtual void SetTextureManager(iTextureManager *txtmgr)=0;
00266
00268 virtual void SetFontServer(iFontServer *fntsvr)=0;
00269
00271 virtual void SetWindowMgr(iAws *wmgr)=0;
00272
00278 virtual void SetupPalette()=0;
00279
00281 virtual void RegisterConstant(char *name, int value)=0;
00282
00284 virtual bool ConstantExists(char *name)=0;
00285
00287 virtual int GetConstantValue(char *name)=0;
00288
00290 virtual iAwsKeyFactory *CreateKeyFactory()=0;
00291 };
00292
00293
00294 SCF_VERSION (iAwsSinkManager, 0, 0, 1);
00295
00297 struct iAwsSinkManager : public iBase
00298 {
00300 virtual void RegisterSink(char *name, iAwsSink *sink)=0;
00301
00303 virtual iAwsSink* FindSink(char *name)=0;
00304
00306 virtual iAwsSink *CreateSink(void *parm)=0;
00307 };
00308
00309
00310 SCF_VERSION (iAwsSink, 0, 0, 1);
00311
00313 struct iAwsSink : public iBase
00314 {
00316 virtual unsigned long GetTriggerID(char *name)=0;
00317
00319 virtual void HandleTrigger(int trigger_id, iAwsSource *source)=0;
00320
00322 virtual void RegisterTrigger(char *name, void (*Trigger)(void *, iAwsSource *))=0;
00323 };
00324
00325
00326 SCF_VERSION (iAwsSource, 0, 0, 1);
00327
00329 struct iAwsSource : public iBase
00330 {
00332 virtual iAwsComponent *GetComponent()=0;
00333
00335 virtual bool RegisterSlot(iAwsSlot *slot, unsigned long signal)=0;
00336
00338 virtual bool UnregisterSlot(iAwsSlot *slot, unsigned long signal)=0;
00339
00341 virtual void Broadcast(unsigned long signal)=0;
00342 };
00343
00344
00345 SCF_VERSION (iAwsSlot, 0, 0, 1);
00346
00348 struct iAwsSlot : public iBase
00349 {
00353 virtual void Connect(iAwsSource *source, unsigned long signal, iAwsSink *sink, unsigned long trigger)=0;
00354
00358 virtual void Disconnect(iAwsSource *source, unsigned long signal, iAwsSink *sink, unsigned long trigger)=0;
00359
00362 virtual void Emit(iAwsSource &source, unsigned long signal)=0;
00363 };
00364
00365
00366 SCF_VERSION (iAwsComponent, 0, 0, 1);
00367
00369 struct iAwsComponent : public iAwsSource
00370 {
00372 virtual bool Setup(iAws *wmgr, awsComponentNode *settings)=0;
00373
00375 virtual bool HandleEvent(iEvent& Event)=0;
00376
00378 virtual bool GetProperty(char *name, void **parm)=0;
00379
00381 virtual bool SetProperty(char *name, void *parm)=0;
00382
00384 virtual bool Execute(char *action, iAwsParmList &parmlist)=0;
00385
00387 virtual void Invalidate()=0;
00388
00390 virtual void Invalidate(csRect area)=0;
00391
00393 virtual csRect& Frame()=0;
00394
00396 virtual char *Type()=0;
00397
00399 virtual void SetFlag(unsigned int flag)=0;
00400
00402 virtual void ClearFlag(unsigned int flag)=0;
00403
00405 virtual unsigned int Flags()=0;
00406
00408 virtual iAws *WindowManager ()=0;
00409
00411 virtual iAwsWindow *Window()=0;
00412
00414 virtual iAwsComponent *Parent()=0;
00415
00417 virtual awsLayoutManager *Layout()=0;
00418
00420 virtual void SetWindow(iAwsWindow *win)=0;
00421
00423 virtual void SetParent(iAwsComponent *parent)=0;
00424
00426 virtual void SetLayout(awsLayoutManager *layout)=0;
00427
00429 virtual csRect getPreferredSize()=0;
00430
00432 virtual csRect getMinimumSize()=0;
00433
00435 virtual csRect getInsets()=0;
00436
00438 virtual bool Overlaps(csRect &r)=0;
00439
00441 virtual bool isHidden()=0;
00442
00444 virtual void Hide()=0;
00445
00447 virtual void Show()=0;
00448
00450 virtual bool isDeaf()=0;
00451
00453 virtual void SetDeaf (bool bDeaf)=0;
00454
00456 virtual unsigned long GetID()=0;
00457
00459 virtual void SetID(unsigned long _id)=0;
00460
00462 virtual void MoveChildren(int delta_x, int delta_y)=0;
00463
00465 virtual void AddChild(iAwsComponent* child, bool has_layout=false)=0;
00466
00468 virtual void RemoveChild(iAwsComponent *child)=0;
00469
00471 virtual int GetChildCount()=0;
00472
00474 virtual iAwsComponent *GetChildAt(int i)=0;
00475
00477 virtual bool HasChildren()=0;
00478
00480 virtual void OnDraw(csRect clip)=0;
00481
00483 virtual bool OnMouseDown(int button, int x, int y)=0;
00484
00486 virtual bool OnMouseUp(int button, int x, int y)=0;
00487
00489 virtual bool OnMouseMove(int button, int x, int y)=0;
00490
00492 virtual bool OnMouseClick(int button, int x, int y)=0;
00493
00495 virtual bool OnMouseDoubleClick(int button, int x, int y)=0;
00496
00498 virtual bool OnMouseExit()=0;
00499
00501 virtual bool OnMouseEnter()=0;
00502
00504 virtual bool OnKeypress(int key, int modifiers)=0;
00505
00507 virtual bool OnLostFocus()=0;
00508
00510 virtual bool OnGainFocus()=0;
00511
00513 virtual bool OnFrame()=0;
00514
00516 virtual void OnAdded()=0;
00517
00519 virtual void OnResized()=0;
00520 };
00521
00522
00523 SCF_VERSION (iAwsWindow, 0, 0, 1);
00524
00526 struct iAwsWindow : public iAwsComponent
00527 {
00528
00530 virtual char *Type()=0;
00531
00533 virtual void SetRedrawTag(unsigned int tag)=0;
00534
00536 virtual unsigned int RedrawTag()=0;
00537
00539 virtual void Raise()=0;
00540
00542 virtual void Lower()=0;
00543
00545 virtual iAwsWindow *WindowAbove()=0;
00546
00548 virtual iAwsWindow *WindowBelow()=0;
00549
00551 virtual void SetWindowAbove(iAwsWindow *win)=0;
00552
00554 virtual void SetWindowBelow(iAwsWindow *win)=0;
00555
00557 virtual bool Setup(iAws *_wmgr, awsComponentNode *settings)=0;
00558
00560 virtual void OnRaise()=0;
00561
00563 virtual void OnLower()=0;
00564
00566 virtual void SetEngineView(iView *_view)=0;
00567
00569 virtual iAwsComponent *FindChild(char *name)=0;
00570
00572 virtual void Move(int delta_x, int delta_y)=0;
00573
00575 virtual iView *GetEngineView()=0;
00576
00578 virtual csRect getPreferredSize()=0;
00579
00581 virtual csRect getMinimumSize()=0;
00582
00584 virtual csRect getInsets()=0;
00585 };
00586
00587
00588 SCF_VERSION (iAwsComponentFactory, 0, 0, 1);
00589
00591 struct iAwsComponentFactory : public iBase
00592 {
00594 virtual iAwsComponent *Create()=0;
00595
00597 virtual void Register(char *type)=0;
00598
00600 virtual void RegisterConstant(char *name, int value)=0;
00601 };
00602
00603
00604 SCF_VERSION (iAwsKeyFactory, 0, 0, 1);
00605
00607 struct iAwsKeyFactory : public iBase
00608 {
00610 virtual void Initialize(iString *name, iString *component_type)=0;
00612 virtual void AddToWindowList(iAwsPrefManager *pm)=0;
00614 virtual void AddFactory(iAwsKeyFactory *factory)=0;
00616 virtual void AddIntKey(iString *name, int v)=0;
00618 virtual void AddStringKey(iString *name, iString *v)=0;
00620 virtual void AddRectKey(iString *name, csRect v)=0;
00622 virtual void AddRGBKey(iString *name, unsigned char r, unsigned char g, unsigned char b)=0;
00624 virtual void AddPointKey(iString *name, csPoint v)=0;
00626 virtual void AddConnectionKey(iString *name, iAwsSink *s, unsigned long t, unsigned long sig)=0;
00627 };
00628
00629 #endif // __IAWS_AWS_H__