Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members
billboard.h
00001 /* 00002 Crystal Space Entity Layer 00003 Copyright (C) 2003 by Jorrit Tyberghein 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public 00016 License along with this library; if not, write to the Free 00017 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 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 class csColor; 00030 class csVector2; 00031 00032 SCF_VERSION (iBillboardLayer, 0, 0, 1); 00033 00038 struct iBillboardLayer : public iBase 00039 { 00043 virtual void GetOffset (int& x, int& y) const = 0; 00044 00048 virtual void SetOffset (int x, int y) = 0; 00049 00053 virtual void Move (int dx, int dy) = 0; 00054 00058 virtual const char* GetName () const = 0; 00059 }; 00060 00067 struct iBillboardEventHandler : public virtual iBase 00068 { 00069 SCF_INTERFACE (iBillboardEventHandler, 0, 0, 1); 00070 00074 virtual void Select (iBillboard* billboard, int mouse_button, 00075 int mousex, int mousey) = 0; 00076 00080 virtual void MouseMove (iBillboard* billboard, int mouse_button, 00081 int mousex, int mousey) = 0; 00082 00086 virtual void Unselect (iBillboard* billboard, int mouse_button, 00087 int mousex, int mousey) = 0; 00088 00092 virtual void DoubleClick (iBillboard* billboard, int mouse_button, 00093 int mousex, int mousey) = 0; 00094 }; 00095 00096 00100 #define CEL_BILLBOARD_VISIBLE 1 00101 00104 #define CEL_BILLBOARD_MOVABLE 2 00105 00109 #define CEL_BILLBOARD_CLICKABLE 4 00110 00114 #define CEL_BILLBOARD_RESTACK 8 00115 00116 SCF_VERSION (iBillboard, 0, 0, 1); 00117 00127 struct iBillboard : public iBase 00128 { 00132 virtual const char* GetName () const = 0; 00133 00137 virtual csFlags& GetFlags () = 0; 00138 00142 virtual bool SetMaterialName (const char* matname) = 0; 00143 00149 virtual bool SetMaterialNameFast (const char* matname) = 0; 00150 00154 virtual const char* GetMaterialName () = 0; 00155 00159 virtual void SetSize (int w, int h) = 0; 00160 00164 virtual void GetSize (int& w, int& h) = 0; 00165 00169 virtual void GetImageSize (int& w, int& h) = 0; 00170 00175 virtual void SetPosition (int x, int y) = 0; 00176 00185 virtual void MoveToPosition (csTicks delta, int x, int y) = 0; 00186 00191 virtual void GetPosition (int& x, int& y) const = 0; 00192 00197 virtual void Move (int dx, int dy) = 0; 00198 00202 virtual void StackTop () = 0; 00203 00207 virtual void StackBottom () = 0; 00208 00212 virtual void StackUp () = 0; 00213 00217 virtual void StackDown () = 0; 00218 00223 virtual void SetUVTopLeft (const csVector2& uv) = 0; 00224 00229 virtual const csVector2& GetUVTopLeft () const = 0; 00230 00235 virtual void SetUVBottomRight (const csVector2& uv) = 0; 00236 00241 virtual const csVector2& GetUVBottomRight () const = 0; 00242 00246 virtual void SetColor (const csColor& c) = 0; 00247 00251 virtual const csColor& GetColor () const = 0; 00252 00256 virtual void SetLayer (iBillboardLayer* layer) = 0; 00257 00261 virtual iBillboardLayer* GetLayer () const = 0; 00262 00266 virtual void AddEventHandler (iBillboardEventHandler* evh) = 0; 00267 00271 virtual void RemoveEventHandler (iBillboardEventHandler* evh) = 0; 00272 }; 00273 00274 SCF_VERSION (iBillboardManager, 0, 0, 1); 00275 00280 struct iBillboardManager : public iBase 00281 { 00286 virtual iBillboard* CreateBillboard (const char* name) = 0; 00287 00291 virtual iBillboard* FindBillboard (const char* name) const = 0; 00292 00296 virtual void RemoveBillboard (iBillboard* billboard) = 0; 00297 00301 virtual size_t GetBillboardCount () const = 0; 00302 00306 virtual iBillboard* GetBillboard (size_t idx) const = 0; 00307 00313 virtual iBillboardLayer* CreateBillboardLayer (const char* name) = 0; 00314 00318 virtual iBillboardLayer* FindBillboardLayer (const char* name) const = 0; 00319 00325 virtual void RemoveBillboardLayer (iBillboardLayer* layer) = 0; 00326 00330 virtual size_t GetBillboardLayerCount () const = 0; 00331 00335 virtual iBillboardLayer* GetBillboardLayer (size_t idx) const = 0; 00336 00340 virtual void RemoveAll () = 0; 00341 00345 virtual void SetFlags (uint32 flags, uint32 mask) = 0; 00346 00350 virtual void StackTop (iBillboard* bb) = 0; 00351 00355 virtual void StackBottom (iBillboard* bb) = 0; 00356 00360 virtual void StackUp (iBillboard* bb) = 0; 00361 00365 virtual void StackDown (iBillboard* bb) = 0; 00366 00370 virtual void StackBefore (iBillboard* bb, iBillboard* other) = 0; 00371 00375 virtual void StackAfter (iBillboard* bb, iBillboard* other) = 0; 00376 00381 virtual bool TestCollision (iBillboard* bb1, iBillboard* bb2) = 0; 00382 }; 00383 00384 #endif // __CEL_MGR_BILLBOARD__ 00385
Generated for CEL: Crystal Entity Layer by doxygen 1.4.4