11 #ifndef smtk_mesh_StructuredGrid_h
12 #define smtk_mesh_StructuredGrid_h
14 #include "smtk/CoreExports.h"
39 : m_data([](
int,
int) {
return std::numeric_limits<double>::quiet_NaN(); })
40 , m_valid([](
int,
int) {
return false; })
42 for (
int i = 0; i < 4; i++)
46 for (
int i = 0; i < 2; i++)
48 m_origin[i] = m_spacing[i] = std::numeric_limits<double>::quiet_NaN();
54 const double origin[2],
55 const double spacing[2],
56 const std::function<
double(
int,
int)>& data,
57 const std::function<
bool(
int,
int)>& valid)
61 for (
int i = 0; i < 4; i++)
63 m_extent[i] = extent[i];
65 for (
int i = 0; i < 2; i++)
67 m_origin[i] = origin[i];
68 m_spacing[i] = spacing[i];
74 const double origin[2],
75 const double spacing[2],
76 const std::function<
double(
int,
int)>& data)
77 :
StructuredGrid(extent, origin, spacing, data, [](
int,
int) {
return true; })
83 bool containsIndex(
int ix,
int iy)
const
85 return (ix >= m_extent[0] && ix <= m_extent[1] && iy >= m_extent[2] && iy <= m_extent[3]) &&
89 const std::function<double(
int,
int)>& data()
const {
return m_data; }
90 const std::function<bool(
int,
int)>& valid()
const {
return m_valid; }
92 std::size_t size()
const {
return (m_extent[1] - m_extent[0]) * (m_extent[3] - m_extent[2]); }
94 std::array<int, 4> m_extent;
95 std::array<double, 2> m_origin;
96 std::array<double, 2> m_spacing;
99 std::function<double(
int,
int)> m_data;
100 std::function<bool(
int,
int)> m_valid;