27 #ifndef WINDOWSCANNER_H
28 #define WINDOWSCANNER_H
44 typedef typename CC::ATOM_TYPE T;
45 typedef typename CC::PARAM_CONFIG P;
46 enum { R = P::EVENT_WINDOW_RADIUS };
48 enum { W = P::TILE_WIDTH };
49 enum { B = P::ELEMENT_TABLE_BITS };
67 MOORE_NEIGHBORHOOD_SIZE = 8,
68 VON_NEUMANN_NEIGHBORHOOD_SIZE = 4
220 const Dir* neighborhood,
221 const u32 dirCount)
const;
266 const Dir* neighborhood,
267 const u32 dirCount)
const;
358 const u32 subCount,
SPoint& outPoint)
const;
379 const u32 subCount,
SPoint& outPoint)
const;
547 bool FindRandomAtomsInSubWindows(
const u32 count, ...)
const;
551 void FindRandomAtoms(
const u32 radius,
const u32 count, va_list& list)
const;
554 const Dir MooreNeighborhood[8] =
556 Dirs::NORTH, Dirs::NORTHEAST, Dirs::EAST, Dirs::SOUTHEAST,
557 Dirs::SOUTH, Dirs::SOUTHWEST, Dirs::WEST, Dirs::NORTHWEST
560 const Dir VonNeumannNeighborhood[4] =
562 Dirs::NORTH, Dirs::EAST, Dirs::SOUTH, Dirs::WEST
566 #include "WindowScanner.tcc"
u32 CountEmptyAtoms(const u32 radius) const
Definition: WindowScanner.tcc:102
bool CanSeeAtomOfType(const u32 type, const u32 radius) const
Definition: WindowScanner.tcc:55
u32 CountInNeighborhood(const u32 type, const Dir *neighborhood, const u32 dirCount) const
Definition: WindowScanner.tcc:144
bool IsBorderingVonNeumann(const u32 type) const
Definition: WindowScanner.tcc:136
u32 FindEmptyInSubWindow(const SPoint *subWindow, const u32 subCount, SPoint &outPoint) const
Definition: WindowScanner.tcc:240
bool FillIfEmpty(const SPoint &relative, const T &atom)
Definition: WindowScanner.tcc:49
WindowScanner(EventWindow< CC > &window)
Definition: WindowScanner.tcc:10
void FindRandomAtoms(const u32 radius, const u32 count,...) const
Definition: WindowScanner.tcc:319
u32 FindEmptyInVonNeumann(SPoint &outPoint) const
Definition: WindowScanner.tcc:311
bool IsBorderingMoore(const u32 type) const
Definition: WindowScanner.tcc:128
u32 FindRandomInVonNeumann(const u32 type, SPoint &outPoint) const
Definition: WindowScanner.tcc:294
u32 FindRandomInMoore(const u32 type, SPoint &outPoint) const
Definition: WindowScanner.tcc:285
u32 CountAtomsOfType(const u32 type, const u32 radius) const
Definition: WindowScanner.tcc:78
~WindowScanner()
Definition: WindowScanner.h:84
u32 FindRandomInSubWindow(const u32 type, const SPoint *subWindow, const u32 subCount, SPoint &outPoint) const
Definition: WindowScanner.tcc:218
Definition: ElementTable.h:43
u32 FindEmptyInMoore(SPoint &outPoint) const
Definition: WindowScanner.tcc:303
u32 FindRandomLocationOfType(const u32 type, SPoint &outPoint) const
Definition: WindowScanner.tcc:182
#define EVENT_WINDOW_SITES(radius)
Definition: MDist.h:46
Definition: WindowScanner.h:40
u32 CountMooreNeighbors(const u32 type) const
Definition: WindowScanner.tcc:166
u32 FindEmptyInNeighborhood(const Dir *dirs, const u32 dirCount, SPoint &outPoint) const
Definition: WindowScanner.tcc:274
bool IsBorderingNeighborhood(const u32 type, const Dir *neighborhood, const u32 dirCount) const
Definition: WindowScanner.tcc:108
u32 FindRandomInNeighborhood(const u32 type, const Dir *dirs, const u32 dirCount, SPoint &outPoint) const
Definition: WindowScanner.tcc:247
bool FillIfType(const SPoint &relative, const u32 type, const T &atom)
Definition: WindowScanner.tcc:17
bool FillIfNotType(const SPoint &relative, const u32 type, const T &atom)
Definition: WindowScanner.tcc:32
u32 CountVonNeumannNeighbors(const u32 type) const
Definition: WindowScanner.tcc:174