imesh/sprite2d.h Source File (Crystal Space 2.0 Public API Reference)

| ## Public API Reference

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

imesh/sprite2d.h
Go to the documentation of this file.

    00001 /*
    00002     Copyright (C) 2000 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_IMESH_SPRITE2D_H__
    00020 #define __CS_IMESH_SPRITE2D_H__
    00021
    00026 #include "iutil/array.h"
    00027 #include "csutil/scf.h"
    00028 #include "csutil/dirtyaccessarray.h"
    00029 #include "csutil/cscolor.h"
    00030 #include "csgeom/vector2.h"
    00031
    00035 struct iMaterialWrapper;
    00036
    00038 struct csSprite2DVertex
    00039 {
    00040   csVector2 pos;
    00041   csColor color_init;
    00042   csColor color;
    00043   float u, v;
    00044   bool operator== (const csSprite2DVertex& other)
    00045   {
    00046     return (pos == other.pos) && (color_init == other.color_init)
    00047       && (color == other.color) && (u == other.u) && (v == other.v);
    00048   }
    00049 };
    00050
    00051 struct iColoredVertices : public iArrayChangeAll<csSprite2DVertex>
    00052 {
    00053   SCF_IARRAYCHANGEALL_INTERFACE(iColoredVertices);
    00054 };
    00055
    00060 struct iSprite2DUVAnimationFrame : public virtual iBase
    00061 {
    00062   SCF_INTERFACE (iSprite2DUVAnimationFrame, 1, 0, 0);
    00063
    00067   virtual void SetName (const char *name) = 0;
    00068
    00072   virtual const char *GetName () const = 0;
    00073
    00077   virtual csVector2 &GetUVCoo (int idx) = 0;
    00078
    00082   virtual const csVector2 *GetUVCoo () = 0;
    00083
    00087   virtual int GetUVCount () = 0;
    00088
    00092   virtual void SetUV (int idx, float u, float v) = 0;
    00093
    00097   virtual void SetFrameData (const char *name, int duration, int num,
    00098         float *uv) = 0;
    00099
    00103   virtual void RemoveUV (int idx) = 0;
    00104
    00108   virtual int GetDuration () = 0;
    00109
    00113   virtual void SetDuration (int duration) = 0;
    00114 };
    00115
    00122 struct iSprite2DUVAnimation : public virtual iBase
    00123 {
    00124   SCF_INTERFACE (iSprite2DUVAnimation, 1, 0, 0);
    00125
    00129   virtual void SetName (const char *name) = 0;
    00130
    00134   virtual const char *GetName () const = 0;
    00135
    00139   virtual int GetFrameCount () = 0;
    00140
    00145   virtual iSprite2DUVAnimationFrame *GetFrame (int idx) = 0;
    00146
    00150   virtual iSprite2DUVAnimationFrame *GetFrame (const char *name) = 0;
    00151
    00156   virtual iSprite2DUVAnimationFrame *CreateFrame (int idx) = 0;
    00157
    00162   virtual void MoveFrame (int frame, int idx) = 0;
    00163
    00167   virtual void RemoveFrame (int idx) = 0;
    00168
    00169 };
    00170
    00174 struct iSprite2DFactoryState : public virtual iBase
    00175 {
    00176   SCF_INTERFACE (iSprite2DFactoryState, 1, 0, 0);
    00177
    00179   virtual iColoredVertices* GetVertices () = 0;
    00180
    00187   virtual void SetLighting (bool l) = 0;
    00188
    00190   virtual bool HasLighting () const = 0;
    00191
    00195   virtual int GetUVAnimationCount () const = 0;
    00196
    00200   virtual iSprite2DUVAnimation *CreateUVAnimation () = 0;
    00201
    00205   virtual void RemoveUVAnimation (iSprite2DUVAnimation *anim) = 0;
    00206
    00210   virtual iSprite2DUVAnimation *GetUVAnimation (const char *name) const = 0;
    00211
    00215   virtual iSprite2DUVAnimation *GetUVAnimation (int idx) const = 0;
    00216
    00217 };
    00218
    00223 struct iSprite2DState : public iSprite2DFactoryState
    00224 {
    00225   SCF_INTERFACE (iSprite2DState, 1, 1, 1);
    00226
    00232   virtual iColoredVertices* GetVertices () = 0;
    00233
    00239   virtual void CreateRegularVertices (int n, bool setuv) = 0;
    00240
    00252   virtual void SetUVAnimation (const char *name, int style, bool loop) = 0;
    00253
    00257   virtual iSprite2DUVAnimation *GetUVAnimation (const char *name) const = 0;
    00258
    00262   virtual iSprite2DUVAnimation *GetUVAnimation (int idx) const = 0;
    00263
    00267   virtual iSprite2DUVAnimation *GetUVAnimation (int idx, int &style,
    00268                                                 bool &loop) const = 0;
    00269
    00274   virtual void StopUVAnimation (int idx) = 0;
    00275
    00287   virtual void PlayUVAnimation (int idx, int style, bool loop) = 0;
    00288
    00295   virtual void EnsureVertexCopy () = 0;
    00296 };
    00297
    00300 #endif // __CS_IMESH_SPRITE2D_H__
    00301