mmcfilters
Public API documentation
Loading...
Searching...
No Matches
CommittedGridAccess.hpp
1#pragma once
2
3#include "RegularGridAdjacency2D.hpp"
4
5namespace mmcfilters::detail {
6
14class CommittedGridAccess {
15 public:
23 [[nodiscard]] static RegularGridAdjacency2D radiusAdjacency(int rows, int columns, double radius) {
24 return RegularGridAdjacency2D(rows, columns, radius, RegularGridAdjacency2D::EstablishedRadiusTag{});
25 }
26
28 [[nodiscard]] static RegularGridAdjacency2D::AdjacentIndexRange adjacent(const RegularGridAdjacency2D& adjacency, PixelId pixel) noexcept {
29 const int columns = adjacency.getNumColumns();
30 return RegularGridAdjacency2D::AdjacentIndexRange(adjacency, pixel / columns, pixel % columns);
31 }
32
34 [[nodiscard]] static RegularGridAdjacency2D::NeighborIndexRange neighbors(const RegularGridAdjacency2D& adjacency, PixelId pixel) noexcept {
35 const int columns = adjacency.getNumColumns();
36 return RegularGridAdjacency2D::NeighborIndexRange(adjacency, pixel / columns, pixel % columns);
37 }
38
40 [[nodiscard]] static RegularGridAdjacency2D::ForwardNeighborIndexRange forwardNeighbors(const RegularGridAdjacency2D& adjacency, PixelId pixel) noexcept {
41 const int columns = adjacency.getNumColumns();
42 return RegularGridAdjacency2D::ForwardNeighborIndexRange(adjacency, pixel / columns, pixel % columns);
43 }
44
46 [[nodiscard]] static bool isBoundary(const RegularGridAdjacency2D& adjacency, PixelId pixel) noexcept {
47 const int columns = adjacency.getNumColumns();
48 return adjacency.isGridBoundary(pixel / columns, pixel % columns);
49 }
50};
51
52} // namespace mmcfilters::detail
GridIndexRangeT< false, 1 > NeighborIndexRange
Range over neighbouring indices excluding the origin.
GridIndexRangeT< true, 0 > ForwardNeighborIndexRange
Range over one directed half of the neighbouring indices.
GridIndexRangeT< false, 0 > AdjacentIndexRange
Range over adjacent indices including the origin.