Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cSpriteMap.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cSpriteMap_H
7 #define _INC_cSpriteMap_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "cSurface.h"
13 #include "../Geometry/cRectI.h"
14 
15 namespace GrayLib
16 {
18 
20  {
32 
33  public:
34  typedef int ELEM_t;
35 
36  private:
37  cWinSize m_SizeEx;
38  cArrayVal<cRectI> m_aRects;
39 
40  cStringF m_sTextureFile;
41 
42  public:
43  enum P_TYPE_
44  {
45 #define cSpriteMapProp(a,b,c) P_##a,
46 #include "cSpriteMapProps.tbl"
47 #undef cSpriteMapProp
49  };
50  static const char* sm_Props[P_QTY + 1];
51 
52  public:
53  cSpriteMap() noexcept;
54  virtual ~cSpriteMap();
55 
56  ELEM_t get_ElemQty() const noexcept
57  {
58  return (ELEM_t)m_aRects.GetSize();
59  }
60  void ClearMap()
61  {
62  m_aRects.RemoveAll();
63  }
64 
65  virtual HRESULT put_TextureName(cStringF sFileName);
66 
67  const cRectI& GetElemRectX(ELEM_t nElem) const noexcept
68  {
70  DEBUG_CHECK(m_aRects.IsValidIndex(nElem));
71  return m_aRects[nElem];
72  }
73 
74  cRectI GetElemRect(ELEM_t nElem) const;
75  bool SetElemRect(ELEM_t nElem, cRectI rect);
76 
77  cWinSize GetElemSize(ELEM_t nElem) const noexcept
78  {
79  return GetElemRectX(nElem).get_RectSize();
80  }
81  PIXELS_t GetElemWidth(ELEM_t nElem) const noexcept
82  {
83  return GetElemRectX(nElem).Width();
84  }
85  PIXELS_t GetElemHeight(ELEM_t nElem) const noexcept
86  {
87  return GetElemRectX(nElem).Height();
88  }
89 
90  bool SetGrid(int nx, int ny, PIXELS_t cx, PIXELS_t cy);
91 
92  virtual HRESULT LoadMapProp(cStringA sKey, const cVariant& vArgs, const char** ppEnumTags, size_t nEnumTagSize = sizeof(char*));
93 
94  HRESULT ReadMapScript(const FILECHAR_t* pszMapScript, const char** ppEnumTags = nullptr, size_t nSizeEnumElem = sizeof(char*));
95  HRESULT ReadMapHTML(const FILECHAR_t* pszMapFile, const char** ppEnumTags = nullptr, size_t nSizeEnumElem = sizeof(char*));
96 
98  };
99 }
100 
101 #endif
102 
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define DEBUG_CHECK(exp)
Definition: cDebugAssert.h:90
Definition: cRectI.h:22
Definition: cSpriteMap.h:20
void ClearMap()
Definition: cSpriteMap.h:60
cWinSize GetElemSize(ELEM_t nElem) const noexcept
Definition: cSpriteMap.h:77
P_TYPE_
Definition: cSpriteMap.h:44
@ P_QTY
Definition: cSpriteMap.h:48
PIXELS_t GetElemWidth(ELEM_t nElem) const noexcept
Definition: cSpriteMap.h:81
UNITTEST_FRIEND(cSpriteMap)
const cRectI & GetElemRectX(ELEM_t nElem) const noexcept
Definition: cSpriteMap.h:67
PIXELS_t GetElemHeight(ELEM_t nElem) const noexcept
Definition: cSpriteMap.h:85
int ELEM_t
what element/icon number of this sprite map?
Definition: cSpriteMap.h:34
Definition: cVariant.h:26
Definition: WinTypes.h:128
void RemoveAll()
Clean up.
Definition: cArray.h:230
ITERATE_t GetSize() const noexcept
Definition: cArray.h:137
bool IsValidIndex(ITERATE_t i) const noexcept
Definition: cArray.h:495
Definition: cArray.h:914
Definition: cMesh.h:22
UNITTEST2_PREDEF(cQuadtree)
interface const RECTQ_t & rect
Definition: cQuadtree.h:44
int PIXELS_t
Count of pixels in a dimension of some image/surface.
Definition: cSurfaceInfo.h:20
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22