37 if (column_data.
type().
is<
float>()) {
41 const float threshold = row_filter.
threshold;
43 column_data.
typed<
float>(),
44 [&](
const float cell) { return std::abs(cell - value) < threshold; },
50 column_data.
typed<
float>(),
51 [&](
const float cell) { return cell > value; },
57 column_data.
typed<
float>(),
58 [&](
const float cell) { return cell < value; },
64 else if (column_data.
type().
is<
bool>()) {
67 column_data.
typed<
bool>(),
68 [&](
const bool cell) { return cell == value; },
72 else if (column_data.
type().
is<int8_t>()) {
77 column_data.
typed<int8_t>(),
78 [&](
const int cell) { return cell == value; },
84 column_data.
typed<int8_t>(),
85 [value](
const int cell) { return cell > value; },
91 column_data.
typed<int8_t>(),
92 [&](
const int cell) { return cell < value; },
98 else if (column_data.
type().
is<
int>()) {
103 column_data.
typed<
int>(),
104 [&](
const int cell) { return cell == value; },
110 column_data.
typed<
int>(),
111 [value](
const int cell) { return cell > value; },
117 column_data.
typed<
int>(),
118 [&](
const int cell) { return cell < value; },
130 [&](
const int2 cell) { return cell == value; },
137 [&](
const int2 cell) { return cell.x > value.x && cell.y > value.y; },
144 [&](
const int2 cell) { return cell.x < value.x && cell.y < value.y; },
156 [&](
const short2 cell) { return cell == value; },
163 [&](
const short2 cell) { return cell.x > value.x && cell.y > value.y; },
170 [&](
const short2 cell) { return cell.x < value.x && cell.y < value.y; },
183 [&](
const float2 cell) { return math::distance_squared(cell, value) <= threshold_sq; },
190 [&](
const float2 cell) { return cell.x > value.x && cell.y > value.y; },
197 [&](
const float2 cell) { return cell.x < value.x && cell.y < value.y; },
210 [&](
const float3 cell) { return math::distance_squared(cell, value) <= threshold_sq; },
218 return cell.x > value.x && cell.y > value.y && cell.z > value.z;
227 return cell.x < value.x && cell.y < value.y && cell.z < value.z;
242 return math::distance_squared(float4(cell), float4(value)) <= threshold_sq;
251 return cell.r > value.r && cell.g > value.g && cell.b > value.b && cell.a > value.a;
260 return cell.r < value.r && cell.g < value.g && cell.b < value.b && cell.a < value.a;
271 const float4 value_floats = {
272 float(value.
r), float(value.
g), float(value.
b), float(value.
a)};
277 const ColorGeometry4f cell = cell_bytes.decode();
278 const float4 cell_floats = {
279 float(cell.r), float(cell.g), float(cell.b), float(cell.a)};
289 const ColorGeometry4f cell = cell_bytes.decode();
290 return cell.r > value.r && cell.g > value.g && cell.b > value.b && cell.a > value.a;
299 const ColorGeometry4f cell = cell_bytes.decode();
300 return cell.r < value.r && cell.g < value.g && cell.b < value.b && cell.a < value.a;
308 const StringRef value = row_filter.value_string;
312 switch (cell.type()) {
313 case bke::InstanceReference::Type::Object: {
314 return value == (reinterpret_cast<ID &>(cell.object()).name + 2);
316 case bke::InstanceReference::Type::Collection: {
317 return value == (reinterpret_cast<ID &>(cell.collection()).name + 2);
319 case bke::InstanceReference::Type::GeometrySet: {
320 return value == cell.geometry_set().name;
322 case bke::InstanceReference::Type::None: {