00001
00018 #ifndef INC_MI32_STIPPLEMASK_H
00019 #define INC_MI32_STIPPLEMASK_H
00020
00021 #ifndef INC_MI32_STDDEFNS_H
00022 #include <mi32/stddefns.h>
00023 #endif
00024
00025
00026 class STIPPLEMASK {
00027 public:
00028
00030 STIPPLEMASK (
00031 ) : m_Data(0), m_SizeX(0), m_SizeY(0) { }
00032
00034 STIPPLEMASK (const STIPPLEMASK& rhs);
00035
00037 ~STIPPLEMASK ()
00038 { delete [] m_Data; }
00039
00041 STIPPLEMASK& operator= (const STIPPLEMASK& rhs);
00042
00044 void Clear ();
00045
00047 const bool* GetData () const
00048 { return (m_Data); }
00049
00051 const bool* GetDataY (
00052 INT32 y
00053 ) const {
00054 return (m_Data + (y % m_SizeY) * m_SizeX);
00055 }
00056
00058 UINT16 GetSizeX () const
00059 { return (m_SizeX); }
00060
00062 UINT16 GetSizeY () const
00063 { return (m_SizeY); }
00064
00066 bool IsDefined () const
00067 { return (m_Data != 0); }
00068
00070 void Set (
00071 UINT16 sizeX,
00072 UINT16 sizeY,
00073 const bool *mask
00074 );
00075
00077 void Set (
00078 UINT16 sizeX,
00079 UINT16 sizeY,
00080 const UINT8 *mask
00081 );
00082
00084 bool TestPoint (
00085 INT32 x,
00086 INT32 y
00087 ) const { return (m_Data[(y % m_SizeY) * m_SizeX + (x % m_SizeX)]); }
00088
00089 private:
00090 #ifndef GENERATING_DOXYGEN_OUTPUT
00091 bool *m_Data;
00092 UINT16 m_SizeX;
00093 UINT16 m_SizeY;
00094 #endif
00095 };
00096
00097 #endif // INC_MI32_STIPPLEMASK_H