ivaria/blobs.h
Go to the documentation of this file.00001 /* 00002 Copyright (C) 2012 by Jorrit Tyberghein 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public 00015 License along with this library; if not, write to the Free 00016 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00017 */ 00018 00019 #ifndef __CS_IVARIA_BLOBS_H__ 00020 #define __CS_IVARIA_BLOBS_H__ 00021 00026 #include "csutil/cscolor.h" 00027 #include "csutil/scf_interface.h" 00028 #include "igraphic/image.h" 00029 00030 struct iFont; 00031 00032 struct iBlobViewPort; 00033 00039 struct iImageModifier : public virtual iBase 00040 { 00041 SCF_INTERFACE (iImageModifier, 1, 0, 0); 00042 virtual const char* GetName () const = 0; 00043 virtual csRef<iImage> Modify (iImage* source) = 0; 00044 }; 00045 00050 struct iBlobImage : public virtual iBase 00051 { 00052 SCF_INTERFACE (iBlobImage, 1, 0, 0); 00053 }; 00054 00059 struct iMovingObject : public virtual iBase 00060 { 00061 SCF_INTERFACE (iMovingObject, 1, 0, 0); 00062 00064 virtual void SetViewPort (iBlobViewPort* viewport) = 0; 00065 virtual iBlobViewPort* GetViewPort () = 0; 00066 00068 virtual uint32 GetID () const = 0; 00069 virtual const char* GetName () const = 0; 00070 00077 virtual int GetLayer () const = 0; 00078 00083 virtual void Update (csTicks elapsed) = 0; 00087 virtual void Draw () = 0; 00088 00090 virtual void Move (int x, int y) = 0; 00092 virtual void Scale (int w, int h) = 0; 00094 virtual bool In (int x, int y) = 0; 00095 virtual int GetX () const = 0; 00096 virtual int GetY () const = 0; 00097 virtual int GetWidth () const = 0; 00098 virtual int GetHeight () const = 0; 00099 virtual int GetRealX () = 0; 00100 virtual int GetRealY () = 0; 00101 00102 virtual void Hide () = 0; 00103 virtual void Show () = 0; 00104 virtual bool IsHidden () const = 0; 00105 00109 virtual void SetClickable (bool click) = 0; 00110 virtual bool IsClickable () const = 0; 00111 00115 virtual void SetLineMover (int x1, int y1, int x2, int y2, csTicks totaltime) = 0; 00116 00121 virtual void SetPathMover (int start_x, int start_y) = 0; 00125 virtual void AddPathSegment (int x, int y, csTicks segmenttime) = 0; 00126 }; 00127 00132 struct iGeom : public virtual iMovingObject 00133 { 00134 SCF_INTERFACE (iGeom, 1, 0, 0); 00135 00137 virtual uint32 Box (int x, int y, int w, int h, int color) = 0; 00138 virtual uint32 Line (int x1, int y1, int x2, int y2, int color) = 0; 00139 virtual uint32 Text (int x, int y, int fg, int bg, const char* text) = 0; 00140 virtual uint32 Blob (int x, int y, const char* name) = 0; 00141 00142 virtual void Remove (uint32 id) = 0; 00143 00144 virtual void ChangeColor (uint32 id, int color) = 0; 00145 virtual void ChangeText (uint32 id, const char* text) = 0; 00146 virtual void ChangeBlobImage (uint32 id, const char* name) = 0; 00147 virtual void ScaleGeom (uint32 id, int w, int h) = 0; 00148 virtual int GetGeomWidth (uint32 id) = 0; 00149 virtual int GetGeomHeight (uint32 id) = 0; 00150 }; 00151 00156 struct iBlob : public virtual iMovingObject 00157 { 00158 SCF_INTERFACE (iBlob, 1, 0, 0); 00159 00165 virtual void AddImage (const char* tag, const char* name, size_t index = 100000, 00166 int offsetx = 0, int offsety = 0, int w = 0, int h = 0) = 0; 00170 virtual void RemoveSecondaryImages () = 0; 00171 00175 virtual void SetModifier (iImageModifier* modifier) = 0; 00176 virtual void ClearModifier () = 0; 00177 00179 virtual void SetAlpha (float alpha) = 0; 00181 virtual void AnimateAlpha (float destalpha, csTicks ticks) = 0; 00182 00184 virtual void SetHorizontalSwap (bool sw, const char* tag) = 0; 00185 00189 virtual void AddAnimationImage (const char* animname, const char* image) = 0; 00196 virtual csTicks PlayAnimation (const char* animname, bool loop, 00197 bool remain = false, csTicks delay = 200) = 0; 00201 virtual void StopAnimations () = 0; 00202 }; 00203 00210 struct iBlobViewPort : public virtual iBase 00211 { 00212 SCF_INTERFACE (iBlobViewPort, 1, 0, 0); 00213 00219 virtual void SetScrollSpeed (float factor) = 0; 00220 virtual float GetScrollSpeed () const = 0; 00221 00222 virtual bool Scroll (int x, int y) = 0; 00223 virtual int GetScrollX () const = 0; 00224 virtual int GetScrollY () const = 0; 00225 virtual csTicks ScrollRelative (int dx, int dy) = 0; 00226 virtual csTicks ScrollVisible (int x, int y, int margin) = 0; 00227 virtual void ClearModifier () = 0; 00228 virtual void SetModifier (iImageModifier* modifier, int layer = -1) = 0; 00229 }; 00230 00234 struct iBlobManager : public virtual iBase 00235 { 00236 SCF_INTERFACE (iBlobManager, 1, 1, 0); 00237 00242 virtual void Update (csTicks current, csTicks elapsed) = 0; 00243 00245 virtual csPtr<iImageModifier> GetGrayScaleImageModifier ( 00246 const char* name) = 0; 00248 virtual csPtr<iImageModifier> GetColorizedImageModifier ( 00249 const char* name, const csColor4& mult, 00250 const csColor4& add) = 0; 00252 virtual csPtr<iImageModifier> GetBlurImageModifier ( 00253 const char* name) = 0; 00255 virtual csPtr<iImageModifier> GetCombinedImageModifier ( 00256 const char* name, 00257 iImageModifier* m1, iImageModifier* m2) = 0; 00258 00260 virtual void LoadTexture (const char* name, const char* filename) = 0; 00266 virtual void MapTexture (const char* bigtxt, const char* smalltxt, 00267 int x, int y, int w, int h) = 0; 00268 00269 virtual iBlobViewPort* CreateBlobViewPort (int x1, int y1, int x2, int y2) = 0; 00270 00272 virtual iMovingObject* FindMovingObject (int x, int y) = 0; 00273 00275 virtual iBlobImage* CreateBlobImage (const char* name, 00276 iImageModifier* modifier = 0, const char* filename = 0) = 0; 00277 virtual void RemoveBlobImage (iBlobImage* blobimage) = 0; 00278 virtual void RemoveBlobImages () = 0; 00279 virtual iBlobImage* FindBlobImage (const char* name) = 0; 00280 00286 virtual iBlob* CreateBlob (const char* name, int layer, const char* filename, 00287 iImageModifier* modifier) = 0; 00291 virtual iGeom* CreateGeom (int layer, int w, int h) = 0; 00292 virtual void RemoveMovingObject (iMovingObject* blob) = 0; 00293 virtual void RemoveMovingObjects () = 0; 00294 00298 virtual void MovingObjectToFront (iMovingObject* b) = 0; 00299 00303 virtual bool CheckCollision (iMovingObject* b1, iMovingObject* b2) = 0; 00304 00309 virtual iMovingObject* CheckCollision (iMovingObject* b) = 0; 00310 }; 00311 00312 #endif // __CS_IVARIA_BLOBS_H__ 00313
Generated for Crystal Space 2.1 by doxygen 1.6.1
