30 #ifndef MIRTK_ForEachBinaryVoxelFunction_H 31 #define MIRTK_ForEachBinaryVoxelFunction_H 33 #include "mirtk/Stream.h" 34 #include "mirtk/VoxelFunction.h" 40 inline void _foreachbinaryvoxelfunction_must_not_be_reduction()
42 cerr <<
"(Parallel)ForEachVoxel(If): Voxel reductions must be passed by reference!" 43 " Pass voxel functor object(s) as last argument(s) instead of first." << endl;
56 template <
class T1,
class T2,
class VoxelFunc>
88 const int T = (attr.
_dt ? attr.
_t : 1);
90 for (
int l = 0; l < T; ++l)
91 for (
int k = 0; k < attr.
_z; ++k)
92 for (
int j = 0; j < attr.
_y; ++j)
93 for (
int i = 0; i < attr.
_x; ++i, ++p1, ++p2) {
106 for (
int idx = re.begin(); idx < re.end(); ++idx, p1 += 1, p2 += 1) {
116 const int bi = re.cols().begin();
117 const int bj = re.rows().begin();
118 const int ei = re.cols().end();
119 const int ej = re.rows().end();
121 const int s1 = im2.
GetX() - (ei - bi);
126 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
127 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
137 const int bi = re.cols ().begin();
138 const int bj = re.rows ().begin();
139 const int bk = re.pages().begin();
140 const int ei = re.cols ().end();
141 const int ej = re.rows ().end();
142 const int ek = re.pages().end();
144 const int s1 = im2.
GetX() - (ei - bi);
145 const int s2 = (im2.
GetY() - (ej - bj)) * im2.
GetX();
150 for (
int k = bk; k < ek; ++k, p1 += s2, p2 += s2)
151 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
152 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
164 template <
class T1,
class T2,
175 VoxelFunc &vf, OutsideFunc &of)
177 ForEachVoxelIfBody<VoxelFunc, OutsideFunc>(vf, of, im1.Attributes()), im1(im1), im2(im2)
198 const int T = (attr.
_dt ? attr.
_t : 1);
200 for (
int l = 0; l < T; ++l)
201 for (
int k = 0; k < attr.
_z; ++k)
202 for (
int j = 0; j < attr.
_y; ++j)
203 for (
int i = 0; i < attr.
_x; ++i, ++p1, ++p2) {
204 if (Domain::IsInside(im2, i, j, k, l, p2)) {
218 for (
int idx = re.begin(); idx < re.end(); ++idx, p1 += 1, p2 += 1) {
219 if (Domain::IsInside(im2, idx, p2)) {
230 const int bi = re.cols().begin();
231 const int bj = re.rows().begin();
232 const int ei = re.cols().end();
233 const int ej = re.rows().end();
235 const int s1 = im2.
GetX() - (ei - bi);
240 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
241 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
242 if (Domain::IsInside(im2, i, j, this->_k, this->
_l, p2)) {
253 const int bi = re.cols ().begin();
254 const int bj = re.rows ().begin();
255 const int bk = re.pages().begin();
256 const int ei = re.cols ().end();
257 const int ej = re.rows ().end();
258 const int ek = re.pages().end();
260 const int s1 = im2.
GetX() - (ei - bi);
261 const int s2 = (im2.
GetY() - (ej - bj)) * im2.
GetX();
266 for (
int k = bk; k < ek; ++k, p1 += s2, p2 += s2)
267 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
268 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
269 if (Domain::IsInside(im2, i, j, k, this->
_l, p2)) {
287 template <
class T1,
class T2,
class VoxelFunc>
293 vf.join(body._VoxelFunc);
297 template <
class T1,
class T2,
class VoxelFunc>
300 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
301 ForEachScalar(*im1, *im2, vf);
305 template <
class T1,
class T2,
class VoxelFunc>
309 ForEachScalar(*im1, *im2, vf);
314 vf.join(body._VoxelFunc);
319 template <
class T1,
class T2,
class VoxelFunc>
322 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
323 ForEachVoxel(*im1, *im2, vf);
327 template <
class T1,
class T2,
class VoxelFunc>
336 template <
class T1,
class T2,
class VoxelFunc>
339 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
340 ForEachVoxel(attr, *im1, *im2, vf);
344 template <
class T1,
class T2,
class VoxelFunc>
353 template <
class T1,
class T2,
class VoxelFunc>
356 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
357 ForEachVoxel(re, *im1, *im2, vf);
361 template <
class T1,
class T2,
class VoxelFunc>
370 template <
class T1,
class T2,
class VoxelFunc>
373 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
374 ForEachVoxel(re, *im1, *im2, vf);
378 template <
class T1,
class T2,
class VoxelFunc>
387 template <
class T1,
class T2,
class VoxelFunc>
390 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
391 ForEachVoxel(re, *im1, *im2, vf);
399 template <
class T1,
class T2,
class VoxelFunc>
405 vf.join(body._VoxelFunc);
409 template <
class T1,
class T2,
class VoxelFunc>
412 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
413 ForEachScalar(im1, im2, vf);
417 template <
class T1,
class T2,
class VoxelFunc>
421 ForEachScalar(im1, im2, vf);
426 vf.join(body._VoxelFunc);
431 template <
class T1,
class T2,
class VoxelFunc>
434 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
435 ForEachVoxel(im1, im2, vf);
439 template <
class T1,
class T2,
class VoxelFunc>
448 template <
class T1,
class T2,
class VoxelFunc>
451 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
452 ForEachVoxel(attr, im1, im2, vf);
456 template <
class T1,
class T2,
class VoxelFunc>
465 template <
class T1,
class T2,
class VoxelFunc>
468 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
469 ForEachVoxel(re, im1, im2, vf);
473 template <
class T1,
class T2,
class VoxelFunc>
482 template <
class T1,
class T2,
class VoxelFunc>
485 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
486 ForEachVoxel(re, im1, im2, vf);
490 template <
class T1,
class T2,
class VoxelFunc>
499 template <
class T1,
class T2,
class VoxelFunc>
502 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
503 ForEachVoxel(re, im1, im2, vf);
515 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
521 vf.join(body._VoxelFunc);
522 of.join(body._OutsideFunc);
526 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
529 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
530 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
534 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
538 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
542 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
545 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
546 ForEachScalarIf<Domain>(*im1, *im2, vf);
550 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
554 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
559 vf.join(body._VoxelFunc);
560 of.join(body._OutsideFunc);
565 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
568 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
569 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
573 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
577 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
581 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
584 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
585 ForEachVoxelIf<Domain>(*im1, *im2, vf);
589 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
599 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
602 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
603 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
607 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
611 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
615 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
618 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
619 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf);
623 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
633 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
636 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
637 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
641 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
651 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
654 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
655 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
659 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
663 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
667 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
670 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
671 ForEachVoxelIf<Domain>(re, *im1, *im2, vf);
675 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
685 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
688 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
689 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
693 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
697 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
701 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
704 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
705 ForEachVoxelIf<Domain>(re, *im1, *im2, vf);
713 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
719 vf.join(body._VoxelFunc);
720 of.join(body._OutsideFunc);
724 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
727 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
728 ForEachScalarIf<Domain>(im1, im2, vf, of);
732 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
736 ForEachScalarIf<Domain>(im1, im2, vf, of);
740 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
743 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
744 ForEachScalarIf<Domain>(im1, im2, vf);
748 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
752 ForEachVoxelIf<Domain>(im1, im2, vf, of);
757 vf.join(body._VoxelFunc);
758 of.join(body._OutsideFunc);
763 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
766 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
767 ForEachVoxelIf<Domain>(im1, im2, vf, of);
771 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
775 ForEachVoxelIf<Domain>(im1, im2, vf, of);
779 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
782 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
783 ForEachVoxelIf<Domain>(im1, im2, vf);
787 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
797 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
800 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
801 ForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
805 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
809 ForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
813 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
816 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
817 ForEachVoxelIf<Domain>(attr, im1, im2, vf);
821 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
831 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
834 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
835 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
839 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
849 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
852 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
853 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
857 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
861 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
865 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
868 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
869 ForEachVoxelIf<Domain>(re, im1, im2, vf);
873 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
883 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
886 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
887 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
891 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
895 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
899 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
902 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
903 ForEachVoxelIf<Domain>(re, im1, im2, vf);
915 template <
class T1,
class T2,
class VoxelFunc>
925 template <
class T1,
class T2,
class VoxelFunc>
928 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
929 ParallelForEachScalar(*im1, *im2, vf);
933 template <
class T1,
class T2,
class VoxelFunc>
937 ParallelForEachScalar(*im1, *im2, vf);
947 template <
class T1,
class T2,
class VoxelFunc>
950 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
951 ParallelForEachVoxel(*im1, *im2, vf);
955 template <
class T1,
class T2,
class VoxelFunc>
960 if (VoxelFunc::IsReduction()) {
977 template <
class T1,
class T2,
class VoxelFunc>
980 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
981 ParallelForEachVoxel(attr, *im1, *im2, vf);
985 template <
class T1,
class T2,
class VoxelFunc>
994 template <
class T1,
class T2,
class VoxelFunc>
997 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
998 ParallelForEachVoxel(re, *im1, *im2, vf);
1002 template <
class T1,
class T2,
class VoxelFunc>
1011 template <
class T1,
class T2,
class VoxelFunc>
1014 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1015 ParallelForEachVoxel(re, *im1, *im2, vf);
1019 template <
class T1,
class T2,
class VoxelFunc>
1028 template <
class T1,
class T2,
class VoxelFunc>
1031 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1032 ParallelForEachVoxel(re, *im1, *im2, vf);
1040 template <
class T1,
class T2,
class VoxelFunc>
1050 template <
class T1,
class T2,
class VoxelFunc>
1053 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1054 ParallelForEachScalar(im1, im2, vf);
1058 template <
class T1,
class T2,
class VoxelFunc>
1062 ParallelForEachScalar(im1, im2, vf);
1072 template <
class T1,
class T2,
class VoxelFunc>
1075 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1076 ParallelForEachVoxel(im1, im2, vf);
1080 template <
class T1,
class T2,
class VoxelFunc>
1085 if (VoxelFunc::IsReduction()) {
1102 template <
class T1,
class T2,
class VoxelFunc>
1105 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1106 ParallelForEachVoxel(attr, im1, im2, vf);
1110 template <
class T1,
class T2,
class VoxelFunc>
1119 template <
class T1,
class T2,
class VoxelFunc>
1122 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1123 ParallelForEachVoxel(re, im1, im2, vf);
1127 template <
class T1,
class T2,
class VoxelFunc>
1136 template <
class T1,
class T2,
class VoxelFunc>
1139 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1140 ParallelForEachVoxel(re, im1, im2, vf);
1144 template <
class T1,
class T2,
class VoxelFunc>
1153 template <
class T1,
class T2,
class VoxelFunc>
1156 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1157 ParallelForEachVoxel(re, im1, im2, vf);
1169 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1174 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1184 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1187 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1188 ParallelForEachScalarIf<Domain>(*im1, *im2, vf, of);
1192 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1196 ParallelForEachScalarIf<Domain>(*im1, *im2, vf, of);
1200 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1203 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1204 ParallelForEachScalarIf<Domain>(*im1, *im2, vf);
1208 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1212 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
1216 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1227 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1230 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1231 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
1235 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1239 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
1243 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1246 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1247 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf);
1251 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1256 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1274 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1277 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1278 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
1282 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1286 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
1290 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1293 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1294 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf);
1298 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1302 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1312 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1315 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1316 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
1320 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1324 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
1328 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1331 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1332 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
1336 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1340 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1350 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1353 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1354 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
1358 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1362 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
1366 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1369 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1370 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
1374 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1378 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1388 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1391 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1392 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
1396 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1400 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
1404 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1407 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1408 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
1416 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1421 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1431 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1434 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1435 ParallelForEachScalarIf<Domain>(im1, im2, vf, of);
1439 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1443 ParallelForEachScalarIf<Domain>(im1, im2, vf, of);
1447 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1450 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1451 ParallelForEachScalarIf<Domain>(im1, im2, vf);
1455 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1459 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
1463 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1474 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1477 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1478 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
1482 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1486 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
1490 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1493 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1494 ParallelForEachVoxelIf<Domain>(im1, im2, vf);
1498 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1503 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1521 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1524 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1525 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
1529 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1533 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
1537 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1540 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1541 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf);
1545 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1549 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1559 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1562 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1563 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
1567 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1571 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
1575 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1578 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1579 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
1583 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1587 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1597 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1600 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1601 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
1605 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1609 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
1613 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1616 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1617 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
1621 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1625 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
1635 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
1638 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1639 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
1643 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1647 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
1651 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
1654 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1655 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
1666 template <
class T1,
class T2,
class VoxelFunc>
1698 const int T = (attr.
_dt ? attr.
_t : 1);
1700 for (
int l = 0; l < T; ++l)
1701 for (
int k = 0; k < attr.
_z; ++k)
1702 for (
int j = 0; j < attr.
_y; ++j)
1703 for (
int i = 0; i < attr.
_x; ++i, ++p1, ++p2) {
1716 for (
int idx = re.begin(); idx < re.end(); ++idx, p1 += 1, p2 += 1) {
1726 const int bi = re.cols().begin();
1727 const int bj = re.rows().begin();
1728 const int ei = re.cols().end();
1729 const int ej = re.rows().end();
1731 const int s1 = im2.
GetX() - (ei - bi);
1736 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
1737 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
1747 const int bi = re.cols ().begin();
1748 const int bj = re.rows ().begin();
1749 const int bk = re.pages().begin();
1750 const int ei = re.cols ().end();
1751 const int ej = re.rows ().end();
1752 const int ek = re.pages().end();
1754 const int s1 = im2.
GetX() - (ei - bi);
1755 const int s2 = (im2.
GetY() - (ej - bj)) * im2.
GetX();
1760 for (
int k = bk; k < ek; ++k, p1 += s2, p2 += s2)
1761 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
1762 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
1774 template <
class T1,
class T2,
1785 VoxelFunc &vf, OutsideFunc &of)
1787 ForEachVoxelIfBody<VoxelFunc, OutsideFunc>(vf, of, im1.Attributes()), im1(im1), im2(im2)
1808 const int T = (attr.
_dt ? attr.
_t : 1);
1810 for (
int l = 0; l < T; ++l)
1811 for (
int k = 0; k < attr.
_z; ++k)
1812 for (
int j = 0; j < attr.
_y; ++j)
1813 for (
int i = 0; i < attr.
_x; ++i, ++p1, ++p2) {
1814 if (Domain::IsInside(im2, i, j, k, l, p2)) {
1828 for (
int idx = re.begin(); idx < re.end(); ++idx, p1 += 1, p2 += 1) {
1829 if (Domain::IsInside(im2, idx, p2)) {
1840 const int bi = re.cols().begin();
1841 const int bj = re.rows().begin();
1842 const int ei = re.cols().end();
1843 const int ej = re.rows().end();
1845 const int s1 = im2.
GetX() - (ei - bi);
1850 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
1851 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
1852 if (Domain::IsInside(im2, i, j, this->_k, this->
_l, p2)) {
1863 const int bi = re.cols ().begin();
1864 const int bj = re.rows ().begin();
1865 const int bk = re.pages().begin();
1866 const int ei = re.cols ().end();
1867 const int ej = re.rows ().end();
1868 const int ek = re.pages().end();
1870 const int s1 = im2.
GetX() - (ei - bi);
1871 const int s2 = (im2.
GetY() - (ej - bj)) * im2.
GetX();
1876 for (
int k = bk; k < ek; ++k, p1 += s2, p2 += s2)
1877 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
1878 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
1879 if (Domain::IsInside(im2, i, j, k, this->
_l, p2)) {
1897 template <
class T1,
class T2,
class VoxelFunc>
1903 vf.join(body._VoxelFunc);
1907 template <
class T1,
class T2,
class VoxelFunc>
1910 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1911 ForEachScalar(*im1, *im2, vf);
1915 template <
class T1,
class T2,
class VoxelFunc>
1919 ForEachScalar(*im1, *im2, vf);
1924 vf.join(body._VoxelFunc);
1929 template <
class T1,
class T2,
class VoxelFunc>
1932 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1933 ForEachVoxel(*im1, *im2, vf);
1937 template <
class T1,
class T2,
class VoxelFunc>
1946 template <
class T1,
class T2,
class VoxelFunc>
1949 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1950 ForEachVoxel(attr, *im1, *im2, vf);
1954 template <
class T1,
class T2,
class VoxelFunc>
1963 template <
class T1,
class T2,
class VoxelFunc>
1966 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1967 ForEachVoxel(re, *im1, *im2, vf);
1971 template <
class T1,
class T2,
class VoxelFunc>
1980 template <
class T1,
class T2,
class VoxelFunc>
1983 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
1984 ForEachVoxel(re, *im1, *im2, vf);
1988 template <
class T1,
class T2,
class VoxelFunc>
1997 template <
class T1,
class T2,
class VoxelFunc>
2000 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2001 ForEachVoxel(re, *im1, *im2, vf);
2009 template <
class T1,
class T2,
class VoxelFunc>
2015 vf.join(body._VoxelFunc);
2019 template <
class T1,
class T2,
class VoxelFunc>
2022 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2023 ForEachScalar(im1, im2, vf);
2027 template <
class T1,
class T2,
class VoxelFunc>
2031 ForEachScalar(im1, im2, vf);
2036 vf.join(body._VoxelFunc);
2041 template <
class T1,
class T2,
class VoxelFunc>
2044 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2045 ForEachVoxel(im1, im2, vf);
2049 template <
class T1,
class T2,
class VoxelFunc>
2058 template <
class T1,
class T2,
class VoxelFunc>
2061 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2062 ForEachVoxel(attr, im1, im2, vf);
2066 template <
class T1,
class T2,
class VoxelFunc>
2075 template <
class T1,
class T2,
class VoxelFunc>
2078 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2079 ForEachVoxel(re, im1, im2, vf);
2083 template <
class T1,
class T2,
class VoxelFunc>
2092 template <
class T1,
class T2,
class VoxelFunc>
2095 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2096 ForEachVoxel(re, im1, im2, vf);
2100 template <
class T1,
class T2,
class VoxelFunc>
2109 template <
class T1,
class T2,
class VoxelFunc>
2112 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2113 ForEachVoxel(re, im1, im2, vf);
2125 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2131 vf.join(body._VoxelFunc);
2132 of.join(body._OutsideFunc);
2136 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2139 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2140 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
2144 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2148 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
2152 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2155 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2156 ForEachScalarIf<Domain>(*im1, *im2, vf);
2160 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2164 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
2169 vf.join(body._VoxelFunc);
2170 of.join(body._OutsideFunc);
2175 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2178 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2179 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
2183 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2187 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
2191 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2194 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2195 ForEachVoxelIf<Domain>(*im1, *im2, vf);
2199 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2209 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2212 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2213 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
2217 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2221 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
2225 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2228 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2229 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf);
2233 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2243 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2246 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2247 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2251 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2261 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2264 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2265 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2269 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2273 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2277 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2280 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2281 ForEachVoxelIf<Domain>(re, *im1, *im2, vf);
2285 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2295 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2298 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2299 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
2303 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2307 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2311 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2314 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2315 ForEachVoxelIf<Domain>(re, *im1, *im2, vf);
2323 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2329 vf.join(body._VoxelFunc);
2330 of.join(body._OutsideFunc);
2334 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2337 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2338 ForEachScalarIf<Domain>(im1, im2, vf, of);
2342 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2346 ForEachScalarIf<Domain>(im1, im2, vf, of);
2350 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2353 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2354 ForEachScalarIf<Domain>(im1, im2, vf);
2358 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2362 ForEachVoxelIf<Domain>(im1, im2, vf, of);
2367 vf.join(body._VoxelFunc);
2368 of.join(body._OutsideFunc);
2373 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2376 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2377 ForEachVoxelIf<Domain>(im1, im2, vf, of);
2381 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2385 ForEachVoxelIf<Domain>(im1, im2, vf, of);
2389 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2392 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2393 ForEachVoxelIf<Domain>(im1, im2, vf);
2397 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2407 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2410 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2411 ForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
2415 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2419 ForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
2423 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2426 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2427 ForEachVoxelIf<Domain>(attr, im1, im2, vf);
2431 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2441 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2444 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2445 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
2449 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2459 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2462 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2463 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
2467 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2471 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
2475 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2478 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2479 ForEachVoxelIf<Domain>(re, im1, im2, vf);
2483 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2493 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2496 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2497 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
2501 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2505 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
2509 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2512 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2513 ForEachVoxelIf<Domain>(re, im1, im2, vf);
2525 template <
class T1,
class T2,
class VoxelFunc>
2535 template <
class T1,
class T2,
class VoxelFunc>
2538 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2539 ParallelForEachScalar(*im1, *im2, vf);
2543 template <
class T1,
class T2,
class VoxelFunc>
2547 ParallelForEachScalar(*im1, *im2, vf);
2557 template <
class T1,
class T2,
class VoxelFunc>
2560 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2561 ParallelForEachVoxel(*im1, *im2, vf);
2565 template <
class T1,
class T2,
class VoxelFunc>
2570 if (VoxelFunc::IsReduction()) {
2587 template <
class T1,
class T2,
class VoxelFunc>
2590 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2591 ParallelForEachVoxel(attr, *im1, *im2, vf);
2595 template <
class T1,
class T2,
class VoxelFunc>
2604 template <
class T1,
class T2,
class VoxelFunc>
2607 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2608 ParallelForEachVoxel(re, *im1, *im2, vf);
2612 template <
class T1,
class T2,
class VoxelFunc>
2621 template <
class T1,
class T2,
class VoxelFunc>
2624 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2625 ParallelForEachVoxel(re, *im1, *im2, vf);
2629 template <
class T1,
class T2,
class VoxelFunc>
2638 template <
class T1,
class T2,
class VoxelFunc>
2641 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2642 ParallelForEachVoxel(re, *im1, *im2, vf);
2650 template <
class T1,
class T2,
class VoxelFunc>
2660 template <
class T1,
class T2,
class VoxelFunc>
2663 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2664 ParallelForEachScalar(im1, im2, vf);
2668 template <
class T1,
class T2,
class VoxelFunc>
2672 ParallelForEachScalar(im1, im2, vf);
2682 template <
class T1,
class T2,
class VoxelFunc>
2685 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2686 ParallelForEachVoxel(im1, im2, vf);
2690 template <
class T1,
class T2,
class VoxelFunc>
2695 if (VoxelFunc::IsReduction()) {
2712 template <
class T1,
class T2,
class VoxelFunc>
2715 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2716 ParallelForEachVoxel(attr, im1, im2, vf);
2720 template <
class T1,
class T2,
class VoxelFunc>
2729 template <
class T1,
class T2,
class VoxelFunc>
2732 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2733 ParallelForEachVoxel(re, im1, im2, vf);
2737 template <
class T1,
class T2,
class VoxelFunc>
2746 template <
class T1,
class T2,
class VoxelFunc>
2749 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2750 ParallelForEachVoxel(re, im1, im2, vf);
2754 template <
class T1,
class T2,
class VoxelFunc>
2763 template <
class T1,
class T2,
class VoxelFunc>
2766 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2767 ParallelForEachVoxel(re, im1, im2, vf);
2779 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2784 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
2794 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2797 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2798 ParallelForEachScalarIf<Domain>(*im1, *im2, vf, of);
2802 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2806 ParallelForEachScalarIf<Domain>(*im1, *im2, vf, of);
2810 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2813 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2814 ParallelForEachScalarIf<Domain>(*im1, *im2, vf);
2818 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2822 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
2826 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
2837 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2840 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2841 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
2845 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2849 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
2853 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2856 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2857 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf);
2861 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2866 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
2884 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2887 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2888 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
2892 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2896 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
2900 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2903 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2904 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf);
2908 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2912 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
2922 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2925 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2926 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2930 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2934 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2938 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2941 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2942 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
2946 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2950 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
2960 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2963 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2964 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2968 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2972 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
2976 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
2979 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
2980 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
2984 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
2988 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
2998 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3001 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3002 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
3006 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3010 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
3014 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3017 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3018 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
3026 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3031 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
3041 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3044 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3045 ParallelForEachScalarIf<Domain>(im1, im2, vf, of);
3049 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3053 ParallelForEachScalarIf<Domain>(im1, im2, vf, of);
3057 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3060 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3061 ParallelForEachScalarIf<Domain>(im1, im2, vf);
3065 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3069 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
3073 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
3084 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3087 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3088 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
3092 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3096 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
3100 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3103 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3104 ParallelForEachVoxelIf<Domain>(im1, im2, vf);
3108 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3113 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
3131 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3134 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3135 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
3139 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3143 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
3147 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3150 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3151 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf);
3155 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3159 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
3169 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3172 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3173 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
3177 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3181 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
3185 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3188 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3189 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
3193 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3197 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
3207 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3210 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3211 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
3215 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3219 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
3223 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3226 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3227 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
3231 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3235 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
3245 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3248 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3249 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
3253 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3257 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
3261 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3264 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3265 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
3276 template <
class T1,
class T2,
class VoxelFunc>
3308 const int T = (attr.
_dt ? attr.
_t : 1);
3310 for (
int l = 0; l < T; ++l)
3311 for (
int k = 0; k < attr.
_z; ++k)
3312 for (
int j = 0; j < attr.
_y; ++j)
3313 for (
int i = 0; i < attr.
_x; ++i, ++p1, ++p2) {
3326 for (
int idx = re.begin(); idx < re.end(); ++idx, p1 += 1, p2 += 1) {
3336 const int bi = re.cols().begin();
3337 const int bj = re.rows().begin();
3338 const int ei = re.cols().end();
3339 const int ej = re.rows().end();
3341 const int s1 = im2.
GetX() - (ei - bi);
3346 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
3347 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
3357 const int bi = re.cols ().begin();
3358 const int bj = re.rows ().begin();
3359 const int bk = re.pages().begin();
3360 const int ei = re.cols ().end();
3361 const int ej = re.rows ().end();
3362 const int ek = re.pages().end();
3364 const int s1 = im2.
GetX() - (ei - bi);
3365 const int s2 = (im2.
GetY() - (ej - bj)) * im2.
GetX();
3370 for (
int k = bk; k < ek; ++k, p1 += s2, p2 += s2)
3371 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
3372 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
3384 template <
class T1,
class T2,
3395 VoxelFunc &vf, OutsideFunc &of)
3397 ForEachVoxelIfBody<VoxelFunc, OutsideFunc>(vf, of, im1.Attributes()), im1(im1), im2(im2)
3418 const int T = (attr.
_dt ? attr.
_t : 1);
3420 for (
int l = 0; l < T; ++l)
3421 for (
int k = 0; k < attr.
_z; ++k)
3422 for (
int j = 0; j < attr.
_y; ++j)
3423 for (
int i = 0; i < attr.
_x; ++i, ++p1, ++p2) {
3424 if (Domain::IsInside(im2, i, j, k, l, p2)) {
3438 for (
int idx = re.begin(); idx < re.end(); ++idx, p1 += 1, p2 += 1) {
3439 if (Domain::IsInside(im2, idx, p2)) {
3450 const int bi = re.cols().begin();
3451 const int bj = re.rows().begin();
3452 const int ei = re.cols().end();
3453 const int ej = re.rows().end();
3455 const int s1 = im2.
GetX() - (ei - bi);
3460 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
3461 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
3462 if (Domain::IsInside(im2, i, j, this->_k, this->
_l, p2)) {
3473 const int bi = re.cols ().begin();
3474 const int bj = re.rows ().begin();
3475 const int bk = re.pages().begin();
3476 const int ei = re.cols ().end();
3477 const int ej = re.rows ().end();
3478 const int ek = re.pages().end();
3480 const int s1 = im2.
GetX() - (ei - bi);
3481 const int s2 = (im2.
GetY() - (ej - bj)) * im2.
GetX();
3486 for (
int k = bk; k < ek; ++k, p1 += s2, p2 += s2)
3487 for (
int j = bj; j < ej; ++j, p1 += s1, p2 += s1)
3488 for (
int i = bi; i < ei; ++i, p1 += 1, p2 += 1) {
3489 if (Domain::IsInside(im2, i, j, k, this->
_l, p2)) {
3507 template <
class T1,
class T2,
class VoxelFunc>
3513 vf.join(body._VoxelFunc);
3517 template <
class T1,
class T2,
class VoxelFunc>
3520 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3521 ForEachScalar(*im1, *im2, vf);
3525 template <
class T1,
class T2,
class VoxelFunc>
3529 ForEachScalar(*im1, *im2, vf);
3534 vf.join(body._VoxelFunc);
3539 template <
class T1,
class T2,
class VoxelFunc>
3542 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3543 ForEachVoxel(*im1, *im2, vf);
3547 template <
class T1,
class T2,
class VoxelFunc>
3556 template <
class T1,
class T2,
class VoxelFunc>
3559 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3560 ForEachVoxel(attr, *im1, *im2, vf);
3564 template <
class T1,
class T2,
class VoxelFunc>
3573 template <
class T1,
class T2,
class VoxelFunc>
3576 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3577 ForEachVoxel(re, *im1, *im2, vf);
3581 template <
class T1,
class T2,
class VoxelFunc>
3590 template <
class T1,
class T2,
class VoxelFunc>
3593 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3594 ForEachVoxel(re, *im1, *im2, vf);
3598 template <
class T1,
class T2,
class VoxelFunc>
3607 template <
class T1,
class T2,
class VoxelFunc>
3610 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3611 ForEachVoxel(re, *im1, *im2, vf);
3619 template <
class T1,
class T2,
class VoxelFunc>
3625 vf.join(body._VoxelFunc);
3629 template <
class T1,
class T2,
class VoxelFunc>
3632 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3633 ForEachScalar(im1, im2, vf);
3637 template <
class T1,
class T2,
class VoxelFunc>
3641 ForEachScalar(im1, im2, vf);
3646 vf.join(body._VoxelFunc);
3651 template <
class T1,
class T2,
class VoxelFunc>
3654 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3655 ForEachVoxel(im1, im2, vf);
3659 template <
class T1,
class T2,
class VoxelFunc>
3668 template <
class T1,
class T2,
class VoxelFunc>
3671 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3672 ForEachVoxel(attr, im1, im2, vf);
3676 template <
class T1,
class T2,
class VoxelFunc>
3685 template <
class T1,
class T2,
class VoxelFunc>
3688 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3689 ForEachVoxel(re, im1, im2, vf);
3693 template <
class T1,
class T2,
class VoxelFunc>
3702 template <
class T1,
class T2,
class VoxelFunc>
3705 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3706 ForEachVoxel(re, im1, im2, vf);
3710 template <
class T1,
class T2,
class VoxelFunc>
3719 template <
class T1,
class T2,
class VoxelFunc>
3722 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3723 ForEachVoxel(re, im1, im2, vf);
3735 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3741 vf.join(body._VoxelFunc);
3742 of.join(body._OutsideFunc);
3746 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3749 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3750 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
3754 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3758 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
3762 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3765 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3766 ForEachScalarIf<Domain>(*im1, *im2, vf);
3770 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3774 ForEachScalarIf<Domain>(*im1, *im2, vf, of);
3779 vf.join(body._VoxelFunc);
3780 of.join(body._OutsideFunc);
3785 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3788 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3789 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
3793 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3797 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
3801 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3804 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3805 ForEachVoxelIf<Domain>(*im1, *im2, vf);
3809 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3819 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3822 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3823 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
3827 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3831 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
3835 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3838 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3839 ForEachVoxelIf<Domain>(attr, *im1, *im2, vf);
3843 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3853 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3856 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3857 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
3861 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3871 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3874 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3875 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
3879 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3883 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
3887 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3890 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3891 ForEachVoxelIf<Domain>(re, *im1, *im2, vf);
3895 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3905 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3908 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3909 ForEachVoxelIf<Domain>(*im1, *im2, vf, of);
3913 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3917 ForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
3921 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3924 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3925 ForEachVoxelIf<Domain>(re, *im1, *im2, vf);
3933 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3939 vf.join(body._VoxelFunc);
3940 of.join(body._OutsideFunc);
3944 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3947 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3948 ForEachScalarIf<Domain>(im1, im2, vf, of);
3952 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3956 ForEachScalarIf<Domain>(im1, im2, vf, of);
3960 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3963 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3964 ForEachScalarIf<Domain>(im1, im2, vf);
3968 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3972 ForEachVoxelIf<Domain>(im1, im2, vf, of);
3977 vf.join(body._VoxelFunc);
3978 of.join(body._OutsideFunc);
3983 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
3986 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
3987 ForEachVoxelIf<Domain>(im1, im2, vf, of);
3991 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
3995 ForEachVoxelIf<Domain>(im1, im2, vf, of);
3999 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4002 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4003 ForEachVoxelIf<Domain>(im1, im2, vf);
4007 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4017 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4020 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4021 ForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
4025 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4029 ForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
4033 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4036 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4037 ForEachVoxelIf<Domain>(attr, im1, im2, vf);
4041 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4051 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4054 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4055 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4059 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4069 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4072 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4073 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4077 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4081 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4085 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4088 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4089 ForEachVoxelIf<Domain>(re, im1, im2, vf);
4093 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4103 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4106 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4107 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4111 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4115 ForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4119 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4122 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4123 ForEachVoxelIf<Domain>(re, im1, im2, vf);
4135 template <
class T1,
class T2,
class VoxelFunc>
4145 template <
class T1,
class T2,
class VoxelFunc>
4148 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4149 ParallelForEachScalar(*im1, *im2, vf);
4153 template <
class T1,
class T2,
class VoxelFunc>
4157 ParallelForEachScalar(*im1, *im2, vf);
4167 template <
class T1,
class T2,
class VoxelFunc>
4170 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4171 ParallelForEachVoxel(*im1, *im2, vf);
4175 template <
class T1,
class T2,
class VoxelFunc>
4180 if (VoxelFunc::IsReduction()) {
4197 template <
class T1,
class T2,
class VoxelFunc>
4200 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4201 ParallelForEachVoxel(attr, *im1, *im2, vf);
4205 template <
class T1,
class T2,
class VoxelFunc>
4214 template <
class T1,
class T2,
class VoxelFunc>
4217 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4218 ParallelForEachVoxel(re, *im1, *im2, vf);
4222 template <
class T1,
class T2,
class VoxelFunc>
4231 template <
class T1,
class T2,
class VoxelFunc>
4234 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4235 ParallelForEachVoxel(re, *im1, *im2, vf);
4239 template <
class T1,
class T2,
class VoxelFunc>
4248 template <
class T1,
class T2,
class VoxelFunc>
4251 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4252 ParallelForEachVoxel(re, *im1, *im2, vf);
4260 template <
class T1,
class T2,
class VoxelFunc>
4270 template <
class T1,
class T2,
class VoxelFunc>
4273 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4274 ParallelForEachScalar(im1, im2, vf);
4278 template <
class T1,
class T2,
class VoxelFunc>
4282 ParallelForEachScalar(im1, im2, vf);
4292 template <
class T1,
class T2,
class VoxelFunc>
4295 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4296 ParallelForEachVoxel(im1, im2, vf);
4300 template <
class T1,
class T2,
class VoxelFunc>
4305 if (VoxelFunc::IsReduction()) {
4322 template <
class T1,
class T2,
class VoxelFunc>
4325 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4326 ParallelForEachVoxel(attr, im1, im2, vf);
4330 template <
class T1,
class T2,
class VoxelFunc>
4339 template <
class T1,
class T2,
class VoxelFunc>
4342 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4343 ParallelForEachVoxel(re, im1, im2, vf);
4347 template <
class T1,
class T2,
class VoxelFunc>
4356 template <
class T1,
class T2,
class VoxelFunc>
4359 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4360 ParallelForEachVoxel(re, im1, im2, vf);
4364 template <
class T1,
class T2,
class VoxelFunc>
4373 template <
class T1,
class T2,
class VoxelFunc>
4376 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4377 ParallelForEachVoxel(re, im1, im2, vf);
4389 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4394 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4404 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4407 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4408 ParallelForEachScalarIf<Domain>(*im1, *im2, vf, of);
4412 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4416 ParallelForEachScalarIf<Domain>(*im1, *im2, vf, of);
4420 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4423 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4424 ParallelForEachScalarIf<Domain>(*im1, *im2, vf);
4428 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4432 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
4436 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4447 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4450 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4451 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
4455 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4459 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf, of);
4463 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4466 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4467 ParallelForEachVoxelIf<Domain>(*im1, *im2, vf);
4471 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4476 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4494 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4497 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4498 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
4502 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4506 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf, of);
4510 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4513 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4514 ParallelForEachVoxelIf<Domain>(attr, *im1, *im2, vf);
4518 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4522 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4532 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4535 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4536 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
4540 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4544 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
4548 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4551 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4552 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
4556 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4560 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4570 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4573 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4574 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
4578 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4582 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
4586 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4589 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4590 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
4594 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4598 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4608 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4611 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4612 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
4616 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4620 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf, of);
4624 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4627 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4628 ParallelForEachVoxelIf<Domain>(re, *im1, *im2, vf);
4636 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4641 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4651 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4654 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4655 ParallelForEachScalarIf<Domain>(im1, im2, vf, of);
4659 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4663 ParallelForEachScalarIf<Domain>(im1, im2, vf, of);
4667 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4670 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4671 ParallelForEachScalarIf<Domain>(im1, im2, vf);
4675 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4679 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
4683 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4694 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4697 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4698 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
4702 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4706 ParallelForEachVoxelIf<Domain>(im1, im2, vf, of);
4710 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4713 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4714 ParallelForEachVoxelIf<Domain>(im1, im2, vf);
4718 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4723 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4741 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4744 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4745 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
4749 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4753 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf, of);
4757 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4760 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4761 ParallelForEachVoxelIf<Domain>(attr, im1, im2, vf);
4765 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4769 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4779 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4782 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4783 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4787 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4791 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4795 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4798 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4799 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
4803 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4807 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4817 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4820 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4821 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4825 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4829 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4833 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4836 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4837 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
4841 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4845 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) {
4855 template <
class Domain,
class T1,
class T2,
class VoxelFunc,
class Outs
ideFunc>
4858 if (VoxelFunc::IsReduction() || OutsideFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4859 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4863 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4867 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf, of);
4871 template <
class Domain,
class T1,
class T2,
class VoxelFunc>
4874 if (VoxelFunc::IsReduction()) _foreachbinaryvoxelfunction_must_not_be_reduction();
4875 ParallelForEachVoxelIf<Domain>(re, im1, im2, vf);
double _dt
Voxel t-dimensions (in ms)
Dummy type used to distinguish split constructor from copy constructor.
BinaryForEachVoxelIfBody_Const(const GenericImage< T1 > &im1, const GenericImage< T2 > &im2, VoxelFunc &vf, OutsideFunc &of)
Constructor.
BinaryForEachVoxelIfBody_1Const(const GenericImage< T1 > &im1, GenericImage< T2 > &im2, VoxelFunc &vf, OutsideFunc &of)
Constructor.
BinaryForEachVoxelBody_1Const(const BinaryForEachVoxelBody_1Const &o)
Copy constructor.
bool IsEmpty() const
Whether image is uninitialized.
int _y
Image y-dimension (in voxels)
BinaryForEachVoxelBody(GenericImage< T1 > &im1, GenericImage< T2 > &im2, VoxelFunc &vf)
Constructor.
BinaryForEachVoxelBody_Const(const BinaryForEachVoxelBody_Const &o)
Copy constructor.
BinaryForEachVoxelBody_Const(const GenericImage< T1 > &im1, const GenericImage< T2 > &im2, VoxelFunc &vf)
Constructor.
VoxelFunc _VoxelFunc
Functor executed for each voxel.
BinaryForEachVoxelBody_Const(BinaryForEachVoxelBody_Const &o, split s)
Split constructor.
BinaryForEachVoxelIfBody(const BinaryForEachVoxelIfBody &o)
Copy constructor.
BinaryForEachVoxelIfBody_Const(BinaryForEachVoxelIfBody_Const &o, split s)
Split constructor.
VoxelType * GetPointerToVoxels(int=0, int=0, int=0, int=0)
int GetX() const
Returns the number of voxels in the x-direction.
BinaryForEachVoxelBody_1Const(BinaryForEachVoxelBody_1Const &o, split s)
Split constructor.
int _z
Image z-dimension (in voxels)
int _l
Indices for fixed dimensions.
BinaryForEachVoxelBody(const BinaryForEachVoxelBody &o)
Copy constructor.
int _t
Image t-dimension (in voxels)
int GetT() const
Returns the number of voxels in the t-direction.
void operator()(const ImageAttributes &attr) const
Process entire image.
int GetY() const
Returns the number of voxels in the y-direction.
int GetNumberOfVoxels() const
BinaryForEachVoxelIfBody_1Const(const BinaryForEachVoxelIfBody_1Const &o)
Copy constructor.
OutsideFunc _OutsideFunc
Functor executed for each background voxel.
BinaryForEachVoxelIfBody(GenericImage< T1 > &im1, GenericImage< T2 > &im2, VoxelFunc &vf, OutsideFunc &of)
Constructor.
double GetTSize() const
Returns the size of a voxel in the t-direction.
BinaryForEachVoxelBody(BinaryForEachVoxelBody &o, split s)
Split constructor.
BinaryForEachVoxelBody_1Const(const GenericImage< T1 > &im1, GenericImage< T2 > &im2, VoxelFunc &vf)
Constructor.
int _x
Image x-dimension (in voxels)
void parallel_reduce(const Range &range, Body &body)
parallel_reduce dummy template function which executes the body serially
BinaryForEachVoxelIfBody(BinaryForEachVoxelIfBody &o, split s)
Split constructor.
void parallel_for(const Range &range, const Body &body)
parallel_for dummy template function which executes the body serially
BinaryForEachVoxelIfBody_1Const(BinaryForEachVoxelIfBody_1Const &o, split s)
Split constructor.
BinaryForEachVoxelIfBody_Const(const BinaryForEachVoxelIfBody_Const &o)
Copy constructor.