![]()
|
aws.h00001 #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 |