00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CEL_MGR_BILLBOARD__
00021 #define __CEL_MGR_BILLBOARD__
00022
00023 #include "cstypes.h"
00024 #include "csutil/scf.h"
00025 #include "csutil/flags.h"
00026
00027 struct iImage;
00028 struct iBillboard;
00029 struct iSector;
00030 class csColor;
00031 class csVector2;
00032
00037 struct iBillboardLayer : public virtual iBase
00038 {
00039 SCF_INTERFACE (iBillboardLayer, 0, 0, 1);
00040
00044 virtual void GetOffset (int& x, int& y) const = 0;
00045
00049 virtual void SetOffset (int x, int y) = 0;
00050
00054 virtual void Move (int dx, int dy) = 0;
00055
00059 virtual const char* GetName () const = 0;
00060 };
00061
00068 struct iBillboardEventHandler : public virtual iBase
00069 {
00070 SCF_INTERFACE (iBillboardEventHandler, 0, 0, 1);
00071
00075 virtual void Select (iBillboard* billboard, int mouse_button,
00076 int mousex, int mousey) = 0;
00077
00081 virtual void MouseMove (iBillboard* billboard, int mouse_button,
00082 int mousex, int mousey) = 0;
00083
00087 virtual void MouseMoveAway (iBillboard* billboard, int mouse_button,
00088 int mousex, int mousey) = 0;
00089
00093 virtual void Unselect (iBillboard* billboard, int mouse_button,
00094 int mousex, int mousey) = 0;
00095
00099 virtual void DoubleClick (iBillboard* billboard, int mouse_button,
00100 int mousex, int mousey) = 0;
00101 };
00102
00103
00107 #define CEL_BILLBOARD_VISIBLE 1
00108
00111 #define CEL_BILLBOARD_MOVABLE 2
00112
00116 #define CEL_BILLBOARD_CLICKABLE 4
00117
00121 #define CEL_BILLBOARD_RESTACK 8
00122
00126 #define CEL_BILLBOARD_SENDMOVE 16
00127
00137 struct iBillboard : public virtual iBase
00138 {
00139 SCF_INTERFACE (iBillboard, 1, 0, 0);
00140
00144 virtual const char* GetName () const = 0;
00145
00149 virtual csFlags& GetFlags () = 0;
00150
00156 virtual bool SetMaterialName (const char* matname) = 0;
00157
00163 virtual bool SetMaterialNameFast (const char* matname) = 0;
00164
00168 virtual const char* GetMaterialName () = 0;
00169
00186 virtual bool DrawMesh (const char* material_name,
00187 const char* factory, const csVector3& rotate = csVector3 (0, 0, 0),
00188 float angle = 0.0f, float distance = -1.0f) = 0;
00189
00193 virtual void SetSize (int w, int h) = 0;
00194
00198 virtual void GetSize (int& w, int& h) = 0;
00199
00203 virtual void GetImageSize (int& w, int& h) = 0;
00204
00209 virtual void SetPosition (int x, int y) = 0;
00210
00219 virtual void MoveToPosition (csTicks delta, int x, int y) = 0;
00220
00225 virtual void GetPosition (int& x, int& y) const = 0;
00226
00231 virtual void Move (int dx, int dy) = 0;
00232
00236 virtual void SetRotation (float angle) = 0;
00237
00241 virtual float GetRotation () const = 0;
00242
00246 virtual void StackTop () = 0;
00247
00251 virtual void StackBottom () = 0;
00252
00256 virtual void StackAfter (iBillboard *other) = 0;
00257
00261 virtual void StackBefore (iBillboard *other) = 0;
00262
00266 virtual void StackUp () = 0;
00267
00271 virtual void StackDown () = 0;
00272
00277 virtual void SetUVTopLeft (const csVector2& uv) = 0;
00278
00283 virtual const csVector2& GetUVTopLeft () const = 0;
00284
00289 virtual void SetUVBottomRight (const csVector2& uv) = 0;
00290
00295 virtual const csVector2& GetUVBottomRight () const = 0;
00296
00300 virtual void SetColor (const csColor& c) = 0;
00301
00305 virtual const csColor& GetColor () const = 0;
00306
00310 virtual void SetLayer (iBillboardLayer* layer) = 0;
00311
00315 virtual iBillboardLayer* GetLayer () const = 0;
00316
00320 virtual void AddEventHandler (iBillboardEventHandler* evh) = 0;
00321
00325 virtual void RemoveEventHandler (iBillboardEventHandler* evh) = 0;
00326
00331 virtual void SetText (const char* txt) = 0;
00332
00336 virtual const char* GetText () const = 0;
00337
00341 virtual void GetTextDimensions (int& w, int& h) = 0;
00342
00346 virtual void SetTextOffset (int dx, int dy) = 0;
00347
00351 virtual int GetTextOffsetDX () const = 0;
00352
00356 virtual int GetTextOffsetDY () const = 0;
00357
00361 virtual bool SetTextFont (const char* fontname, float fontsize) = 0;
00362
00366 virtual const char* GetTextFont () const = 0;
00367
00371 virtual float GetTextFontSize () const = 0;
00372
00377 virtual void SetTextFgColor (const csColor& color) = 0;
00378
00382 virtual const csColor& GetTextFgColor () const = 0;
00383
00388 virtual void ClearTextFgColor () = 0;
00389
00394 virtual void SetTextBgColor (const csColor& color) = 0;
00395
00399 virtual const csColor& GetTextBgColor () const = 0;
00400
00405 virtual void SetTextBgTransparent () = 0;
00406
00410 virtual bool IsTextBgTransparent () const = 0;
00411
00416 virtual void ClearTextBgColor () = 0;
00417 };
00418
00423 struct iBillboardManager : public virtual iBase
00424 {
00425 SCF_INTERFACE (iBillboardManager, 0, 0, 1);
00426
00430 virtual int ScreenToBillboardX (int x) const = 0;
00431
00435 virtual int ScreenToBillboardY (int y) const = 0;
00436
00440 virtual int BillboardToScreenX (int x) const = 0;
00441
00445 virtual int BillboardToScreenY (int y) const = 0;
00446
00451 virtual iBillboard* CreateBillboard (const char* name) = 0;
00452
00456 virtual iBillboard* FindBillboard (const char* name) const = 0;
00457
00461 virtual void RemoveBillboard (iBillboard* billboard) = 0;
00462
00466 virtual size_t GetBillboardCount () const = 0;
00467
00471 virtual iBillboard* GetBillboard (size_t idx) const = 0;
00472
00478 virtual iBillboardLayer* CreateBillboardLayer (const char* name) = 0;
00479
00483 virtual iBillboardLayer* FindBillboardLayer (const char* name) const = 0;
00484
00490 virtual void RemoveBillboardLayer (iBillboardLayer* layer) = 0;
00491
00495 virtual size_t GetBillboardLayerCount () const = 0;
00496
00500 virtual iBillboardLayer* GetBillboardLayer (size_t idx) const = 0;
00501
00505 virtual void RemoveAll () = 0;
00506
00510 virtual void SetFlags (uint32 flags, uint32 mask) = 0;
00511
00515 virtual void StackTop (iBillboard* bb) = 0;
00516
00520 virtual void StackBottom (iBillboard* bb) = 0;
00521
00525 virtual void StackUp (iBillboard* bb) = 0;
00526
00530 virtual void StackDown (iBillboard* bb) = 0;
00531
00535 virtual void StackBefore (iBillboard* bb, iBillboard* other) = 0;
00536
00540 virtual void StackAfter (iBillboard* bb, iBillboard* other) = 0;
00541
00546 virtual bool TestCollision (iBillboard* bb1, iBillboard* bb2) = 0;
00547
00551 virtual bool SetDefaultTextFont (const char* fontname, float fontsize) = 0;
00552
00556 virtual const char* GetDefaultTextFont () const = 0;
00557
00561 virtual float GetDefaultTextFontSize () const = 0;
00562
00566 virtual void SetDefaultTextFgColor (const csColor& color) = 0;
00567
00571 virtual const csColor& GetDefaultTextFgColor () const = 0;
00572
00576 virtual void SetDefaultTextBgColor (const csColor& color) = 0;
00577
00581 virtual const csColor& GetDefaultTextBgColor () const = 0;
00582
00586 virtual void SetDefaultTextBgTransparent () = 0;
00587
00596 virtual iSector* GetShowroom () = 0;
00597 };
00598
00599 #endif // __CEL_MGR_BILLBOARD__
00600