Google

Main Page   Class Hierarchy   Compound List   File List   Compound Members  

aws.h

00001 #ifndef __IAWS_AWS_H__
00002 #define __IAWS_AWS_H__
00003 /**************************************************************************
00004     Copyright (C) 2001 by Christopher Nelson
00005 
00006     This library is free software; you can redistribute it and/or
00007     modify it under the terms of the GNU Library General Public
00008     License as published by the Free Software Foundation; either
00009     version 2 of the License, or (at your option) any later version.
00010 
00011     This library is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014     Library General Public License for more details.
00015 
00016     You should have received a copy of the GNU Library General Public
00017     License along with this library; if not, write to the Free
00018     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
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;  // set to true to turn on debugging printf's
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 iAwsWindow *Window()=0;
00409 
00411   virtual iAwsComponent *Parent()=0;
00412 
00414   virtual awsLayoutManager *Layout()=0;
00415 
00417   virtual void SetWindow(iAwsWindow *win)=0;
00418 
00420   virtual void SetParent(iAwsComponent *parent)=0;
00421 
00423   virtual void SetLayout(awsLayoutManager *layout)=0;
00424   
00426   virtual csRect getPreferredSize()=0;
00427 
00429   virtual csRect getMinimumSize()=0;
00430 
00432   virtual csRect getInsets()=0;
00433 
00435   virtual bool Overlaps(csRect &r)=0;
00436 
00438   virtual bool isHidden()=0;
00439 
00441   virtual void Hide()=0;
00442 
00444   virtual void Show()=0;
00445 
00447   virtual bool isDeaf()=0;
00448 
00450   virtual void SetDeaf (bool bDeaf)=0;
00451 
00453   virtual unsigned long GetID()=0;
00454 
00456   virtual void SetID(unsigned long _id)=0;
00457 
00459   virtual void MoveChildren(int delta_x, int delta_y)=0;
00460 
00462   virtual void AddChild(iAwsComponent* child, bool has_layout=false)=0;
00463 
00465   virtual void RemoveChild(iAwsComponent *child)=0;
00466 
00468   virtual int GetChildCount()=0;
00469 
00471   virtual iAwsComponent *GetChildAt(int i)=0;
00472 
00474   virtual bool HasChildren()=0;
00475 
00477   virtual void OnDraw(csRect clip)=0;
00478 
00480   virtual bool OnMouseDown(int button, int x, int y)=0;
00481 
00483   virtual bool OnMouseUp(int button, int x, int y)=0;
00484 
00486   virtual bool OnMouseMove(int button, int x, int y)=0;
00487 
00489   virtual bool OnMouseClick(int button, int x, int y)=0;
00490 
00492   virtual bool OnMouseDoubleClick(int button, int x, int y)=0;
00493 
00495   virtual bool OnMouseExit()=0;
00496 
00498   virtual bool OnMouseEnter()=0;
00499 
00501   virtual bool OnKeypress(int key, int modifiers)=0;
00502 
00504   virtual bool OnLostFocus()=0;
00505 
00507   virtual bool OnGainFocus()=0;
00508 
00510   virtual bool OnFrame()=0;
00511 
00513   virtual void OnAdded()=0;
00514 
00516   virtual void OnResized()=0;
00517 };
00518 
00519 
00520 SCF_VERSION (iAwsWindow, 0, 0, 1);
00521 
00523 struct iAwsWindow : public iAwsComponent
00524 {
00525 
00527   virtual char *Type()=0;
00528 
00530   virtual void SetRedrawTag(unsigned int tag)=0;
00531 
00533   virtual unsigned int RedrawTag()=0;
00534 
00536   virtual void Raise()=0;
00537 
00539   virtual void Lower()=0;
00540 
00542   virtual iAwsWindow *WindowAbove()=0;
00543 
00545   virtual iAwsWindow *WindowBelow()=0;
00546 
00548   virtual void SetWindowAbove(iAwsWindow *win)=0;
00549 
00551   virtual void SetWindowBelow(iAwsWindow *win)=0;
00552 
00554   virtual bool Setup(iAws *_wmgr, awsComponentNode *settings)=0;
00555 
00557   virtual void OnRaise()=0;
00558 
00560   virtual void OnLower()=0;
00561 
00563   virtual void SetEngineView(iView *_view)=0;
00564 
00566   virtual iAwsComponent *FindChild(char *name)=0;
00567 
00569   virtual void Move(int delta_x, int delta_y)=0;
00570 
00572   virtual iView *GetEngineView()=0;
00573 
00575   virtual csRect getPreferredSize()=0;
00576 
00578   virtual csRect getMinimumSize()=0;
00579 
00581   virtual csRect getInsets()=0;
00582 };
00583 
00584 
00585 SCF_VERSION (iAwsComponentFactory, 0, 0, 1);
00586 
00588 struct iAwsComponentFactory : public iBase
00589 {
00591   virtual iAwsComponent *Create()=0;
00592 
00594   virtual void Register(char *type)=0;
00595 
00597   virtual void RegisterConstant(char *name, int value)=0;
00598 };
00599 
00600 
00601 SCF_VERSION (iAwsKeyFactory, 0, 0, 1);
00602 
00604 struct iAwsKeyFactory : public iBase
00605 {
00607    virtual void Initialize(iString *name, iString *component_type)=0;
00609    virtual void AddToWindowList(iAwsPrefManager *pm)=0;
00611    virtual void AddFactory(iAwsKeyFactory *factory)=0;
00613    virtual void AddIntKey(iString *name, int v)=0;
00615    virtual void AddStringKey(iString *name, iString *v)=0;
00617    virtual void AddRectKey(iString *name, csRect v)=0;
00619    virtual void AddRGBKey(iString *name, unsigned char r, unsigned char g, unsigned char b)=0;
00621    virtual void AddPointKey(iString *name, csPoint v)=0;
00623    virtual void AddConnectionKey(iString *name, iAwsSink *s, unsigned long t, unsigned long sig)=0;
00624 };
00625 
00626 #endif // __IAWS_AWS_H__

Generated for Crystal Space by doxygen 1.2.5 written by Dimitri van Heesch, ©1997-2000